운영체제는 사용 중인 프로그램 즉 프로세스의 상태를 PCB에 기록하여 관리한다.
또한 동시에 실행되는 각기 다른 상태의 프로세스를 유기적으로 실행하기 위해 계층적으로 관리한다.
1. 프로세스 상태
- 생성 상태
- 이제 막 메모리에 적재되어 PCB를 할당받은 상태
- 준비가 완료되면 준비 상태로 바뀐다 - 준비 상태
- CPU를 할당 받아 실행할 수 있지만 자신의 차례가 아니면 기다리는 상태
- 자신의 차례가 된다면 실행 상태로 바뀐다 - 실행 상태
- CPU를 할당 받아 실행 중인 상태
- 할당된 시간 모두 사용 시 ( 타이머 인터럽트 발생 시 ) 준비 상태로
- 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태 - 대기 상태
- 프로세스가 실행 도중 입출력장치를 사용하는 경우
- 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듦
- 입출력 작업이 끝나면 ( 입출력 완료 인터럽트를 받으면 ) 준비 상태 - 종료 상태
- 프로세스가 종료된 상태
- PCB, 프로세스의 메모리 영역 정리
2. 프로세스 계층 구조
- 프로세스 실행 도중 ( 시스템 호출을 통해 ) 다른 프로세스 생성 가능
- 새 프로세스를 생성한 프로세스 : 부모 프로세스
- 부모 프로세스에 의해 생성된 프로세스 : 자식 프로세스
부모 프로세스와 자식 프로세스는 별개의 프로세스이므로 각기 다른 PID를 가짐
일부 운영체제에서는 자식 프로세스 PCB에 부모 프로세스 PID( PPID )를 명시하기도 한다.
3. 프로세스 생성 기법
부모 프로세스는 자식 프로세스를 어떻게 만들어 내고, 자식 프로세스는 어떻게 자신만의 코드를 실행할까?
> 복제와 옷 갈아입기
- 부모 프로세스는 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성
- 자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체
- fork 시스템 호출
- exec 시스템 호출
'컴퓨터공학' 카테고리의 다른 글
24. CPU 스케줄링 (0) | 2024.10.26 |
---|---|
23. 스레드 (0) | 2024.10.25 |
21. 프로세스 개요 (0) | 2024.10.23 |
20. 운영체제의 큰 그림 (0) | 2024.10.22 |
19. 운영체제를 알아야 하는 이유 (1) | 2024.10.18 |