모든 자료 및 내용은 해당 강의를 기반으로 작성했습니다.
미리 알아야 할 것들
- Kernel : 시스템의 모든 것을 관리하는 OS의 핵심

출처: Kernel (operating system)
-
Process
- 실행 중인 프로그램
- 커널에 등록되고 커널의 관리하에 있는 작업
- Process Control Block(이하 PCB)를 할당 받은 개체
- 실행 중에 각종 자원을 요구, 할당, 반납하는 능동적인 개체
-
PCB
- 커널 공간 내에 존재
- OS가 각 프로세스 관리에 필요한 정보를 저장
ex) PID, 스케줄링 정보, 프로세스 상태, 입출력 상태 정보, 문맥 저장 영역, ...
- 프로세스가 생성될 때 함께 커널에 생성됨
인터럽트
인터럽트는 예상치 못한, 외부에서 발생한 이벤트라고 정의할 수 있습니다.
예를 들어, 게임을 한다고 생각할 때, 돌아가고 있는 게임의 프로세스는 우리가 언제 마우스를 입력할지, 언제 키보드를 입력하여 이동할지 알 수 없습니다. 이렇게 프로세스 입장에서 예상치 못한 이벤트를 인터럽트라고 합니다.
인터럽트의 종류에는 I/O interrupt, Clock interrupt, Console interrupt 등등이 있습니다.
인터럽트의 처리 과정
우리가 공부 중에 누군가에게 쿡 찔리는 예상치 못한 인터럽트가 발생했다고 생각해봅시다. 일반적으로 누구인지, 왜 찔렀는지 물어보고 그 인터럽트를 해결하거나, 해결하지 않을 것입니다.
컴퓨터가 인터럽트를 처리하는 과정도 크게 다르지 않습니다.
- 프로세스에 인터럽트가 발생하면 프로세스가 중단됩니다.
- 인터럽트를 처리합니다. 다음과 같은 두가지로 나뉩니다.
2-1. Interrupt handling
인터럽트의 발생 장소와 원인을 파악하고 인터럽트를 처리할 것인지, 무시할 것인지 결정합니다.
2-2. Interrupt Service
서비스를 한다고 결정하면, 인터럽트 서비스 루틴을 호출하여 인터럽트를 처리합니다.
%20(1).png)
처리과정을 그림과 함께 좀 더 세세하게 살펴보겠습니다. 전체적인 과정은 아래와 같습니다.
- 인터럽트가 발생하면, 프로세스는 중단됩니다.
- 중단될 때, 현재 어디까지 진행되었는지 자신의 PCB에 기록하고 프로세서에서 내려갑니다.
%20(2).png)
- Kernel의 Interrupt handler가 어디서, 왜 발생했는지 파악합니다.
- 인터럽트 처리를 하기로 결정하면, 인터럽트 종류에 따라 무엇을 서비스할지 결정합니다.
- 인터럽트를 서비스합니다. 이 때, 인터럽트를 서비스하는 프로세스가 프로세서에 올라갑니다.
%20(3).png)
- 인터럽트 처리가 완료되면, 인터럽트 서비스 프로세스는 내려갑니다. 이 때, Pi가 다시 올라올 수도 있지만, Ready queue의 가장 앞에 있던 프로세스가 올라올 수도 있습니다. 프로세스는 올라오면서 PCB에 저장 해놓았던 컨텍스트를 복구하면서 올라옵니다.
%20(4).png)
전체 과정을 나타내면 아래와 같습니다.
%20(1).png)
Context Switching
Context란?
-
프로세스와 관련된 정보들의 집합
- CPU register context => in CPU(Processor)
- Code & data, Stack, PCB => in Memory
%20(5).png)
Context saving
- 현재 프로세스의 Register context를 메모리에 저장하는 작업
Context restoring
- Register context를 프로세스로 복구하는 작업
Context switching(≈ Process switching)
- 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일
- Interrupt Handling, Multi Tasking, User and Kernel mode switching 상황에서 일어날 수 있음
Context Switch Overhead
- OS마다 다르지만, OS의 성능에 큰 영향을 줌
- 불필요한 Context Switching을 줄이는 것이 중요
Context switch overhead가 큰 이유
- Cache 초기화
- Memory Mapping 초기화
출처
Context switch
Context Swiching이란?
훌륭한 스터디 감사합니다.