[CE] Interrupt 요약 (Computer 기준).

2023. 1. 17. 11:52·Computer/CE
728x90
728x90

1. Interrupt Based System (or Interrupt Driven System)

오늘날 OS는 interrupt를 기반으로 동작 (Interrupt Based System)한다:

interrupt가 발생하면 CPU는 현재 하는 일을 멈추고 해당 interrupt를 해결하려고 동작한다.

processor가 특정 동작을 하고 있는 중 (OS가 특정 process를 수행)에
  - 다른 device들에게서 interrupt가 오는 경우, (경우에 따라 다르지만)
  - 현재 실행되고 있는 일을 멈추고
  - 해당 interrupt에 대응하는 Interrupt Service Routine (ISR)이 수행하는 것을 가르킴.
  • routine이란 어떤 동작을 수행하는 프로그램 코드를 의미함.

2. Interrupt 작동단계 : Keyboard 를 예로 **

Keyboard에서 키를 누를 경우 다음의 단계를 거치게 된다.

  1. Keyboard의 controller에서 key up, key down 등의 interrupt를 일으키는 event를 감지. 
  2. Keyboard에서 전기적 신호가 processor로 전달됨 (interrupt 발생).
    • 바로 연결된 것은 아님(작은 임베디드 시스템의 특정 센서라면 직접 연결될 수도 있음).
    • 하지만 결국은 interrupt signal이 들어오는 processor의 pin에 전기신호가 들어오게 된다.
  3. processor는 매번 execute 명령이 끝날 때마다 interrupt를 확인하고
    interrupt request(IRQ) 이 있을 경우, 현재 하던 일을 중지
    (현재 실행 중인 process 중지).
  4. 현재 하던 작업 데이터를 stack에 저장하는 context switching이 발생.
    (실행 중이었던 process의 상태 저장)
  5. 이후, Interrupt Request (실제로는 숫자번호임)에 기반하여 Interrupt Vector를 결정
  6. CPU는 Interrupt Vector를 index로 사용하여 IVT(Interrupt Vector Table)에서 해당 ISR 주소를 찾아 해당 주소로 점프하여 수행. 
    (키보드의 경우 keyboard ISR이 수행됨.) : ISR (또는 handler) 실행
    • 키보드 인터럽트의 경우 scan code의 값을 ASCII code로 변환하여 buffer에 저장.
  7. ISR수행 이후, 원래 수행하던 process가 수행된다.(context switching) : 저장된 상태로 복구하고 다시 process 실행 재개
    • 키보드 값이 필요한 process라면 buffer에서 읽어들이게 됨.

3. Interrupt 종류 ***

위의 그림은 Interrupt의 종류와 CPU cycle을 보여줌.


각 Interrupt에 대한 간단한 설명은 다음과 같음:

3-1. Hardware Interrupt

좁은 의미의 interrupt 인 경우, H/W interrupt를 가리킴.

 

processor (CPU)에 연결된 hardware에서 발생시키는 asynchronous interrupt임.

  • 키보드, 마우스를 조작할 때 발생되는 게 가장 흔한 예임 (입출력장치 interrupt).
  • Timer interrupt, 전원공급 이상 interrupt 등이 있음.
    • Timer interrupt 를 통해 무한루프인 프로그램도 종료되며, 특정 프로그램이 CPU를 독점하는 것이 방지됨.
    • 전원공급 이상 interrupt를 통해 작업 중이던 process를 dump한다던지의 처리가 가능.
  • Maskable Interrupt와 Non-maskable Interrupt로 나뉨.
    • Maskable Interrupt: CPU의 flag register 중 interrupt flag가 1인 경우에만 interrupt 발생되고, 0이면 무시됨.
    • Non-maskable Interrupt: interrupt flag에 상관없이 interrupt발생됨(전기가 끊어지는 등의 무시가 불가능한 interrupt임.)

3-2. Software Interrupt

  • User application (or program)에서 명시적으로 명령어 호출을 통해 cpu가 발생시키는 interrupt들.
  • 주로 Synchronous Interrupt 이나, timer나 특정 h/w와 연관된 경우 asynchronous 인 경우도 있음
    • SIGINT 시그널로 인해 발생되는 S/W interrupt가 대표적인 Asynchronous Interrupt임:
    • TRAP가 Synchoronous 라는 점에서 구분됨:
    • CPU가 특정 명령어를 실행시켜 발생하는 것이 S/W Interrupt.
  • SVC (SuperVisor Call), INT n 명령어 호출로 이루어짐.
    • ARM에선 SVC를 통해 system call 이 호출됨,
    • 초기의 Intel 의 CPU에선 INT를 통해 system call 이 호출되었음: 현재는 TRAP을 이용하여 system call 이 이루어짐.
더보기

System Call

system call은

  OS가 제공하는 서비스들(Kernel Space 의 코드 및 H/W 접근 등)에
  User application이 접근하게 해주는 interface임.

  • 이들 System call을 수행케 해주는 instruction (CPU가 가지고 있는 instruction set에 속함)이 SVC임: ARM
  • User application은 User Mode에서 수행되기 때문에 직접 접근할 수 없는 resource들이 존재.
    • 이같은 resource에 접근하는 코드(=system call)가 User application에 있다면,
    • 해당 코드(system call)를 수행할 때,
      • SVC(=S/W Interrupt)나 TRAP 을 통해 (CPU가 실행)
      • Kernel Mode 로 변경이 되고 (Kernel이 관여)
    • resource을 사용하는 코드의 수행이 종료된 이후 다시 User Mode로 변경이 된다.

3-3. TRAP 

TRAP은 "TRAP 명령어(syscall)"를 CPU가 실행하거나 CPU가 예외를 검출한 경우 발생하는 (S/W 기반) Interrupt (주의: CPU에서 발생함).

  • 대표적인 Synchoronous Interrupt 임.
  • Fault, Abort와 달리 Trap을 발생시킨 명령어의 다음 명령어가 Trap으로 인한 인터럽트 처리가 완료된  이후 실행됨.
  • CPU 내부 interrupt (or CPU가 발생시키는 Exception)라고도 불리며, 오늘날 system call도 실제로 Trap을 통해 구현됨.
일반 개발자 입장에선 TRAP이나 S/W Interrupt 는 구분이 쉽지 않은 편이다.
둘 다 CPU에서 발생하고 kernel mode로 들어가서 kernel space의 해당 ISR 이 수행된다.

단, S/W interrupt는 특정 경우에는 Asynchoronous 인 경우도 있고 특정 명령어를  CPU가 실행하여  발생하는 interrupt이므로 좀 더 범위가 넓다는 점과 TRAP은 항상 Synchoronous이며 CPU가 예외를 검출하거나 TRAP 명령어를 호출(System Call을 위해)한 경우 발생한다는 차이점이 있다는 정도를 기억하면 될 듯.

Signal은 Asynchorous Event를 다루며, CPU에서 발생하지 않고 Kernel에 의해 발생과 전달이 모두 이루어진다는 점이 차이임.

3-4. Internal Interrupt: Abort, Fault

  • processor 내부에서 발생되는 interrupt: Processor가 프로그램의 코드를 실행하는 도중 발생한 interrupt.
    • 잘못된 instruction이나 data를 사용한 경우 발생.
    • TRAP도 여기에 해당한다고 볼 수 있으나, 오늘날 system call에 사용되기 때문에 앞에서 따로 다룸.
  • 크게 2가지가 대표적.
    • Abort:
      • 매우 심각한 에러로 인해 프로그램이 더이상 수행되지 못할 때 발생되는 synchoronous interrupt.
    • Fault:
      • RAM에 필요한 데이터 등이 없는 경우 발생하는 synchoronous interrupt.
      • 해당 exception(or interrupt) 처리 이후 interrupt를 발생시킨 명령어가 실행됨
      • 참고로, Trap은 다음 명령어가 interrupt 처리 이후 실행되며, Abort는 프로그램 실행이 아예 중단됨.

더 읽어보면 좋은 자료들

https://product.kyobobook.co.kr/detail/S000211776141: 589page, 13.1.2 인터럽트와 트랩

 

컴퓨터 시스템 딥 다이브: C 언어부터 어셈블리, 아키텍처, OS까지 한 꺼풀씩 벗겨보는 컴퓨터 시

컴퓨터 시스템 딥 다이브: C 언어부터 어셈블리, 아키텍처, OS까지 한 꺼풀씩 벗겨보는 컴퓨터 시스템 | 코드 아래 숨겨진 아름답고 놀라운 컴퓨터 아키텍처 대탐험컴퓨터 시스템은 바다와 비슷

product.kyobobook.co.kr

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000002986369: 203page, 인터럽트

 

한 권으로 읽는 컴퓨터 구조와 프로그래밍 | 조너선 스타인하트 | 책만- 교보ebook

더 나은 소프트웨어 개발을 위한 하드웨어, 대부분의 개발자들은 자신이 만든 프로그램을 움직이는 하부 기술에 대해 잘 알지 못한다. 코드가 잘 도는데 구태여 근원적인 하부 기술에 신경을 써

ebook-product.kyobobook.co.kr

https://ds31x.tistory.com/132: interrupt 외에 OS가 asynchronous event handling하는 방법의 하나.

 

[Linux] SIGNAL

SIGNAL이란?? OS (LINUX 및 UNIX계열)에서의 SIGNAL은 UNIX 또는 UNIX 계열 또는 POSIX 호환 OS에서 사용되는 제한된 형태의 Iner-Process Communication (IPC)을 가르킨다. 특정 process가 동일 process 내의 thread 또는 다른

ds31x.tistory.com

https://dsaint31.me/mkdocs_site/CE/ch05/ch05_04_02_interrupt/: Interrupt vs. Polling

 

BME228

Interrupt and Polling Interrupt와 Polling은 CPU에게 어떤 event들이 발생했음을 알리고 이들을 처리하기 위해 제안된 두가지 방법임. event가 발생했을 때, CPU는 대개의 경우 어떤 process를 처리하고 있을 경

dsaint31.me

2023.04.09 - [Computer/CE] - [Linux] Signal : SIGINT: CTRL+C (키보드 입력이 SIGINT 시그널을 통해 비동기적 S/W interrupt를 발생시킴)

 

[Linux] Signal : SIGINT

0. SIGINT 란?Ctrl+c 를 누를 때 발생하는 Signal:interrupt를 발생시킴: SIGINT현재 terminal 에서 fore-ground로 동작하는 process (보통 현재 실행 중인 shell script)를interrupt 시켜 강제 종료시키는데 주로 사용됨.Sig

dsaint31.tistory.com

 

https://ds31x.tistory.com/152: context switching에 대해서 읽어볼 것.

 

[CE] Process versus Thread

Process versus Thread1. Process (프로세스)Process는 자신을 위한 독립된 메모리 공간 등의 리소스를 차지한 상태에서 실행 중인 프로그램의 instance라고 볼 수 있음. 독립된 execution unit (실행 단위)이며,

ds31x.tistory.com

 


 

'Computer > CE' 카테고리의 다른 글

[CE] Gateway  (0) 2023.01.17
[CE] Router  (0) 2023.01.17
[CE] Direct Access Storage Device & media (DASD)  (0) 2023.01.13
[CE] Optical Disk  (0) 2023.01.13
[CE] Internet Protocol Address (IP Address)  (0) 2023.01.02
'Computer/CE' 카테고리의 다른 글
  • [CE] Gateway
  • [CE] Router
  • [CE] Direct Access Storage Device & media (DASD)
  • [CE] Optical Disk
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (740)
      • Private Life (13)
      • Programming (186)
        • DIP (104)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    linear algebra
    인허가제도
    Programming
    function
    Optimization
    Vector
    fourier transform
    DIP
    signal_and_system
    signals_and_systems
    SIGNAL
    opencv
    numpy
    SS
    Convolution
    Python
    Probability
    random
    math
    Term
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[CE] Interrupt 요약 (Computer 기준).
상단으로

티스토리툴바