프로세스의 상태
- 프로세스의 상태는 전이한다.
- 생성 → 준비 → 실행 → 완료
- 생성 → 준비 → 실행 → 대기 → 준비 → 실행 → 완료
Ready Queue (준비 상태 큐)
- 준비 상태의 프로세스(스레드)를 Queue에 가지고 있는다.
- OS가 T1, T2 등의 프로세스(스레드)를 디스패치하여 끄집어내서 실행
- 프로세스가 I/O 요청 시 Device에서 응답 받을 때 까지 기다린다. = 대기 상태 = Blocking I/O
- 요청한 프로세스의 실행상태가 유지됨 = 기다리지 않고 비동기적으로 한다. = Non Blocking I/O
프로세스의 Sleep(휴식) 과 Suspend(보류)
- Sleep(휴식) → 자발적 이탈 ( '나 좀 자러 갈게' )
- Suspend(보류) → 외부 요인에 의해 의도치 않게 이탈 ( '너 좀 비켜봐' )
- 외부 요인에 의해 이탈하는 경우 → 가상 메모리에서 Swap 할 때 (RAM에서 HDD로 메모리 이동), 프로그램이 죽었을 때
- 준비 상태의 프로세스(스레드)가 Sleep 또는 Suspend 상태가 되면, Ready Queue의 대기열에서 이탈하게 된다.
- Sleep의 경우 함수에서 ms 단위로 실행한다. → 10ms + @ 만큼 쉰다.
- @는 10ms 이후 Ready Queue에 재진입하여 앞에 있는 프로세스의 연산이 완료되는 시간(랜덤)
- Sleep 함수의 특징: 자기의 의지로 Ready Queue 대기열에서 이탈 후 정해진 시간 이후에 재진입 후 랜덤 시간 이후에 실행됨
- Suspend 위와 동일하다.
문맥(Context) 교환(Switch)
- 프로세스의 상태 = 흐름 = 문맥
- P1이라는 흐름이 이어지다가, P2로 바뀐다. → 문맥 교환(Context Switch)
- P1의 상태를 PCB 1에 저장 = P1의 문맥을 이어가기 위한 상태 저장
- 실행 = 연산 → CPU가 한다.
- CPU가 연산할 때 프로세스의 상태(문맥)가 변화한다. → Register에 상태 변화를 기록한다.
참고
'IT 지식 > 운영체제' 카테고리의 다른 글
프로세스 생성과 복사 (0) | 2024.08.25 |
---|---|
프로세스와 스레드 (0) | 2024.08.23 |
CPU 예측이 가져오는 문제점(멜트다운, 스펙터) (0) | 2024.08.22 |
CPU와 캐시 메모리 (1) | 2024.08.21 |
DMA와 고성능 소켓 (0) | 2024.08.20 |