본문 바로가기

OS

1. 인터럽트

*kocw.net에 올라온 경성대학교 양희재 교수님의 운영체제 수업을 정리하는 글입니다. OS의 아주아주 기초적인 내용을 정리합니다. 아직 부정확하고 부족한 부분이 많습니다. 잘못된 부분이 있다면 댓글 부탁드립니다. 감사히 배우겠습니다.

 

 

 

현대 운영체제는 인터럽트 기반 시스템.

 

 

 

 

 

 

컴퓨터 전원을 켜고 부팅이 끝나면? OS는 메모리에 상주(resident)하며 사건(event)를 기다린다.

(여기서 사건이란 마우스로 무언가를 클릭하거나 키보드로 무언가를 타이핑 하는 행위들을 말한다.)

마우스를 움직이다 아이콘을 클릭하면 전기신호가 발생한다. 이때 이 전기 신호가 바로 interrupt.

CPU에 전기 신호가 들어오면 CPU는 하던 일을 중지하고 OS 속 ISR (Interrupt Service Routine)을 실행.

 

 

 

인터럽트에는 크게 3가지가 있다.

 

  • 하드웨어 인터럽트(Hardware Interrupt)

- 마우스, 키보드 등등에 의해. 

- 인터럽트 결과 OS내의 특정 코드(ISR, Interrupt Service Routine) 실행

- ISR 종료 후 다시 OS는 대기

 

 

(마우스가 바탕화면에 있는 VS Code를 더블클릭하면 interrupt 발생. OS속에 마우스가 더블 클릭을 하면 이런 저런 일을 수행해~라는 내용이 담긴 코드가 있다 - mouse interrupt service routine. 이 ISR이 하드 디스크를 뒤져서 VS Code를 메인 메모리로 올려준다. )

 

 

  • 소프트웨어 인터럽트(Software Interrupt)

- 사용자 프로그램이 실행 중

- 인터럽트 결과 OS내의 특정코드(ISR) 실행

- ISR 종료 후 다시 사용자 프로그램으로. 

 

(VS Code 이용하다 하드디스크에 저장된 index.css를 읽어오고 싶다! 당연히 OS 속에는 하드디스크를 읽어오는 코드도 있음. VS Code 쓰다가 소프트웨어 인터럽트 발생 -> OS가 하드디스크 뒤져서 파일을 찾아온다. -> OS의 역할 끝 -> 다시 VS Code 작동)

 

 

 

  • 내부 인터럽트

 

C++ 프로그램을 작성하고 있다고 가정해보자.

 

main(){
    int i=5;
    int j=0;
    i = i/j;
      ...
   }

 

j가 0이기 때문에  4번째 줄의 i/j는 무한대가 되고, 그 아래에 있는 코드들을 실행할 수 없게 된다. 

OS는 이런 divide by zero 상황을 처리하는 ISR 코드도 있다. 

이런 상황이 내부 인터럽트.

 

 

 

 

이렇게 OS는 평소 대기 상태에 있다가 하드웨어 인터럽트, 소프트웨어 인터럽트, 내부 인터럽트에 의해 ISR 코드를 실행하고 ISR이 종료되면 원래의 대기 상태로 돌아가거나 사용자 프로그램으로 복귀한다. 

'OS' 카테고리의 다른 글

2. 이중모드 (Dual Mode)  (0) 2020.05.17
0. 운영체제 서론  (0) 2020.05.17