오래 못 할 짓 하지 않기
[ 운영체제 ] 4. 프로세스 상태 및 계층구조 본문
이런 거에 대해 알아볼 예정
프로세스 상태
프로세스는 5가지 상태로 나눌 수 있다
생성 / 준비 / 실행 / 대기 / 종료
● 생성 상태
- 이제 막 메모리에 적재되어 PCB를 할당받은 상태
- 준비가 완료되면 준비 상태로 넘어감
● 준비 상태
- CPU를 할당받아 실행할 수 있지만, 자신의 차례를 기다리는 상태
- 자신의 차례가 되면 실행상태로 (= 디스패치)
● 실행 상태
- CPU를 할당받아 실행 중인 상태
- 할당된 시간을 다 사용했을 때 (= Timer Interrupt 발생 시) 준비 상태로 돌아간다.
- 실행 도중 입출력장치를 사용하면
입출력 작업이 끝날 때까지(= 입출력 완료 Interrupt를 받을 때까지) 대기 상태
● 대기 상태
- 프로세스가 실행 도중에 입출력 장치를 사용하는 경우
- 입출력 작업은 CPU에 비해 느리기 때문에, 대기 상태로 한다.
- 입출력 작업이 끝나면 준비 상태로
● 종료 상태
- 프로세스가 종료된 상태
- PCB, 프로세스 메모리 영역 정리
프로세스 계층 구조
프로세스 실행 도중 다른 프로세스 생성 가능
● 부모 프로세스 = 새 프로세스를 생성한 프로세스
● 자식 프로세스 = 부모 프로세스에 의해 생성된 프로세스
+자식 프로세스가 또 다른 자식 프로세스를 만들 수 있음.
10개의 프로세스가 동작하고 있다.
[ 특징 ]
부모 프로세스와 자식 프로세스는 별개의 프로세스
따라서, 각기 다른 PID를 가진다.
예제
최초의 프로세스는 로그인 프로세스라는 자식 프로세스를 생성함
▶ 로그인 프로세스는 bash 프로세스라는 자식 프로세스를 생성함
...
이런 거 확인하는 법
pstree // 프로세스 트리 명령어
프로세스 생성 기법 (윈도우와 관련 X)
부모 프로세스는 자식 프로세스를 어떻게 만들고
자식 프로세스는 어떻게 자신만의 코드를 실행할까?
비유 : 복제 / 옷 갈아입기 과정을 거쳐서 생성 및 실행된다.
● 부모 프로세스는 fork 시스템 호출을 통해 자신의 복사본을 자식 프로세스로 생성
복사본이 생성된다.
하지만 엄연히 별개의 프로세스이며, PID와 적재된 MEM의 위치는 다르다.
● 자식 프로세스는 exec 시스템 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체
- 메모리 공간을 새로운 프로그램으로 덮어쓰기
- 코드/데이터 영역은 실행할 프로그램 내용으로 바뀌고,
나머지 영역은 초기화
(출처)
유튜브 한빛미디어
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 6. 프로세스 / 스레드 확인 (with Python) (0) | 2024.01.08 |
---|---|
[ 운영체제 ] 5. Thread (0) | 2024.01.05 |
[ 운영체제 ] 3. 프로세스 개요 (프로세스 메모리 영역) (0) | 2024.01.03 |
[ 운영체제 ] 2. OS Overview (커널, 서비스 종류 , 시스템 콜, 이중모드) (0) | 2023.12.30 |
[ 운영체제 ] 1. 운영체제란? (0) | 2023.12.28 |