✏️ [OS] Context Switching이란?

박상민·2024년 3월 26일
0

CS Interview

목록 보기
12/16
post-thumbnail

⭐️ Context Switching

멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업 Context Switch(Switching)라고 한다.

Context Switching을 문맥 교환으로 번역하면 안된다.

📌 Context란?

사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체 등의 현재 상황(상태)을 규정하는 정보들을 말한다.
Android, Servlet 등에서도 context가 있지만 OS에서 Context는 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들이다.
Context는 프로세스의 PCB(Process Control Block)에 저장된다.

그래서 Context Switching 때 PCB의 정보를 읽어(적재) CPU가 전에 프로세스가 일을 하던거에 이어서 수행이 가능한 것이다.

PCB의 저장 정보

  • 프로세스 상태: 생성, 준비, 수행, 대기, 중지
  • 프로그램 카운터: 프로세스가 다음에 실행할 명령어 주소
  • 레지스터: 누산기, 스택, 색인 레지스터
  • 프로세스 번호

참고로 Context Switching 때 해당 CPU는 아무런 일을 하지 못한다. 따라서 Context Switching이 잦아지면 오히려 오버헤드가 발생해 효율(성능)이 떨어진다.

Context가 무엇인지 어느정도 알았고 멀티 프로세싱하기 위해 CPU를 나눠서 사용하기 위해 Context를 교체하는 것이 Context Switching라는 것을 알았다. 그리고 PCB에 Context가 저장되는 것도 알았다.
이제 인터럽드 요청이 무엇인지, 종류에 대한 이야기를 해보자.

📌 Context Switching - Interrupt

인터럽트는 CPU가 프로그램을 실행하고 있을 때 실행중인 프로그램 밖에서 예외 상황이 발생하여 처리가 필요한 경우 CPU에게 알려 예외 상황을 처리할 수 있도록 하는 것을 말한다.

어떤 인터럽트 요청이 와야 Context Switching이 일어날까?
1. I/O Request (입출력 요청)
2. time slice expired (CPU 사용 기간 만료)
3. fork a child (자식 프로세스를 만들때)
4. wait for an interrupt(인터럽트 처리를 기다릴 때)

이외에도 더 있지만 나머지를 생략하낟.


⭐️ Context Switching이란?

하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업이다.

한 프로세스의 문맥은 그 프로세스의 PCB에 기록된다.


출처
Tech Interview for developer
혼자 공부하는 컴퓨터 구조 + 운영체제

profile
스프링 백엔드를 공부중인 대학생입니다!

0개의 댓글