[OS] 컴퓨터 하드웨어

2020. 6. 7. 17:38OS

CPU와 I/O 장치들은 bus로 연결되어 data를 주고받는다.


bus란?


주소, 데이터 제어신호를 전달하는 병렬 wires

1. 시스템 버스 -> CPU와 I/O bridge를 연결

2. 메모리 버스 -> I/O bridge와 메모리를 연결

3. I/O 버스 -> 여러 I/O 장치끼리의 연결

 

I/O 장치들은 직접 시스템 버스에 접근할 수 없다.

 

WHY?

 

다양한 I/O 들의 길이와 속도가 다양하기 때문에

 

 

데이터를 바로 전달하지 않고, device controller를 거쳐서 전달한다.

 


device controller 란?


CPU에서 내린 명령들을 저장하는 공간.

I/O 장치들로 명령어를 바로 전달하지 않고,

device controller에 저장 후 device controller에서 I/O 장치들에게 명령을 내리게 된다.

 

device controller 내부에는

로컬버퍼 + 명령 레지스터(instruction resister)로 이루어져 있다.

 

결국 I/O 장치를 사용하기 위해서는

CPU -> bus -> device controller -> I/O 장치로 명령어를 전달해야 한다.

 

그러나 장치를 사용할 때마다 CPU가 묶여있다면 많이 비효율일 것이다.

그래서 나온 게 DMA(direct Memory Access)이다.


DMA(direct Memory Access)


CPU의 개입 없이 자체적으로 I/O transaction을 수행하는 프로세스이다.

따라서

DMA를 사용한다면, I/O장치를 사용하는 동안 CPU는 다른 작업을 할 수 있게 된다.

 

1. CPU가 I/O에 대해 입출력 전송을 시작한다.

2. 전송이 수행되는 동안 CPU는 다른 작업을 수행한다.

3. 전송이 끝났다면 interrupt를 통해 끝났음을 알린다.

interrupt


현재 수행 중인 프로그램을 잠시 멈추고, 인터럽트가 요청된 프로그램을 실행하는 것

 

현재 수행중인 프로그램을 A, 인터럽트가 요청된 프로그램을 B라고 할 때,

A의 실행을 잠시 중단하고, B를 실행하는 것을 인터럽트라고 한다.

이때, B의 실행이 끝난 후 A를 다시 실행해야 하므로, A의 주소 값을 저장해 놓는 작업이 필요하다.

모든 service routines의 주소 값들은 interrupt vector라는 곳에 저장된다.

 

OS가 인터럽트를 통해 구동된다.

EX) Timer interrupt

 

이 인터럽트와 비슷한 것으로 Trap이라는 것이 있다.

 

Interrupt Trap
aasynchronous synchronous
프로세서 외부의 이벤트로 인해 발생 
ex) 키보드에서 ctrl-z 버튼을 눌럿을 때
명령 실행의 결과로 발생하는 이벤트
ex) system call
segmentation fault

Storage


'OS' 카테고리의 다른 글

[OS] Operating System Structure  (0) 2020.06.07
[OS] Operating System Services  (0) 2020.06.07
[OS] Multiprogramming  (0) 2020.06.07
[OS] 운영체제(Operating System :: OS)란 무엇인가  (0) 2020.06.07