CS

[CS] 컨텍스트 스위칭

kyoulho 2024. 8. 9. 16:21

컨텍스트 (Context)란?

컨텍스트는 특정 프로세스나 스레드의 상태를 의미한다. 여기에는 CPU 레지스터, 메모리 맵, 스택 포인터, 프로그램 카운터, 그리고 기타 CPU와 관련된 정보가 포함된다. 이 정보들은 컨텍스트 스위칭이 발생할 때 저장되고, 다음에 프로세스나 스레드가 다시 실행될 때 복원된다.

 

컨텍스트 스위칭 (Context Switching)

컨텍스트 스위칭은 CPU 코어에서 실행 중인 프로세스 또는 스레드를 다른 프로세스나 스레드로 교체하는 과정을 의미한다. 이는 멀티태스킹 운영 체제에서 여러 프로세스와 스레드를 동시에 실행할 수 있게 해주는 핵심 메커니즘이다. 각 프로세스는 기본적으로 하나의 스레드를 가지며, 스레드는 CPU/코어에서 작업을 수행하는 기본 단위다.

 

컨텍스트 스위칭의 필요성

운영 체제는 여러 작업을 동시에 처리해야 하는 경우가 많기 때문에, 컨텍스트 스위칭을 통해 CPU 자원을 효율적으로 사용한다. 이를 통해 사용자와 시스템 전체가 여러 작업을 동시에 수행하는 것처럼 보이게 된다.

 

컨텍스트 스위칭 발생 시점

  1. 타임 슬라이스(Time Slice) 종료: 각 프로세스는 제한된 시간 동안 CPU를 사용한다. 이 시간을 타임 슬라이스 또는 퀀텀이라고 하며, 이 시간이 끝나면 다른 프로세스로 전환된다.
  2. 입출력(I/O) 작업: 프로세스가 디스크 읽기, 네트워크 통신 등 I/O 작업을 요청하면, I/O 작업이 완료될 때까지 대기 상태에 들어가고 CPU는 다른 프로세스로 전환된다.
  3. 리소스 대기: 프로세스가 특정 리소스를 사용하려고 할 때 해당 리소스가 사용 중이라면, 대기 상태로 전환되고 CPU는 다른 프로세스로 전환된다.
  4. 우선순위 변경: 더 높은 우선순위를 가진 프로세스가 준비 상태가 되면, 현재 실행 중인 프로세스가 중단되고 높은 우선순위의 프로세스로 전환된다.

 

컨텍스트 스위칭의 실행 주체

컨텍스트 스위칭은 운영 체제(OS) 커널에 의해 수행된다. 운영 체제는 CPU, 메모리, I/O 디바이스 등 다양한 리소스를 관리하고 감독하는 역할을 한다. 커널은 프로세스의 상태를 관리하고, 컨텍스트 스위칭을 통해 프로세스 간의 전환을 수행한다.

 

컨텍스트 스위칭의 과정

  • 프로세스 컨텍스트 스위칭 (Process Context Switching)
    • 실행 중인 프로세스의 모든 상태(레지스터, 메모리 맵 등)를 저장하고, 새로운 프로세스의 상태를 복원한다.
    • 각 프로세스는 고유한 가상 메모리 공간을 가지므로, MMU(Memory Management Unit)가 새로운 프로세스의 가상 메모리를 바라보게 한다. 이전 프로세스의 가상 메모리 정보가 TLB(Translation Lookaside Buffer)에 남아 있지 않도록 TLB를 비워준다.
  • 스레드 컨텍스트 스위칭 (Thread Context Switching)
    • 동일한 프로세스 내에서 다른 스레드로 전환할 때 발생한다. 이 경우 메모리 맵을 공유 하므로 MMU와 TLB의 추가 처리가 필요 없다.
  • 공통점
    • 커널 모드에서 실행: 컨텍스트 스위칭은 운영 체제의 핵심 기능이므로, 커널 모드에서 실행된다. 커널 모드는 운영 체제가 모든 하드웨어 자원에 접근할 수 있는 특권 모드로, 이때 통제권이 사용자 프로세스에서 커널로 넘어간다.
    • 레지스터 상태 교체: CPU 레지스터에 저장된 현재 프로세스의 상태를 저장하고, 새로운 프로세스의 상태로 교체한다. 레지스터는 CPU가 작업을 수행하는 데 필요한 데이터를 임시로 저장하는 고속 메모리이다. 이러한 상태 저장과 복원을 통해 프로세스는 이전에 중단된 지점부터 작업을 이어나갈 수 있다.
MMU(Memory Management Unit)
 MMU는 물리적 메모리와 가상 메모리 간의 매핑을 관리하는 하드웨어 장치이다. 프로세스 전환 시, 새로운 프로세스의 가상 주소를 물리 주소로 변환하는 작업을 수행한다.
TLB(Translation Lookaside Buffer)
 TLB는 MMU의 캐시 역할을 하여, 최근에 변환된 가상 주소와 물리 주소 간의 매핑을 저장한다. 프로세스 전환 시 TLB의 캐시는 무효화(invalidate)되며, 새로운 프로세스의 메모리 접근 시 새로운 매핑이 TLB에 로드된다.

 

컨텍스트 스위칭이 미치는 간접적인 영향

  • 캐시 오염 (Cache Pollution)
    • CPU 캐시는 자주 사용하는 데이터를 저장하여 빠른 접근을 가능하게 한다.
    • 컨텍스트 스위칭이 발생하면 현재 캐시에 저장된 데이터가 다음 프로세스에 유용하지 않을 수 있다. 이로 인해 새로운 프로세스의 데이터가 메모리에서 다시 로드되면서, 이전 프로세스의 캐시 데이터가 무의미해질 수 있다. 결과적으로 메모리 접근 시간이 늘어나고 시스템 성능에 부정적인 영향을 미칠 수 있다.

 

커널 모드(Kernel Mode): 운영 체제가 하드웨어 자원과 시스템 전체를 제어할 수 있는 특권 모드이다. 이 모드에서는 CPU가 제한 없이 모든 명령어를 실행할 수 있으며, 메모리, I/O 포트 등에 직접 접근할 수 있다.
레지스터(Register): CPU 레지스터는 CPU 내부에 있는 고속 저장소로, CPU가 작업을 수행하는 데 필요한 데이터를 일시적으로 저장하는 데 사용된다. 일반적으로 계산 결과, 주소 정보, 명령어 등의 데이터를 저장하는 데 쓰인다.
CPU 캐시(Cache): CPU 캐시는 CPU와 메인 메모리(RAM) 사이에 위치한 고속 메모리로, 최근에 사용된 데이터나 명령어를 저장해 두어 CPU가 빠르게 접근할 수 있도록 돕는다. 캐시는 메모리 접근 시간을 줄이기 위해 사용된다.
728x90

'CS' 카테고리의 다른 글

[CS] 프로세스/스레드 상태 변화  (0) 2024.08.11
[CS] Deadlock  (0) 2024.08.11
[CS] 동기화  (0) 2024.08.09
[CS] CPU Bound, I/O Bound  (0) 2024.08.09
[CS] 프로세스와 스레드  (1) 2024.08.09