티스토리 뷰
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(입출력) 요청이 있거나
- 다른 종류의 인터럽트가 있을 때 발생한다.
'CS > 운영체제' 카테고리의 다른 글
#11 프로세스와 Thread (0) | 2023.03.03 |
---|---|
#10 프로세스 생성과 종료 with fork, exec 함수 (0) | 2023.02.27 |
#8 프로세스 상태 with 시분할 처리 (0) | 2023.02.24 |
#7 PCB(Process Control Block) - 프로세스 제어 블록 (0) | 2023.02.22 |
#6 유니프로그래밍, 멀티프로그래밍, 멀티프로세싱 (0) | 2023.02.21 |
- Total
- Today
- Yesterday
- 빅데이터
- Java8
- MongoDB
- 메모리
- nosql
- 운영체제
- 코딩테스트
- Phaser
- db
- java
- Phaser3
- Stream
- jpa
- Advanced Stream
- git
- DART
- API
- 프로그래머스
- 알고리즘
- node.js
- OS
- SQL
- SpringBoot
- 코테
- 프로세스
- 빅데이터 분석기사
- spring
- 자료구조
- MySQL
- Spring Boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |