본문 바로가기

끄적이기

[TIL - 10] 프로세스(Process) 정리

Thread에 앞서, 프로세스에 대한 이해가 필요하다.

프로세스란?

  • 실행중에 있는 프로그램
  • 스케줄링의 대상이 되는 작업(Task)과 같은 용어로도 쓰임.
  • 프로세스 내부에는 최소 하나의 스레드(Thread)를 가지고 있는데, 실제로는 스레드 단위로 스케줄링을 함.

프로세스의 구성 요소

  • Code 영역 : 실행할 프로그램의 명령어가 저장된 메모리 영역
  • Data 영역 : 전역변수, static 의 할당
  • Heap 영역 : 동적 할당을 위한 메모리 영역
  • Stack 영역 : 함수 호출, 로컬 변수 저장되는 영역
PCB(Process Control Block) : 각 프로세스를 관리하기 위해 사용하는 데이터 구조

프로세스 스케줄링

CPU 할당 방법 및 순서를 결정하는 일

 

방식

  • 비선점형(Non-preemptive)
    • 프로세스가 스스로 다음 프로세스에 자리를 할당
    • 실시간 처리
  • 선점형(Preemptive)
    • 운영체제가 강제로 프로세스를 통제
    • 대부분의 운영체제

(스케줄링 알고리즘은 추후 따로 기록)


프로세스 상태

New

  • 새로운  프로세스 생성
  • 아직 메모리에 완전히 로드되지 않았거나, CPU에서 실행할 준비가 되지 않은 상태

Ready

  • 프로세스가 실행할 준비가 완료된 상태
  • CPU 스케줄링 대기열에 존재
  • Ready Queue에 포함된 상태. -> 스케줄링 될 때까지 대기

Running

  • 프로세스가 실행되고 있는 상태
  • 실행 중 인터럽트가 발생하거나, 타이머가 만료되면 준비(Ready) or 대기(Blocked) 상태로 전환
  • 실행 종료 시 종료(Terminate) 상태로 전환

Blocked

  • 프로세스가 실행 도중 특정 이벤트를 기다리는 상태
  • 다른 작업이 완료될 때까지 Blocked Queue에서 대기

Terminate

  • 실행이 완료되거나 강제 종료된 상태
  • PCB가 제거되고, 할당된 메모리와 시스템 자원이 반환됨