공부/컴퓨터구조, 운영체제

8장 입출력장치

bereben 2023. 3. 27. 22:57

장치 컨트롤러

입출력 장치를 다루기 까다로운 이유

  1. 입출력장치에 종류가 많다.(비규격화)
  2. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다.(전송률의 차이)

    결론 : 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러를 통해 연결된다.

장치 컨트롤러의 역할

  • CPU와 입출력장치 간의 통신 중개
  • 오류 검출
  • 데이터 버퍼링
  • 버퍼링

    • 전송률이 높은 장치와 낮은 장치 사이에 주고 받는 데이터를 버퍼에 임시저장하여 전송률을 비슷하게 맞추는 방법

내부 구조

데이터 레지스터

  • CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
  • 버퍼링할 때 임시 저장하는 곳
  • 최근 주고 받는 데이터가 많은 입출력장치에서는 RAM을 사용하기도 한다.

    상태 레지스터

  • 입출력장치의 입출력 작업 준비, 완료, 오류 등 상태 정보 저장

    제어 레지스터

  • 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장

장치 드라이버

  • 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
  • 실행과정에서 메모리에 저장
  • 장치 컨트롤러는 하드웨어적 통로라면, 장치 드라이버는 소프트웨어적인 통로이다.
  • 장치 드라이버를 인식하고 실행하는 주체는 운영체제이다.

장치 컨트롤러가 CPU와 정보 주고받는 방법

프로그램 입출력

  • 프로그램 속 명령어로 입출력장치를 제어하는 방법

  • CPU가 장치 컨트롤러의 레지스터 값을 읽고 쓴다.

  • 메모리에 장치 컨트롤러 저장하는 방법

    • 메모리 맵 입출력

      • 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
      • 메모리 주소 공간이 축소된다.
      • 메모리와 입출력장치에 같은 명령어 사용이 가능하다.
    • 고립형 입출력

      • 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
      • 메모리 주소 공간이 축소되지 않는다.
      • 입출력 전용 명령어를 사용한다.

인터럽트 기반 입출력

  • 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청을 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴을 실행한다.
  • 폴링 : 입출력장치의 상태는 어떤지, 처리할 데이터가 있는지 주기적으로 확인하는 방식
  • 인터럽트 방식보다 CPU의 부담이 크다.

프로그래머블 인터럽트 컨트롤러(PIC)

  • 우선순위를 반영하여 다중 인터럽트를 처리하는 방법
  • PIC 다중 인터럽트 처리 과정

    1. PIC가 장치 컨트롤러에서 인터럽트 요청 신호(들)를 받아들인다.
    2. PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야 할 인터럽트 요청신호를 보낸다.
    3. CPU는 PIC에 인터럽트 확인 신호를 보낸다
    4. PIC는 데이터 버스를 통해 CPU에 인터럽트 백터를 보낸다
    5. CPU는 인터럽트 벡터를 통해 인터럽트 요청의 주체를 알게 되고, 해당 장치의 인터럽트 서비스 루틴을 실행한다.

      DMA 입출력

  • 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
  • 메모리에 직접 접근할 수 있는 입출력 기능이다.
  • DMA 입출력을 위해서 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.

DMA 입출력 과정

  1. CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산, 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령한다.
  2. DMA 컨트롤러라는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행한다. 이때 DMA 컨트롤러는 필요할 경우 메모리에 직접 접근하여 정보를 읽거나 쓴다.
  3. 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.

문제와 해결

  • 시스템 버스로 메모리에 직접 접근이 가능하지만, 시스템 버스는 동시 사용이 불가능하다. 공용자원이기 때문에 CPU가 시스템 버스를 사용하지 않을 때 조금씩 이용한다.
  • 사이클 스틸링

    • CPU에게 일시적으로 사용 요청을 하고 집중적으로 이용하는 방법
  • 입출력 버스

    • DMA의 입출력 과정에서 시스템 버스에 2번 접근하는 문제(메모리 -> DMA 컨트롤러, DMA 컨트롤러 -> 장치 컨트롤러)가 있었고 이는 CPU의 처리 속도를 느리게 한다.
    • DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스라는 별도의 버스에 연결하여 해결
    • 종류로는 PIC 버스, PIC Express 버스 등이 있다.

참고) 혼자 공부하는 컴퓨터 구조+운영체제

'공부 > 컴퓨터구조, 운영체제' 카테고리의 다른 글

10장 프로세스와 스레드  (0) 2023.03.30
9장 운영체제 시작하기  (0) 2023.03.30
7장 보조기억장치  (0) 2023.03.27
6장 메모리와 캐시 메모리  (0) 2023.03.23
5장 CPU 성능 향상 기법  (0) 2023.03.23