둘이 뭐가 다른지 헷갈릴 수 있다. 분명 I/O도 인터럽트가 발생하는 걸로 알고 있는데 running에서 인터럽트가 발생하면 ready, I/O가 발생하면 waiting state로 이동한다니... 혼란하다 혼란해
ready와 waiting의 가장 큰 차이는 "당장 CPU를 할당받을(dispatch) 수 있는가"의 차이이다.
인터럽트의 일반적인 의미는 제어권, 즉 CPU 뺏기라고 할 수 있다. 일반적인 인터럽트가 발생하면 프로세스는 CPU를 반납하고 ready state로 이동한다. 이 상태에서 다시 그 프로세스에게 차례가 돌아온다면 문제없이 CPU를 할당받을 수 있다.
반면 I/O 인터럽트처럼 CPU 처리와 양립 불가능한 작업이 수반되는 이벤트가 발생하면 어떻게 될까? CPU를 반납하는 건 똑같지만, 차례가 돌아와도 I/O가 아직 끝나지 않았다면 CPU를 할당받을 수 없다. 따라서 별도의 waiting state에서 I/O 작업이 끝나 CPU 할당이 가능해질 때까지 대기해야 한다.
다시 말해 ready state는 CPU를 할당받을 준비가 된 상태를, waiting state는 CPU 할당 전 필요한 작업의 완료를 기다리는 상태를 의미한다.
'컴퓨터공학 > 운영체제' 카테고리의 다른 글
CPU scheduling 헷갈리기 쉬운 부분 (0) | 2023.11.16 |
---|---|
멀티 어쩌구 구분하기 (1) | 2023.11.08 |
IPC blocking/non-blocking (0) | 2023.11.06 |