본문 바로가기

운영체제

프로세스와 스케쥴러 2탄

인터럽트


-내부 인터럽트

프로그램 내부에서 발생

-외부 인터럽트

하드웨어

이벤트 발생에서 처리를 어떻게 알려주는가?

프로세스가 Block ready running 상태의 명령들로 상태가 바뀔 때 이거를 CPU에게 알려주는 것!!

스케쥴러가 프로세스 A B C를 처리하는데 A가 RUNNING 상태면 스케쥴러는 B로 가서 처리해야 효과적으로 멀티태스킹이 가능하다. 그러면 이를 CPU에게 알려주는 것이 인터럽트!!

인터럽트 처리 예

  1. 입출력 하드웨어 등의 장치 이슈 발생
  2. open() 이 block 상태 이거를 알려준다
  3. 코드가 에러일 때 운영체제의 인터럽트가 CPU에게 알려준다
  4. 외부 인터럽트

 

전원 이상

기계 문제

키보드 IO관련 이벤트

Timer 이벤트

시스템 콜 인터럽트

PROCESS A에서 B로가 가기 위해선 새로운 조건이 있어야 하는데 이게 인터럽트의 역할

인터럽트는 커널 영역에서 시스템 콜을 불러서 새로운 스케쥴러를 불러도 된다는 명령을 함

이러면 다시 B를 스케쥴러가 처리할 수 있음 READY()에서 RUNNING 으로 바꾸는 것이 가능

인터럽트와 IDT

운영체제가 컴퓨터 부팅시 IDT로 가서 주소의 코드를 커널 영역에서 인터럽트를 실행한다.

EX) 시스템 콜 인터럽트 명령은 0X80으로 되어있음 여기에 SYSTEM CALL()을 불러옴

'운영체제' 카테고리의 다른 글

프로세스와 스케쥴러  (0) 2021.10.15
운영체제의 시작  (0) 2021.10.15