🎈 Context Switching이란?
- 여러개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것
- 즉, CPU에 실행할 프로세스를 교체하는 기술
🎈 왜 Context Switching이 필요한가?
컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
- 해당 Task가 끝날때까지 다음 Task는 기다릴 수 밖에 없음
- 또한 반응속도가 매우 느리고 사용하기 불편함
Task가 동시에 처리되는 것처럼 하기 위해서 어떻게 해야할까?
- Computer multitasking을 통해 빠른 반응속도로 응답할 수 있음
- 빠른 속도로 Task를 바꿔 가며 실행하기 때문에 사람의 눈으론 실시간처럼 보이게 됨
- CPU가 Task를 바꿔 가며 실행하기 위해 Context Switching이 필요함
🎈 어떻게 Context Switching은 진행될까?
- Task의 대부분 정보는 Register에 저장되고 PCB(Process Control Block)로 관리되고 있음
- 현재 실행하고 있는 Task의 PCB 정보를 저장하게 됨 (Process Stack, Ready Queue)
- 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고, CPU가 이전에 진행했던 과정을 연속적으로 수행함
- 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트하여 메인 메모리에 저장
- 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보를 CPU에 넣고 실행
🎈 PCB
컨텍스트 스위칭은 PCB(Process Context/Control Block)이라고 하는 메모리의 별도 공간에
process 상태값들을 저장하고, 해당 값들을 찾는 방법으로 구현됨
PCB는 프로세스가 실행중인 상태를 스냅샷 찍어 저장하는 공간임
PCB에 저장되는 내용은 다음과 같음
- Process ID (PID)
- 레지스터 값 (PC, SP 등)
- Scheduling info (프로세스 상태)
- Meomory info (메모리 사이즈 linit) - 전체 프로세스 사이즈 등
- 기타
가장 위의 ID부분은 process의 id를 저장하고,
그 밑단에는 각 processor들의 정보를 저장함
Priority는 스케줄러가 우선순위를 사용할 경우 해당 프로세스의 우선순위가 저장됨
🎈 Context Switching Cost
- Context Switching이 발생하게 되면 많은 비용이 소요됨
- Cache 초기화
- Memory Mapping 초기화
🎈Process vs Thread
- Context Switching 비용은 Thread보다 Process가 많이 발생
- Thread는 Stack 영역을 제외한 모든 메모리를 공유하기 때문에
- Context Switching 발생 시 Stack 영역만 변경을 진행하면 됨
'Programming > 프로그래밍 내용 정리' 카테고리의 다른 글
[내용정리] 토스 SLASH 22 - 토스뱅크의 완전히 새로운 대출 시스템 (1) | 2022.07.30 |
---|---|
카프카(Kafka)란? (0) | 2022.07.30 |
[자료구조] Linked List(연결 리스트) 와 Array(배열)의 차이 (0) | 2022.07.29 |
[운영체제] 프로세스 vs 스레드 vs 멀티스레드 차이점이 뭔가요? (0) | 2022.06.28 |
Docker를 사용하여 MySQL 설치하기 (0) | 2022.04.17 |