-
[OS] 프로세스 상태와 계층 구조운영체제 2023. 3. 18. 13:41728x90반응형
프로세스는 모두 저마다의 상태가 있습니다. 운영체제는 이런 프로세스의 상태를 PCB에 기록하여 관리합니다. 그리고 대부분의 운영체제는 이처럼 동시에 실행되는 수많은 프로세스를 계층적으로 관리합니다.
프로세스의 상태프로세스가 가질 수 있는 대표적인 상태는 아래와 같습니다.
🍊 생성 상태 new
- 프로세스를 생성중인 상태
- 이제 막 메모리에 적재되어 PCB를 할당받은 상태
🍊 준비 상태 ready
- CPU의 할당을 기다리는 상태
- 생성 상태를 거쳐 실행할 준비가 완료된 프로세스는 곧바로 실행되지 않고 준비 상태가 됨
- 준비 상태인 프로세스가 실행 상태로 전환되는 것을 디스패치(dispatch)라고 함
🍊 실행 상태 running
- CPU를 할당받아 실행 중인 상태
- 할당된 시간 동안 CPU 사용이 끝나면 (타이머 인터럽트 발생) 다시 준비 상태로 돌아감
- 실행 도중 입출력장치를 사용하여 입출력장치의 작업이 끝날 때까지 기다려야 한다면 대기 상태가 됨
🍊 대기 상태 blocked
- 입출력장치 등의 특정 작업을 기다리는 상태
- 입출력 작업은 CPU에 비해 처리 속도가 느림
- 그래서 입출력 작업을 요청한 프로세스는 입출력장치가 입출력을 끝낼 때까지(입출력 완료 인터럽트를 받을 때까지) 기다림
🍊 종료 상태 terminated
- 프로세스가 종료된 상태
- 프로세스가 종료되면 운영체제는 PCB와 프로세스가 사용한 메모리를 정리함
프로세스 계층 구조
프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 실행할 수 있습니다. 이때 새 프로세스를 생성한 프로세스를 부모 프로세스, 부모 프로세스에 의해 생성된 프로세스를 자식 프로세스라고 합니다.
부모 프로세스로부터 생성된 자식 프로세스는 실행 과정에서 또 다른 자식 프로세스를 생성할 수 있고, 그 자식 프로세스는 또 다른 자식 프로세스를 생성할 수 있습니다.
많은 운영체제은 이처럼 프로세스가 프로세스를 낳는 계층적인 구조로써 프로세스들을 관리합니다.
프로세스 생성 기법부모 프로세스는 어떻게 자식 프로세스를 생성하고 자식프로세스는 어떻게 자신만의 코드를 실행하는 걸까요?
부모 프로세스를 통해 생성된 자식 프로세스는 fork와 exec을 통해 실행됩니다.📍 fork와 exec
- fork - 자기 자신 프로세스의 복사본을 만드는 시스템 호출
- exec - 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출
📍 PPID란?
부모 프로세스와 자식 프로세스는 엄연히 다른 프로세스이기에 각기 다른 PID을 가집니다. 일부 운영체제에서는 자식 프로세스의 PCB에 부모 프로세스의 PID를 PPID(Parent PID)로서 기록하기도 합니다.
LIST'운영체제' 카테고리의 다른 글
[OS] CPU 스케줄링이란? | 선점형 스케줄링과 비선점형 스케줄링 (0) 2023.03.25 [OS] 스레드와 멀티프로세스, 멀티스레드 (0) 2023.03.19 [OS] 프로세스의 메모리 영역, 정적 할당 영역과 동적 할당 영역 (0) 2023.03.12 [OS] 프로세스와 프로세스 제어 블록(PCB), 문맥 교환 (2) 2023.03.11 [OS] 커널, 이중 모드와 시스템 호출, 운영체제 서비스 (0) 2023.03.09