1. 인터럽트란??
인터럽트는 컴퓨터의 CPU가 현재 실행 중인 프로세스를 일시 중단시키고, 특정 이벤트(예: 입/출력 요청, 오류 발생 등)를 처리하기 위해 다른 작업(인터럽트 서비스 루틴, ISR)으로 제어를 전환하는 메커니즘입니다. 인터럽트가 처리된 후, CPU는 중단되었던 작업을 재개합니다.
인터럽트가 발생하는 원인
- 오류: 0으로 숫자를 나누는 산술 연산 오류, 프로세스 오류 등
- IO디바이스를 사용할 때의 인터럽트: 키보드, 마우스 등
- 우선순위가 높은 프로세스의 발생
CPU는 메모리에 있는 명령어(instruction)을 순차적으로 실행하는데 인터럽트가 발생하게 되면 점프해서 언터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 인터럽트 핸들러 함수(인터럽트 서비스 루틴, ISR)가 실행되며 특정 명령어를 실행하게 됩니다. 이후 인터럽트가 종료되면 다시 순차적으로 실행되게 됩니다.
2. 인터럽트의 종류
하드웨어 인터럽트/ 소프트웨어 인터럽트(=트랩)
1) 하드웨어 인터럽트
IO 디바이스 등 하드웨어에서 발생하는 인터럽트
외부 하드웨어 장치(예: 키보드, 마우스, 디스크 드라이브)에서 발생하는 인터럽트입니다. 이러한 인터럽트는 대개 장치의 상태 변화(예: 키보드 키 입력, 마우스 클릭, 디스크 입/출력 작업 완료)를 나타냅니다.
2) 소프트웨어 인터럽트(=트랩)
프로그램 내부에서 발생하는 인터럽트로, 대개 프로그램의 실행 오류(예: 0으로 나누기 시도, 잘못된 메모리 접근) 또는 시스템 호출과 같은 명시적인 요청에 의해 발생합니다. 소프트웨어 인터럽트는 하드웨어 인터럽트보다 우선순위가 높을 수 있으며, 시스템의 안정성 및 보안을 유지하는 데 중요한 역할을 합니다.
3. 인터럽트 처리 과정
- 인터럽트 요청(IRQ): 외부 장치 또는 소프트웨어가 CPU에 인터럽트를 요청합니다. 이는 장치에서 발생한 이벤트 또는 프로그램 실행 중 발생한 특정 상황(예: 오류, 시스템 호출 등)을 나타냅니다.
- 인터럽트 인식: CPU는 현재 실행 중인 명령어가 완료되면 인터럽트 요청을 확인하고, 실행 중인 프로세스의 상태(예: 레지스터 값, 프로그램 카운터 등)를 저장합니다.
- 인터럽트 서비스 루틴(ISR) 실행: CPU는 인터럽트 벡터를 사용하여 해당 인터럽트에 대한 서비스 루틴의 주소를 찾고, 이 루틴을 실행하여 인터럽트를 처리합니다.
- 원래 프로세스로 복귀: 인터럽트 처리가 완료되면, CPU는 저장된 프로세스의 상태를 복원하고, 중단되었던 작업을 계속 진행합니다.
오늘은 간단하게 인터럽트에 대해서 알아보았습니다! 사실 학교에서는 매우 방대하게 이것만 몇주동안 배웠던 것 같은데요,, 이번 운영체제 블로깅은 전체적인 정리가 목적인 만큼 간단하게 흐름을 짚고 다음에 심화된 내용을 다뤄보겠습니다!
'운영체제' 카테고리의 다른 글
가상메모리와 스와핑, 페이지폴트 그리고 스레싱 (0) | 2024.02.08 |
---|---|
메모리 계층 (0) | 2024.02.08 |
시스템콜과 modebit (1) | 2024.02.08 |
운영체제와 컴퓨터시스템의 구조 (1) | 2024.02.07 |