티스토리 뷰

컨텍스트 스위칭에 대해서 알아보면서 프로세스의 상태를 저장한다는 표현이 많이 나와서 프로세스의 상태에 대해서 정리해봤습니다.

 

프로세스 심화 - 컨텍스트 스위치(문맥 교환)

프로세스와 스레드 차이에 대해 간단히 알아보고 나서 프로세스의 컨텍스트 스위치에 대해서 깊게 알아봐야겠다고 느꼈습니다. Process와 Thread의 차이는 무엇일까? Process 컴퓨터에서 연속적으로

kkoon9.tistory.com

프로세스의 상태

프로세스의 상태는 다음 다섯 가지로 구분할 수 있습니다.

  • 실행(running) : 프로세스가 CPU를 보유하고 실행되고 있는 상태
  • 준비(ready) : 실행할 준비는 되어있지만, CPU를 할당받지 못한 상태
  • 봉쇄(blocked, wait, sleep) : CPU를 주어도 당장 실행할 수 없는 상태
  • 시작(new) : 프로세스가 생성 중인 일시적 상태
  • 완료(terminated) : 프로세스가 종료 중인 일시적 상태

하나의 프로세스는 어느 한 상태에 머물러 있게 되고, 시간이 흐름에 따라 그 상태는 변합니다.

🤔 예1) A 프로세스에서 B 프로세스로 컨텍스트 스위치가 일어났을 상황

여기서 A 프로세스는 실행 상태에서 준비 상태로, B 프로세스는 준비 상태에서 실행 상태로 바뀝니다.

준비 상태에 있는 프로세스들 중에서 CPU를 할당받을 프로세스를 선택한 후 실제로 CPU의 제어권을 넘겨받는 과정을 CPU 디스패치(dispatch)라고 합니다.

🤔 예2) 입출력을 요청한 상황

입출력은 오랜 시간이 소요될 수 있는 작업입니다.

그렇기 때문에 입출력을 처리하는 프로세스가 CPU를 점유하고 있으면 비효율적입니다.

따라서 입출력이 완료될 때까지 CPU를 반환하고, 봉쇄 상태가 됩니다.

입출력을 처리하는 프로세스는 장치 큐에서 기다리다가 디스크 컨트롤러로부터 서비스를 받습니다.

이 때, 디스크 컨트롤러는 CPU에게 인터럽트를 발생시켜 입출력이 완료되었다고 알려줍니다.

CPU는 다른 프로세스를 실행하고 있다가 인터럽트를 확인하고 그에 대응하는 루틴을 수행하게 됩니다.

여기서의 루틴은 입출력이 완료된 프로세스의 상태를 준비 상태로 바꾸는 작업입니다.

입출력이 완료된 프로세스의 우선순위가 더 높은 경우에는 바로 컨텍스트 스위치가 발생하여 CPU 제어권을 이양해주는 경우도 있습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함