12월 29일 -컨텍스트 스위칭

Yullgiii·2023년 12월 29일
0
post-thumbnail

컨텍스트 스위칭이란 무엇인가?

컨텍스트 스위칭은 운영 체제가 CPU를 사용 중인 프로세스 또는 스레드에서 다른 프로세스 또는 스레드로 전환하는 과정이다. 이 과정은 멀티태스킹을 가능하게 하며, 시스템의 반응성과 공유 자원의 효율적 사용을 개선한다.

컨텍스트 스위칭 과정

  • 상태 저장: 현재 실행 중인 프로세스의 상태(레지스터 값, 프로그램 카운터 등)를 저장한다. 이 정보는 프로세스의 PCB(Process Control Block)에 저장된다.

  • 상태 복원: 다음 실행할 프로세스의 상태를 PCB에서 가져와 CPU에 복원한다. 이를 통해 새 프로세스가 이전에 중단된 지점부터 실행을 재개할 수 있다.

프로세스와 스레드의 컨텍스트 스위칭 차이

  • 프로세스 컨텍스트 스위칭: 독립적인 메모리 주소 공간을 갖기 때문에 많은 시간과 자원을 소모한다. 메모리 맵, 레지스터 세트 등의 전체 상태를 교체해야 한다.
  • 스레드 컨텍스트 스위칭: 같은 프로세스 내의 스레드 간 전환은 더 빠르고 효율적이다. 스레드는 메모리와 자원을 공유하기 때문에 상대적으로 적은 데이터만 교체한다.
    컨텍스트 스위칭 저장 형식
  • 커널 스택: 프로세스의 컨텍스트 정보는 각 프로세스의 커널 스택에 저장된다. 이 스택에는 시스템 호출 정보, 레지스터 상태, 프로세스 상태 등이 포함된다.

컨텍스트 스위칭 발생 시점

컨텍스트 스위칭은 다음과 같은 경우에 발생한다:

  • 멀티태스킹: CPU 스케줄러가 실행 중인 태스크를 다른 태스크로 전환한다.
  • 인터럽트 처리: 하드웨어 인터럽트 또는 소프트웨어 인터럽트가 발생했을 때, 해당 인터럽트를 처리하기 위해 현재 프로세스에서 인터럽트 핸들러로 전환한다.
  • 시스템 호출: 사용자 프로세스가 시스템 호출을 사용할 때, 사용자 모드에서 커널 모드로 전환한다.

예시: 시스템 호출을 통한 컨텍스트 스위칭
예를 들어, 프로세스가 파일을 읽기 위해 read() 시스템 호출을 한다고 가정해보자. 이 때, 다음과 같은 과정이 진행된다:

  • 사용자 모드에서 커널 모드로 전환: read() 함수를 호출하면, 프로세스는 사용자 모드에서 커널 모드로 전환된다.
  • 컨텍스트 저장: 프로세스의 현재 상태가 PCB에 저장된다.
  • 커널 모드 작업 수행: 파일 읽기와 같은 커널 작업이 수행된다.
  • 컨텍스트 복원 및 사용자 모드로 복귀: 작업이 완료되면, PCB에 저장된 상태를 복원하고 사용자 모드로 복귀한다.

이처럼 컨텍스트 스위칭은 시스템의 효율적인 운영을 위해 필수적인 과정이며, 프로세스와 스레드의 관리에 있어 중요한 역할을 한다.

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

0개의 댓글