6월 25일 - Context Switching

Yullgiii·2024년 6월 25일
0
post-thumbnail

Context Switching

Context Switching이란 CPU가 여러 프로세스를 처리해야 할 때, 현재 실행 중인 Task(프로세스 또는 스레드)의 상태를 저장하고, 다음에 실행할 Task의 상태를 복원하는 과정을 말한다. 이는 CPU가 한 번에 하나의 프로세스만 처리할 수 있기 때문에 필요하다.

Context Switching 과정

  1. 현재 Task의 상태 저장: 현재 실행 중인 Task의 대부분 정보는 레지스터에 저장되고, PCB(Process Control Block)로 관리된다. 현재 실행 중인 Task의 PCB 정보를 저장한다.
  2. 다음 Task의 상태 복원: 다음에 실행할 Task의 PCB 정보를 읽어 레지스터에 적재하고, CPU가 이전에 진행했던 과정을 연속적으로 수행할 수 있도록 한다.
  3. CPU 할당 전환: 이 과정을 통해 다른 프로세스에게 CPU를 할당하여 작업을 수행할 수 있게 된다.

Context Switching의 비용

Context Switching은 많은 비용이 소모된다. 그 이유는 다음과 같다:

  • 캐시 초기화: CPU 캐시 메모리가 초기화된다.
  • 메모리 매핑 초기화: 메모리 매핑이 초기화된다.
  • 커널의 지속 실행: 커널은 항상 실행되어야 한다.

프로세스의 Context Switching 비용은 스레드보다 더 많이 든다. 그 이유는 스레드는 스택 영역을 제외한 모든 메모리를 공유하기 때문에 Context Switching 발생 시 스택 영역만 변경하면 되기 때문이다.

예제

예를 들어, 프로세스 A가 실행 중일 때, 프로세스 B를 실행하려면 다음과 같은 단계가 필요하다:

1. 프로세스 A의 상태를 PCB에 저장한다.
2. 프로세스 B의 상태를 PCB에서 레지스터로 복원한다.
3. CPU가 프로세스 B를 실행한다.
4. 프로세스 B의 실행이 끝나면 다시 프로세스 A의 상태를 복원하고 실행을 계속한다.

So...

Context Switching은 CPU가 여러 프로세스를 처리할 수 있도록 하는 중요한 메커니즘이다. 그러나 많은 비용이 소모되기 때문에 효율적으로 관리하는 것이 중요하다. 스레드는 프로세스보다 Context Switching 비용이 적게 들기 때문에, 멀티스레딩을 통해 효율성을 높일 수 있다. Context Switching을 잘 이해하고 관리하면 시스템 성능을 최적화하는 데 도움이 된다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글