🖥️ 프로세스 상태와 계층 구조 🖥️
프로세스의 상태는 운영체제마다 차이가 있지만, 크게는 아래와 같다.
1. 생성 상태
- 메모리에 적재되어 PCB를 할당 받은 상태
2. 준비 상태
- CPU를 할당 받아 실행할 수 있지만,자신의 차례가 아니라 기다리는 상태
- 자신의 차례가 오면 실행 상태로 변경 (준비 상태 -> 실행 상태가 되는 것을 '디스패치'라고 함)
3. 실행 상태(running state)
- CPU를 할당 받아 실행 중인 상태
- 할당된 시간을 모두 사용 시 준비 상태로 변경(타이머 인터럽트 발생 시)
- 실행 도중 입출력 장치를 사용하면(입출력 인터럽트) 입출력 작업이 끝날 때까지 대기 상태로
4. 대기 상태(block state)
- 프로세스가 실행 도중 입출력 장치를 사용하는 경우
- 입출력 작업은 CPU에 비해 느리기 때문에, 대기 상태로 접어드는 것
- 입출력 작업이 끝나 입출력 완료 인터럽트를 받으면 준비 상태로 전환
5. 종료 상태
- 프로세스가 종료된 상태
- PCB, 프로세스의 메모리 영역 정리
프로세스 계층 구조
- 프로세스 실행 도중 시스템 호출을 통해 다른 프로세스 생성 가능.
- 새 프로세스를 생성한 프로세스 -> 부모 프로세스
- 부모 프로세스에 의해 생성된 프로세스 -> 자식 프로세스
부모 프로세스와 자식 프로세스는 별개의 프로세스로, 각기 다른 PID를 가진다.
일부 운영체제에서는 자식 프로세스 PCB에 부모 프로세스 PID(PPID_parent)를 명시하기도 함.
자식 프로세스도 또 다른 자식 프로세스를 낳을 수 있고.. 계속해서 생성 가능
-> 프로세스의 계층적인 구조 형성
프로세스 생성 기법
부모 프로세스는 자식 프로세스를 어떻게 만들어 내는가?
자식 프로세스는 어떻게 자신만의 코드를 실행하는가?
'복제와 옷 갈아입기'
1. 부모 프로세스는 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성
2. 자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체
exec(execution) 시스템 호출
- 메모리 공간을 새로운 프로그램으로 덮어쓰기
- 코드/데이터 영역은 실행할 프로그램 내용으로 바뀌고 나머지 영역은 초기화
학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl
'Computer Science > 운영체제' 카테고리의 다른 글
5. CPU 스케줄링 (0) | 2023.08.29 |
---|---|
4. 스레드 (0) | 2023.08.29 |
2. 프로세스 개요 (0) | 2023.08.27 |
1. 운영체제 intro (0) | 2023.08.27 |
0. 운영체제를 왜 공부해야 하는가 🤔 iOS (0) | 2023.07.02 |