CS 공부
인터럽트(+트랩) 본문
인터럽트 처리란
프로세스가 수행 중에 다른 프로세스를 수행하기 위하여 현재 수행 중인 프로세스를 중단하거나 외부의 입력장치에 의해 프로세스에 의해 중단되는 상태를 인터럽트라고 한다.
사용자에 의해서 새로운 프로그램이 실행될 때 현재 실행 중인 프로세스의 상태를 잠시 중단하고 새로운 프로그램을 실행시키는 과정이다.
인터럽트 발생 요인
입출력 연산
하드웨어 실패
프로그램 오류 등
인터럽트 처리를 위한 작업 순서
인터럽트가 발생되면 운영체제가 제어권을 받는다.
OS는 인터럽트 받은 현제의 프로세스 상태(문맥)를 저장한다. -> 진행 중인 프로그램의 재개를 위해서
OS는 인터럽트의 발생 원인을 찾아 지정되어 있는 루틴으로 제어권을 넘겨준다.
인터럽트 처리 루틴이 인터럽트를 처리한다
인터럽트가 걸렸던 이전 프로세스의 상태로 복구된다
인터럽트가 결렸던 시점 이후부터 프로세스가 실행된다.
인터럽트의 종류
SVC(SuperVisor Call)인터럽트
프로세스 관리 호출, 기억장치 할당 루틴 호출, 입출력 루틴 호출 시에 발생하는 인터럽트로 사용자가 새로운 프로그램을 실행할 때 발생한다.
입출력 인터럽트
하드웨어적 인터럽트로 프린트나 디스크 저장 시에 입출력 채널 확인, 준비. 완료시에 발생한다.
외부 인터럽트
임의의 프로세스는 운영체제에 의해서 시간 할당량이 확인되며 운영체제가 관리하는 인터럽트 시계에 의해서 해당 프로세스가 종료된다. 이때 발생하는 인터럽트가 외부 인터럽트다.
시간 할당량이란?
여러 개의 프로세스가 운영되는 다중 프로그래밍 기법에서 임의의 프로세스는 CPU를 사용하기 위한 일정한 시간 간격이 있는데 이를 시간 할당량이라고 한다.
재시작 인터럽트
사용자가 시스템을 재부팅하는 경우에 발생
프로그램 검사 인터럽트
실행 중인 프로그램에서 오버플로우, 언더플로우, 분모가 0ㅇ인 나눗셈을 처리하는 경우에 발생
기계검사 인터럽트
기계 검사 인터럽트는 컴퓨터 시스템 고장으로 발생한다.
인터럽트의 특징
컴퓨터 시스템에 비상사태가 발생할 때 그 처리를 위하여 인터럽트가 필요하다
하드웨어의 기능에 의하여 프로그램의 착오는 정해진 인터럽트 처리 루틴에 의해 복구되어야한다.
인터럽트가 발생되면 CPU는 현재 실행 중인 명령을 마친 후 CPU의 상태를 보관한다.
연산 오류가 발생할 경우에는 인터럽트가 발생한다.
메모리 보호 구역에 접근을 시도하는 경우에 인터럽트 발생
입출력이 완료되었을 때 인터럽트가 발생
인터럽트 요구를 처리하는 서비스 프로그램의 시작 주소는 다음 수행할 명령어의 번지수를 기억하고 있는 레지스터인 프로그램 계수기에 기억시킨다.
인터럽트 동기
동기 인터럽트
명령어 실행중 하나의 명령어가 종료된 후 발생하는 인터럽트
프로그램 검사 인터럽트, 프로세스 내 명령어 실행 때문에 발생하는 인터럽트, 프로세스 내 명령어가 보호 메모리 영역을 참조할 때 발생하는 인터럽트 등을 말함
비동기 인터럽트
다른 하드웨어 장치가 CPU 클러 시그널 과 상관없이 생성하는 인터럽트
키보드 혹은 마우스를 사용할 때 발생하는 것과 같은 인터럽트를 말함
트랩
프로세스가 특정 시스템 기능을 사용하려고할 때 그 기능을 운영체제에 요청하는 방법을 트랩이라고 한다.
인터럽트 중 SW적 인터럽트를 트랩이라고 할 수 있다
인터럽트나 트랩이 발생하면 프로그램 카운터를 정해진 특정 번지로 변경하여 정해진 처리 루틴을 수행하게 된다.
'CS공부 > 운영체제' 카테고리의 다른 글
데드락(DeadLock) (0) | 2021.07.12 |
---|---|
CPU 스케줄링 (0) | 2021.07.06 |
스레드(Thread) + 프로세스 VS 스레드 (0) | 2021.07.05 |
시스템 호출(System Call) (0) | 2021.07.05 |
PCB와 Context Switching, IPC (0) | 2021.07.05 |