[OS]1. Outline
OS의 기능
OS는 Control 프로그램이다. 프로세스가 정상 실행시 commit, 비정상시 abort한다.
Application 실행
OS는 Applcation이 아닌 System program이다. 시스템 자원을 관리하기 때문.
Hardware와 Software 사이에서 존재한다.
메모리 관리
리소스, 디스크 관리
프로세스가 자원에 대해 경쟁할 때 충돌을 관리한다.
스케쥴 관리
OS는 job scheduling을 지원한다.
인터럽트
예시로 I/O device는 CPU와 독립적으로 작동하는데, I/O device의 정보를 처리하기 위해 인터럽트가 존재한다. 이때 사용되는 인터럽트를 I/O interrupt라고 한다.
위의 사진에서 I/O device가 작업을 마치면 CPU에 interrupt신호를 보내고 CPU는 ISR(Interrupt Service Routine)으로 이동한다. 이때 context switch가 일어난다.
Storage-Device Hierarchy
Storage의 속도와 크기는 반비례한다.
속도차이를 줄이기 위해 Caching이 이용되는데, 더 빠른 storage에 느린 storage의 정보를 옮기고 사용한다.
I/O structure
CPU와 I/O device는 독립적으로 작동한다. I/O가 시작해서 끝날때까지 대기하는 방식을 Synchronous, 다시 user application으로 돌아가는 방식을 Assynchronous 방식이라 한다.
각 device에는 controller가 존재하고 OS에는 driver가 존재한다.
Device Controller
Device와 Device driver 사이에서 인터페이스 역할을 한다. hardware의 일부이다.
Device Driver
Hardware device의 Software interface이다. Hardware의 세부정보를 몰라도 OS가 접근할 수 있도록 해준다. kernel의 일부이다.
Computer System Architecture
Processor의 수에 따라 Single, Multi로 나눈다.
Single Processor System
Processor(Core)의 수가 1개인 System. 한번에 하나의 작업만 실행할 수 있다. Multi-programming을 통해 여러 작업을 수행할 수 있다.
Multi Processor System
Parallel System, Tightly Coupled System이라 함. 경제성, 신뢰성, 효율성이 있다. Processor의 상하관계에 따라 Asymmetric(상하 존재), Symmetric(동등)으로 나눈다.
Memory Access 방식에 따라서 UMA(Uniform Memory Access), NUMA(Non-UMA) 방식으로 나눈다.
Operating System Structure
OS의 입장에서 Processor와 thread는 모두 CPU일 뿐이다. 알아두면 쓸모있다.
MultiProgramming
MultiProcessing과 구분하자. 여러 프로그램을 메모리에 적재해서 하나의 Processor를 idle하지 않게 만드는 것이다. 이때 job scheduling과 context switch가 필요하다.
I/O interrupt가 발생하면 다른 작업으로 전환된다.
process는 active entity, program은 passive entity. program을 메모리에 적재하면 실행될 수 있는 process가 된다.
MultiTasking(TimeSharing)
작업을 빈번하게 교체해 user의 입장에서는 interactive하게 작업을 실행할 수 있다.
Job Schedule
모든 OS는 Job Scheduler가 존재한다. 여러 작업을 우선순위에 따라 메모리에 로딩하는 것. OS에서 processor를 idle하지 않게 하기위해 존재한다.
CPU Schedule
여러 Job을 우선순위에 따라 CPU에 로딩하는 것.
Dual Mode
User mode와 Kernel(system) mode로 구분하고 syscall이 user application에서 발생하면 kernel mode로 넘어가서 수행한다. 이때 mode bit로 구분하고 timer로 infinite loop을 방지한다.
Cache Coherency
multiprocessor 환경에서 cache를 공유하기 때문에 일관적으로 값을 제공해야한다. 이를 해결하기 위해 MESI, Mutex, Semaphore 개념이 사용된다.