Study | 인터럽트 & 컨텍스트 스위칭

grighth12·2021년 8월 23일

article

목록 보기
3/4
post-thumbnail

모든 자료 및 내용은 해당 강의를 기반으로 작성했습니다.

미리 알아야 할 것들

  • Kernel : 시스템의 모든 것을 관리하는 OS의 핵심

출처: Kernel (operating system)

  • Process

    • 실행 중인 프로그램
    • 커널에 등록되고 커널의 관리하에 있는 작업
    • Process Control Block(이하 PCB)를 할당 받은 개체
    • 실행 중에 각종 자원을 요구, 할당, 반납하는 능동적인 개체
  • PCB

    • 커널 공간 내에 존재
    • OS가 각 프로세스 관리에 필요한 정보를 저장
      ex) PID, 스케줄링 정보, 프로세스 상태, 입출력 상태 정보, 문맥 저장 영역, ...
    • 프로세스가 생성될 때 함께 커널에 생성됨

인터럽트

인터럽트는 예상치 못한, 외부에서 발생한 이벤트라고 정의할 수 있습니다.

예를 들어, 게임을 한다고 생각할 때, 돌아가고 있는 게임의 프로세스는 우리가 언제 마우스를 입력할지, 언제 키보드를 입력하여 이동할지 알 수 없습니다. 이렇게 프로세스 입장에서 예상치 못한 이벤트를 인터럽트라고 합니다.

인터럽트의 종류에는 I/O interrupt, Clock interrupt, Console interrupt 등등이 있습니다.

인터럽트의 처리 과정

우리가 공부 중에 누군가에게 쿡 찔리는 예상치 못한 인터럽트가 발생했다고 생각해봅시다. 일반적으로 누구인지, 왜 찔렀는지 물어보고 그 인터럽트를 해결하거나, 해결하지 않을 것입니다.

컴퓨터가 인터럽트를 처리하는 과정도 크게 다르지 않습니다.

  1. 프로세스에 인터럽트가 발생하면 프로세스가 중단됩니다.
  2. 인터럽트를 처리합니다. 다음과 같은 두가지로 나뉩니다.
    2-1. Interrupt handling
         인터럽트의 발생 장소와 원인을 파악하고 인터럽트를 처리할 것인지, 무시할 것인지 결정합니다.
    2-2. Interrupt Service
         서비스를 한다고 결정하면, 인터럽트 서비스 루틴을 호출하여 인터럽트를 처리합니다.

처리과정을 그림과 함께 좀 더 세세하게 살펴보겠습니다. 전체적인 과정은 아래와 같습니다.

  1. 인터럽트가 발생하면, 프로세스는 중단됩니다.
  2. 중단될 때, 현재 어디까지 진행되었는지 자신의 PCB에 기록하고 프로세서에서 내려갑니다.

  1. Kernel의 Interrupt handler가 어디서, 왜 발생했는지 파악합니다.
  2. 인터럽트 처리를 하기로 결정하면, 인터럽트 종류에 따라 무엇을 서비스할지 결정합니다.
  3. 인터럽트를 서비스합니다. 이 때, 인터럽트를 서비스하는 프로세스가 프로세서에 올라갑니다.

  1. 인터럽트 처리가 완료되면, 인터럽트 서비스 프로세스는 내려갑니다. 이 때, Pi가 다시 올라올 수도 있지만, Ready queue의 가장 앞에 있던 프로세스가 올라올 수도 있습니다. 프로세스는 올라오면서 PCB에 저장 해놓았던 컨텍스트를 복구하면서 올라옵니다.

전체 과정을 나타내면 아래와 같습니다.

Context Switching

Context란?

  • 프로세스와 관련된 정보들의 집합

    • CPU register context => in CPU(Processor)
    • Code & data, Stack, PCB => in Memory

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이란?

profile
데굴데굴 굴러가고 있습니다

1개의 댓글

comment-user-thumbnail
2021년 8월 25일

훌륭한 스터디 감사합니다.

답글 달기