인터럽트(Interrupt)란?

Ilhwanee·2022년 9월 13일
0

CS

목록 보기
14/27

인터럽트

인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다.

주로 입출력 장치의 signal, data가 발생할 때까지 원래의 작업을 수행하다가 해당 기능을 처리하는 것이다. (외부 인터럽트)

인터럽의 종류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉜다.

  • 비동기적 인터럽트 / 하드웨어 인터럽트
    • 전원 이상, 기계 착오, 외부 신호, 입출력 등 프로세스 외부에서 발생하는 인터럽트
  • 동기적 인터럽트 / 소프트웨어 인터럽트
    • 프로세스 내부에서 잘못된 명령어, 데이터로 exception이 발생하는 것이며 trap이라고 불림


인터럽트 서비스 루틴(ISR : Interrupt Service Routine)

인터럽트가 발생하면 처리하기 위한 루틴인 ISR이 실행된다.

주 프로그램 작업 수행 중 인터럽트 발생 -> 주 프로그램 상태 레지스터와 PC 등을 스택에 잠시 저장 -> 인터럽트 서비스 루틴으로 점프, 처리 -> 다시 주 프로그램 작업 복귀



이중 동작 모드

사용자와 OS는 시스템 자원을 공유하기 때문에 사용자에 제한을 두지 않으면 사용자가 메모리 내 주요 자원을 망가뜨릴 위험이 있다.

따라서 사용자의 시스템 자원을 막는 보호 장치가 필요하고, 이 것이 이중 동작 모드이다.

이중 동작 모드는 사용자가 접근할 수 없는 커널 모드, 접근할 수 있는 사용자 모드로 나뉜다.

커널 모드는 supervisor mode, system mode, privileged mode로 불린다.

프로세스는 사용자 모드에서 실행되다가 OS에게 시스템 사용을 요청하면 커널 모드로 전환되어 요청된 시스템을 실행한 후 다시 사용자 모드로 전환한다. (시스템 콜)

시스템 콜은 하나의 인터럽트로 취급된다.

커널 모드와 사용자 모드를 구분하기 위해서는 mode bit가 사용되며 0이 커널 모드, 1이 사용자 모드이다.

OS는 일부 명령들을 특권 명령으로 지정하고 커널 모드에서만 실행되게 하며 사용자 모드에서 실행하려고 하면 trap을 건다.



profile
블로그 이전 -> https://pppp0722.github.io

0개의 댓글