반응형
컨텍스트 스위칭
컨텍스트 스위칭이란?
출처 : https://www.crocus.co.kr/1364
위 그림은 컨텍스트 스위칭을 프로세스 P0와 프로세스 P1을 예시로 설명해줍니다.
- P0를 실행(execute) 하던 중 인터럽트(interrupt)나 시스템 콜(system call)이 일어나게 됩니다.
- 운영체제에서 P0에 대한 상태를 PCB0에 저장합니다.
- P1를 이용하기 위해 PCB1에서 P1에 대한 상태를 불러옵니다.
- 그동안 P0는 대기(idle) 상태입니다.
- 마찬가지로 P1을 실행하던 중 인터럽트나 시스템 콜이 일어나면 1~4 단계를 반복 해줍니다.
이렇게 프로세스나 스레드가 실행과 대기를 반복하는 것이 컨텍스트 스위칭 입니다.
이를 통해 멀티 프로세싱이나 멀티 스레딩 기능을 동작하게 합니다.
컨텍스트 스위칭 장점
- 실시간으로 사용하는 것 처럼 보여집니다.
- 이전에 실행하던 데이터 정보를 불러와서 이어서 실행할 수 있습니다.
- 우선순위가 높은 작업이 생긴다면 우선적으로 수행 가능합니다.
컨텍스트 스위칭 단점
- 컨텍스트 스위칭이 잦으면 오버헤드가 발생하여 성능이 떨어집니다. (프로세스 P0에서 P1으로 변경될 때, P1이 바로 실행되는 것이 아니라 P0의 상태를 PCB0에 저장하고, PCB1에서 P1의 상태를 불러오는 작업이 수행됩니다. 이 때 CPU는 아무런 일도 하지 못하게 됩니다.)
PCB(Process Control Block)
출처 : https://blog.naver.com/chanheeis/221269778250
PCB란?
- PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 저장 장소입니다.
- 프로세스 생성 시 만들어지고, 주기억장치에 유지됩니다.
- PCB에는 다음과 같은 정보가 저장됩니다.
- Process State : 생성, 준비, 수행, 대기, 중지
- Program Counter(PC) : 프로세스가 다음에 실행할 명령어 주소 (코드 한 줄 한 줄을 가리키는 주소 레지스터)
- register : 누산기, 스택, 색인 레지스터
컨텍스트의 스위칭이 가능한 이유
- 프로그램 카운터(PC)
- 프로세스가 다음에 실행할 명령어 주소 (코드 한 줄 한 줄을 가리키는 주소 레지스터)
- 스택 포인터(SP)
- CPI안에 스택에 데이터가 채워진 마지막 위치를 가리키는 레지스터입니다.
콘텍스트 스위칭에서의 스레드 vs 프로세스
출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
- 스레드 : 프로세스에서 Stack 부분만 가지고 있습니다.
- 프로세스 : 스택을 포함하여 공유자원인 코드, 데이터, 힙도 포함합니다.
결론
스레드에서의 콘텍스트 스위칭이 공유자원을 제외한 정보를 저장하기 때문에 스레드에서의 콘텍스트 스위칭이 더 빠르다.
참조
crocus - 컨텍스트 스위칭이란?
Jongminfire - 컨텍스트 스위칭이란?
hyunie-y - 컨텍스트 스위칭
beststar - 콘텍스트 스위칭
'CS 지식 > 운영체제' 카테고리의 다른 글
Deadlock(데드락) (0) | 2023.02.20 |
---|---|
동기 vs 비동기, 블로킹 vs 논블로킹 (0) | 2023.02.20 |
프로세스(Process) vs 스레드(Thread) (3) | 2023.02.16 |
메모리의 구조 (0) | 2023.02.16 |
댓글