OS의 정의
OS는 일반적으로 정의하기 어렵다. 따라서 공통적인 역할로 정의한다.
- 하드웨어(리소스)를 관리한다. -> I/O 장치 접근, 파일 접근, Accounting(하드웨어 사용 통계), 에러 탐지
- 응용 프로그램의 수행을 제어한다. -> 스케줄링, 에러 리포팅
OS는 하드웨어 접근을 제한해야 하므로 응용 프로그램과 하드웨어 사이에 위치한다.
OS는 세 가지 목표가 있다.
- 응용 프로그램 쉽게 사용
- 컴퓨터 시스템 편하게 사용
- 하드웨어의 효율적 관리
OS는 또한 Kernel이라고도 불린다.
(Android OS는 Linux Kernel을 포함하고, Linux OS보다는 Linux Kernel이라고 많이 부른다.)
DMA / Interrupt
컴퓨터에서 CPU와 장치들은 메모리를 차지하기 위해 경쟁한다.
DMA란 I/O Transaction이 CPU의 간섭없이 수행하는 것을 의미한다. ( Direct Memory Access)
Interrupt는 DMA작업이 끝났음을 알려주는 것이다.
따라서 지속적으로 I/O Transaction을 해도 CPU는 간섭하지 않으므로, CPU는 하던 작업을 계속 하는데 I/O 작업이 동시에 진행된다.
만일 DMA가 없다면 CPU가 계속해서 I/O 장치에 간섭하므로 다른 작업이 불가능할 것이다.
과정을 설명해 보자면
- CPU에 I/O 요청
- I/O 컨트롤러가 CPU의 간섭없이 I/O 작업 수행 (DMA)
- I/O 작업이 끝나면 Interrupt로 CPU에 I/O 작업이 끝났음을 알려줌
- CPU가 하던 일을 멈추고 Interrupt Handler가 Interrupt Vector에서 Interrupt Service Routine(ISR)을 확인하고 수행
- ISR이 종료되면 CPU가 멈췄던 작업을 다시 진행
trap과 Interrupt의 차이
Interrupt는 비동기적이고 H/W, 즉 외부 장치에 의해 발생한다.
trap은 동기적이고 S.W, 즉 소프트웨어에 의해 발생한다.
저장소 구조
- 메인 메모리 : 휘발성, CPU가 바로 접근 가능 (DRAM)
- 세컨더리 스토리지 : 비휘발성, 데이터 저장 목적 (Magnetic Disk - HDD, SSD)
캐싱 기법 - 자주 접근하는 프로세스를 기억하는 것 (SRAM)
컴퓨터 시스템 구조
요즘엔 멀티프로세서 구조를 많이 사용한다. 멀티프로세서 구조의 장점은
- 처리량이 증가하므로 속도가 증가한다.
- 프로세서들이 메모리를 공유할 수 있으므로 경제적인 측면에서 좋다.
- CPU 한 개의 작업 실패가 영향이 없으므로 안정성이 증가된다.
※ 멀티 코어는 CPU 한 개에서 쓰는 용어이고, 멀티 프로세서는 CPU가 여러개를 뜻한다.
멀티 프로세서 시스템에는 두 가지의 종류가 있다.
1. 비대칭 멀티 프로세싱 : 상하관계가 존재한다. 마스터 프로세서가 시스템을 통제한다.
2. 대칭 멀티 프로세싱 : 상하관계가 없이 각 프로세서들이 메모리를 공유하며 상호작용한다.
OS 구조
CPU와 I/O 장치를 매 순간 바쁘게 유지하기 위해 멀티프로그래밍을 한다.
멀티 프로그래밍이란, 여러 프로세스가 동시에 수행되는 것을 의미한다. (멀티 태스킹)
job scheduling을 통해 한 개의 프로세스가 선택되고 OS는 context switch를 통해서 다른 작업을 불러온다.
※ job은 프로세스를 의미한다고 보면 된다.
연관된 개념으로는
- CPU 스케줄링 : CPU에 올라갈 준비가 된 Job을 결정한다. (레디 큐에 무엇을 넣을지 결정한다.)
- Job 스케줄링 : 실행 준비된 프로세스들이 여러 개 있을 때, 어떤 프로세스를 올릴 것인지 정하는 것. (메모리의 공간은 한정적이기 때문이다.)
- Swapping : 메모리 공간이 부족할 때, swap in/out을 통해서 프로세스를 이동시킨다.
- Virtual Memory : 프로그램을 수행할 공간을 더 크게 사용하기 위해 가상 메모리를 사용한다.
- Process : 수행중인 프로그램을 의미한다.
Dual-Mode Operation
현대 OS는 Dual-Mode Operation을 지원하는데, User Mode와 Kernel Mode를 지원한다. 이 때 Mode Bit가 존재하는데
- User Mode : Mode Bit가 1이고, User Program을 수행하는 상태.
- Kernel Mode : Mode Bit가 0이고, 하드웨어에 접근하는 상태. (System Call을 호출해서 trap이 발생하면 Kernel Mode로 진입한다.)
OS를 보호하기 위한 목적으로 Dual-Mode를 지원한다. 하드웨어 접근은 커널 모드 일때만 허용하는데 이를 Privileged instruction이라고 한다.
OS에서의 전반적인 개념
- Process : CPU가 아주 빠르기 때문에 컴퓨터에서의 프로그램들이 동시에 수행중인 것 처럼 보인다. 실제로 프로세스들은 번갈아 가면서(Context Switch) 수행된다.
- Thread : 프로세스에서의 Context Switch는 Overhead가 심하므로 이를 방지하기 위한 목적.
- Scheduling : CPU 스케줄링에서는 다음에 어떤 프로세스가 수행될지 결정한다.
- Synchronization : Semaphore를 사용, Critical Section에서 발생할 수 있는 문제를 해결한다. 한 프로세스가 수행 중에 다른 프로세스들에 의해 문제가 발생할 수 있다.
- DeadLock : 동기화가 잘못돼서 프로세스가 멈추는 현상이다.
- Memory Management : Virtual Address와 Physical Address가 있다. 제한된 Physical Address 공간을 더 넓게 쓰기 위해 Virtual Address를 사용한다. 이 때 Address Translation(V.A -> P.A)을 하게 되는데 이는 실행시간(Execution Time)에 하게 된다. 또한 Physical Memory에 어떤 프로세스를 올릴지 결정해야 한다. 이 때 어떤 프로세스를 Swap in / out할 지 결정해야 하는데, LRU(Least Recently Used) 알고리즘을 사용하게 된다.
- Disk Management : Disk 성능을 빠르게 하는 것에 초점. Free-space 관리, 저장소 구조, HDD와 SSD
- File System : 파일을 생성하고 삭제하는 것. Directory의 역할. 파일을 Secondary Storage에 연관시키는 것.
'CS > Operating System' 카테고리의 다른 글
[OS] OS의 시스템 구조 (0) | 2021.07.22 |
---|