Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
Computer Science/운영체제

3. 프로세스 상태와 계층 구조

by Toughie 2023. 8. 28.

🖥️ 프로세스 상태와 계층 구조 🖥️ 

프로세스의 상태는 운영체제마다 차이가 있지만, 크게는 아래와 같다.

 

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