운영체제#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
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들은 그대로 하던 일 진행