sungwony

[운영체제의 기초] Computer Hardware 본문

development/강의노트

[운영체제의 기초] Computer Hardware

일상이상삼상 2020. 3. 22. 22:21

이 포스트는 SNU에서 제공하는 운영체제의 기초 강의를 개인 학습용으로 정리한 포스트입니다


컴퓨터 시스템의 기본 요소 : CPU, Memory, I/O Device

하드웨어의 요소를 연결하는 장치 : System Bus

I/O Device는 자신과 Bus간의 Controller가 존재(Controller가 CPU를 대신해서 I/O Operation을 관장)

 

System Bus

- CPU와 Memory, CPU와 I/O Device, Memory와 I/O Device간의 데이터 전송을 담당

- Data Bus

  - Data 정보를 전달

- Address Bus

  - Data의 Source와 Destination을 지정하는 것이 Address

  - Address 정보는 Address Bus에 의해 전달

- Bus Transaction의 두 가지 타입 : Read/Write Transaction

- Bus Master

  - Bus Transaction을 일으킴

  - Bus를 장악(여러 Bus Master가 존재)

  - Bus Arbiter : Bus Master가 Bus를 장학하는 것을 관장

  - 대표적인 Bus Master H/W : CPU, I/O Controller, DMA Controller 등이 있다

- Bus Slave

  - 대표적인 Bus Slave : Memory

  - I/O Controller로 Bus Slave가 될 수 있음(정확히는 I/O Controller의 Buffer memory, Register)

 

두 가지 타입의 I/O Addressing

 

Memory-mapped I/O

- I/O 레지스터는 메모리 공간과 연결된다

- 메모리와 I/O 둘다 어드레스를 위해 같은 address bus를 사용한다

- input/output을 위해 Load/Store 인스트럭션을 사용한다

- 모토로라 계열

Port-mapped I/O

- I/O 레지스터는 특별한 I/O address port 번호와 연결된다

  - 특별한 분리된 I/O address 공간을 갖는다

- 특별한 I/O bus를 사용한다

- 특별한 Input/Output 인스트럭션을 사용한다

- Intel 계열

 

DMA(Direct Memory Access) Operation

 

- Block 데이터 전송 시 효율적인 전송을 위해 고안된 방법

- CPU가 Initiation (CPU가 DMA Controller에 Data와 Command 제공 - 시작점, Block의 Size, Read/Write Command)

- CPU의 개입 없이 I/O Controller가 메모리에 직접 접근하여 Data를 읽거나 쓸 수 있도록 하는 기능

- Block Data를 옮길 때 CPU Intervention을 최소한으로 줄이기 위해 사용

- Cycle Stealing 방식

  - CPU가 Bus를 사용하고 있지 않을 떄만 DMA Controller가 Bus를 사용하는 방식

- Block Transfer 방식

  - CPU와 DMA Contoller가 대등하게 경쟁하여 Bus를 사용하는 방식

 

Interrupt Mechanism

 

OS가 존재하기 위해 H/W가 제공해야 하는 가장 중요한 Mechanism

Interrupt 발생시 ISR(Interrupt Service Routine)으로 제어가 넘어감

 

H/W Interrupt Mechanism

- Hardware Signal에 의해 발생

- Asynchronous(비동기성)

S/W Interrupt Mechanism

- 현재 수행하는 프로그램의 문제가 발생할 때(ex : Exception)

- 혹은 Interrupt를 발생시키는 Instruction(Trap)이 발생할 때

- Synchronous

* OS는 Interrupt Driven하다

 

Interrupt Mechanism

 

- CPU의 마이크로 프로세서에 Interrupt Signal을 받아들일 수 있는 pin이 존재해야 함

- 반대쪽에는 Interrupt Source가 존재해야 함

  - Interrupt Source : I/O Controller, DMA Controller

- 현재 수행중인 프로그램의 수행을 중단한다(진행중인 Instruction까지는 종료)

- PCB에 현재 프로그램의 Context를 저장

- Interrupt Source를 확인한다. Interrupt Request Number(IRN)을 확인

- Interrupt Vector Table을 검색하여 Interrupt에 대한 Handler의 주소를 얻어오고 Handler를 실행한다

- 이전에 실행중인 프로그램을 다시 실행한다

 

PIC(Programmable Interrupt Controller)

- Interrupt Source와 CPU 사이에 존재

- 한쪽 끝은 CPU의 Interrupt Pin에 연결하고 다른 쪽은 Interrupt Source에 연결

- 기본 16개 정도의 pin을 지원하지만 Cascading하개 구성할 수 있다

- Interrupt Mask : programmable하게 동작하여 Interrupt를 on/off 하거나 무시 또는 추후 처리하도록 할 수 있다

- IRQ를 PIC의 Register에서 찾을 수 있다

 

Hardware Protection Mechanism

 

Dual Mode Operation(수행 모드가 두 가지)

 

Microprocessor의 특정 Register(Processor Status Register) Mode Bit로 구분한다

- Kernel Mode : Mode Bit가 0인 모드. Privilleged Instruction을 수행할 수 있는 모드

- User Mode : Mode Bit가 1인 모드. User Program을 수행하는 모드

 

* Privilleged Instruction

- Kernel Mode에서만 수행할 수 있는 Instruction

 

CPU가 Instruction을 수행하기 위해 Fetch하고 이를 Decode할 때 Mode Bit를 확인

컴퓨터 시스템은 사용자 프로그램을 신뢰하지 않음

사용자 프로그램이 커널 모드에서 

 

Operating System의 Kernel Mode의 특권

- Privileged Instruction 수행

- Memory에 Access할 수 있는 권한

 

Kernel Mode의 관장은 Operating System

User Program이 수행(User Mode)하다 I/O instruction(Privilleged Instruction)이 필요하다.

그 때 필요한 mechanism이 interrupt mechanism(Kernel Mode로 전환)

Interrupt Handler(Interrupt Service Routine)가 뜨고 이것은 User의 권한을 컨트롤 하는 잘 정의된 함수형태로 제공된다

 

System Call

Privillege의 변환을 얻을 수 있도록 Operating System이 제공하는 함수

 

I/O Protection

I/O 자원을 가지고 여러 Job이 경쟁

I/O Register를 Privilleged Instruction으로 만들어서 I/O Protection을 구현

 

CPU Protection

CPU 자원을 가지고 여러 Job이 경쟁

CPU의 자원을 사용하는 시간을 제한(Timer Interrupt)