조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. Event-Driven
- 무언가 발생했을 때, 그에 반응해서 동작하는 구조
- ✅ 이벤트 발생 시, 등록된 핸들러가 호출되어 이벤트가 처리됨
- ✅ 입출력 장치는 자신의 작업이 완료되면, 인터럽트 신호를 발생시켜 CPU에 알림
비동기 방식
- 작업을 요청한 뒤 결과를 기다리지 않고 다음 작업을 수행하는 방식
- 작업 완료 시, 이벤트, 콜백 등을 통해 결과를 전달받음
- ➡️ 다른 작업의 실행 흐름에 영향을 미치지 않음
2. 인터럽트
- CPU에게 현재 수행중인 작업을 일시정지하고, 먼저 이것부터 처리하라는 신호
- CPU는 요청받은 인터럽트 신호의 블록된 프로세스를 준비상태로 전환함
- ⚠️ 준비에서 바로 실행되는것은 아님. 스케줄링 정책과 우선순위에 따라 다름
종류
| 구분 | 동기적 인터럽트 | 비동기적 인터럽트 |
| 설명 | 실행 중인 명령어로 인해 발생 (예외) |
하드웨어 오류 또는 입출력 장치에 의해 발생
|
| 원인 | 프로세스의 문제 또는 의도적 중단 | 하드웨어 요청 또는 외부 이벤트 |
| 발생 시점 | 특정 명령어 실행 직후 또는 도중 | 프로그램 실행과 관계없이 트리거됨 |
| 처리 방식 | 명령어 실행과 밀접하게 연관됨 | 실행 흐름과 독립적으로 발생 |
| 예시 | 0으로 나누기, 잘못된 메모리 접근 |
키보드 입력, 마우스 클릭, 하드웨어 오류
|
처리 과정

- 인터럽트 발생
- 현재 프로세스 상태 저장
- 현재 실행중인 프로세스는 일시 정지됨
- 현재 프로세스 관련 정보를 PCB에 저장
- 인터럽트 컨트롤러 실행
- 여러 인터럽트 중 우선순위를 결정함
- 어떤 인터럽트를 처리할지 CPU에 알림
- CPU는 해당 인터럽트를 승인함
- 인터럽트 핸들러 호출
- CPU는 인터럽트 백터 테이블을 참조하여 ISR 주소를 찾음
- 커널 모드에서 인터럽트 서비스 루틴 실행
- 원래 작업 복귀 또는 문맥 교환
- 인터럽트 핸들러가 처리를 마치면 일시 정지된 프로세스가 다시 실행됨
출처
'OS' 카테고리의 다른 글
| [쉽게 배우는 운영체제] 6. 교착 상태 (1) | 2024.12.12 |
|---|---|
| [쉽게 배우는 운영체제] 5-1. 프로세스 동기화: 임계 영역 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 4-1. CPU 스케줄링: 스케줄링 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 3-2. 프로세스와 스레드: 스레드 (0) | 2024.12.12 |
| [쉽게 배우는 운영체제] 3-1. 프로세스와 스레드: 프로세스 (0) | 2024.12.11 |