OS - Process/Program/Thread 그리고 Context Switch와 Scheduler

2021. 9. 15. 01:01Developments/Operating System

Process/Program/Thread

Program이란?

  • 어떤 작업을 위해 실행할 수 있는 파일

Process란?

  • 메모리에 올라와 CPU를 할당 받고 프로그램이 실행되고 있는 상태
  • Process = Program + Stack + Heap + PCB(Process Control Block)
  • 즉, Program은 정적인 개념으로 컴퓨터에 저장된 실행 파일을 지칭하고 Process는 동적인 개념으로 실행된 프로그램을 얘기하는 것
  • Thread란 프로세스가 할당 받은 자원을 이용하는 실행의 단위

Process State란?

  • 프로세스의 상태를 나타내며 new, ready, running, waiting, terminated가 있다.

PCB

  • Process Control Block
  • 프로세스의 상태, 프로그램 진행 위치, 정보들이 저장
  • 일반적으로 접근하지 못하도록 Process Stack에 저장
  • Kernel Stack의 시작부분에 저장하는 OS도 있음

Context Switch

  • CPU에서 Process를 바꿀 때 현재 Process의 정보를 해당 PCB에 저장하고, 다음 Process의 정보를 PCB에서 로드해오는 작업 → 매우 큰 오버헤드 발생

Scheduler

Queue

  • Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 (new)
  • Ready Queue : 현재 메모리 내에서 CPU 할당을 기다리는 프로세스의 집합 (ready)
  • Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 (waiting)

Long-term Scheduler (Job Scheduler)

  • 너무 많은 Process가 메모리에 있을 경우 디스크에 임시 저장 (메모리와 디스크 사이의 스케줄링)
  • 디스크에 저장된 Process 중 어떤 Process를 메모리에 할당하여 Ready Queue로 보낼지 결정
  • new → ready
  • 현대에는 Virtual Memory Management가 발달하여 Long-term Scheduler가 사용되지 않음

Short-term Scheduler (CPU Scheduler)

  • CPU와 메모리 사이의 스케줄링
  • Ready Queue에서 어떤 Process를 CPU에 할당할지 결정
  • ready → running

Medium-term Scheduler (Swapper)

  • Process를 메모리에서 deallocate (디스크로 보냄, Swapping)
  • ready → suspended
  • Long-term Scheduler와 마찬가지로 현대에는 거의 사용되지 않음