프로세스 인터럽트와 Context

김진한·2022년 5월 5일
0

운영체제(OS)

목록 보기
3/8

인터럽트(Interrupt)

  • 예상치 못한, 외부에서 발생한 이벤트를 말한다.

  • 인터럽트의 종류
    I/O interrupt, Clock interrupt, Console interrupt, program check interrupt, Machine check interrupt, Inter-process interrupt, System call interrupt 등이 있다.

  • I/O interrupt
    게임을 하는 도중에 갑자기 마우스를 클릭하는 상황 같은 것을 말한다. 컴퓨터는 내가 언제 마우스를 클릭할지, 키보드로 입력할지 알 수 없다.

  • 인터럽트 처리 과정

  • 어떠한 프로세서(Processor A)가 프로세스(Process B)를 처리하고 있는 상황이다. 그러던 도중에 Interrupt가 발생하면 Context saving 을 통해 책갈피를 꽂는 것처럼 PCB-1에 현재 흐름을 저장한다. 그리고 커널이 인터럽트가 어디서, 왜 발생했는지 원인을 파악한다. 파악을 했다면 처리를 위해 어떤 서비스 루틴을 호출할 지 결정한다. 결정이 되면 Interrupt service를 진행한다. Interrupt service도 하나의 프로그램이기 때문에 Interrupt service를 처리하는 새로운 프로세서가 할당된다. 그런데 Interrupt service가 종료된다고 Processor A와 Process B가 바로 연결되지 않는다. Processor A에는 ready 상태에 있는 PCB-2가 들어올 수도 있다.

Context Switching(문맥 교환)

  • Context는 프로세스와 관련된 정보들의 집합이라고 할 수 있다. Context는 CPU와 Memory에 저장할 수 있다. CPU가 어떤 작업을 하기 위해서는 메모리에 있는 데이터를 CPU 안에 있는 register에 올려야 한다. 그리고 CPU는 register에 있는 데이터를 가지고 작업을 한다. 이렇게 CPU 안에 있는 register에 저장된 데이터들을 CPU register context라고 한다. 반면 메모리 안에 저장된 Context를 Code & data, Stack, PCB라고 한다.

  • Context saving
    CPU에 있는 Register context를 메모리에 있는 커널의 PCB에 저장하는 작업을 Context saving이라 한다.

  • Context restoring
    커널의 PCB에 있는 Register context를 다시 프로세스로 복구하는 작업이다.

  • Context Switching
    실행중인 프로세스의 context를 저장하고, 앞으로 실행 할 프로세스의 context를 복구하는 일이다. 이러한 작업들은 커널의 개입으로 이루어진다.

  • Context Switch Overhead
    Context Switching은 자주 발생한다. 컴퓨터에서는 많은 프로세스들이 돌아가고 있기 때문이다. Context switching에 소요되는 비용은 OS마다 다르지만 성능에 큰 영향을 준다. 때문에 불필요한 Context switching을 줄이는 것이 중요하다. 이를 위해서 생각해볼 수 있는 대표적인 것은 스레드(Thread)를 사용하는 것이다.

0개의 댓글