[OS] Context Switching

Jay·2021년 1월 14일
1

Computer Science

목록 보기
7/50
post-thumbnail

Context Switching ⁉️

  • CPU는 한번에 하나의 프로세스만 처리할 수 있다.
  • 여러 프로세스를 처리해야 하는 상황에서 현재 진행중인 Task(프로세스,스레드)의 상태를 PCB에 저장하고 다음에 진행할 Task의 상태값을 읽어 적용하는 과정이다.
  • 다른 프로세스에게 CPU를 할당해 작업을 수행하는 과정이다.

Context Switching 과정

  • Task의 대부분 정보는 Register에 저장되고 PCB로 관리된다.
  • 현재 실행하고 있는 Task의 PCB 정보를 저장한다.
  • 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행할 수 있다.

아래의 그림을 보자.

P1, P2라는 2개의 프로세스가 있고 CPU에 올라갔다 내려갔다하는 과정을 보여준다.

  1. Process P1을 실행하다가 PCB1에 상태를 저장한다.
  2. 저장되어있는 PCB2를 재로드 해서 실행 시킨다.
  3. 다시 PCB2 상태를 저장한다.
  4. PCB1을 재로드 하여 실행 시킨다.

많은 비용이 소모되는 Context Switching

  • Cache 초기화
  • 메모리 매핑 초기화
  • 커널은 항상 실행되어야한다.

프로세스가 스레드보다 더 많은 비용이 든다.

➡️ 스레드는 Stack영역을 제외한 모든 메모리를 공유하기에 Context Switching 발생 시에 Stack 영역만 변경을 진행하면 된다.
➡️ 프로세스공유하는 메모리가 없기에 캐시 메모리 초기화 등의 무거운 작업을 해야한다.
(자세한 이야기는 여기서 보자.)

profile
developer

0개의 댓글