본문 바로가기
컴퓨터공학기초 개념/운영체제

12. 인터럽트 동작방식

by devraphy 2021. 4. 8.

1. 시스템 콜 인터럽트의 작동과정

 

a) 시스템 콜 인터럽트

  • 시스템 콜을 실행하기 위해서 강제로 코드에 인터럽트 명령을 넣어 CPU에게 실행을 시킨다

    - 시스템 콜: 커널에서만 사용할 수 있는 OS 명령어 

 

b) 실제 시스템 콜 코드

  • eax 레지스터에 시스템 콜 번호를 넣는다.
  • ebx 레지스터에 시스템 콜에 해당하는 인자값(=매개변수)를 넣는다.
  • 소프트웨어 인터럽트 명령을 호출하면서 0x80값을 넘겨준다.
mov eax, 1  //시스템 콜 번호 = 1
mov ebx, 0  //인자 = 0
int 0x80    //소프트웨어 인터럽트 명령어(= 인터럽트 함수가 담겨있는 주소를 찾기위한 값)

 

 

c) 시스템 콜 코드를 받고 난 이후 과정 

  • CPU는 사용자모드를 커널모드로 전환한다.
  • IDT(Interrupt Descriptor Table)에서 0x80에 해당하는 주소를 찾는다.
  • 해당 주소값에 할당되어 있는 함수를 실행한다. (= 0x80값을 이용하여 해당 인터럽트 함수의 주소값을 찾는다.)
  • system_call() 함수에서 eax 로부터 시스템 콜 번호를 찾은 후, 해당번호에 맞는 시스템 콜 함수로 이동한다.

IDT 예시

  • 해당 시스템 콜 함수를 실행한 뒤, 다시 사용자모드로 변경한다. 
  • 진행중이던 프로세스의 다음 코드를 진행한다. 

 

d) 전체적인 프로세스와 인터럽트의 흐름

 

 

  • 프로세스 실행 중 인터럽트가 발생한다
  • 실행중이던 프로세스를 중단한다.
  • 인터럽트 처리를 위해, 커널모드로 변경된 후 시스템 콜을 실행한다.
  • 모든 인터럽트의 처리가 종료된 후, 사용자모드로 변경된 뒤에 중단했던 프로세스를 재실행한다.  

2. IDT (Interrupt Descriptor Table) 

  • 인터럽트는 운영체제 내부에 미리 정의되어 있다. 
  • 어떤 인터럽트를 실행하기 위해서는 해당 인터럽트의 번호와 실행코드를 가리키는 주소가 기록되어 있는 테이블을 참조해야 하는데, 이를 IDT라고 한다. 
  • IDT는 컴퓨터 부팅 시 운영체제에 의해 기록된다. 

3. 인터럽트 번호의 예시

a) 리눅스 

  • 0 ~ 31: 소프트웨어 인터럽트(내부 또는 예외상황), 일부는 정의되지 않은 채로 남겨져 있다.
  • 32 ~ 47: 하드웨어 인터럽트, 주변장치 종류와 개수에 따라 변경이 가능하다.
  • 128: 시스템 콜 

'컴퓨터공학기초 개념 > 운영체제' 카테고리의 다른 글

14. 프로세스 구조(2) - Stack  (0) 2021.04.13
13. 프로세스 구조(1)  (0) 2021.04.09
11. 인터럽트의 종류  (0) 2021.04.07
10. 인터럽트란?  (0) 2021.04.06
9. 선점형과 비선점형 스케줄러  (0) 2021.04.05

댓글