인터럽트
-내부 인터럽트
프로그램 내부에서 발생
-외부 인터럽트
하드웨어
이벤트 발생에서 처리를 어떻게 알려주는가?
프로세스가 Block ready running 상태의 명령들로 상태가 바뀔 때 이거를 CPU에게 알려주는 것!!
스케쥴러가 프로세스 A B C를 처리하는데 A가 RUNNING 상태면 스케쥴러는 B로 가서 처리해야 효과적으로 멀티태스킹이 가능하다. 그러면 이를 CPU에게 알려주는 것이 인터럽트!!
인터럽트 처리 예
- 입출력 하드웨어 등의 장치 이슈 발생
- open() 이 block 상태 이거를 알려준다
- 코드가 에러일 때 운영체제의 인터럽트가 CPU에게 알려준다
- 외부 인터럽트
전원 이상
기계 문제
키보드 IO관련 이벤트
Timer 이벤트
시스템 콜 인터럽트
PROCESS A에서 B로가 가기 위해선 새로운 조건이 있어야 하는데 이게 인터럽트의 역할
인터럽트는 커널 영역에서 시스템 콜을 불러서 새로운 스케쥴러를 불러도 된다는 명령을 함
이러면 다시 B를 스케쥴러가 처리할 수 있음 READY()에서 RUNNING 으로 바꾸는 것이 가능
인터럽트와 IDT
운영체제가 컴퓨터 부팅시 IDT로 가서 주소의 코드를 커널 영역에서 인터럽트를 실행한다.
EX) 시스템 콜 인터럽트 명령은 0X80으로 되어있음 여기에 SYSTEM CALL()을 불러옴
'운영체제' 카테고리의 다른 글
프로세스와 스케쥴러 (0) | 2021.10.15 |
---|---|
운영체제의 시작 (0) | 2021.10.15 |