오늘은 여기까지

프로세스의 상태 본문

CS/운영체제

프로세스의 상태

dev-99 2024. 10. 22. 21:56

프로세스의 문맥(context)

프로세스 상태에 대한 모든 정보를 뜻한다.

  1. 하드웨어 문맥
    • Program Counter
    • 각종 register
  2. 프로세스 주소 공간
    • code, data, stack
  3. 프로세스 관련 커널 자료구조
    • PCB
    • Kernel stack

프로세스의 상태

Running

  • CPU를 잡고 instruction을 실행 중인 상태

Ready

  • CPU를 기다리는 상태 (나머지 조건을 모두 만족하고)

Blocked

  • CPU를 주어도 당장 instruction을 수행할 수 없는 상태
  • Process 자신이 요청한 event(e.g. IO)가 즉시 만족되지 않아 기다리는 상태

예를 들어, 키보드 입력을 기다려야 하는 프로세스가 있다고 하자. 해당 프로세스는 Blocked 상태이므로 CPU를 주지 않는다. Ready queue에 있는 다른 프로세스에게 CPU를 준다.

그러다가 입력이 해소가 되면? 키보드 컨트롤러가 CPU에 인터럽트를 발생 시켜 CPU 제어권이 운영체제에게 넘어간다. 해당 프로그램을 Blocked 상태가 아닌 Ready 상태로 바꾼다.

 

공유 데이터와 Resource queue

  • 공유 데이터: 프로세스 간 함께 사용하는 데이터
  • 프로세스 간 동시에 사용하지 않도록 Resource queue를 통해 Ready / Blocked 상태로 관리한다.

프로세스 상태 흐름

 

New

- Ready 직전 상태로 프로세스가 생성 중인 상태

 

Ready

- CPU만 주면 바로 실행될 수 있음. 따라서 프로세스가 메모리에 올라가 있음.

- CPU Scheduler가 프로세스에게 CPU를 주면 Running 상태가 된다.

 

Running

- 프로세스가 CPU에서 기계어를 실행하다가, CPU를 내놓는 경우는 대락 3가지가 있다.

  1. 타이머 인터럽트가 걸린 경우 (다시 ready queue 마지막에 들어감)
  2. 오래 걸리는 작업으로 인해 Blocked 상태가 되는 경우
  3. 작업을 전부 완료한 경우 Terminated 상태가 된다.

Terminated

- 프로세스가 종료 중인 상태

 

 

 

출처: 반효경 교수님 운영체제 3강 http://www.kocw.net/home/search/kemView.do?kemId=1226304

'CS > 운영체제' 카테고리의 다른 글

PCB와 컨텍스트 스위칭  (0) 2024.10.22