컴퓨터 구조, 운영체제 공부 (8)

나무에물주기·2023년 6월 6일
1
post-thumbnail

8장: 입출력장치

8-1: 장치 컨트롤러와 장치 드라이버

1. 입출력 장치가 다루기 까다로운 이유

  1. 입출력장치의 종류가 매우 다양하다
  • 컴퓨터 시스템에는 다양한 종류의 입출력 장치가 있다. 키보드, 마우스, 모니터, 프린터, 하드디스크, 네트워크 카드 등 각기 다른 목적과 특성을 가진 장치들이다. 이러한 다양성 때문에 각 장치에 대해 이해하고, 적절히 제어하기 위한 코드를 작성하는 것은 복잡한 작업이다.
  1. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만, 입출력장치의 데이터 전송률은 낮다
  • CPU와 메모리 사이의 데이터 전송률은 빠르지만, 입출력 장치의 경우는 그렇지 않다. 특히, 일부 입출력 장치는 기계적인 움직임을 요구하기도 하며(예: 하드디스크), 이로 인해 전체 시스템의 성능이 저하될 수 있다. 이러한 차이를 해결하기 위해 여러 가지 기법이 사용된다.

2. 입출력 제어기, 입출력 모듈

  • 입출력 제어기(I/O controller) 또는 입출력 모듈은 특정 입출력 장치를 제어하기 위한 하드웨어 컴포넌트다. 이는 CPU가 직접 입출력 장치를 제어하는 부담을 줄이고, 효율적인 데이터 전송을 위해 중간에서 조정하는 역할을 한다.

3. 데이터 버퍼링

  • 데이터 버퍼링은 CPU와 입출력 장치 사이의 성능 차이를 완화하는 중요한 기법 중 하나다. 버퍼는 일시적으로 데이터를 저장하는 임시 메모리 영역으로, 빠른 전송률을 가진 CPU와 느린 전송률을 가진 입출력 장치 사이에서 데이터 전송을 안정화하고, 부드럽게 만드는 역할을 한다.

4. 장치 컨트롤러의 내부

  • 데이터 레지스터는 입출력 장치와 메모리 사이에서 데이터를 임시적으로 저장하는 역할을 한다.

  • 상태 레지스터는 장치의 현재 상태를 표현한다. 예를 들어, 장치가 현재 작업 중인지, 에러가 발생했는지, 아니면 준비 상태인지 등을 알 수 있다.

  • 제어 레지스터는 CPU가 장치를 제어하기 위해 사용한다. 예를 들어, 작업을 시작하거나 중단시키는 등의 명령을 전달한다.

5. 장치 드라이버

  • 장치 드라이버는 특정 입출력 장치를 운영 체제에서 제어하는 데 사용되는 소프트웨어다. 장치 드라이버는 해당 장치의 작동 방식을 알고 있으며, 운영 체제와 장치 간의 통신을 담당한다. 또한, 운영 체제의 일반적인 인터페이스를 통해 응용 프로그램이 장치를 사용할 수 있도록 한다.

8-2: 다양한 입출력 방법

1. 프로그램 입출력

프로그램 입출력은 CPU가 직접 입출력 명령을 제어하는 방법이다.

  • 메모리 맵 입출력 : 이 방식에서는 입출력 장치를 메모리의 일부분처럼 취급한다. CPU는 일반적인 메모리 읽기 및 쓰기 명령을 사용하여 입출력 장치와 통신할 수 있다.

  • 고립형 입출력 : 이 방식에서는 입출력 장치를 제어하기 위한 특수한 명령을 사용한다. 메모리 맵 입출력과는 달리, 고립형 입출력은 입출력 장치를 별도의 주소 공간에 위치시킨다.

2. 인터럽트 기반 입출력

인터럽트 기반 입출력은 입출력 장치가 작업을 완료했을 때 CPU에 알리는 방식이다. 이 방식은 CPU가 불필요한 폴링을 하지 않아도 되므로 효율적이다.

  • 폴링 : CPU가 주기적으로 장치의 상태를 확인하는 것을 말한다.

  • NMI(Non-Maskable Interrupt) : 일반적인 인터럽트를 마스크(비활성화)하여 무시할 수 있지만, NMI는 중요한 상황에서 사용되므로 마스크할 수 없다.

  • 프로그래머블 인터럽트 컨트롤러(PIC) : 여러 개의 인터럽트를 효율적으로 관리하기 위해 사용된다.

3. DMA 입출력

Direct Memory Access(DMA)는 CPU의 개입 없이 메모리와 입출력 장치 사이에서 데이터를 직접 전송하는 방법이다. 이는 CPU의 부담을 줄이고 전체 시스템의 성능을 향상시킨다.

  • DMA 컨트롤러는 이 전송을 관리하며, CPU가 다른 작업을 수행하는 동안 메모리와 입출력 장치 사이의 데이터 전송을 제어한다.

  • 입출력 버스는 시스템 내의 다양한 구성 요소들이 데이터를 전송하는 데 사용하는 통로이다. PCI 버스와 PCI Express 버스는 대표적인 입출력 버스의 예이다.

    • PCI 버스는 고속 입출력 장치를 연결하기 위해 설계된 규격이다.
    • PCI Express 버스(PCIe 슬롯)는 PCI 버스의 성능을 개선한 버전이다. PCIe 슬롯은 그래픽 카드, SSD 등 고성능 장치를 연결하는 데 주로 사용된다.

4. 입출력 프로세서, 입출력 채널

  • 입출력 프로세서는 입출력 작업을 전담하는 특수한 프로세서다. CPU의 부담을 줄이기 위해 사용되며, 독립적으로 명령어를 해석하고 실행한다.

  • 입출력 채널은 입출력 프로세서가 입출력 작업을 수행하는 데 사용하는 통신 경로다. 채널 프로그램이라는 특수한 프로그램을 통해 입출력 장치와 메모리 사이의 데이터 전송을 제어한다


요약

  1. 입출력 장치가 다루기 까다로운 이유 : 입출력 장치의 종류는 매우 다양하며, CPU와 메모리에 비해 전송률이 낮다. 이로 인해 입출력 장치의 관리는 복잡한 과정이다.

  2. 입출력 제어기, 입출력 모듈 : 입출력 제어기는 입출력 장치를 직접 관리하는 하드웨어이다. 입출력 모듈은 시스템 버스와 입출력 버스 사이에서 데이터를 전송하는 역할을 수행한다.

  3. 데이터 버퍼링 : 데이터 버퍼링은 CPU와 입출력 장치 간의 속도 차이를 보완하는 기법이다. 이는 데이터를 일시적으로 저장하고, CPU가 준비될 때까지 대기하는 역할을 한다.

  4. 장치 컨트롤러의 내부 : 장치 컨트롤러 내부에는 데이터 레지스터, 상태 레지스터, 제어 레지스터가 있다. 이들은 각각 데이터 저장, 장치 상태 표시, 장치 제어를 담당한다.

  5. 장치 드라이버 : 장치 드라이버는 특정 장치를 제어하기 위한 소프트웨어로, 운영체제와 장치 사이의 인터페이스 역할을 한다.

  6. 프로그램 입출력 : 프로그램 입출력은 CPU가 직접 입출력 명령을 실행하는 방식이다. 메모리 맵 입출력과 고립형 입출력을 포함한다.

  7. 인터럽트 기반 입출력 : 인터럽트 기반 입출력은 장치가 데이터 전송 준비가 완료되면 CPU에 알리는 방식이다. 폴링 개념, NMI, PIC 등을 이해하는 것이 중요하다.

  8. DMA 입출력 : DMA 입출력은 CPU의 개입 없이 데이터를 메모리와 입출력 장치 간에 직접 전송하는 방식이다. DMA 컨트롤러, 입출력 버스 등이 이에 관련이 있다.

  9. 입출력 프로세서, 입출력 채널 : 입출력 프로세서와 입출력 채널은 CPU의 부담을 줄이고 입출력 작업의 효율을 높이기 위한 방법이다. 이들은 병렬 처리를 가능하게 하여 시스템의 성능을 향상시킨다.

profile
개인 공부를 정리함니다

0개의 댓글