iOS-Junior-Developers / Operating-System

Operating System Stuy
0 stars 0 forks source link

인터럽트 #20

Open JongHoooon opened 1 year ago

JongHoooon commented 1 year ago

CPU가 프로그램을 실행하고 있을 때, I/O 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요한 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말한다.

하드웨어 인터럽트

하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu서비스를 요청해야 할 경우 발생시킨다.

소프트웨어 인터럽트

소프트웨어가 발생시키는 인터럽트. 소프트웨어(사용자 프로그램)가 스스로 인터럽트 라인을 세팅한다.

인터럽트 과정

process A 실행중 디스크에서 어떤 데이터를 읽어오라는 명령을 받았다고 하자

  1. process A는 system call을 통해 인터럽트를 발생시킨다.
  2. CPU는 현재 진행중인 기계어 코드 완료한다.
  3. 현재까지 수행중이었던 상태를 해당 process의 PCB(Process Control Block)에 저장한다.
  4. PC(Program Counter)에 다음에 실행할 명령의 주소를 저장한다.
  5. 인터럽트 벡터를 읽고 ISR(Interrupt Service Routine) 주소값을 얻어 ISR로 점프하여 루틴을 실행한다.
  6. 해당 코드를 실행한다.
  7. 해당 일을 다 처리하면, 대피시킨 레지스터를 복원한다.
  8. ISR의 끝에 IRET 명령어에 의해 인터럽트가 해제 된다.
  9. IRET 명령어가 실행되면, 대피시킨 PC 값을 복원하여 이전 실행 위치로 복원한다.


https://velog.io/@adam2/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8