[개념 정리/운영체제] 프로세스 상태
프로세스 상태
프로세스의 상태는 다음의 7가지로 구성된다.
생성 상태
생성 상태(create or new)는 프로세스가 생성된 상태를 의미한다.
fork() 또는 exec() 함수를 통해 프로세스가 생성된 상태이다.
이 때 PCB가 할당된다.
- fork(): 부모 프로세스의 주소 공간을 그대로 복사하며, 새로운 자식 프로세스를 생성하는 함수다. 주소 공간만 복사할 뿐, 부모 프로세스의 비동기 작업 등을 상속하지는 않는다.
- exec(): 새롭게 프로세스를 생성하는 함수.
대기 상태
대기 상태(ready)는 처음 프로세스가 생성(create)된 이후
메모리 공간이 충분하면 메모리를 할당받고,
충분하지 않으면 준비 큐(준비 순서열)에 들어가 대기 중인 상태를 말한다.
CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태이다.
대기 중단 상태
대기 중단 상태(ready suspended)는 준비큐가 꽉찬 상태,
메모리 부족으로 일시 중단된 상태이다.
실행 상태
실행 상태(running)는 CPU 소유권과 메모리를 할당받고
인스트럭션을 수행 중인 상태다.
CPU burst가 일어났다고도 표현한다.
중단 상태
중단 상태(blocked)는 어떤 이벤트가 발생한 후 기다리며 프로세스가 차단된 상태다.
예를 들어, 프린트 인쇄 버튼을 눌렀을 때
실행하고 있던 프로세스가 잠깐 멈춘 듯한 느낌을 받을 때가 있는데
이는 프린트 인쇄에 관한 IO요청으로 인해 인터럽트가 발생되어
현재 실행하고 있던 프로세스가 중단 상태로 잠시 변경된 것이다.
일시 중단 상태
일시 중단 상태(blocked suspended)는 대기 중단과 유사하다.
중단된 상태에서 프로세스가 실행되려고 했지만,
메모리 부족으로 일시 중단된 상태다.
종료 상태
종료 상태(exit or terminated)는 프로세스 실행이 완료되어
해당 프로세스에 대한 자원을 반납하며 PCB가 삭제되는 상태다.
종료는 자연스럽게 종료되는 경우도 있으나
부모 프로세스가 자식 프로세스를 강제적으로 종료시키는 비자발적 종료(abort)도 있다.
자식 프로세스에 할당된 자원의 한계치를 넘어서거나
부모 프로세스가 종료되거나
사용자가 process.kill 등의 명령어로 프로세스를 종료시키는 경우 등에 발생한다.
참고: inflearn 강의 'CS 지식의 정석 - 큰돌'