OS - Context Switcing(문맥교환)

itonse·2024년 5월 8일
0

CS 스터디

목록 보기
32/56

👀 해당 주제 질문 리스트 미리보기

Q1. 컨텍스트 스위칭에 대해 설명해보세요
Q2. 컨텍스트 스위칭의 과정에 대해 설명해보세요

Keyword: PCB, 인터럽트, context, 멀티 프로세싱, 오버헤드


1. Context Switching 이란?

컨텍스트 스위칭은 멀티프로세스 환경에서 CPU가 현재 실행 중인 프로세스의 상태를 저장하고 다른 프로세스의 상태로 교체하여 실행을 계속할 수 있게 하는 과정입니다.

이 작업을 통해 시스템은 여러 작업을 번갈아가며 효율적으로 처리할 수 있으며, 동시에 여러 프로세스가 관리됩니다.



2. Context Switcing 발생 시기(트리거)

  1. 주어진 Time Slice(Time Quantum) 를 다 사용했을 때
  2. I/O 작업을 해야할 때
  3. 다른 리소스를 기다려야할 때
  4. 인터럽트가 발생될 때

Context Switcing은 OS의 스케줄러에 의해 수행이 됩니다.



3. Context Switching 동작 방식

이미지 출처
  • CPU가 인터럽트 요청을 받으면, 현재 실행 중인 프로세스의 상태 정보(레지스터, 프로그램 카운터 등)를 프로세스 제어 블록(PCB)에 저장합니다.

  • CPU는 다음 우선순위가 높은 프로세스의 PCB에서 상태 정보를 읽어와 CPU 레지스터에 로드합니다.

  • CPU는 새로 로드된 프로세스를 실행하기 시작합니다.

  • 새 프로세스 실행 중에 다시 인터럽트 요청이 발생하면, 위 과정이 반복됩니다.

PCB 란?

프로세스마다 현재 상태를 하나의 데이터 구조에 저장하여 관리하는데, 이를 Process Control Block(PCB)라고 부른다. PCB는 커널의 데이터 영역 내에 존재한다.



4. 프로세스 Context Switching

  • 프로세스 간 컨텍스트 스위칭은 CPU가 하나의 프로세스에서 다른 프로세스로 전환하는 과정입니다.

  • 이 과정에서 운영 체제는 현재 실행 중인 프로세스의 상태(PCB에 저장된 정보)를 저장하고, 다음 프로세스의 상태를 CPU에 로드합니다.

  • 이는 상대적으로 무거운 작업으로, 오버헤드가 발생 확률이 높습니다.



5. 스레드 Context Switching

  • 스레드 간 컨텍스트 스위칭은 같은 프로세스 내의 서로 다른 스레드 사이에서 발생합니다.

  • 이 과정에서는 각 스레드의 CPU 레지스터 상태와 해당 스레드의 스택 정보가 저장되고 복원됩니다.

  • 같은 프로세스 내에서 이루어지기 때문에, 프로세스 컨텍스트 스위칭에 비해 상대적으로 가벼운 작업이며, 따라서 오버헤드가 발생할 확률이 적습니다.



6. 관련 기술면접 질문

Q1. 컨텍스트 스위칭에 대해 설명해보세요

컨텍스트 스위칭은 운영체제가 CPU 자원을 효율적으로 활용하기 위해 사용하는 기술입니다.
멀티태스킹 등으로 인해 여러 프로세스가 CPU를 공유해야 할 때, 운영체제의 스케줄러가 실행할 프로세스를 교체해야 하는데 이때 컨텍스트 스위칭이 발생합니다.


Q2. 컨텍스트 스위칭의 과정에 대해 설명해보세요

첫번째 과정으로, 현재 실행 중인 프로세스의 상태 정보를 해당 프로세스의 PCB에 저장합니다.
두번째로, 다음으로 실행할 프로세스의 PCB에서 상태 정보를 읽어와 CPU 레지스터에 로드합니다.
마지막으로, CPU는 새로 로드된 프로세스의 상태 정보를 사용하여 해당 프로세스를 실행합니다.


ref.
https://github.com/ksundong/backend-interview-question
[운영체제] Context Switching (컨텍스트 스위칭)
https://jeong-pro.tistory.com/93
Context Switching 이란?
https://hyunie-y.tistory.com/31
https://s7won.tistory.com/11

0개의 댓글