Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- web
- 협업
- 정렬
- error
- Operating System
- 기초100제
- 토이프로젝트
- 백준
- js to ts
- Spring
- react
- OS
- 공부
- react-redux
- Java
- 스프링
- 타입스크립트
- 프로그래머스
- codeup
- 알고리즘
- 자료구조
- 파이썬
- CPU 스케줄링
- 코드업
- 리덕스장바구니
- 분할메모리할당
- C++
- Redux
- 일상
- memory
Archives
- Today
- Total
감자튀김 공장🍟
[OS] 인터럽트 (Interrupt) 본문
반응형
인터럽트 (Interrupt)
- 운영체제와 하드웨어 장치 사이의 인터페이스
- 하드웨어 장치들이 CPU에게 하드웨어 신호(인터럽트 신호)를 물리적으로 발생시켜, 입출력 완료나 타이머 완료 등을 CPU에게 알리는 방법이다.
- CPU가 입터럽트 신호를 받게 되면, 현재 하던 일을 멈추고 발생한 인터럽트의 요청을 처리하는 코드를 실행한다.
- 하드웨어 인터럽트
- CPU의 하드웨어 신호에 의해 발생
- 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
- 전원 이상, 기계 착오, 외부 신호, 입출력
- 소프트웨어 인터럽트
- 명령어의 수행에 의해 발생
- Trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
- 예외 상황(Exeption) : 프로그램이 허용되지 않은 연산을 수행하려고 할 때, 자동적으로 발생한다. ex) 0으로 나누는 연산, 자신의 주소 공간을 넘어서는 메모리 참조 등
- 시스템 콜(System call) : 사용자 프로세스가 운영체제의 서비스를 요청하기 위해 커널의 함수를 호출하는 것이다.
인터럽트 처리 과정
주 프로그램이 실행되다가 인터럽트가 발생한다.
현재 수행 중인 프로그램을 멈추고, 상태 레지스터와 PC 등을 스택에 잠시 저장한 뒤에 인터럽트 서비스 루틴으로 간다. (잠시 저장하는 이유는, 인터럽트 서비스 루틴이 끝난 뒤 다시 원래 작업으로 돌아와야 하기 때문이다.)
만약 인터럽트 기능이 없었다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야 한다. (이를 폴링(Polling)이라고 한다)
폴링을 하는 시간에는 원래 하던 일에 집중할 수가 없게 되어 많은 기능을 제대로 수행하지 못하는 단점이 있었다.
즉, 컨트롤러가 입력을 받아들이는 방법(우선순위 판별방법)에는 두가지가 있다.
- 폴링 방식인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아 이에 맞는 인터럽트 서비스 루틴을 수행한다. (하드웨어에 비해 속도 느림)
- 사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식
- 인터럽트 방식
- Daisy Chain
- 병렬 우선순위 부여
- MCU 자체가 하드웨적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식
인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 실시간 대응이 필요할 때는 필수적인 기능이다.
즉, 인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법이다.
출처
https://gyoogle.dev/blog/computer-science/operating-system/Interrupt.html
운영체제(Operating system), 황기태 지음 - 참고
반응형
'Study > Operating System' 카테고리의 다른 글
[OS] CPU 스케줄링 알아보기 (CPU Scheduling) (0) | 2022.04.03 |
---|---|
[OS] Context Switching이란? (0) | 2022.04.02 |
[OS] IPC 통신이란? (Inter Process Communication) (0) | 2022.04.01 |
[OS] 시스템 콜 (System call) (0) | 2022.03.31 |
[OS] 프로세스 & 스레드(Process & Thread) (0) | 2022.03.30 |
Comments