티스토리 뷰

하드웨어 인터럽트

하드웨어 인터럽트의 경우 하드웨어 컨트롤러가 CPU의 서비스를 요청하기 위해 발생시키는 인터럽트를 의미한다.

CPU는 특별한 일이 없으면 현재 수행중인 프로세스의 다음 명령을 순차적으로 수행한다. 프로세스가 CPU를 계속 점유하고 있으면 이를 다른 프로세스가 선점할 수 없으므로 이에 대한 제어 메커니즘이 필요하다.

일반적으로 인터럽트는 CPU가 아닌 다른 하드웨어 장치가 CPU에게 어떤 사실을 알려주거나 CPU의 서비스를 요청할 경우 CPU내의 인터럽트 라인을 세팅해 발생시킨다.

CPU는 매번 프로그램 카운터가 가르키고 있는 지점의 명령을 하나씩 수행하고나서 다음 명령을 수행하기 직전에 인터럽트 라인이 세팅되었는지를 체크한다.

인터럽트 라인 체크를 통해 인터럽트가 발생했으면 CPU는 현재 수행중인 프로세스를 멈추고 운영체제의 인터럽트 처리 루틴으로 이동해서 인터럽트 처리를 수행한다.

특정 프로세스가 CPU를 독점하는 것은 막기위해 운영체제는 타이머 인터럽트를 사용한다. 운영체제는 CPU를 사용자 프로세스에게 이양하기 직전에 타이머에 일정시간을 세팅하고, 사용자 프로세스가 그 시간만큼 CPU를 사용한 후에 발생하는 타이머 인터럽트 때에 CPU를 그 프로세스로부터 회수해 다른 프로그램에게 이양하는 것이다.

소프트웨어 인터럽트

소프트웨어 인터럽트(트랩) 의 종류에는 예외상황(exception)과 시스템 콜(system call) 두종류가 있다. 예외 상황은 프로그램이 허용되지 않은 연산을 수행하려고 할 때 자동적으로 발생하는 것으로 운영체제는 예외상황이 발생했을때 CPU의 제어권을 획득해 해당 상황에 대한 조치를 취한다.

운영체제는 예외 상황에 대한 처리 루틴을 인터럽트 처리 루틴과 마찬가지로 자신의 코드영역에 갖고있다.

시스템 콜은 사용자 프로세스가 운영체제의 서비스를 요청하기 위해 커널의 함수를 호출하는 것이다. 사용자 프로세스가 직접 특권 명령을 수행할 수 없으므로 사용자 프로세스가 특권 명령을 수행하려 할 때 시스템 콜을 사용한다.

이러한 소프트웨어 인터럽트들은 모두 사용자 프로세스로부터 CPU의 제어권이 운영체제에게 이양되어 처리되는데, 이 과정에 인터럽트 라인을 세팅하여 인터럽트를 발생시킨 후 제어권이 넘어가게 된다.

인터럽트와 관련된 주요 용어에는 인터럽트 벡터와 인터럽트 핸들러가 있다.

  • 인터럽트 벡터 : 여러가지 인터럽트에 대해 해당 인터럽트 발생시 처리해야 할 루틴의 주소를 보관하고 있는 테이블
  • 인터럽트 핸들러 : 실제 인터럽트를 처리하기 위한 루틴으로, 인터럽트 서비스 루틴이라고도 부른다

인터럽트 처리를 마치면 인터럽트가 발생하기 직전의 프로세스에게 CPU의 제어권이 다시 넘어가게 된다. 다만 타이머 인터럽트의경우 CPU를 그 프로세스로부터 회수해 다른 프로세스에게 이양하기 위해 발생시킨 인터럽트이므로, 인터럽트 처리가 끝난 뒤 CPU의 제어권을 직전에 작업하는 프로세스에게 다시부여하지 않는다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함