[운영체제] Context Switching

Narcoker·2023년 6월 13일
0

운영체제

목록 보기
5/13

Context Switching

현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고
다음 진행할 Task의 상태 값 을 읽어 적용하는 과정

보통 인터럽트가 발생 하거나, 실행 중인 CPU 사용 허가시간을 모두 소모 하거나,
입출력을 위해 대기해야 하는 경우Context Switching이 발생 한다.

즉, 프로세스가 Ready → Running, Running → Ready, Running → Waiting처럼 상태 변경 시 발생!

필요한 이유

컴퓨터가 매번 하나의 Task 만 처리할 수 있다면
해당 Task 가 끝날 때까지 다음 Task 는 기다릴 수 밖에 없다.

이렇게 되면 반응 속도가 매우 느려진다.

따라서 동시에 여러 작업을 할 수 있도록 Multitasking 을 도입 하여 반응 속도를 올린다.
Multitasking 은 여러 작업을 빠른 속도로 바꿔가며 실행하기 때문에
사람의 눈으로는 여러 작업이 동시에 일어나는 것처럼 보인다.

그래서 Multitasking의 도입 으로 Task를 바꾸는 작업이 필요하게 되었다.

과정

  1. Task의 대부분의 정보는 Register에 저장되고 PCB(Process Control Block)로 괸리한다.
  2. 현재 실행하고 있는 TaskPCB의 정보를 저장한다.
  3. 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 CPU가 이전에 진행했던 과정을 이어 수행한다.

비용

Context Switching 이 발생하면 많은 비용이 소요된다.

  • 캐시 초기화 : 하는 이유?
  • Memory Mapping 초기화 : 하는 이유?
  • 메모리 접근을 위해 Kernel 이 반드시 실행되고 있어야한다.

Process Context Swiching 비용 > Thread Context Switching 비용

ThreadStack 영역을 제외한 모든 메모리를 공유하므로
Context Switching 수행 시 Stack 영역만 변경하면 되기 때문에 비용이 적게든다.

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글