본문 바로가기

computer science

[#혼공] 혼자 공부하는 컴퓨터 구조+운영체제 [Chapter.08]

  이번 장은 컴퓨터 구조의 마지막 내용입니다. 다소 우리에게 가장 익숙한 모니터, 키보드, 마우스 등과 같은 입출력 장치를 다룰 것입니다. 장치 컨트롤러와 장치 드라이버 개념을 통하여 다양한 외부 장치가 컴퓨터 내부와 어떻게 연결되고 소통되는 지를 알아보겠습니다.

 

 

 

[08-1] 장치 컨트롤러와 장치 드라이버

 

 

 

장치 컨트롤러

  

  장치 컨트롤러는 다소 다루기가 까다롭습니다. 그 이유는 종류가 너무나 많고, CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮습니다. 하여튼, 장치 컨트롤러의 역할을 구체적으로 확인해본다면 아래와 같습니다.

 

역할

(1) CPU와 입출력장치 간의 통신 중개

(2) 오류 검출

(3) 데이터 버퍼링

 

구조

(1) 데이터 레지스터

(2) 상태 레지스터

(3) 제어 레지스터

 

 

 

장치 드라이버

 

  장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램입니다. 장치 컨트롤러가 입출력장치를 위한 하드웨어적 통로라면, 장치 드라이버는 입출력장치를 연결하기 위한 소프트웨어적 통로입니다. 

 

 

 

 

 

 

[08-2] 다양한 입출력 방법

 

 

 

프로그램 입출력

 

 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법입니다. CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만나면 CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 작업을 수행합니다. 

 

(1) 메모리 앱 입출력

  메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법입니다.

 

(2) 고립형 입출력

  메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법입니다.

 

 

 

인터럽트 기반 입출력

 

  입출력장치에 의한 하드웨어 인터럽트는 정확히 말하자면, 입출력장치가 아닌 장치 컨트롤러에 의해 발생됩니다. CPU는 장치 컨트롤러에 입출력 작업을 명령하고, 장치 컨트롤러가 입출력장치를 제어하며 입출력을 수행하는 동안 CPU는 다른 일을 할 수 있습니다. 

 

 

DMA  입출력 

 

  일반적으로 아래와 같이 이루어집니다.

 

(1) CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산, 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령

 

(2) DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행하는데, 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씀

 

(3) 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알림 

 

 

 

 

<핵심 정리>

 

프로그램 입출력 프로그램 속 명령어로 입출력 작업을 하는 방식입니다.
메모리 앱 입출력 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 입출력 방식입니다.
고립형 입출력 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 별도로 분리하는 방식입니다.
인터럽트 기반 입출력 인터럽트로써 입출력을 수행하는 방식입니다
DMA 입출력 CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고 받는 입출력 방식입니다.
입출력 버스 입출력 장치와 컴퓨터 내부를 연결 짓는 통로로, 입출력 작업 과정에서 시스템 버스 사용 횟수를 줄여줍니다.