🔷PCB와 Context Switching의 배경
앞서 인터럽트가 왜 사용되는 지에 대해 기술했는 데, 내용은 대충 아래와 같다.
고급 인력인 CPU가 일을 하지 않고 계속해서 입출력을 하는 시간을 소비하게 된다면 인력 낭비이므로 CPU가 입출력 연산을 기다리는 동안 CPU에게 인터럽트를 걸어 다른 할 일을 하도록 하는 것이다.
더 자세한 내용은 블로그 링크로 첨부한다.
https://xoxoxoxox.tistory.com/280
[운영체제] 인터럽트와 시스템 콜
인터럽트와 시스템 콜운영체제는 interrupt driven이고, 운영체제에서 사용하는 interrupt를 system call이라고 한다. 따라서 운영체제의 동작 방식을 이해하기 위해선 interrupt와 system call에 대해 필히 이
xoxoxoxox.tistory.com
그렇게 해서 나온 개념이 Multi Programming이고, 하나의 컴퓨터는 다수의 프로세스를 가지고 있고, 여러 개의 프로그램이 실행되면서 CPU는 프로세스의 상태에 따라 교체 작업을 수행해야 한다.
이때의 교체 작업을 Context Switching이라고 하고, 이를 하기 위해서 Process Metadata를 저장하는 곳이 PCB이다.
간단하게 프로세스들이 교체되고 실행되는 것을 그림으로 표현하면 위와 같다.
CPU에서는 PC를 통해 다음에 실행할 명령의 주소를 저장한다. IR(Instruction Register)은 명령어를 해석한다. PC에 저장되어 있는 명령어를 MainMemory에 프로그램에 적재되어 있으니, text 부분의 기계어 코드에 접근해서 명령어를 꺼내와 실행하게 되는 것이다. PCB는 각 프로세스마다 가지고 있는 것으로 CPU의 상황을 사진 찍어두는 것이라고 생각하면 편하다. 이렇게 PCB로 CPU의 마지막 상황을 캡쳐해두고, 다음에 자기 자신이 실행될 때 그대로 실행할 수 있도록 한다.
🔷Process Metadata
프로세스는 컴퓨터에서 실행되고 있는 하나의 프로그램, 작업 단위이다. 이런 프로세스는 실행하기 위해서 다양한 속성들을 저장하고 있어야하는 데, 그 데이터들을 Process Metadata라고 한다.
Process Metatdata는 밑의 정보들을 저장한다.
- Pid : 새로운 프로세스에 시스템이 할당해주는 고유 id
- State : 프로세스 우선순위 등과 같은 스케줄링 관련 정보를 기억합니다.
- Priority: 프로세스 우선순위 등과 같은 스케줄링 관련 정보를 기억시킵니다.
- Process Accounting Information : CPU를 사용한 시간, CPU 할당 시간 등이 있다
- CPU Registers : 프로세스의 레지스터 상태를 저장하는 공간(계산 결과 값 저장) 등. CPU 내 범용 레지스터(AX,BX,CX,DX), 데이터 레지스터(SP,BP,SI,DI), 세그먼트 레지스터(CS,DS,ES,SS) 등이 갖고 있다.
- Owner(계정 정보) : CPU 사용시간의 정보(Quantum), 각종 스케줄러에 필요한 정보를 기억시킵니다.
- 입출력 정보 : 프로세스 수행 시 필요한 주변 장치, 파일들의 정보를 기억시킵니다.
- Program Counter (PC) : 다음에 실행되는 명령어의 주소를 기억시킵니다.
- PPID, CPID: 부모 프로세스와 자식 프로세스의 pid
위 내용들은 PCB(Process Control block)에 저장된다.
🔷PCB (Process Control Block)
Process마다 1개씩 필요하다!
🔷Context Switching
수행 중인 Task(Process/Thread)가 변경될 때, CPU의 레지스터 정보가 변경되는 것을 뜻한다. 즉, 이전 프로세스의 상태를 PCB에 보관하고, 다른 프로세스의 정보를 PCB에서 읽어와 CPU 레지스터에 적재하는 과정이다.
🔹Context Switching이 일어나는 경우
실행되고 있는 프로세스가 빠지고 새로운 프로세스가 CPU를 받을 때 발생한다. (문맥 교환)
- CPU 스케줄링에 의해 할당된 작업 시간에 끝나 TimeOut이 발생
- 프로세스의 작업이 끝났을 때
- 실행 중이던 프로세스가 입출력 요청을 하는 등의 이유로 interrupt가 발생했을 때
🔹Context switch overhead
context switch를 하는 시간은 cpu가 일을 못하기 때문에 overhead라고 표현한다.
CPU가 부득이하게 관리목적으로 시간을 사용한다. (OS 실행될때)
따라서 low level 언어로 compact하게 짜놓아서 이를 최소한으로 줄이고자 한다.
🔹Context Switching이 일어나는 과정
CPU의 PC가 P0의 명령어를 가리키고 있는 경우이다. ( = P0이 실행되고 있을 때)
time slice가 끝나거나 (time-out) IO 입출력이 생겼을 때 interrupt/system call이 발생한다. OS의 CPU Scheduler가 프로세스 P1을 다음에 실행할 프로세스로 정했다.
1. P0의 PCB의 상태 저장
2. P1의 PCB의 상태를 적재
이제 위 과정을 거치게 되면, 프로세스 P1이 실행되게 된다.
지금까지의 과정이 계속 반복되면서 컴퓨터는 Multi-Programming을 하게 된다.
Reference
https://steady-coding.tistory.com/503
[운영체제] PCB & Context Switching
cs-study에서 스터디를 진행하고 있습니다. 프로세스 제어 블록 (PCB, Process Control Block) Process Metadata 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 동적인 상태의 컴퓨터 프로그램, 즉 하나의
steady-coding.tistory.com
https://velog.io/@heetaeheo/PCB-%EC%99%80-Context-Switching
PCB 와 Context Switching
프로세스는 컴퓨터에서 연속적으로 실행되고 있는 동적인 상태의 컴퓨터 프로그램, 즉 하나의 작업 단위이다. 프로세스는 여러 가지 특징을 가지고 있는데, 이러한 특징을 Process Metadata라고 합
velog.io
https://jerryjerryjerry.tistory.com/181
[운영체제] PCB와 컨텍스트 스위칭(Context Switching)
컨텍스트 스위칭(Context Switching) 컨텍스트 스위칭(Context Switching)은 운영체제가 현재 실행 중인 프로세스와 다음으로 실행할 프로세스 사이의 교체를 의미한다. 즉, 한 프로세스가 실행 중인 상태
jerryjerryjerry.tistory.com
'‡Computer Science ‡ > º 운영체제' 카테고리의 다른 글
[운영체제] 동기화(Process Synchronization) (0) | 2024.07.08 |
---|---|
[운영체제] 가상 메모리와 페이징 교체 알고리즘 (1) | 2024.07.05 |
[운영체제] 인터럽트와 시스템 콜 (0) | 2024.06.27 |