티스토리 뷰

2023.02.22 - [운영체제] - #7 PCB(Process Control Block) - 프로세스 제어 블록

 

#7 PCB(Process Control Block) - 프로세스 제어 블록

● PCB - 프로그램이 메모리에 올라가서 실행중인 상태를 프로세스라고 하며 OS는 여러개의 프로세스를 전부 다 관리 & 공평하게 실행시켜야한다. - 프로세스가 만들어지면 OS는 해당 프로세스의

radderveloper.tistory.com

- 위의 글을 먼저 읽어보자


● 도입

- Context switching은 프로세스를 실행하는 중에 다른 프로세스를 실행하기위해 현재 실행중인 프로세스의 상태를 저장하고 다른 프로세스의 상태값으로 교체하는 작업을 의미한다.


- 아래 그림과 함께 보면서 Context switching을 간단하게 알아보자

- Context switching이 일어날때는 각 PCB의 내용이 변경된다.(PCB에 프로세스의 상태를 저장하니까)

- 현재 실행중인 프로세스(프로세스A)의 작업 내용을 프로세스A의 PCB에 저장하고 실행될 프로세스(프로세스B)의 PCB 내용대로 CPU가 다시 세팅된다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제
출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- Context switching이 일어날 때 PCB에서 변경되는 값에는 프로세스 상태, 각종 레지스터 값, 프로그램 카운터(다음 실행할 명령어의 주소를 담고있음) 등이 있다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제


● Context switching 자세히 알아보기

- 프로세스 2개가 Context switching을 하는 과정을 자세히 알아보자

- 참고로 메모리에 있는 모든 프로세스들에게 이러한 Context switching이 발생한다고 보면 된다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

1. 프로세스A가 실행을 하는 도중 CPU 점유시간을 초과했다.

2. OS는 프로세스A가 CPU를 너무 오래 사용했다고 판단해 인터럽트를 발생시키고 프로세스A는 하던 일을 멈춘다.

3. 나중에 프로세스A가 재실행될 때 작업을 멈춘 그 상태에서 다시 시작돼야 하기 때문에 현재 CPU에 있는 프로세스A에 대한 레지스터 값 등을 PCB A에 저장한다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

4. 이제 프로세스 B를 실행시킬 차례, PCB B를 참조해서 이전 프로세스 B의 상태로 CPU의 레지스터 값을 설정한다.

4-1. 해당 PCB B에는 다음 실행할 명령어의 주소를 가지고 있는 프로그램 카운터(PC)가 있기 때문에 바로 프로세스 B의 명령어를 실행할 수 있다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

5. 프로세스B가 점유시간 동안 CPU를 사용하다가 점유시간이 다 되면 OS는 프로세스A 때와 동일하게 다시 인터럽트를 발생시킨다.

6. 프로세스B의 현재 상태를 PCB B에 저장하고 PCB A에서 프로세스A의 상태를 가져온 후 다시 프로세스A를 실행시킨다.

(CPU가 PCB A에 세팅된 값을 토대로 프로세스A를 실행시킨다.)

출처 - 인프런, 그림으로 쉽게 배우는 운영체제
출처 - 인프런, 그림으로 쉽게 배우는 운영체제

Q. Context switching이 발생하는 이유
A.
- 프로세스의 CPU 점유 시간이 다 되거나
- I/O(입출력) 요청이 있거나
- 다른 종류의 인터럽트가 있을 때 발생한다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함