[운영체제] 프로세스 상태와 생성
이 글은 패스트캠퍼스의 현실 세상의 컴퓨터공학 지식 with 30가지 실무 시나리오 초격차 패키지 Online.를 보고 공부한 내용을 정리한 글입니다. 이해한 내용을 바탕으로 작성했기에 틀린 내용이 있을 수 있습니다.
프로세스 상태와 생성
프로세스 상태
대표적인 프로세스의 상태는 다음 5가지가 있다
- 생성 상태 (new) : 프로세스가
생성
되고, 운영체제에 등록되는 단계, PCB가 만들어짐 - 준비 상태 (ready) : 프로세스가
CPU를 할당받기를 기다리는 단계.
이 상태의 프로세스는 실행을 위한모든 준비를 마친 상태
- 실행 상태 (running) : 프로세스가
CPU를 할당
받아 명령어를 실행 중인 상태 - 대기 상태 (blocked) : 프로세스가
어떤 이벤트(예를 들어, I/O 작업의 완료)
를 기다리는 상태 - 종료 상태 (terminated) : 프로세스가
종료
되는 상태, PCB가 삭제됨
프로세스 생성
프로세스 계층적 구조
프로세스는 최초의 프로세스를 부모로 갖고 거기서 부터 파생되어 생성되는 계층적 구조를 가지고 있다.
리눅스의 터미널에서는 pstree라는 명령어를 통해 프로세스의 계층적 구조를 살펴볼 수 있다.
계층적으로 프로세스가 생성되는 원리
프로세스가 계층적으로 생성되는 원리 중 하나는 fork-exec 시스템 콜
이다.
fork
는 자신의 복제본을 만드는 시스템 콜이다.
자신을 토대로 복제본을 만들기에 사용자 영역의 내용은 같지만
커널영역에 저장되는 PCB의 PID는 다르게 저장
되며
생성되는 프로세스의 PPID는 원본을 부모로 가르킨다.
exec
는 새로운 코드를 덮어씌우는 시스템 콜이다.
exec가 실행되므로 복제본이 아닌 새로운 프로세스가 만들어지며 이렇게 fork-exec가 한 묶음으로 실행
되어 계층적으로 프로세스를 생성
할 수 있게 된다.
흔히 누구나 즐기는 게임도 이러한 과정을 거쳐 fork-exec를 통해 어떠한 부모 프로세스로 부터 생성된다.
정리
프로세스는 크게 5가지의 상태를 가지고 있다. 생성, 준비, 실행, 대기, 종료
프로세스는 fork-exec 시스템 콜을 통해 계층적으로 생성
되는 원리를 가지고 있다.
댓글남기기