CS/OS

[OS] 인터럽트

Jutudy 2021. 5. 15. 10:02

개인적으로 공부하면서 정리하는 글입니다. 내용에 오류가 있는 경우 댓글 달아주시면 수정하도록 하겠습니다.

인터럽트 (Interrupt)

CPU는 한 번에 한 가지 일만 수행할 수 있습니다. CPU가 작업을 수행하던 도중 급하게 다른 작업을 처리해야할 일이 발생할 수 있는데요. 그 때 현재 수행하던 작업을 잠시 중단하고, 다른 작업을 수행할 수 있도록 하는 것을 인터럽트라고 합니다. 우리가 키보드를 사용하여 입력을 하면 키보드가 인터럽트를 요청하고, CPU는 현재 수행중이던 프로세스의 정보를 저장하고 인터럽트를 처리한 후 다시 프로그램을 수행하게 됩니다.

인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나눌 수 있는데요. 하드웨어 인터럽트는 키보드와 같은 장치 또는 주변장치들로부터 발생한 인터럽트입니다. 하드웨어 인터럽트가 발생하면 CPU는 현재 진행 중인 명령어 실행을 마친 후 인터럽트를 처리합니다. CPU 스스로 자신에게 인터럽트를 발생시키거나(트랩), 응용 프로그램에서 시스템 콜을 이용해 커널 프로그램을 호출하는 것은 소프트웨어 인터럽트라고 합니다.

인터럽트 처리 과정

장치가 인터럽트 신호를 CPU에게 보내면 CPU는 실행중인 명령어를 완료하고 인터럽트 신호를 확인합니다. 인터럽트를 실행시키기 전에 현재 실행중이던 프로그램의 정보와 PC 레지스터 값을 시스템 스택에 저장합니다. 그 후 인터럽트 처리 루틴의 시작 주소를 PC(Program Counter)에 넣어서 인터럽트 처리 루틴이 실행됩니다. 인터럽트 처리가 끝나면 이전에 저장한 값들을 다시 불러오고 PC에는 인터럽트 발생 이전에 실행중이던 프로그램의 다음에 실행할 명령어 위치가 들어가 있으므로 자연스럽게 프로그램을 이어나갈 수 있습니다.

문맥 교환 (Context Switching)

인터럽트 처리를 위해 이전에 실행중이던 프로그램의 정보를 저장한 후, 인터럽트 처리가 완료되면 다시 불러온다고 했는데 이것을 문맥 교환이라고 합니다.

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

[OS] CPU 스케줄링  (0) 2021.06.06
[OS] 프로세스와 스레드(Process, Thread)  (0) 2021.05.23
[OS] 프로세스 상태(Process State)  (0) 2021.05.23
[OS] 프로세스(Process)  (1) 2021.05.22
[OS] 운영체제란?  (0) 2021.05.15