스물두줄

컴퓨터시스템응용기술사 · 컴퓨터 구조 및 운영체제

문맥 전환

문맥 전환은 CPU를 점유하던 프로세스의 문맥을 저장하고 다음 프로세스의 문맥을 복원하는 동작이다. 문맥은 프로세스가 실행을 재개하는 데 필요한 모든 정보의 집합이다. 이 정보는 커널 자료 구조인 프로세스 제어 블록, PCB에 저장된다. 멀티태스킹에서 CPU를 여러…

주요 장면

  1. 0:02 문맥 전환 정의
  2. 0:26 문맥의 구성 요소
  3. 0:51 전환 절차 1/2 저장과 선택
  4. 1:15 전환 절차 2/2 복원과 재개
  5. 1:36 모드 전환과 구별
  6. 2:10 오버헤드와 정리

대본

문맥 전환 정의

문맥 전환은 CPU를 점유하던 프로세스의 문맥을 저장하고 다음 프로세스의 문맥을 복원하는 동작이다.

문맥은 프로세스가 실행을 재개하는 데 필요한 모든 정보의 집합이다.

이 정보는 커널 자료 구조인 프로세스 제어 블록, PCB에 저장된다.

멀티태스킹에서 CPU를 여러 프로세스가 나눠 쓰게 하는 핵심 동작이다.

문맥의 구성 요소

문맥은 프로그램 카운터, 레지스터, 스택 포인터, 상태 레지스터 등으로 구성된다.

프로그램 카운터는 다음에 실행할 명령의 주소를 담는다.

스택 포인터는 프로세스 스택의 현재 꼭대기를 가리킨다.

PCB에는 프로세스 상태와 우선순위 같은 관리 정보도 함께 담긴다.

전환 절차 1/2 저장과 선택

문맥 전환은 커널 진입에서 시작해 여러 단계로 진행된다.

먼저 커널이 레지스터, PC, SP, PSW 값을 현재 프로세스의 PCB에 저장한다.

그다음 현재 프로세스를 준비 또는 대기 상태로 바꾸고 해당 큐에 넣는다.

이어서 스케줄러가 준비 큐에서 다음에 실행할 프로세스를 고른다.

전환 절차 2/2 복원과 재개

다음은 선택된 프로세스 B의 문맥을 CPU로 복원하는 단계다.

B의 PCB에서 레지스터, PC, SP 값을 읽어 CPU에 적재한다.

메모리 관리 정보를 교체하고 TLB 같은 관련 캐시를 정리한다.

상태를 실행으로 바꾸고 저장된 PC 위치부터 실행을 재개한다.

모드 전환과 구별

문맥 전환과 헷갈리기 쉬운 것이 모드 전환이다.

문맥 전환은 실행 중인 프로세스가 바뀌는 경우에만 일어난다.

모드 전환은 같은 프로세스 안에서 사용자 모드와 커널 모드만 바뀐다.

따라서 모드 전환은 문맥 전환이 아니다.

오버헤드와 정리

전환 비용은 발생 빈도와 곱해져 전체 성능을 좌우한다.

타이머 주기를 짧게 잡으면 전환이 잦아져 오버헤드가 커진다.

오버헤드 비율은 전환 시간을 주기와 전환 시간의 합으로 나눈 값이다.

문맥 전환은 PCB 저장과 복원으로 CPU 제어권을 넘기는 동작이다.

같은 장의 영상