본문 바로가기
이론/운영체제

[OS] 프로세스 모델, 프로세스 보류

by ohojee 2023. 7. 23.

2상태 프로세스 모델

새로운 프로세스를 생성할 때 그 프로세스에 대한 프로세스 제어블록 생성 → 그 프로세스를 비수행 상태로 초기화 → 수행될 때까지 기다림 → 수행 중인 프로세스 인터럽트 → 디스패터가 수행할 새로운 프로세스 선택 → 인터럽트 당한 프로세스는 수행 상태에서 비수행 상태로 바뀜

5상태 프로세스 모델

처리기는 수행 가능한 프로세스를 라운드로빈 형식으로 처리
2상태 프로세스 모델에서는 비수행 상태에 있는 프로세스들은 수행할 준비가 된 프로세스/입출력 연산이 완료되기를 기다리며 블록되어있는 프로세스로 나뉠 수 o ← 이 경우 후자는 선택하면 x, 블록되지 않았으면서 큐에 가장 오래 머문 프로세스 선택해야 함 ⇒ 비수행 상태를 준비 상태와 블록 상태로 분할

  • 수행: 현재 수행 중인 프로세스, 하나의 프로세스만이 수행 상태
  • 준비: 기회가 주어지면 수행될 준비가 되어있는 프로세스
  • 블록/대기: 입출력 연산 완료 등과 같은 이벤트가 발생할 때까지 수행될 수 없는 프로세스
  • 생성: 지금 막 생성, but 수행가능한 프로세스 풀로 진입이 아직 허용되지 않은 프로세스(프로세스 풀로 진입 전까지 주기억장치에 적재 x)
  • 종료: 프로세스 수행 정지 or 어떤 이유로 중단되어 수행가능 프로세스 풀에서 방출된 프로세스, 더 이상 수행될 수는 없지만 작업과 관련된 테이블과 다른 정보들은 운영체제에 의해 잠시 보존
  • 널 → 생성: 새로운 프로세스 생성
  • 생성 → 준비: 새로운 프로세스를 받아들일 준비가 되었을 때
  • 준비 → 수행: 준비 상태의 프로세스들 중 하나 선택
  • 수행 → 종료: 작업 완료 or 수행 중단
  • 수행 → 준비: 프로세스에게 허용된 최대 처리기 시간을 모두 사용했을 때 다른 프로세스에 의해 선점됨
  • 수행 → 블록: 자원을 요구했는데 기다려야 할 때
  • 블록 → 준비: 기다리고 있던 이벤트 발생
  • 준비 → 종료: ex) 부모 프로세스가 자식 프로세스 종료시켰을 때
  • 블록 → 종료: ex) 부모 프로세스가 자식 프로세스 종료시켰을 때

보류된 프로세스

수행될 프로세스는 주기억장치에 완전히 적재되어야 o, but 처리기 속도 >>>> 입출력 장치 속도 이기에 메모리에 있는 프로세스들은 입출력 완료되기를 기다림 ⇒ 해결 방법 1. 주기억장치 용량 증가 <= 비용 문제 2. 스와핑: 프로세스의 일부 or 전체를 주기억장치 → 디스크로 옮김, 주기억장치에 있는 프로세스 들 중 준비 상태에 있는 프로세스가 없다면 블록된 프로세스 중 하나를 디스크로 내보내고 보류큐에 삽입 → 보류큐에 있는 프로세스를 기억장치로 보내거나 새로운 프로세스 요청 받아들임 → 새로 도착한 프로세스 수행 but 스와핑도 입출력 연산이기에 속도 느릴 수 o, but 프린터 입출력에 비해 빠름

보류상태가 하나인 경우
보류상태가 둘인 경우
  • 준비: 프로세스가 주기억장치에 존재, 수행 가능
  • 블록: 프로세스가 주기억장치에 존재, 사건 기다림
  • 블록/보류: 프로세스가 보조기억장치에 존재, 사건 기다림
  • 준비/보류: 프로세스가 보조기억장치에 존재, but 주기억장치에 적재되면 즉시 수행 o
  • 블록 → 블록/보류: 준비된 프로세스가 하나도 없으면 하나 이상의 블록된 프로세스를 스왑아웃시켜 블록되지 않은 다른 프로세스를 위한 공간 마련
  • 준비/보류 → 준비: 준비된 프로세스들이 주기억장치에 없으면 다른 프로세스 반입
  • 준비 → 준비/보류: 보통은 블록된 프로세스를 보류함, but 주기억장치에 준비된 프로세스충분히 큰 공간을 마련할 수 있는 유일한 방법이라면 준비 상태의 프로세스 보류
  • 생성 → 준비/보류, 생성 → 준비: 새 프로세스가 생성될 때
  • 블록/보류 → 블록: 주기억장치에 빈공간 생김 → 준비/보류 큐에 있는 어떤 프로세스보다도 우선순위 높음 and 그 프로세스가 기다리고 있는 사건이 곧 일어날 것이라고 판단
  • 수행 → 준비/보류: 블록/보류 큐에 있던 우선순위가 더 높은 프로세스가 막 블록해제되어 수행 중인 프로세스 선점

프로세스 보류 이유

  • 스와핑: 수행 준비된 프로세스를 불러들이기 위해 주기억장치 공간 해제
  • 운영체제의 다른 이유: 운영체제는 후면 프로세스, 유틸리티 프로세스, 문제를 야기한다고 의심되는 프로세스 보류
  • 대화식 사용자의 요청: 디버깅 or 자원 사용 관련해 프로그램 수행 보류
  • 타이밍: 주기적으로 수행되는 프로세스가 다음주기까지 대기 ex) 과금 프로세스, 시스템 모니터링 프로세스
  • 부모 프로세스 요청: 자식 프로세스 검사 or 수정 or 다양한 자손들의 활동 조정

댓글