인터럽트 개념
• 현재 실행 중인 작업을 중단하고 발생한 상황에 대한 우선 처리가 필요함을 CPU 에게 알리는 하드웨어 기법
• 하드웨어가 자체적으로 변화를 체크하여 일정한 동작을 하는 방식
◦ 하드웨어의 지원을 받아야 하는 제약이 있지만, 폴링 방식에 비해 신속한 대응이 가능하다.
• 외부/내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생한다.
◦ 외부 인터럽트
- 외부 신호, 입출력 장치, 기계 이상 등의 외부적인 요인으로 발생
◦ 내부 인터럽트
- Trap 이라고 부르며, 잘못된 연산이나 데이터를 사용할 때 발생
- 예) 0으로 나누기, 오버플로우, Exception 등
• 소프트웨어 인터럽트는 명령어의 요청에 의해 발생한다.
◦ 사용자가 프로그램을 실행시키는 경우
◦ 소프트웨어 이용 중에 다른 프로세스를 실행시키는 경우 (시분할 처리를 위해 자원 할당 동작이 수행됨)
동기/비동기적 인터럽트
• 동기적 인터럽트
◦ CPU가 작업을 실행하는 도중 인터럽트가 도착해도 현재 작업을 마친 뒤에 인터럽트를 발생시킨다.
- CPU 하드웨어에는 인터럽트 요청 라인이라고 불리는 선이 하나 있는데, CPU는 매 명령을 끝내고 다음 명령을 수행하기 전
이 선을 검사한다.
• 비동기적 인터럽트
◦ 별개의 하드웨어 장치가 CPU 클락 신호와 상관없이 즉각적으로 인터럽트를 발생시키고, CPU는 실행중인 작업들을 일시 중지한 다음
발생한 인터럽트 작업을 수행하게 된다.
◦ 일반적인 인터럽트는 비동기적 인터럽트를 의미한다.
인터럽트 처리 과정
• 인터럽트가 발생하면 현재 수행 중이던 프로그램의 레지스터 값 및 상태 정보를 스택에 저장한 뒤,
인터럽트 서비스 루틴으로 이동해 인터럽트를 처리한다.
◦ 인터럽트 서비스 루틴 = 인터럽트에 대응하여 특정 기능을 처리하는 기계어 코드 루틴
• 작업이 끝나면 스택에 저장해두었던 정보를 기반으로 원래 위치로 돌아와 기존 작업을 이어서 수행한다.
• 폴링 방식
◦ 사용자가 명령어로 입력값을 계속 읽어 특정 작업을 해야할 시기를 감지하는 방식
◦ 폴링을 하는 동안에는 기존 작업을 수행할 수 없어 인터럽트 방식에 비해 처리 속도가 느리다
인터럽트와 이중 모드
• 이중 모드에서는 아래의 두가지 모드가 존재한다.
◦ 사용자(User) 모드
◦ 관리자(Supervisor) 모드
- 관리자 모드에서만 내릴 수 있는 명령을 특권 명령(privileged instruction) 이라고 하며,
STOP, HALT, RESET, SET_TIMER 등이 있다.
- 이중 모드는 CPU 내부의 레지스터의 비트를 활용하여 나타낸다.
- 예) 특권 모드일 때는 비트 값이 0 / 사용자 모드일 때는 비트 값이 1
• 사용자 모드에서 하드웨어 자원에 직접 접근하는 것은 매우 위험하므로,
프로그램 소프트웨어에서 인터럽트를 발생시켜 운영체제의 관리자 모드에 해당 작업을 위임하자.
◦ 만약 사용자 모드에서 특권 명령을 사용하려고 하면 CPU가 내부 인터럽트를 발생시켜 해당 명령어를 요청한 프로그램을
강제로 종료시킬 것이다.
• 애플리케이션이 실행되는 동안 두 모드의 변경이 반복적으로 일어난다.
◦ 컴퓨터 부팅 과정 (관리자 모드)
◦ 애플리케이션 실행 과정 (관리자 모드)
◦ 애플리케이션 실행중 (사용자 모드)
◦ 인터럽트 발생 후 처리 과정 (관리자 모드)
◦ 인터럽트 처리 후 (사용자 모드)
• 인터럽트와 이중모드
◦ 하드웨어 인터럽트 발생, CPU로 인터럽트 전달 (사용자 모드)
◦ CPU : 모드 플래그를 관리자 모드로 변경
◦ 해당 하드웨어 인터럽트 서비스 루틴(ISR)으로 이동 (관리자 모드)
◦ 인터럽트 처리 (관리자 모드)
◦ CPU : 모드 플래그를 사용자 모드로 변경
◦ 원래의 애플리케이션 위치로 복귀 (사용자 모드)
참고자료
'CS Knowledge > 운영체제' 카테고리의 다른 글
[OS] 운영체제와 메모리 관리 (0) | 2022.09.22 |
---|---|
[OS] 교착 상태(Deadlock) 개념 (6) | 2022.09.22 |
[OS] CPU 스케줄링 알고리즘 (0) | 2022.09.16 |
[OS] CPU 스케줄링 개념 (0) | 2022.09.16 |
[OS] 스레드와 멀티스레드 (0) | 2022.09.08 |