[운영체제] 인터럽트

yeonjkim·2021년 11월 4일
0

운영체제

목록 보기
3/11
post-custom-banner

인터럽트의 와 운영체제

인터럽트의 정의와 운영체제

현재의 운영체제는 인터럽트 기반 시스템이다. 운영체제가 부팅되어 메모리에 상주한 후, 운영체제는 대기 상태로 유지되는데 이때 인터럽트가 발생하면 os내부에서 다른 동작을 하게 된다.

interrupt(인터럽트) : 프로그램을 실행하던 도중 예기치 못한 상황이 발생하면 현재 하던 일을 그만두고, 발생된 상황을 우선적으로 처리한다. 해석 그대로 끼어들기라고 생각하면 된다.

인터럽트의 이유는?
인터럽트는 예외 상황이나 하드웨어 장치의 입출력, 소프트웨어의 호출 등으로 인해 발생하여 cpu의 연산을 멈추고, 이 인터럽트에 해당하는 코드를 실행하게 하는 것이다. 그러나 이 인터럽트가 없다면 cpu는 장치의 상태를 계속 점검하는 wait loop가 발생하게 되고, cpu가 다른 연산을 할 수 없도록 하기 때문에 cpu가 낭비되게 된다. cpu를 최대한 낭비하지 않도록 하는 시스템이 인터럽트이다!

<컴퓨터 부팅 시 os와 인터럽트 발생 시 os>

  • 컴퓨터 부팅 : 전원이 켜지고 나서 os가 메모리에 적재되기 전까지의 과정
    컴퓨터 부팅 시?
    (1) ROM에 저장되어 있는 부트로더가 실행
    (2) 부트로더는 hdd에 있는 os찾아 메모리에 적재
    (3) 부팅 종료(os가 적재되어 종료됨)
    (4) os가 항상 메모리에 상주함

이 과정에서 os는 메모리에 항상 대기 상태로 존재함.

  • 그러나 인터럽트가 발생하면?
    (5) 마우스가 움직이거나 키보드로 타이핑하는 등의 인터럽트가 발생!
    (6) cpu는 실행 중인 상황을 멈춤(이를 인터럽트(끼어들기)라고 함)
    (7) os 내부에는 각 인터럽트에 해당하는(ex 마우스 움직이기, 타이핑, 클릭) 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)이 있어 cpu가 해당하는 인터럽트 서비스 루틴을 실행하도록 한다. 즉, os의 ISR로 jump

결론 : cpu는 하던 일을 멈추고 os의 ISR을 실행한다.

ex) 마우스가 hwp 아이콘을 클릭 시?
cpu는 하던 일을 멈추고 os의 내부 코드인 ISR을 실행. 결국 hwp가 메모리로 올라오게 된다. os의 코드는 인터럽트가 발생 시 실행되게 된다.

인터럽트의 종류와 실행 과정

모든 인터럽트는 인터럽트 결과 운영체제 내의 특정 코드를 실행시킨다.(ISR)

하드웨어 인터럽트

하드웨어 인터럽트 : cpu가 프로그램을 실행하고 있을 때, 마우스나 키보드 등 하드웨어가 발생시킨 인터럽트이다.

ISR 실행 후 cpu는 다시 대기 상태

소프트웨어 인터럽트

소프트웨어 인터럽트 : 소프트웨어가 발생시키는 인터럽트로, 사용자 프로그램이 스스로 인터럽트 라인을 생성한다. 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우에 발생한다.

소프트웨어 인터럽트 종료 시 이 인터럽트를 발생시킨 사용자 프로그램으로 복귀한다.

내부 인터럽트

내부 인터럽트 : 잘못된 명령어나 잘못된 데이터를 사용했을 경우 발생하는 인터럽트.
Divide by zero(0으로 나누었을 경우), overflow/underflow, 기타 exception 등이 있을 수 있다.

결론

운영체제는 평소에는 대기 상태이다가 하드웨어 인터럽트 / 소프트웨어 인터럽트 / 내부 인터럽트에 의해 운영체제 내부의 코드(ISR)이 실행된다.

ISR이 종료되면 원래 대기상태(hw interrupt)로 복귀하거나 사용자 프로그램(sw interrupt)로 복귀한다.

post-custom-banner

0개의 댓글