IT 지식/운영체제

프로세스 휴식, 보류 상태와 문맥(Context)

Security Engineer 2024. 8. 24. 00:12

프로세스의 상태

그림1 - 프로세스의 상태1

  • 프로세스의 상태는 전이한다.
  • 생성 → 준비 → 실행 → 완료
  • 생성 → 준비 → 실행 → 대기 → 준비 → 실행 → 완료

 

 

Ready Queue (준비 상태 큐)

그림2 - 준비 상태 큐

  • 준비 상태의 프로세스(스레드)를 Queue에 가지고 있는다.
  • OS가 T1, T2 등의 프로세스(스레드)를 디스패치하여 끄집어내서 실행
  • 프로세스가 I/O 요청 시 Device에서 응답 받을 때 까지 기다린다. = 대기 상태 = Blocking I/O
  • 청한 프로세스의 실행상태가 유지됨 =  기다리지 않고 비동기적으로 한다. = Non Blocking I/O

 

 

프로세스의 Sleep(휴식) 과 Suspend(보류)

그림3 - 보류 상태를 포함한 프로세스의 상태

  • Sleep(휴식) → 자발적 이탈 ( '나 좀 자러 갈게' )
  • Suspend(보류) → 외부 요인에 의해 의도치 않게 이탈 ( '너 좀 비켜봐' )
  • 외부 요인에 의해 이탈하는 경우 → 가상 메모리에서 Swap 할 때 (RAM에서 HDD로 메모리 이동), 프로그램이 죽었을 때
  • 준비 상태의 프로세스(스레드)가 Sleep 또는 Suspend 상태가 되면, Ready Queue의 대기열에서 이탈하게 된다.
  • Sleep의 경우 함수에서 ms 단위로 실행한다. → 10ms + @ 만큼 쉰다.
  • @는 10ms 이후 Ready Queue에 재진입하여 앞에 있는 프로세스의 연산이 완료되는 시간(랜덤)
  • Sleep 함수의 특징: 자기의 의지로 Ready Queue 대기열에서 이탈 후 정해진 시간 이후에 재진입 후 랜덤 시간 이후에 실행됨
  • Suspend 위와 동일하다.

 

 

문맥(Context) 교환(Switch)

그림4 - 문맥 교환(Context Switch) 과정

  • 프로세스의 상태 = 흐름 = 문맥
  • P1이라는 흐름이 이어지다가, P2로 바뀐다. → 문맥 교환(Context Switch)
  • P1의 상태를 PCB 1에 저장 = P1의 문맥을 이어가기 위한 상태 저장
  • 실행 = 연산 → CPU가 한다.
  • CPU가 연산할 때 프로세스의 상태(문맥)가 변화한다. → Register에 상태 변화를 기록한다.

 

 

 

 

 

 

 

 

 

참고

https://www.inflearn.com/course/%EA%B3%B0%EC%B1%85-%EC%89%BD%EA%B2%8C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C