인터럽트
예상치 못한, 외부에서 발생한 이벤트
인터럽트의 종류
- I/O interrupt
- Clock interrupt
- Console interrupt
- Program check interrupt
- Machine check interrupt
- Inter-process interrupt
- System call interrupt
인터럽트 처리 과정
인터럽트 처리 과정을 시간의 흐름에 따라 설명하자면..
Pi프로세서가 실행중일 때 인터럽트가 발생한다. 그러면 Pi프로세서를 중단시킨다. 이때 Context saving이 발생한다.
(Context saving: 책깔피 같은 개념, 흐름을 저장한다)
그 후 커널 개입, 인터럽트가 어디서, 왜 발생했는지 파악한다.
원인파악후 처리하기 위해 어떤 서비스 루틴을 호출해야하는지 결정한다.
만약 ISR-3 을 호출해야한다면 그것을 서비스한다. 이를 Interrupt service(Program)라 한다.
그 후 호출된 서비스가 끝나면 프로세서는 비어있다.
그렇다면 아까 중단된 프로세서가 들어오면 되지 않을까?
시스템은 그렇지 않으며 ready상태에 있는 하나를 넣어주게 된다. 즉, PCBi가 들어올 수 있지만 PCBj가 들어올 수 있다는 말이다. PCBj가 들어온다고 가정하면 꽂아놓은 책갈피(Context saving)를 가지고 복구 하게 된다.
그리고 안에 들어가서 (Pj) 일을 수행한다.
Context Switching (문맥 교환)
프로세서가 들어갔다 나올 때 저장하기도 하고, 복구하기도 하는 Context의 개념을 알아보자
Context
- 프로세스와 관련된 정보들의 집합
- CPU register context => in CPU
- Code & data, Stack, PCB => in memory
프로세스가 관리하는 정보는 두군데에 저장된다.
CPU안에는 register(메모리)가 있다. 또 Main memory가 있다. 실제 CPU는 Main memory의 데이터를 register에 올려서 작업을 하게 된다. register에 저장된 메모리를 register context라 한다. CPU안에 저장되어 있다.
Context saving
- 현재 프로세스의 Register context를 저장하는 작업
Context restoring
- Register context를 프로세스로 복구하는 작업
Context switching ≅ Process switching
- 실행 중인 프로세스의 context를 저장하고, 앞으로 실행 할 프로세스의 context를 복구 하는 일
- 커널의 개입으로 이루어짐
Context Switching Overhead
Context switching에 소요되는 비용
- OS마다 다름
- OS의 성능에 큰 영향을 줌
불필요한 Context switching을 줄이는 것이 중요
- ex) 스레드 사용 등
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS] 5-1. 프로세스 스케줄링 (Process Scheduling) (0) | 2022.03.13 |
---|---|
[OS] 4. 운영체제 스레드 관리 (Thread) (0) | 2022.03.11 |
[OS] 3-1. 프로세스 관리 (프로세스 정의, 종류, 상태) (0) | 2022.03.08 |
[OS] 2. OS개요, 운영체제 역할, 구조 (0) | 2022.03.07 |
[OS] 1. 컴퓨터 시스템의 개요 (0) | 2022.03.06 |