본문 바로가기

Programming/프로그래밍 내용 정리

[OS] Context Switching이란?

🎈 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가 이전에 진행했던 과정을 연속적으로 수행함

 

 

 

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트하여 메인 메모리에 저장
  2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 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 영역만 변경을 진행하면 됨