사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 역할
- 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
- 사용자 프로그램이 스스로 인터럽트를 발생 -> CPU 제어권을 운영체제에 넘김
- 사용자 프로그램이 커널에 진입하기 위한 유일한 수단
매개변수 전송 방법
1. 레지스터를 통한 전송 (매개변수가 레지스터보다 많을때 문제 발생)
2. 블록 또는 테이블에 저장하여 전달
3. 매개변수를 스택에 넣어서 pop하는 방법
ref: https://www.javatpoint.com/system-calls-in-operating-system
- 인터럽트 당한 시점의 레지스터와 Program Counter를 저장
- CPU의 제어권을 운영체제에 넘김
하드웨어 인터럽트: 하드웨어가 발생시킨 인터럽트
소프트웨어 인터럽트(Trap): Exception(프로그램이 오류를 범한 경우) / System Call(프로그램이 커널 함수 호출)인터럽트 벡터: 인터럽트의 처리 루틴 주소를 가짐
인터럽트 처리 루틴: 인터럽트를 처리하는 커널 함수
실제 I/O 작업은 CPU가 직접하지 않고 Device Controller에게 부탁함
Interrupt
- 1) Interrupt: CPU -> Device Controller (이 때 CPU는 다른 프로그램을 수행)
- 2) Device가 작업을 다 수행하고 Controller가 CPU에 Interrupt를 발생
- 3) CPU가 다음 명령어 수행 전 Interrput 발생 확인을 함
- 4) CPU는 자동적으로 운영체제에게 넘어가게 됨
CPU의 독점을 막기 위해서 부가적인 HW가 필요 (Timer)
Timer
- 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
- 운영체제가 사용자 프로그램에게 CPU를 넘길 때 Timer에 시간을 세팅 후 넘겨줌
- 일정 시간이 지난 후 Timer가 CPU에 Interrupt를 발생 시키고 CPU의 제어권이 자동적으로 운영체제에 넘어감
- 운영체제는 다른 프로그램에 CPU를 넘겨줌
- CPU를 특정 프로그램이 독점하는 것으로부터 보호
타이머는 time sharing 구현을 위해 널리 이용됨
현재 시간을 계산하기 위한 용도로도 사용