OS_04_2 Computer Hardware and OS
1. Interrupts
1) Definitions
- interrupt나 execption은 processor에 의해 실행되는 instructions의 순서를 변환하는 event로 이해할 수 있다.
- Interrupt
- interrupt는 asynchronous(언제 발생할지 모른다.), 임의의 시간에 따라 hardware 장치들에 의해 발생하는 event ex) Caused by timers, NIC, hard drive,…
- Execptions
- exceptions는 synchronous(발생 시간이 이미 결정되어 있음), CPU control unit에 의해 발생하는 event (근본적인 제공은 code이다.) ex) programming errors, anomalous conditions, …
2) Interrupts and Exceptions
- 다른 architectures는 interrupts와 exception들에 대해 각기 다른 의미를 지닌다.
- ARM과 Intel의 차이. (중요한지는 모르겠음)
3) (Interrupt) Vector Table
- IVT는 여러가지 인터럽트에 대해 해당 인터럽트 발생시 처리해야 할 루틴의 주소를 보관하고 있는 테이블을 의미한다.
- 대부분의 모든 architectures들에 대해서 공통적이지만 각기 다른 특징을 가진다.
4) IRQs and Interrupts
- 각각의 Hardware device controller는 Interrupt ReQuset(IRQ)를 위한 output line을 가진다.
- 따라서 CPU에서는 Interrupt request pins(IRQ)를 I/O 장치 만큼 필요하게 된다.
- CPU에 무한히 IRQ를 추가할 수 없기에 PIC를 사용한다.
5) Programmable Interrupt Controller
- PIC
- IRQ pin의 개수보다 더 많이 I/O devices를 지원하게 만들어준다.
- PIC는 인터럽트 기반 시스템 환경에서 전반적인 관리자로서 기능합니다.
- PIC가 interrupt의 순서를 조정할 수 있다.
- CPU는 interrupt를 선착순으로 처리하고, 하나가 들어온다면 나머지 pin들을 disable하는 방식으로 동작한다.
6) Control Unit with Interrupt
while(1) {
IR = memory[PC];
execute(IR);
PC = PC+1;
if(InterruptRequest) {
memory[0] = PC;
PC = memory[1];
}
};
- memory[0]은 interrupt handling후에 return할 주소를 가진다.
- memory[1]은 interrupt handler의 주소를 가진다. (Vector Table에 따라 다르다.)
2. Dual Mode Execution
OS → 커널 모드에서 실행되는 C Code
1) Processor Modes
- Processor는 다른 privilege mode를 지원한다.
- Intel은 4개의 privilege modes
- ARM은 8개의 privilege modes
- Ring 3에서 커널에 instruction을 요청한다.
- 숫자가 작을수록 영향력이 커진다. 그래서 Ring 0에서 모든 CPU기능을 다 쓸 수 있다.
2) Dual Mode Execution
- OS는 다양한 종류의 application faluts들에게서 system을 보호하기 위해 dual mode mechanism을 사용한다.
- User Mode : application code runs → 특권이 없는 instructions이나 registers만을 사용한다. → 사용자 모드에서 실행되는 프로그램은 시스템의 보호 기능을 통해 다른 프로세스나 운영 체제에 영향을 미치지 않고 작동한다.
- Kernel mode : kernel code runs → 특권이 있는 I/O instruction이나 registers들을 사용한다. → 커널 모드에서 실행되는 코드는 더 많은 권한과 특권을 가지며, 시스템의 핵심 작업과 프로세스 간의 통신, 하드웨어 제어 등과 같은 중요한 작업을 수행할 수 있다.
3) Execution Mode and Context
- context의 의미 → 누구를 위해서 일하는 가?
- 쿠팡 이츠에 대한 예시
- 쿠팡 이츠 앱 자체는 1사분면에 존재
- app에 명령에 내린다면 2사분면에 존재
- 앱 사용 중 카톡과 같은 interrupt가 발생한다면 4사분면에 존재. (이 단계에서는 어떤 특정 process를 위한 것인지 특정하기 어려움)
4) Memory Space
- System call은 function call과 유사하지만 몇가지 점에서 차이점이 있다.
- 구현이 kernal space에서 이루어 진다는 점이다.
- kernal mode에서 실행된다는 점이다.
- kernal mode로 switch하기 위해 특별한 exception (such as SWI in ARM)이 사용된다.
SWI를 통한 context switcing
- 요약하자면 function call은 동일한 user space안에 caller와 callee가 존재한다.
- system call은 caller callee가 다른 space에 존재한다.
- caller → User space
- callee → Kernal space