OS_04_2 Computer Hardware and OS

saewoohan·2023년 7월 28일
0

OS

목록 보기
3/19
post-thumbnail

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

  • Memory는 2가지 영역으로 나누어진다.
    • User space
    • Kernal 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

0개의 댓글