YYYEJI

[OS] Interrupt(인터룹트)란? 본문

Operating system

[OS] Interrupt(인터룹트)란?

YEJI ⍢ 2023. 4. 27. 02:14
728x90

Interrupt(인터룹트)


Hardware나 software의 관심을 필요로 하여 보내는 asynchronous signal입니다.

 

 

interrput를 받으면 interrupt vector로 들어갑니다.

Interrupt vector


Interrupt vector는 Interrupt handler의 시작 주소를 모아둔 표입니다.

 

 

Interrupt handler (ISR, interrupt service routine)


Interrupt를 해결하기 위한 code, routine 입니다. 

 

 

 

① PC: Program Counter

② IRQ: Interrupt ReQuest

③ ISR: Interrupt Service Routine

 

 

 

Interrupt를 처리하는 코드를 한 번 살펴보겠습니다.

InterruptRequest = FALSE;

..

while(haltFlas not set during execution) {
    IR = memory[PC];
    PC++;
    execute(IR);
    
    If(InterruptReuest) {
    	save_PC();
        restore_PC(IRQ);
    }
}

 

while(haltFlas not set during execution) {

//  Interrupt가 없으면 프로그램 정상적으로 잘 돌아갑니다.

 


IR = memory[PC];

//  memory에서 pc 위치에 있는 값을 IR(intruction register)로 가져옵니다.

 


    PC++;

// PC의 값을 하나 증가시킵니다.

 

 

    execute(IR);

// IR의 값을 실행시킵니다.


    
    If(InterruptReuest) {

//  들어온 Interrupt가 있는지 확인합니다.

 


     save_PC();

// 들어온 interrupt가 있으면 현재 PC의 값을 어딘가에 저장하고

 


        restore_PC(IRQ);

// Interrupt request number을 보고 interrupt handler로 들어가서 intterupt를 해결해줍니다.

 

 

 

◡̈

'Operating system' 카테고리의 다른 글

[OS] 버스(bus)란  (0) 2023.04.27
[OS] 펌웨어(Firmware)란?  (0) 2023.04.27
[Ubuntu] 우분투 터미널에서 파일 압축하기  (0) 2023.03.08