인터럽트
주변장치와 입출력 장치는 CPU나 메모리와는 달리 인터럽트라는 메커니즘을 통해 관리된다.
인터럽트는 입출력 장치의 연산이 CPU의 명령 수행 속도보다 느리기 때문에 필요하다.
예를 들어 사장이 신입을 연봉 5000에 데려온 경우 신입이 5000 값어치를 하길 바란다.
근데 영업사원이 영업을 못 해서 신입이 매번 쉬기만 한다면 사장은 계속 돈만 날리고 있는 셈이다.
그래서 신입이 쉬지 못하도록 영업을 해오기 전까지 계속 다른 일을 시키고 있다가
영업을 해오면 영업사원이 신입에게 영업해 온 게 있으니 이 일을 먼저 하라고 알리게 된다.
이때 영업사원이 신입에게 일을 따왔다고 알려 먼저 이 일을 먼저 하라고 알리는 것이 인터럽트이다.
컴퓨터 관점으로 보게 되면 CPU가 프로그램을 실행할 때,
입출력 하드웨어 등의 장치나 예외 상황이 발생하여 처리할 때 마이크로프로세서에게 알려 처리할 수 있도록 하는 것이다.
인터럽트의 종류
인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트 둘로 나뉜다.
하드웨어 인터럽트
하드웨어가 발생시키는 인터럽트이다.
CPU가 아닌 다른 하드웨어 장치가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야 할 경우 발생시킨다.
소프트웨어 인터럽트
소프트웨어가 발생시키는 인터럽트이다.
소프트웨어가 스스로 인터럽트 라인을 세팅하고, 예외 상황과 syetem call 에서 발생시킨다.
인터럽트를 발생시키기 위해 하드웨어/소프트웨어는 CPU 내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다.
CPU는 매번 명령을 수행하기 전에 인터럽트 라인이 세팅되어 있는지를 검사한다.
인터럽트 과정
process A 실행 중 디스크에서 어떤 데이터를 읽어오라는 명령을 받은 상황이다.
- process A가 system call을 통해 인터럽트 발생
- CPU가 현재 진행 중인 기계어 코드 완료
- 현재 수행중이던 상태를 process의 process control block에 저장
- PC에 다음에 실행할 명령의 주소를 저장
- 인터럽트 벡터르 읽고 ISR(Interrupt Service Routine) 주소값을 얻어 ISR로 이동하여 루틴 실행
- 해당 코드 실행
- 해당 일을 다 처리하면, 대피시킨 레지스터를 복원
- ISR의 끝에 IRET 명령어에 의해 인터럽트 해제
- IRET(인터럽트 처리 시에 모든 처리를 완료하고 다시 태스크로 복구) 명령어가 실행되면, 대피시킨 PC 값을 복원하여 이전 실행 위치로 복원
인터럽트 명령
CPU가 수행하는 명령에는 일반 명령과 특권 명령이 있다.
일반 명령
메모리에서 자료를 읽어오고, CPU에서 계산을 하는 등의 명령이다.
일반 명령은 모든 프로그램이 수행할 수 있다.
특권 명령
보안이 필요한 명령으로 입출력 장치, 타이머 등의 장치에 접근하는 명령이다.
특원 명령은 항상 운영체제만 수행할 수 있다.
'CS > 운영체제' 카테고리의 다른 글
가상 메모리와 주소 공간 (0) | 2024.06.18 |
---|---|
PCB와 Context Switching (0) | 2024.06.18 |
시스템 콜 (0) | 2024.06.16 |
CPU 스케줄링 알고리즘 (2) | 2024.06.16 |
프로세스와 스레드 (0) | 2024.06.13 |
인터럽트
주변장치와 입출력 장치는 CPU나 메모리와는 달리 인터럽트라는 메커니즘을 통해 관리된다.
인터럽트는 입출력 장치의 연산이 CPU의 명령 수행 속도보다 느리기 때문에 필요하다.
예를 들어 사장이 신입을 연봉 5000에 데려온 경우 신입이 5000 값어치를 하길 바란다.
근데 영업사원이 영업을 못 해서 신입이 매번 쉬기만 한다면 사장은 계속 돈만 날리고 있는 셈이다.
그래서 신입이 쉬지 못하도록 영업을 해오기 전까지 계속 다른 일을 시키고 있다가
영업을 해오면 영업사원이 신입에게 영업해 온 게 있으니 이 일을 먼저 하라고 알리게 된다.
이때 영업사원이 신입에게 일을 따왔다고 알려 먼저 이 일을 먼저 하라고 알리는 것이 인터럽트이다.
컴퓨터 관점으로 보게 되면 CPU가 프로그램을 실행할 때,
입출력 하드웨어 등의 장치나 예외 상황이 발생하여 처리할 때 마이크로프로세서에게 알려 처리할 수 있도록 하는 것이다.
인터럽트의 종류
인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트 둘로 나뉜다.
하드웨어 인터럽트
하드웨어가 발생시키는 인터럽트이다.
CPU가 아닌 다른 하드웨어 장치가 CPU에 어떤 사실을 알려주거나 CPU 서비스를 요청해야 할 경우 발생시킨다.
소프트웨어 인터럽트
소프트웨어가 발생시키는 인터럽트이다.
소프트웨어가 스스로 인터럽트 라인을 세팅하고, 예외 상황과 syetem call 에서 발생시킨다.
인터럽트를 발생시키기 위해 하드웨어/소프트웨어는 CPU 내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다.
CPU는 매번 명령을 수행하기 전에 인터럽트 라인이 세팅되어 있는지를 검사한다.
인터럽트 과정
process A 실행 중 디스크에서 어떤 데이터를 읽어오라는 명령을 받은 상황이다.
- process A가 system call을 통해 인터럽트 발생
- CPU가 현재 진행 중인 기계어 코드 완료
- 현재 수행중이던 상태를 process의 process control block에 저장
- PC에 다음에 실행할 명령의 주소를 저장
- 인터럽트 벡터르 읽고 ISR(Interrupt Service Routine) 주소값을 얻어 ISR로 이동하여 루틴 실행
- 해당 코드 실행
- 해당 일을 다 처리하면, 대피시킨 레지스터를 복원
- ISR의 끝에 IRET 명령어에 의해 인터럽트 해제
- IRET(인터럽트 처리 시에 모든 처리를 완료하고 다시 태스크로 복구) 명령어가 실행되면, 대피시킨 PC 값을 복원하여 이전 실행 위치로 복원
인터럽트 명령
CPU가 수행하는 명령에는 일반 명령과 특권 명령이 있다.
일반 명령
메모리에서 자료를 읽어오고, CPU에서 계산을 하는 등의 명령이다.
일반 명령은 모든 프로그램이 수행할 수 있다.
특권 명령
보안이 필요한 명령으로 입출력 장치, 타이머 등의 장치에 접근하는 명령이다.
특원 명령은 항상 운영체제만 수행할 수 있다.
'CS > 운영체제' 카테고리의 다른 글
가상 메모리와 주소 공간 (0) | 2024.06.18 |
---|---|
PCB와 Context Switching (0) | 2024.06.18 |
시스템 콜 (0) | 2024.06.16 |
CPU 스케줄링 알고리즘 (2) | 2024.06.16 |
프로세스와 스레드 (0) | 2024.06.13 |