-
728x90
1. 인터럽트의 개념
컴퓨터를 사용하기 시작한 초기의 프로그래밍 방식은
순차적 프로그래밍
이었다. 위에서부터 한 줄씩 차례대로 실행시키는 방식이다. 지금도 여전히 사용되는 방식이지만 특정 문제를 해결하는 데는 취약하다.순차적 프로그래밍에서는
폴링
방식으로 이벤트가 일어났는지를 체크한다. 이는 이벤트가 일어났는지 주기적으로 확인해줘야 하는 비효율적인 방식이다. 입출력장치가 많이 않았던 예전에는 괜찮았지만 현재 이 방식으로 모든 입출력을 처리하기에는 한계가 분명 있다.이를 개선하기 위해 나온 것이
인터럽트
방식이다. 어떤 이벤트가 발생하면 발생했다고 프로세스에 알려주는 것이다. 입출력을 요청하고 다른 일을 진행하고 있다가 입출력이 완료되면 이벤트를 발생시켜 이 사실을 알려준다.2. 동기적 인터럽트와 비동기적 인터럽트
동기적 인터럽트
프로세스가
실행 중인 명령어
로 인해 발생한다. 다음과 같은 종류가 있다.- 프로그램 상의 문제 때문에 발생 (예: 다른 사용자의 메모리 영역에 접근하는 경우, 오버플로나 언더플로에 의해 발생하는 경우 등)
- 컴퓨터 작업자가 의도적으로 프로세스를 중단하기 위해 발생 (예: Ctrl + C)
- 입출력장치 같은 주변장치의 조작에 의해 발생
- 산술 연산 중 발생 (예: 어떤 수를 0으로 나눔)
비동기적 인터럽트
하드디스크 일기 오류, 메모리 불량과 같은
하드웨어적인 오류
로 발생한다. 사용자가 직접 작동하는 키보드 인터럽트, 마우스 인터럽트 등이 있다.3. 인터럽트 처리 과정
- 인터럽트가 발생하면 현재 실행 중인 프로세스는 일시 정지되고, 재시작하기 위해 현재 프로세스 관련 정보를 임시로 저장한다.
- 인터럽트 컨트롤러가 실행되어 인터럽트 처리 순서를 결정한다. 중요한 인터럽트부터 차례로 처리한다.
- 인터럽트 벡터에 등록된 인터럽트 핸들러가 실행된다. 인터럽트 벡터는 인터럽트와 인터럽트 핸들러를 일대일로 연결한 구조이다.
- 인터럽트 처리를 마치면 인터럽트 종류에 따라 프로세스가 다시 실행되거나 종료된다.
4. 인터럽트와 이중 모드
프로세스는 크게 커널 프로세스와 사용자 프로세스로 나뉜다. 사용자 프로세스가 커널의 기능을 사용하려면
시스템 호출
을 이용하여 커널 프로세스에 작업을 요청해야 한다. 작업을 요청하면 사용자 모드에서 커널 모드로 전환되는데, 이와 같이 운영체제가 두 모드를 전환하며 일 처리를 하는 것을이중 모드
라고 한다.사용자가 커널 모드로 진입할 수 있는 방법이 한 가지 더 있다. 바로 인터럽트를 발생시키는 것이다. 어떤 프로세스가 인터럽트를 발생했다는 건 잘못된 명령을 수행하여 동기적 인터럽트가 발생했다는 것이므로 해당 프로세스는 종료된다.
728x90'운영체제' 카테고리의 다른 글
16. 공유 자원과 임계구역 (0) 2021.09.22 15. 프로세스 간 통신 (0) 2021.09.22 13. 스케줄링 알고리즘 (0) 2021.09.22 12. 다중 큐 (0) 2021.09.22 11. 스케줄링 시 고려 사항 (0) 2021.09.20 댓글