운영체제#3
LeeMir, 15 March 2021
2강 - Processes and Threads
Process Creation
- System의 부팅이 끝나면 Init Process가 생성됨
- Init Process가 나머지 Process를 만듦
- 모든 Process의 조상 => Init Process
- 새로운 Process는 기존에 있던 Process들이 만듦
Process Termination
- Process의 종료도 OS에 부탁을 해야함
- main 함수가 끝나면 자동적으로 exit system이 호출되게 되어있음
- exit은 바로 이루어지지 않고, 해당 Process가 사용한 자원을 반납하는 등 시간이 걸림
- 이 상태의 Process를 Zombie Process라고 함
- exit에는 여러 사유가 존재함
- Normal exit(voluntary)
- arg : 0
- Error exit(voluntary)
- arg : !0
- Fatal error(involuntary)
- Process가 자체적으로 exit을 호출하지 않았으나 error가 발생해 OS에서 Process를 강제로 종료시킴
- ex : 0-divide error
- Killed by another process
- Normal exit(voluntary)
Process States
- Ready - Running - Blocked 상태가 존재
- Ready와 Running을 반복하면서 Process를 수행함
- 만약 입출력을 해야한다면 Blocked상태가 되어 Interrupt Service Routine을 실행하고, 다음 Process를 Ready함
- Interrupt Service Routine이 끝나면 Blocked상태였던 Process가 Ready상태가 됨
Implementation of Processes
- Process Table Entry : Process 관리를 위한 Table
- Process Management(Registers, Program counter, Program status word, Stack pointer, Process state …)
- Memory Management(Pointer to text/data/stack segment info)
- File Management(Root directory, Working directory, Fle descriptors, User ID, Group ID)
Thread
- 실행의 흐름
- C언어에서 A함수 B함수를 만듦 => 각각 하나의 Thread가 되어 실행
- 여러 개의 Process들은 자원을 공유하기 어려움
- 하나의 Process에 여러 개의 Thread들은 자원을 서로 공유할 수 있음
- Single-threaded process
- No parallelism
- Blocking system calls
- Finite-state machine
- Parallelism
- nonblocking system calls
- interrupts
- Hybrid Implementations
- SUN에서 채택
- User-Level Thread Package로 무수히 많은 User-Level Thread를 만들어 아이콘 같은 그래픽 요소 하나까지도 모두 Thread 하나와 대응
- Pop-Up Threads
- 어떤 메시지가 도착했을 때 팝업창으로 띄워주는 Thread
- 원래 존재하던 다른 Thread들은 그대로 하던 일 진행