운영체제 코드의 많은 부분이 입출력을 관리하는데 할애된다.
입출력에 대한 개관을 공부하겠다.
그림을 보면 알 수 있듯이, cpu는 입출력 장치와 직접 접근을 하지 못한다.
Device Controller 를 통하여 cpu 와 입출력 장치간의 데이터 전송이 가능하다.
Device Controller
Device Controller 는 local buffer 와 특수용도의 레지스터들을 갖고 있다.
주변장치(I/O device)와 local buffer 간의 데이터 전송을 담당한다.
local buffer 는 일시적으로 주고받는 정보를 제공해준다. 휘발성으로 영구 저장은 되지 않는다.
장치 드라이버 이해하기
드라이버란 컴퓨터와 연결된 특정장치와 통신하여 이를 제어하는 역할을 하는 프로그램을 말한다.
이런 각각의 하드웨어 장치를 제어하는 기능을 가진 프로그램이 드라이버 이다.
I/O 동작 과정
- Device driver 가 device controller의 레지스터에 필요한 값을 적재한다.
- Device controller 가 레지스터 내용을 조사하여 수행할 동작을 결정한다.
- Device controller 는 수행할 동작에 따라서 I/O 전송을 시작함
I/O 동작 유형
- Programmed I/O (Polling)
- Interrupt-driven I/O
- Direct memory access(DMA) based I/O
I/O 동작 유형을 알기전에 우리는 레지스터에 대해서 알아야 한다.
운영체제, 컴퓨터 구조를 공부하다보면 레지스터가 종종 나오는데 이 레지스터는 뭔데 이렇게 나올까?
레지스터의 이해
레지스터는 CPU 가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다.
기억장치는 앞서 설명했듯이, 램과 HDD, SDD 등이 있는데 왜 레지스터까지 필요한지 궁금했었다.
CPU 가 메모리로 연산의 결과를 보내고 영구적으로 저장할 데이터를 하드디스크에 저장해야 하는 등의 명령을 처리하기 위해서는 이들에 대한 주소와 명령의 종류를 저장할 수 있는 기억공간이 필요한데, 우리는 이를 레지스터에 저장한다.
레지스터는 CPU 옆에 붙어있기때문에 연산 속도가 메모리보다 훨씬 빠르다.
그리고 CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터가 반드시 필요한 것이다.
CPU 옆에 붙어있는 CPU 전용 기억장치 라고 생각하면 될 것 같다.
- Programmed I/O (Polling)
CPU 가 프로그램이 상태정보를 반복하여 조사하면서 I/O 전송 완료를 대기한다.
status register가 사용된다.
단점 : I/O 동작이 진행되는 동안 CPU는 다른 작업을 수행 할 수 없다.
- Interrupt-driven I/O
I/O 전송 완료를 인터럽트를 통하여 CPU 에게 알린다.
CPU는 I/O 전송을 시작한 후에 다른 작업 수행이 가능하다.
단점: 대량의 데이터 전송에는 빈번한 인터럽트로 인해 overhead 가 크다.
- Direct memory access(DMA)
CPU 개입 없이 device controller의 제어에 의해 local buffer 와 메모리간에 직접 데이터 전송을 수행한다.
메모리 속도에 근접한 속도로 전송 가능
'CS(Computer Science)' 카테고리의 다른 글
프로그램/프로세스/스레드 기본지식 (0) | 2022.04.10 |
---|---|
[OS] 컴퓨터 시스템 구조 (0) | 2022.03.14 |
[OS] 저장장치 구조 (Storage Structure) (0) | 2022.03.12 |
(OS) 컴퓨터 시스템, Interrupt (0) | 2022.03.12 |
운영체제 기초(개관) (0) | 2022.03.12 |