[운영체제] 프로세스 상태와 스케쥴러

Yeongsan Son·2021년 6월 26일
0

프로그램1, 프로그램2, 프로그램3이 있다고 가정하자

각 프로그램은 실행 시간이 초 단위로 차이가 난다면 최적의 스케쥴링 알고리즘은 세 프로그램을 연속적으로 프로그램을 실행함으로 CPU를 100% 사용하는 방법이다.

이를 위해서는 프로세스 상태에 대해서 알아야 한다.

프로세스 상태

  • running state: 현재 CPU에서 실행 상태
  • ready state: CPU에서 실행 가능 상태(실행 대기 상태)
  • block state: 특정 이벤트 발생 대기 상태
    • block -> ready -> running
  • new: 프로세스가 생성중인 상태
  • exit: 프로세스가 종료된 상태
    • 프로세스가 가지고 있는 시스템 자원들을 반납하는 과정

프로세스 상태간 관계

  1. CPU가 running 상태 프로세스가 파일 읽기를 요청
  2. 요청이 완료될때까지 프로세스가 동작을 못하므로 프로세스 block 상태
  3. CPU가 running 상태의 프로세스를 Ready 상태로 변경
  4. 요청 완료 후 프로세스스가 ready 상태로 변경

큐를 적용한 프로세스 상태와 스케쥴러

  1. 레디 상태의 1번 프로세스를 FIFO 로직에 의해 큐에서 pop => CPU 할당
  2. CPU에 1번 프로세스가 올라와 있으므로 1번 프로세스의 상태는 running
  3. 1번 프로세스의 단위 실행이 완료되면 ready 상태 큐의 맨 뒤로 들어감
  4. 다음 순서인 2번 프로세스가 CPU 할당되고 running 상태
  5. 2번 프로세스의 단위 실행이 완료되고 wait이 존재하므로 block 큐로 들어감
  6. 3번 프로세스 CPU 할당되고 running 상태
  7. 3번 프로세스 단위 실행되고 ready 상태 큐의 맨 뒤로 들어감
  8. 1번 프로세스 pop -> CPU 할당 -> 1번 프로세스 종료 상태
  9. 2번 프로세스 blcok 상태 유지
  10. 3번 프로세스 pop -> CPU 할당 -> 단위 실행 후 block 상태 큐로 들어감
    ....

    idle : CPU가 아무 실행도 하지 않는 상태

profile
매몰되지 않는 개발자가 되자

0개의 댓글