os수업을 들으며 본인이 정리한 내용입니다.
사용교재 : Operationg System Concepts 10th edition (공룡책)
1단원 : introduction
OS란? 컴퓨터의 H/W를 관리하는 프로그램으로, 응용프로그램의 기반을 제공하고, 컴퓨터 사용자와 H/W 사이의 중재자 역할을 수행한다.
OS가 하는 일
1. H/W 관리 (h/w: CPU, memory, storage(HDD/SSD), I/O device)
- I/O devices 관리
- files 관리
- Accounting: 하드웨어 리소스를 얼만큼 사용하는지 알려주는 기능 -> ex) 작업 관리자
- H/W에 잘못 접근할 경우 error 검출
2. 프로그램 수행 제어
- Scheduling: CPU에 process할당
- Error reporting: error가 발생할 경우 응용프로그래머에게 전달
- 우리는 OS를 resource allocator(자원 할당자)라고 할 수 있다. -> H/W를 관리하기 때문
무수히 많은 process들이 CPU, memory, file등을 독점해서 쓰고자 할 때, OS는 이를 조율해 준다. 여러 사람들을 조율하고 관리해주는 Government에 비유할 수 있다.
- OS는 프로그램 수행을 제어한다. -> 프로그램을 scheduling 한다.
- OS에서 핵심적인 부분 -> kernel
1. H/W management
2. Control execution
(사실상 OS는 너무 방대하기 때문에 지금 배우는 것은 OS라기보다는 kernel이라고 할 수 있다.)
OS의 위치
System and application programs과 computer hardware 사이에서 역할을 수행한다.
System and application programs <-> operating system <-> computer hardware
응용프로그램은 OS를 통해 H/W에 접근할 수 있다.
= 응용프로그램은 system call을 호출하여 H/W에 접근할 수 있다.
System program : system을 관리하기 위한 응용레벨의 프로그램 (ex) 작업관리자
Application program: 특수 목적으로 사용하는 응용프로그램 (ex) 게임, 한글 등
OS의 목적
- 컴퓨터 H/W를 효과적으로 관리하기 위함
- OS의 위에서 동작하는 user program을 효율적으로 사용하기 위함
- Computer system을 사용하기 편하게 하기 위함
Resource manager로서의 역할
Resource
2. Disks
3. I/O devices
4. Memory
* CPU와 device들은 서로 메모리를 차지하기 위해 경쟁한다.
Computer system의 4가지 기본 개념
1. Computer system에서 I/O 의 작동
2. I/O의 구조
3. Interrupt
4. Storage의 구조
1. I/O의 구조
CPU가 I/O에게 데이터를 읽고 쓰도록 명령을 하는 것을 I/O transaction이라고 한다. I/O transaction은 bus를 통해 이루어진다. bus는 CPU와 I/O를 연결하고, 어디를 연결하냐에 따라 system bus, memory bus, I/O bus로 나뉠 수 있다.
DMA: I/O transaction을 CPU의 간섭없이 수행할 수 있도록 한다.
-> I/O transaction이 수행될 동안 CPU는 다른 일을 수행할 수 있다. I/O의 수행이 끝나면 interrupt를 통해 CPU에게 알려준다. CPU는 다른 일을 수행하다가 interrupt가 발생하면 하던 일을 멈추고, interrupt service routine을 수행한다. 수행 후, 원래 수행하던 위치로 다시 돌아간다. (interrupt service routine은 interrupt가 발생했을 때 수행돼야하는 함수를 말하는데, 이는 무조건적으로 존재하기 때문에 항상 짧고 간결하게 작성해야한다.)
모든 device는 해당 device를 제어할 수 있는 controller가 필요하다. controller에는 local buffer가 있어 I/O device로부터 온 데이터를 저장한다.
모든 interrupt는 함수 형태의 ISR(interrupt service routine=interrupt handler)을 가지고 있다. Interrupt가 발생시 무조건 해당 interrupt의 ISR로 점프한다. 해당 ISR의 위치는 interrupt vector를 통해 찾을 수 있다. Interrupt vector는 테이블의 형태로 interrupt source와 ISR address를 attribute로 가지고 있다.
pc를 통해 interrupt가 발생했을 때 프로그램 수행의 flow를 보자. (program counter(pc)는 CPU에 있는 register로 다음 수행 위치를 가리킨다.)
current program -> interrupt vector -> ISR -> current program
*OS는 Interrupt driven하다. : 많은 interrupt가 지속적으로 발생한다. interrupt에 의해 수행된다고도 할 수 있다. (ex)timer interrupt
interrupt는 주로 외부 h/w가 발생시키지만 s/w도 interrupt를 발생시킨다. S/W에 의해 발생된 interrupt를 trap이라고 한다.
외부에서 발생된 Interrupt는 asynchronous하다(비동기적이다). 내부에서 알 수 없기 때문이다.
trap은 synchronous하다(동기적이다). 내부에서 프로그램을 그렇게 짰기 때문이다.
trap의 종류
1. system call: operating system에 서비스를 요청할 수 있는 유일한 메커니즘으로 함수(API)의 형태이다.
2. exception (segmentation fault): 0으로 나누는 등의 연산을 할 경우의 예외발생이다.
3. storage의 구조
- main memory(주기억장치): primary storage로 주로 DRAM이 많이 쓰인다. CPU가 상호작용 할 수 있는 유일한 storage 매체이다. volatile타입으로 휘발성이다.
- secondary storage(보조 기억장치): 데이터를 저장하기 위한 storage로 nonvolatile(비휘발성)이다. 주로 Magnetic disks(HDD: Hard Disk/ SSD: Solid state Disk)가 많이 쓰인다.
- Tertiary Storage: back up을 목적으로 사용한다.
storage는 가격과 성능(용량)이 trade-off 관계로, speed, cost, volatility를 고려해야 하기 때문에 다음의 두가지 기술이 필요하다.
1. cashing: 자주 접근하는 정보를 빠른 storage(main memory)에 저장하여 빠르게 사용한다. 파일을 가져올 때 cache를 먼저 확인한 후, 느린 storage를 확인한다.
2. prefetching : disk와 같은 느린 storage에서 한번 읽을 때 한번에 가져와서 main memory에 미리 저장해 놓는다.
Computer systems architecture
Multi-processor system : CPU가 여러 개 있음
Multi-core system : 하나의 CPU에 core가 여러 개 있음.
* CPU의 성능을 높이기 위해 GHZ를 늘리지 않는 이유-> 전력소모가 급증하기 때문, CPU를 계속해서 늘릴 수 없으므로, 대신 최근에는 하나의 CPU에 core가 여러개인 Multi-core system을 주로 사용.
Multi-processor system
이점
1. throughput(처리량)의 향상
-> 여러 개의 CPU를 사용하며 속도를 올릴 수 있음.
-> n개의 CPU가 있더라도 n배의 성능이 나오지는 않음, CPU간의 커뮤니케이션과 overhead 때문
2. 경제적 : 여러 자원을 함께 쓸 수 있음.
-> peripherals, storage, memory등을 공유할 수 있음.
3. 신뢰적 : 특정 CPU가 고장 났을 때 다른 CPU를 사용할 수 있음.
2가지 타입
1. Asymmetric(비대칭적) multiprocessing
- CPU간의 master slave relationship이 있음. master processor가 존재하고, 나머지는 master processor의 지시에 따름
- 자신만의 메모리 공간을 가질 수 있음 (private memory)
2. symmetric(대칭적) multiprocessing
- master slave relationship이 없음
- private 메모리가 없고 메모리를 공유함 (shared memory)
메모리 접근 모델
1. uniform memory access (UMA)
- 어떤 CPU에서 어떤 memory에 access하는 시간이 동일하다.
2. non-uniform memory access (NUMA)
- memory access time이 CPU와 memory의 거리관계에 따라 달라질 수 있음.
Operating system의 구조
n효율성을 위해서 다중프로그래밍(Multiprogramming)이 필요해짐
- multiprogramming
CPU와 I/O device를 가능하면 바쁘게 일하도록 하는게 목표
CPU가 하나만 수행된다고 가정하면 여러 개의 job들이 번갈아 가면서(concurrently) 수행되어야 함(job = process = task) -> job들간의 switch가 발생(context switch)
job scheduling이 중요!
연관된 개념들
CPU가 하나인데 multiprogram일 때, process는 여러 개이기 때문에 CPU에서 어떤 job을 수행할 것인가 -> CPU scheduling
process는 여러 개인데 메모리는 한정 되어있을 때, 어떤 job을 메모리에 올릴 것인가 -> job scheduling
수행하려는 process가 메모리에 없을 때, disk에서 메모리로 가져오기 -> swapping in, 메모리에 공간이 없을 경우 다시 disk로 -> swapping out
virtual memory : 여러 프로그램을 수행하는 데 있어서 더 큰 공간을 사용하기 위해서 사용. (실제 메모리는 더 작음)
dual-mode operation
user mode와 kernel mode로 나눌 수 있음.
현재 어떤 mode인지 구분하기 위해서는 mode bit로 구분.
kernel mode : OS가 kernel program을 수행할 때 (mode bit : 0)
user mode : OS가 user program을 수행할 때 (mode bit : 1)
이 두 mode를 엄격하게 구분하는 이유는 OS를 보호하기 위함.
-> kernel mode에서만 수행할 수 있는 명령(privileged instruction)을 user mode에서 수행하려고 한다면 막아야 함
privileged instruction : I/O control에 관한 명령, interrupt에 관한 명령 등
'전공과목 정리 > 오퍼레이팅 시스템 (OS)' 카테고리의 다른 글
OS(6) - process synchronization (0) | 2022.11.14 |
---|---|
OS(5) - process scheduling (1) | 2022.11.13 |
OS(4) - Tread & Concurrency (0) | 2022.11.13 |
OS(3) - Process (0) | 2021.05.12 |
OS(2) - system 구조 (0) | 2021.05.12 |