본문 바로가기
운영체제

[운영체제] 3. 프로세스 관리 - (2) 커널의 프로세스 관리

by NoDapKeepGoing 2025. 4. 11.

<2025.3.20.목요일 수업>

 

!!!!!!!!!!!!!!!!!!!!!!!마인드맵!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

📍1. 프로세스 수행 제어를 위해 필요한 정보

1-1. CPU 컨텍스트(context)

✔️ 사용 중인 CPU 레지스터들의 내용

 

1-2. 커널 컨텍스트

✔️ 식별자: 부모, 자신, 자식식별자, 프로세스를 생성한 사용자 정보
✔️ 프로세스 상태: 준비, 수행, 블록 등
✔️ 스케줄링 정보: 우선 순위, 프로세서 사용 시간 등의 정보
✔️ 메모리 관리를 위한 정보: 코드와 데이터, 공유되는 메모리 블록들의 주소, 매핑테이블
✔️ 입출력 상태 정보: 미해결 입출력 요청, 할당된 입출력 장치, 사용 중인 파일리스트 등의 정보
✔️ 프로세스 간의 통신 정보: 다른 프로세스로부터 받은 신호 플래그, 메시지 정보
✔️ Accounting 정보

 

📍2. 프로세스 제어 자료구조

2-1. 프로세스 테이블

✔️ 시스템의 생성된 모든 프로세스들을 제어하기 위한 자료구조
✔️ 시스템에 한 개만 있음
✔️ 각 프로세스의 PID와 PCB포인터 저장

 

2-2. 프로세스 제어 블록(PCB, Process Control Block)

✔️ 프로세스에 관한 정보를 저장하는 자료구조
✔️ 프로세스당 하나씩 존재
✔️ 프로세스가 생성될 때 만들어지고 종료되면 삭제
✔️ 커널에 의해 생성, 저장, 읽혀지는 등 관리

 

2-3. 프로세스 테이블과 PCB의 위치

✔️ 커널 영역

✔️ 커널 코드(커널 모드)만이 접근 가능

 

 

2-4. 프로세스 테이블과 PCB

2-4-1. 프로세스 테이블

✔️  운영체제가 현재 시스템에 존재하는 모든 프로세스 정보를 관리하기 위해 사용하는 표 형태의 자료구조

✔️  각 프로세스는 고유한 PID (프로세스 ID) 를 가짐

✔️  각 PID는 PCB (Process Control Block) 라는 구조체(데이터 블록)를 가리킴

 

2-4-2. PCB (프로세스 제어 블록)의 구성 요소

✔️  PCB는 프로세스 하나에 대한 모든 정보를 담고 있는 '프로세스의 신분증' 같은 존재

 

2-4-3. 운영체제가 PCB를 사용하는 방법

운영체제는 문맥 교환(Context Switching)을 할 때 PCB 정보를 저장하고 불러옴

즉, 실행 중이던 프로세스를 잠깐 멈추고 다른 프로세스를 실행해야 할 때

1️⃣ 현재 프로세스의 상태를 PCB에 저장

2️⃣ 새로 실행할 프로세스의 PCB에서 정보를 읽어와 CPU에 로딩

 

2-5. PCB의 주요 역할

1️⃣ 인터럽트 발생을 허용

수행 중인 프로세스를 인터럽트한 후, 나중에 그 인터럽트가 발생되지 않은 것처럼 프로세스 수행을 재개할 수 있도록 충분한 정보를 PCB에 유지

2️⃣ 다중프로그래밍과 다중프로세싱을 허용

OS로 하여금 다수의 프로세스를 지원하게 하는 주요 도구

 

2-6. 프로세스 이미지의 일반적인 구성 요소

 

 

 

 

1️⃣ 사용자 코드(Text)
2️⃣ 사용자 데이터(Data)
3️⃣ 힙(Heap)
4️⃣ 사용자 스택(Stack)
5️⃣ 프로세스 제어 블록(PCB)

 

 

 

📍3. 프로세스 제어

3-1. 프로세스 생성 시 작업 순서

1️⃣ 유일한 프로세스 식별자를 할당하고 프로세스 테이블에 추가
2️⃣ 커널 메모리 영역에 PCB를 위한 메모리 공간을 할당
3️⃣ PCB 초기화
4️⃣ 사용자 메모리 영역에 프로세스 구성요소를 위한 메모리 공간을 할당하고 공유 주소 공간을 연결
5️⃣ PCB를 프로세스 상태 자료구조에 연결
6️⃣ 회계파일 생성

 

3-2. 프로세스 종료 시 작업

✔️ 할당된 모든 자원을 회수
✔️ 자원 사용에 관한 정보 수집
✔️ 생성한 자료구조 제거

 

3-3. 프로세스 스위칭(process switching) 순서

1️⃣  현재 CPU 문맥을 수행 상태인 프로세스의 PCB에 저장

2️⃣ 현재 수행 상태인 프로세스의 나머지 제어정보를 PCB에 저장

3️⃣ 상태를 전이하는 이유와 회계정보 등을 갱신

4️⃣ 현재 수행 상태인 프로세스의 PCB를 전이해야 할 상태(준비, 블록)로 이동

5️⃣ 준비 상태에 있는 다음에 수행할 프로세스를 선택(스케줄링)

6️⃣ 선택된 프로세스의 PCB를 갱신함(준비 수행)

7️⃣ 선택된 프로세스를 수행 상태로 이동함

8️⃣ 선택된 프로세스의 PCB에서 프로세스 컨텍스트를 복원

 

3-4. 프로세스 리스트 구조

e.g.) 5상태 모델 가정

☑️  그림의 파란 사각형들은 각 프로세스의 PCB를 의미

☑️  이 PCB들은 상태별로 큐(리스트)를 형성하여 연결되어 있음 (→ 화살표로 연결)

 

✔️ 리스트 구조

상태별로 프로세스를 구분하여 효율적으로 관리

✔️ PCB 연결 방식

각 상태 리스트 내에서 PCB가 포인터로 연결

✔️ 운영체제 역할

각 상태 전이 시 PCB를 해당 리스트로 이동시키며 프로세스 스케줄링 수행