Data Engineering/혼공컴운

혼자 공부하는 컴퓨터구조 + 운영체제 8장 정리

potatode 2025. 2. 5. 23:33

8. 입출력장치

8.1 장치 컨트롤러와 장치 드라이버

장치 컨트롤러

  • 입출력장치를 다루기 어려운 이유
    • 종류가 많음
    • ⇒ 정보 주고받는 방식을 규격화하기 어려움
    • 데이터 전송률이 CPU, 메모리보다 낮음
    • ⇒ CPU, 메모리, 입출력장치 간의 통신을 어렵게 함
  • 그렇기에 보통 ‘장치 컨트롤러’를 하드웨어에 연결
  • 장치 컨트롤러 역할
    • CPU와 입출력장치 간의 통신 중개
    • 오류 검출 - 번역가 역할을 하게 됨
    • 데이터 버퍼링
      • 전송률 차이가 있는 장치 사이에 데이터를 ‘버퍼’라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
  • 내부 구조
    • 데이터 레지스터
      • CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
    • 상태 레지스터
      • 입출력장치의 준비 상태, 완료, 오류 등의 상태 정보 저장
    • 제어 레지스터
      • 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장

장치 드라이버

: 장치 컨트롤러의 동작 감지하고 제어 → 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램

  • 장치 컨트롤러가 하드웨어적 통로라면
  • 장치 드라이버는 소프트웨어적 통로

8.2 다양한 입출력 방법

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

프로그램 입출력

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

  • CPU가 프로그램 속 명령으롤 실행하는 과정에서 입출력 명령어를 만나면
    • CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업 수행
  • CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐
  • CPU가 장치 컨트롤러의 레지스터들을 아는 방법
    • 메모리 맵 입출력
    • 고립형 입출력
  • 메모리 맵 입출력

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

  • 고립형 입출력

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

  • 메모리 접근 명령어와 입출력장치 접근 명령어가 다름

인터럽트 기반 입출력

: 인터럽트를 기반으로 하는 입출력

  • 여러 입출력장치에서 인터럽트가 동시에 발생한 경우는?
    • 인터럽트 발생 순서대로 인터럽트 처리
    • 우선순위가 높은 인터럽트 순으로 여러 인터럽트 처리
      • 플래그 레지스터 속 인터럽트 비트가 활성화되어 있는 경우
      • NMI가 발생한 경우
  • 우선순위 반영하여 다중 인터럽트 처리하는 방법
    • 프로그래머블 인터럽트 컨트롤러(PIC)
      • 여러 핀으로 인터럽트 우선순위 판별
    • : 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야 할 하드웨어 인터럽트는 무엇인지 알려주는 장치
    • PIC를 여러개로 두어 계층적 구성을 하는 경우도 많음

DMA 입출력

  • DMA : 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
    • 직접 메모리에 접근할 수 있는 입출력 기능
    • DMA 컨트롤러 필요
  • DMA 입출력 과정
    1. CPU가 DMA 컨트롤러에 입출력장치 주소, 연산 등 정보로 입출력 작업 명령
    2. DMA 컨트롤러가 장치 컨트롤러와 상호작용
    3. 입출력 작업이 끝나면 CPU에 인터럽트 걸어 작업 종료 알림
  • 문제점 : 시스템 버스 동시 사용 불가능
  • ⇒ CPU가 사용하지 않을 때나, 허락을 구하고 사용
  • 입출력 버스
    • DMA 컨트롤러와 장치 컨트롤러들을 별도의 버스로 연결
    • 시스템 버스가 아니므로 시스템 버스 사용 빈도 줄일 수 있음
    ⇒ 입출력 장치를 컴퓨터 내부와 연결짓는 통로
반응형