[운영체제] 프로세스 상태도

임클·2023년 3월 24일
0

23 1학기 CS 전공 수업

목록 보기
11/21

프로세스 상태도

Process States Model

Not-running Processes

  • Ready State
    • 준비 상태
    • Waiting fot the processor to dispatch
    • 프로세스가 주어줘도 실행되지 않은상태
  • Blocked State (= wait state, sleep state)
    • 이벤트가 발생되길 기다림
    • cpu 할당해도 소용없기 때문에 할당 안함
    • dispatch 안함
    • ex) I/O completion

프로세스를 생성하면 (enter) 바로 Admit 과정을 거쳐 Ready queue로 들어감

Ready Queue에서 OS 스케쥴러 정책에 따라 Dispatch될 작업이 선정되서 Running상태에 돌입

실행상태에 있는 프로세스는 CPU 자원을 할당받아서 프로그램 명령어 처리중임

따라서, 여러개의 CPU를 가진 멀티 프로세싱 시스템에서는, 어떤 한시점에 여러개의 프로세스가 실행 중일 수 있음 (Parall System)

실행상태에 있는 프로세스에게 발생하는 이벤트에 따라서 운영체제 프로세스 관리 기능은 프로세스 상태를 변화시킴.

1) 자신이 해야할 일을 다 끝내고 exit or kill 호출시 종료 상태 (Terminated, Zombie)로감, 통계정보를 유지할 자원 외 필요 없음

Terminated 도 프로세스로 남아있긴함. 단, wait system call 시 완전히 시스템에서 사라짐

부모 프로세스가 wait 호출 (통계 정보 수집 시스템콜)시 완전히 프로세스 세계에서 나감 == 컴퓨터 시스템에서 없어짐

2) Timeout

다시 Ready 상태로 변화, Ready queue로 들어감. 다시 Dispatch 과정을 거침

3) 프로세스가 특정한 이벤트를 기다릴 경우

ex ) 입출력,

입력, 출력이 끝날때 까지 Blocked 상태

  • 자발적으로 sleep, wait system call을 호출한 경우
  • 자원을 요청했는데, 해당 자원이 lock (다른 프로세스가 사용중)인경우 unlock 될때 까지 기다려야함

Blocked는 CPU 못씀

이벤트 발생시(깨울시)

Ready로 보냄

이때, Blocked에서 바로 Running으로 가는게 아닌 다시 Ready로 먼저 가야함.


하드웨어 관점으로 표현

Event queue를 하나로만 한다면 해당 queue를 일일히 비교해야하기때문에 event 종류 마다 queue 만듦


참고 :

프로세스는 메인 메모리에 들어와 있어야 실행할 수 있음

운영체제는 CPU 활용도를 높이기 위해 여러개의 프로세스를 넣어 실행

Suspended Processes

  • 메인 메모리에 Ready에 있다가 보조기억장치로 간 프로세스
  • Blocked/Suspend : 메인 메모리에 있을 때 블럭상태였는데 보조기억장치로 밀어낸 경우
  • Ready/Suspend : 메인 메모리에 있을때 Ready 상태로 있을때 보조기억장치로 밀어낸 경우

Suspended Processes로 만드는 이유

  • 프로세서(CPU) 가 I/O 보다 더 빠르게 되기 때문, CPU의 성능을 높이기 위해

Suspended sleep = Suspended block

왜 Suspended process가 필요한 이유

공통 : 메인 메모리 공간을 확보하기 위해, 불필요한 공간을 차지 않게 하기 위해

  • Swapping
    • Swap in / out : 메인 메모리 기준으로 들어오는지나가는지 판별
  • Timing
    • 가끔 한번씩 실행되는 프로세스는 실행안될때는 보조기억장치로 보냄.
    • ex) software update가 있는지 하루에 한번 체크하는 기능
  • Interactive user request
  • Parent process requset
  • Other OS reason
profile
iOS를 공부하는 임클입니다.

0개의 댓글