일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Stack
- 토비의 스프링
- Kotlin
- IntellJ
- 토비의 스프링 정리
- Java
- 쿠버네티스
- 보조스트림
- list
- redis
- GC
- K8s
- Real MySQL
- 스프링
- SpringBoot
- 백준
- 스트림
- 이스티오
- 자바
- jvm
- spring
- JPA
- Stream
- MSA
- Collection
- OS
- thread
- gradle
- mysql
- 자바 ORM 표준 JPA 프로그래밍
Archives
- Today
- Total
인생을 코딩하다.
[OS]인터럽트(interrupt) 본문
728x90
반응형
- 프로세스가 수행 중에 다른 프로세스를 수행하기 위하여 현재 수행 중인 프로세스를 중단하거나 외부 입력장치에 의해 프로세스가 중단되는 상태를 인터럽트라고 한다.
- 사용자에 의해서 새로운 프로그램이 실행 될 때, 현재 실행 중인 프로세스의 상태를 잠시 중단하고, 새로운 프로그램을 실행 시키는 과정이다. 잠시 중단한 프로세스의 상태는 다시 실행을 시작하기 위해 중단되었던 시점의 정보를 저장한다.
- 인터럽트는 입출력 연산, 하드웨어 실패, 프로그램 오류 등에 의해서 발생한다.
- 인터러브가 발생한 경우, 진행 중인 프로그램의 재개에 필요한 레지스터 문맥을 저장한다.
- 레지스터 문맥은 PCB에 저장한다.
프로세스 상태 전이도
위의 그림에서 준비 상태, 실행 상태, 실행 상태 전, I/O 등 모든 중단 형태를 인터럽트라고 한다.
왜 인터럽트를 시킬까?
여러 개의 프로그램이 돌아갈때, 새로운 프로그램을 실행하려고 하면 현재 진행 중인 프로그램을 잠시 중단시키고 새로운 프로그램을 실행시키기 위해
인터럽트 처리를 위한 작업 순서
- 인터럽트가 발생하며 운영체제가 제어권을 받는다.
- 운체제는 인터럽트 받은 현재의 프로세스 상태를 저장한다. → PCB에 저장
- 운영체제는 인터럽트의 발생 원인을 찾아 지정되어 있는 루틴으로 제어권을 넘겨준다.
- 인터럽트 처리 루틴이 인터럽트를 처리한다.
- 인터럽트가 걸렸던 이전 프로세스의 상태로 복구된다.
- 인터럽트가 걸렸던 시점 이후부터 프로세스가 실행된다.
인터럽트의 특징
- 컴퓨터 시스템에서 비상사태가 발생할 떄 그 처리를 위해서 인터럽트가 필요하다.
- 하드웨어의 기능에 의하여 프로그램의 착오는 정해진 인터럽트 처리 루틴에 의해 복구되어야 한다.
- 컴퓨터가 정상적인 업무를 수행하는 도중에 발생하는 예기치 않은 일들에 대하여 컴퓨터의 작동이 중단 없이 계속적으로 업무를 수행할 수 있도록 하는 기능이다.
- 인터럽트가 발생되면 CPU는 현재 실행중인 명령을 마친 후 CPU의 상태를 보관한다.
- 연산 오류가 발생할 경우에 인터럽트가 발생한다.
- 메모리 보호 구역에 접근을 시도하는 경우에 인터럽트가 발생 한다.
- 입출력이 완료되었을 때 인터럽트가 발생한다.
- 인터럽트 요구를 처리하는 서비스 프로그램의 시작 주소는 다음 수행할 명령어의 번지를 기억하고 있는 레지스터인 프로그램 계수기에 기억시킨다.
동기 인터럽트(Synchronous Interrupt)
명령어 실행 중 CPU에 의해 처리되는 인터럽트로 하나의 명령어가 종료 후 인터럽트 발생한다. 프로세스가 실행 중인 0으로 나누기를 할 때 발생하는 인터럽트, 프로세스 내 명려어 실행 떄문에 발생하는 인터럽트, 프로세스 내 명령어가 보호 메모리영역을 참조할 때 발생하는 인터럽트 등을 말한다.
비동기 인터럽트(Asynchronous Interrupt)
다른 하드웨어 장치가 CPU 클럭시 시그널과 상관없이 생성하는 인터럽트이다. 키보드 혹은 마우스를 사용할 때 발생하는 것과 같은 인터럽트를 말한다.
Thread가 너무 많아지면 인터럽트 횟수가 증가한다.
Thread가 많아지면 시간할당량은 작아진다. 시간할당량이 작으면 동시에 수행되는 느낌을 가질 수 있지만 그에따라**Context Switching(문맥교환)**과 인터럽트 횟수와 오버헤드가 많아지는 단점이 있다.
728x90
반응형
'OS' 카테고리의 다른 글
[OS] 프로세스 간 통신(Inter-Process Communication,IPC) (0) | 2021.04.28 |
---|---|
[OS] 커널 수준의 쓰레드 vs 사용자 수준의 쓰레드 (0) | 2021.04.07 |
[OS]context switching (0) | 2021.02.06 |
OS 정리 (0) | 2020.09.12 |
Comments