Post

[Computer Architecture] 입출력장치와 입출력방법

3줄 요약
입출력장치는 전송 속도가 느려 CPU와 메모리 사이의 속도 차이를 조율하는 구조가 필요함
장치 컨트롤러는 하드웨어 연결, 드라이버는 소프트웨어 연결을 담당
입출력 방식은 프로그램 방식, 인터럽트 방식, DMA 방식이 있음

💻 컴퓨터 구조 & 운영체제 시리즈

이 시리즈는 『혼자 공부하는 컴퓨터 구조+운영체제』 (강민철 저)
+ 인프런 강의를 기반으로 개인적으로 복습 및 정리한 기록입니다.


🔌 입출력장치

  • 입출력장치의 종류가 많아, 정보를 주고받는 방식의 표준화가 어려움
  • CPU와 메모리는 전송률이 높지만, 입출력장치는 전송률이 낮음
    → 전송률이란 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표 → 속도 차이를 해결하기 위한 매개 구조가 필요

🔹 입출력장치 분류

  • 입력 장치: 키보드, 마우스, 스캐너, 마이크 등
  • 출력 장치: 모니터, 프린터, 스피커 등
  • 입출력 겸용 장치: 터치스크린, USB 저장장치 등

🔸 장치 컨트롤러 (Device Controller)

CPU와 입출력장치가 정보를 주고받을 수 있도록 신호를 전달하는 장치

역할

  • CPU와 입출력장치 사이의 통신 중계
  • 오류 검출
  • 데이터 버퍼링
    → 전송 속도 차이를 줄이기 위해 버퍼(임시 저장 공간) 를 활용

구조

  • 데이터 레지스터
    • CPU와 입출력장치 사이에 데이터를 주고받기 위한 저장 공간 (RAM 활용 가능)
  • 상태 레지스터
    • 장치의 준비 상태, 작업 완료 여부, 오류 여부 등 상태 정보 저장
  • 제어 레지스터
    • 장치에 수행할 동작에 대한 제어 정보 저장

🔸 장치 드라이버 (Device Driver)

  • 장치 컨트롤러의 동작을 감지하고 제어하는 소프트웨어
  • 하드웨어적 통로가 장치 컨트롤러라면,
    장치 드라이버는 입출력장치와 운영체제를 연결하는 소프트웨어 통로

🔁 입출력 방법

CPU와 입출력장치 사이의 데이터 교환 방식은 다음과 같이 구분됨 → 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력 등

🧾 프로그램 입출력

  • CPU가 직접 명령어로 장치를 제어하는 방식
  • 컨트롤러의 레지스터를 CPU가 직접 읽고 씀

방식

  • 메모리 맵 입출력
  • 고립형 입출력
입출력 명령어 방식 출처: 『혼자 공부하는 컴퓨터 구조+운영체제』 - 강민철 저

🔔 인터럽트 기반 입출력

  • 입출력 요청 발생 시, 장치가 CPU에게 인터럽트 신호를 보냄
  • CPU는 요청을 확인하고 해당 작업 수행
  • PIC(Programmable Interrupt Controller) 를 통해
    • 순서대로 또는 우선순위 기준으로 처리 가능

NMI(Non-Maskable Interrupt)는 최우선 처리되지만, 일반적인 우선순위 처리 대상에서 제외


🚀 DMA (Direct Memory Access)

  • 입출력장치가 CPU를 거치지 않고 메모리에 직접 접근
  • CPU는 입출력의 시작과 종료만 담당, 그 외 작업은 DMA 컨트롤러가 수행

DMA 전송 방식

  • 버스트 모드 (Burst Mode)
    • CPU 사용을 잠시 멈추고 한 번에 대량 전송
  • 사이클 스틸링 (Cycle Stealing)
    • CPU 사용 중 버스를 잠시 가져가 데이터를 조금씩 전송
    • CPU도 병행 작업 가능

DMA는 CPU 부담을 줄이고, 고속 데이터 전송에 적합


✅ 마무리 정리

입출력장치는 종류도 많고 동작 속도도 느리기 때문에
컨트롤러, 드라이버, DMA 등의 구조를 통해 CPU와의 속도 차이를 조율함
입출력 방식에 따라 시스템의 성능과 효율에 큰 영향을 주기 때문에
입출력 구조를 이해하는 것은 운영체제와 시스템 구조를 이해하는 데 필수


📚 참고 자료


읽어주셔서 감사합니다 🙌
내용이 도움이 되었거나, 틀린 부분이 있다면 댓글이나 GitHub Issue로 알려주세요 😊

This post is licensed under CC BY 4.0 by the author.