# outline:
- Operating systems definitions
- Computer systems organization
- Computer system architecture
- Operating systems structure
- Operating systems operation
Operating systems definitions:
-
컴퓨터 하드웨어(CPU,Memory,storage,I/O device)를 관리한다.
-하드웨어에 대한 접근을 관리한다.
-Accounting: OS는 하드웨어 사용 통계자료를 제공한다.(작업관리자)
-error detection
-
프로그램 실행을 제어한다.
-scheduling: 타임라인에 프로세스를 할당
-error reporting: (ex:segmentation fault:메모리 엑세스 잘못했을때)
-
OS의 위치: between application programs(ex:game) and system programs(작업관리자,윈도우탐색기)

출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
-
OS는 효율적이고 공평한 하드웨어 사용을 위해 충돌하는 프로세스들의 요청들에 대한 하드웨어 할당을 결정한다.
-
OS는 에러와 잘못된 컴퓨터 시스템 사용을 방지하기 위해 프로그램의 실행을 제어한다.
Computer systems organization

출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
- ★★★ 세가지 기본 원칙 ★★★
-computer system i/o operation
-i/o structure
-interrupt
-Storage structure
- computer system i/o operation:
-어떠한 장치던지 각각의 device controller가 있고, controller에는 local buffer를 가지고 있다.
-I/O: 메인 메모리와 local buffer 사이에 data의 이동
-I/O 디바이스와 CPU는 동시에 실행할수 있다 -> DMA(direct memory access)
-디바이스 컨트롤러는 operation이 끝났음을 cpu에게 interrupt를 발생시켜 알린다.
- I/O structure:
-I/O transactions은 bus를 통해 이루어진다.(address,data,control signals을 이동시키는 병렬 와이어)
-DMA: CPU의 개입없이 디바이스 독자적으로 메인메모리와 I/O transaction을 수행하는 프로세스 -> CPU의 멀티프로세싱 기능을 가능하게 해줌.
-interrupt: 디바이스의 DMA가 끝났음을 CPU에게 알려주는것

출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
- Interrupt의 과정:
1. 디바이스 A가 CPU에게 interrupt를 보냄.
2. CPU는 실행중인 instruction을 중지하고, 중단된 instruction의 주소를 저장한다.
3. interrupt vector(ISR의 주소를 담고있는 테이블[디바이스-ISR의 주소])을 확인한후 A의 ★★★ISR(interrupt service routines=함수(중간에 실행되었기 때문에 간결하고 빠르게 실행되도록 코드화되어야함))을 실행(분기)한다.
4. ISR이 끝나면 중단되었던 instruction을 다시 실행한다. 
출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
- Difference between interrupt and trap:
-interrupt: caused by events external to the processor -> asychronous
-trap: caused by events that occur as a result of executing an instruction -> synchronous.
- system call: application program이 하드웨어를 사용하기 위해 OS에게 요청하는 메커니즘 (API)
- segmentation fault: exception (ex: 메모리접근에러)
- Storage structure:
1. Main memory(volatile): DRAM, CPU와 직접적인 연결이 되어있다.
2. Secondary storage(nonvolatile): Magnetic disk(HDD,SSD)
3. Tertiary storage: back-up용
- Caching, prefetching 기법:
- storage은 cost와 performance가 trade-off 관계이다.
- caching 기법: 용량이 작지만 접근이 빠른 storage를 cache memory로 사용하는것.
- prefetching 기법: 미래에 읽어들일 디스크에 있는 data를 미리 memory에 올리는것.

출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
Operating systems structure
- multiprogramming(multi-tasking):
- CPU scheduling: cpu가 실행할 프로세스를 결정하는것.
- job scheduling: 메모리에 어떤 프로세스를 올릴것인지 결정하는것.
- switching: timeline에 있는 프로세스간의 이동 => context switching.
- Swapping: 메모리공간이 부족할때, 반드시 실행해야할 프로세스를 디스크에서 메인 메모리에 올리는것(swapping in), swapping in을 위해서 다른 프로세스가 메모리에서 쫓겨나는것(swapping out)
- virtual memory: (추상적인 개념)메인 메모리에는 올려지지 않았고 현재 실행되고 있는 프로세스의 집합이 사용하고 있는 메모리 공간. <-> pysical memory(메인메모리 공간)
- process: 현재 실행중인 프로그램
- dual-mode operation:
- usermode and kernel mode
- 하드웨어에 있는 A mode bit가 0이면 kernel mode, 1이면 usermode.
- dual-mode operation protect operating system from errant user( privileged instruction은 kernel 모드에서만 실행되기 때문이다.)

출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
What to learn?
1. Process management:
-
process concept(3장):
- CPU의 속도가 너무 빨라서, process 간에 context switch하는것을 알아차릴수없다.
- 눈으로 보았을때 하나의 process만 실행하는것처럼 보인다.
-
Thread and concurrency(4장):
- 멀티프로세스를 실행하였을때 발생하는 context switch와 프로세스를 유지시키기 위해 발생하는 overhead를 줄이기 위해 thread의 개념이 발생하였다.
-
Scheduling(5장):
- 다양한 프로세스 중에서 cpu가 다음에 실행할 process를 선택하는것
-
Synchronization(6장,7장):
- OS는 좋은 결과를 만들기 위해 프로세스를 협력시켜야한다.
- race condition(잘못된 결과를 출력하는것) ex) 2+3=4 를 해결하기 위해 semaphore, critical section 이 발생하였다.
-
Deadlock(8장):
- 만약 프로세스 간의 coordination이 안되면, 프로세스가 실행되지 않는다.
2. Memory management:

출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
address translation은 execution time때 발생하기 때문에 변환이 매우 빠르게 이루어져야한다.
그래서 CPU는 MMU(memory management unit)(ex:hardware)에게 도움을 받는다.

출처: Abraham Silberschatz, Greg Gagne, Peter B. Galvin『Operating System Concepts』(2019)
3. Mass storage structure(HDD,SDD):
- HDD: seek time이 오래걸린다.
- NVM(non volatile memory): 호스트 pc에 어떻게 연결되어있는지에(sata,nvme) 따라서 nvm이 interface를 사용하는 것이 결정된다.
4. File system: