본문 바로가기
ComputerScience/OS

운영체제 인터럽트 처리

by whitele 2022. 4. 25.
반응형

개요

인터럽트는 기본적으로 필요에 의해 진행됩니다. 인터럽트는 하드웨어나 소프트웨어에서 내는 즉각적인 처리를 위하여 발생합니다. 인터럽트 처리에 대해서는 운영체제, CPU 아키텍처마다 다른 전략을 사용할 수 있으며 여기서는 인터럽트에 대한 기초적인 이론을 설명합니다. 인터럽트는 지금 사용하고 있는 컴퓨터에서도 굉장히 많이 발생합니다. 가만히 유지해도 1초 동안 최소한 1000개가 넘습니다.

 

인터럽트

 인터럽트는 주요 예외처리나 우선순위가 높은 처리해야 때 진행 중이던 프로세스를 잠시 중단하고 인터럽트를 발생시키는 방식으로 진행됩니다. 주요 예외 상황이 이미 정해져 있으며 인터럽트가 발생하게 되면 인터럽트 서비스 루틴을 진행하게 됩니다. 이미 인터럽트를 처리하기 위한 루틴이 프로그램되어있고 인터럽트가 발생하면 루틴을 실행합니다. 완료되면 인터럽트 되어 멈췄던 연산을 재개합니다. 만약 예외 상황을 찾을 없거나 인터럽트를 제대로 처리하지 못할 경우 심각하면 가끔 보는 블루 스크린으로 이어지게 됩니다.

 

 인터럽트는 비동기적인 이벤트를 효과적으로 처리하기 위해 생긴 기법입니다. 하지만 운영체제에서는 이런 인터럽트를 더욱 합리적으로 처리할 있는 기능을 포함합니다. 무조건적인 인터럽트 처리가 아닌 연기를 수 있어야 하고 인터럽트의 우선순위를 정해 처리를 수 있어야 합니다. 우선순위별 적절한 처리를 위해 다수준 인터럽트를 사용합니다. 또한 인터럽트의 지연을 최소화해야 합니다.

 

인터럽트 핸들러

기본적으로 인터럽트를 처리하기 위해 일련의 과정들을 처리해주는 핸들러입니다. 인터럽트 역시 스레드와 마찬가지로 다량 발생할 있습니다. 인터럽트 핸들러는 인터럽트의 우선순위를 지정하고 처리가 대기 중일 경우 대기열의 저장합니다. 이후는 스케줄러에 의해서 처리를 기다립니다.

 

 

 

인터럽트 처리과정

CPU에는 보통 인터럽트 IRQ라인이라는 선을 가지고 있습니다. 여기서 CPU 하나의 명령어를 처리할 때마 라인을 검사합니다. 이 요청 라인에 신호를 보내면 현재 처리 중인 스레드를 저장한 잠시 멈추고 인터럽트 헨들러로 이동합니다.

 인터럽트 핸들러는 발생 원인을 확인하고 처리함으로써 인터럽트를 처리합니다. 인터럽트를 처리 완료하면 다시 연산 중이던 프로세스로 돌아갑니다.

 

interrupt

 

인터럽트 타입

 하드웨어 소프트웨어 관점에서 인터럽트의 종류입니다.

하드웨어 인터럽트

외부 장치가 IRQ라인을 통해서 CPU에게 요청을 보냄으로써 인터럽트 처리가 시작됩니다. 보통 CPU는 두 개의 IRQ라인이 있으며 한 가지는 마스크 불가능 인터럽트(Nonmaskable interrupt, NMI), 다른 한 가지는 마스킹 가능(Maskable, MI)입니다.

  • 마스킹 가능 인터럽트

 필요하다면 인터럽트 기능을 비활성화 있는 인터럽트입니다. 인터럽트는 장치 컨트롤러가 서비스를 요청하기 위해 사용됩니다.

  • 마스크 불가능 인터럽트(NMI)

 복구가 불가능한 메모리 오류나 타이머의 타임아웃 등 즉시 처리해야 하는 무시할 없는 인터럽트를 말합니다.

 

소프트웨어 인터럽트

 특정 명령이나 조건을 충족이 될 때 인터럽트를 요청합니다. 감시를 위한 프로그램에서도 사용됩니다.

 시스템 콜을 통한 예외의 상황들을 처리하는 역시 소프트웨어 인터럽트입니다.

 보통 낮은 순위의 인터럽트 처리 순위를 갖습니다.

 

인터럽트 벡터

 인터럽트를 처리할 작은 정수를 받는데 특정 인터럽트 핸들링 루틴을 정하기 위해 사용됩니다. 인터럽트 벡터라는 오프셋으로 사용됩니다. 인터럽트를 처리하기 위한 루틴이 메모리에 적재되어 있는데 루틴의 메모리 주소를 가지고 있는 것이 인터럽트 벡터입니다. 인터럽트 벡터마다 번호가 정해져 있으며 비어있거나 사용되지 않는 번호도 존재합니다.

 

정리

 인터럽트는 비동기적으로 일어나는 이벤트를 처리하기 위한 용도로 사용됩니다. 인터럽트는 우선순위가 높은 것부터 굉장히 빠르게 처리하는 것이 요구됩니다. 경우에 따라 인터럽트 처리 구현의 복잡함과 한정적인 자원으로 인해 다수준으로 인터럽트를 관리할 있습니다. 1 인터럽트 처리기, 2 인터럽트 처리기로 나눠 수행하게 됩니다.

728x90
반응형

'ComputerScience > OS' 카테고리의 다른 글

Kali linux M1 apple silicon 칼리리눅스 m1 맥북 설치  (2) 2022.07.12
LINUX, UNIX - ELF 파일 구조  (0) 2022.03.30
Linux 파일 시스템 EXT  (0) 2022.03.08
운영체제 교착상태  (0) 2022.01.17
파일시스템의 할당 이론  (0) 2022.01.06

댓글