이 글을 혼자 공부하는 컴퓨터구조 + 운영체제 (한빛미디어) 책을 읽고 혼자 공부한 내용입니다.
잘못 이해한 부분이 있을 수 있고, 문제가 있는 부분 댓글로 알려주시면 수정하겠습니다.
프로세스 상태
프로세스의 상태를 표현하는 방식은 운영체제마다 조금씩 차이가 있지만,
대표적인 상태는 아래와 같음
생성 상태 (new)
- 프로세스를 생성 중인 상태를 생성 상태
- 이제 막 메모리에 적재되어 PCB를 할당 받은 상태
준비 상태 (ready)
당장이라도 CPU를 할당받아 실행할 수 있지만, 아직 자신의 차례가 아니기에 기다리고 있는 상태
실행 상태 (running)
- CPU를 할당받아 실행 중인 상태
- 할당된 시간을 모두 사용한다면 (타이머 인터럽트 발생한다면) 다시 준비 상태가 됨
- 실행 도중 입출력장치를 사용하여 입출력 장치의 작업이 끝날 때까지 기다려야 한다면 대기 상태가 됨
대기 상태 (blocked)
- 프로세스는 실행 도중 입출력장치를 사용하는 경우가 있음
- 입출력 작업은 CPU에 비해 처리 속도가 느림 -> 기다려야 해서 대기 상태
- 입출력 작업이 완료되면 해당 프로세스는 다시 준비 상태로 CPU 할당을 기다림
종료 상태 (terminated)
- 프로세스가 종료된 상태
- 운영체제는 PCB와 프로세스가 사용한 메모리를 정리
프로세스 계층 구조
프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스 생성 가능
새 프로세스를 생성한 프로세스를 부모 프로세스,
부모 프로세스에 의해 생성된 프로세스를 자식 프로세스
부모/자식 프로세스는 엄연히 다른 프로세스이기에 각기 다른 PID를 가짐
프로세스 생성 기법
부모 프로세스는 fork를 통해 자신의 복사본을 자식 프로세스로 생성
복사본(자식 프로세스)은 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체
fork : 복사본 만들기
exec : 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰는 시스템 호출
exec를 호출하면 코드 영역과 데이터 영역의 내용이 실행할 프로그램의 내용으로 바뀌고, 나머지 영역은 초기화
순서 정리...
1. 부모 프로세스로부터 자식 프로세스가 복사
2. 자식 프로세스는 새로운 프로그램으로 옷을 갈아입음
3. 또 그 자식 프로세스로부터 자식 프로세스가 복사
4. 옷을 갈아입음 ~~~ 이렇게 여러 프로세스가 계층적으로 실행
* fork한 뒤에 exec를 호출하지 않는 경우는 그냥 같은 코드를 병행하여 실행하는 프로세스
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 11-1 CPU 스케줄링 개요 (1) | 2024.08.21 |
---|---|
[운영체제] 10-3 스레드 (0) | 2024.08.20 |
[운영체제] 10-1 프로세스 개요 (0) | 2024.08.18 |
[운영체제] 9-2 운영체제의 큰 그림 (0) | 2024.08.17 |
[운영체제] 9-1 운영체제를 알아야 하는 이유 (0) | 2024.08.16 |