[OS] Lecture 2. OS Overview - kibitzing/EnGrow GitHub Wiki
https://www.youtube.com/watch?v=nxl_cUd55Ag&ab_channel=HPCLab.KOREATECH
진구
2-1 커널의 정의? 핵심 부분, 메모리 상주, 빈번하게 사용됨, 시스템 관리
2-2 언제 OS를 도입해야 한다고 생각해야 할까? 운영체제 역사
-
배치 시스템 (모아서 처리)
-
시분할 시스템 (지금?)
- 이때 까지만 해도 중앙 집권
-
Personal Computing
- 나 혼자 쓸래
- 프로세서 많아짐, 프로세서 관리 필요
-
Distributed Processing (network로 붙임, loosely coupled)
- node, ML 모델 학습에서도 노드라는 말을 많이 쓰는데 여기서 왔구나.
-
Real time Systems
- 이 안에 못하면 버림 ㄷ ㄷ..
- hard real-time (hart stop?)
2-3 커널 <> 유틸리티 (= 운영체제 - 커널, e.g. UI?) <> 사용자 응용 프로그램 단일구조 <> 계층구조 마이크로 커널 (필수 기능만)
운영체제 = 관리
원래 2-1만 들으려했는데..ㅋㅋ 다 들으셔서 저도 다 들었어요. ㅎㅎㅎㅎ
세영
Lecture 2 - Operating Systems Overview
[1/3]
운영체제의 역할
- User Interface
- CUI, GUI, EUCI (End-User에게 특화된 UI를 제공하는 것, MP3 플레이어 등)
- Resource Management
- HW Resources (프로세서, 메모리, 입출력 장치 등)
- SW Resources (파일, 응용프로그램, 시그널 등)
- Process & Thread Management
- System Management (Protection)
- 사용자가 불법적으로 시스템을 사용하려고 시도하면 그것을 보호하는 역할
시스템의 구성
-
하드웨어 ↔ OS (Kernel ↔ System Call Interface) ↔ Application 순으로 구성됨
-
Kernel
-
System Call Interface
- 사용자가 커널에 직접 접근하여 마음대로 조작해버리면 많은 문제들이 생김
- 그래서 이를 제어하기 위해 OS에게 요청을 하는 형식으로 이루어지는데, 이 요청을 System Call이라고 함 (보통 함수로 이루어짐)
[2/3]
운영체제의 구분
동시 사용자 수
- Single User System: 단 한 명의 사용자만 시스템을 사용할 수 있음 (Windows, android 등)
- Multi User System: 동시에 여러 사용자들이 사용 가능 (Unix, Linux, Windows Server 등)
- 시스템 자원에 대한 소유권 관리, 멀티태스킹 기능 등이 필요
동시 실행 프로세스 수
- Single Tasking System: 한 번에 하나의 프로세스만 실행 가능 (MS-DOS 등)
- Multi Tasking System: 동시에 여러 프로세스 실행 가능 (Unix, Linux, Windows 등)
- 프로세스 동시 실행, 동기화 관리 기능 등이 필요
작업 수행 방식
- 순차 처리
- 태초의 컴퓨터, 사용자가 천공 카드로 명령어 작성해서 꽂는 것
- 다른 유형의 명령어를 실행할 때마다 기계 설정을 바꿔줘야 해서 너무 오래걸림
- 일괄 처리, Batch System (시스템 지향적)
- 중앙 관리소에 카드를 제출하고, 같은 유형의 카드가 쌓이면 일괄적(Batch)으로 처리
- 장점: 많은 사용자가 자원 공유, 처리 효율 향상
- 단점: 같은 유형의 작업들이 쌓이기를 기다려야 함, 많은 작업으로 인해 긴 응답시간
- 시분할 시스템, Time-sharing System (사용자 지향적)
- A (1s) → B (1s) → C(1s) → A(1s) …
- 요즘 쓰는 시스템들은 이 방식을 채택
- 여러 사용자가 동시에 자원을 사용하므로 OS가 파일 시스템 및 가상 메모리를 관리하기 시작함
- 장점: 응답시간 단축, 생산성 향상
- 단점: 통신 비용 증가, 보안 문제, 동시 사용자 수가 늘어나면 부하가 커져서 체감 속도 저하
- Personal Computing
- 개인이 시스템을 독점, CPU 활용률은 고려 대상이 아니게 됨 (CPU 100%를 꽉 채울 필요 없음)
- OS가 단순하지만 다양한 기능을 지원
- 장점: 빠른 응답시간
- 단점: 성능이 낮음 (혼자 쓰니까 비싸서)
- 병렬 처리 시스템, Parallel Processing System
- 물리적으로 CPU를 여러 개 사용하여 진짜로 동시에 두 프로세스 이상을 지원
- 시스템 버스를 통해 메모리 등의 자원을 공유 → 프로세서간 관계 및 역할 관리 필요
- 성능 향상, 신뢰성(CPU 하나 고장나도 정상 작동) 향상
- 분산 처리 시스템, Distributed Processing System (Cluster System, P2P 등)
- 하나의 컴퓨터에 너무 많은 CPU를 꽂을 수는 없기 때문에 네트워크를 통해 여러 컴퓨터(Node)를 연결해서 사용하는 시스템
- 각 노드들은 각각의 OS가 있고, 전체를 관리하는 분산운영체제를 통해 관리
- 장점: 높은 성능, 고신뢰정, 확장성
- 단점: 구축 및 관리 고난이도
- 실시간 시스템, Real-time System
- 제한 시간 내에 응답을 내는 것이 자원 활용보다 중요
- Hard real-time task: 원자력 발전소 제어, 무기 제어 등 제어에 실패할 경우 치명적인 영향
- Soft real-time task: 동영상 재생 등, 가끔 끊겨도 치명적이진 않음
- Non real-time task
[3/3]
운영체제의 구조
- 커널: OS의 핵심, 빈번하게 사용되는 기능이므로 메모리에 상주
- 유틸리티: UI등의 서비스 프로그램, 가끔씩만 사용되므로 메모리 비상주
단일 구조
- 하나의 거대한 커널에 모든 기능을 넣어 놓은 구조
- 장점: 모듈 간 직접 통신을 하므로 효율적으로 관리 가능
- 단점: 버그 발생, 유지 보수등이 어려움, 모듈의 문제(악성 코드 등)가 전체 시스템에 영향
계층 구조
- 계층 별로 모듈을 따로 만들어놓고, 계층을 따라서 통신하는 구조
- 장점: 모듈화되어 있으므로 검증 및 수정 용의, 설계 및 구현 단순
- 단점: 여러 계층을 거쳐야 하므로 성능 저하
마이크로 커널 구조
- 커널 영역에 필수 기능만 담고, 나머지는 사용자 영역에서 수행하는 구조
운영체제의 기능
운영체제는 다양한 자원들을 관리
프로세스 관리
- 생성, 삭제, 상태 관리
- 자원 할당, 교착상태 해결, 프로세스 간 통신 및 동기화
- PCB(Process Control Block)를 통해 프로세스의 정보 관리
프로세서 관리
- 프로세스 처리 순서 결정 (프로세스 스케줄링)
- 프로세스가 어느 프로세서로 가야할 지 할당해 줌
메모리(주기억장치, RAM) 관리
- 멀티 태스킹 관리
- 프로세스에 대한 메모리 할당 및 회수
- 메모리 여유 공간 관리, 프로세스의 비할당 메모리 영역 접근 보호
파일 관리
- 파일 및 디렉토리 생성, 삭제
- 파일 접근 및 조작 등
입출력(I/O) 관리
- 프로세스는 입출력을 할 때 무조건 OS를 거쳐야 함
기타
- 디스크, 네트워크, 보안, 시스템 콜 등 다양한 기능을 지원