컴퓨터 구조 &운영체제/컴퓨터구조 + 운영체제

입출력장치

busy맨 2024. 2. 13. 14:27

1. 장치 컨트롤러와 장치 드라이버

1) 장치 컨트롤러

  • 입출력장치는 CPU, 메모리보다 다루기 더 까다로움
    1. 입출력장치의 종류가 너무 많음
    2. 일반적으로 CPU, 메모리의 데이터 전송률을 높지만 입출력장치의 데이터 전송률은 낮음
      • 결과적으로 CPU나 메모리와 전송률이 비슷하지 않음
  • 장치 컨트롤러(device controller)
    • 입출력장치가 연결되어 컴퓨터 내부와 정보를 주고 받음
    • 장치 컨트롤러는 하나 이상의 입출력장치와 연결됨
    • 입출력장치를 연결하기 위한 하드웨어 통로
  • 장치 컨트롤러의 역할
    • CPU와 입출력장치 간의 통신 중개
    • 오류 검출
    • 데이터 버퍼링
      • CPU와 입출력장치 간의 전송률 차이를 데이터 버퍼링으로 완화
      • 버퍼링(buffering): 전송률이 차이가 나는 장치 간의 데이터를 버퍼(buffer)라는 임시 저장 공간에 저장하여
        전송률을 비슷하게 맞추는 방법

 

  • 장치 컨트롤러 구조
    • 데이터 레지스터(data register)
      • CPU와 입출력 사이에 주고 받을 데이터가 담기는 레지스터
      • 버퍼 역할
    • 상태 레지스터(status register)
      • 입출력 장치의 상태 정보를 저장
        • 작업 준비 완료, 작업 완료, 오류 확인 등의 상태 정보
    • 제어 레지스터(control register)
      • 입출력 장치가 수행할 내용에 대한 제어 정보와 명령을 저장

2) 장치 드라이버

  • 장치 드라이버(device driver)
    • 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 하는 프로그램
    • 입출력장치를 연결하기 위한 소프트웨어적인 통로
  • 장치 드라이버는 운영체제에 의해 인식하고 실행됨
    • 운영체제가 기본으로 제공하는 장치 드라이버가 존재
    • 어떤 드라이버를 직접 설치해야만 사용가능한 입출력장치도 존재

 

2. 다양한 입출력 방법

1) 프로그램 입출력

  • 프로그램 입출력(programmed I/O)
    • 프로그램 속 명령어로 입출력장치를 제어하는 방법
    • CPU가 입출력 명령어를 읽으면 CPU는 해당 장치 컨트롤러와 상호작용하여 입출력 작업 수행
      • CPU가 장치 컨트롤러의 레지스터 값을 읽어야함
메모리 맵 입출력 고립형 입출력
메모리와 입출력장치는 같은 주소 공간 사용 메모리와 입출력장치는 분리된 주소 공간 사용
메모리 주소 공간이 축소됨 메모리 주소 공간이 축소되지 않음
메모리와 입출력장치에 같은 명령어 사용 가능 입출력 전용 명령어 사용

 

2) 입터럽트 기반 입출력

  • 입터럽트 기반 입출력(Interrupt-Driven I/O)
    • 인터럽트로써 입출력을 수행 
    • 입출력장치를 제어하는 하드웨어 인터럽트는 장치 컨트롤러에 의해 발생
      • CPU가 장치 컨트롤러에 입출력 작업을 명령하면, 장치 컨트롤러가 입출력장치를 제어하며 입출력을 수행
      • 입출력을 수행하는 동안 CPU는 다른 작업 처리
      • 입출력이 완료되면 장치 컨트롤러가 CPU에 인터럽트 요청 신호 전송
      • CPU의 인터럽트 서비스 루틴 실행
  • 다중 인터럽트 처리
    • 프로그래머블 인터럽트 컨트롤러(PIC)
      • 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 제공
    • 동작
      1. PIC가 장치 컨트롤러에서 인터럽트 요청 신호들을 받아들임
      2. PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야할 인터럽트 요청 신호 전송
      3. CPU는 PIC에 인터럽트 확인 신호 전송
      4. PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터를 전송
      5. CPU는 인터럽트 벡터를 확인하여 해당 장치의 인터럽트 서비스 루틴 실행

 

3) DMA 입출력

  • DMA(Direct Memory Access)
    • 입출력장치와 메모리가 CPU를 거치지 않고 상호작용하는 입출력 방식
    • 위의 두 가지 방식보다 CPU 연산 시간 보장
    • 시스템 버스에 연결된 DMA 컨트롤러가 필요
  1. CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산, 메모리의 주소 등과 같은 정보로 입출력 작업을 명령
  2. DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행
  3. 입출력 작업이 종료되면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업 종료를 알림
  • 입출력 버스(input/output bus)
    • DMA 컨트롤러와 CPU는 시스템 버스를 동시에 접근할 수 없다는 단점
    • DMA 컨트롤러와 입출력장치들을 입출력 버스에 별도로 연결하여 해결
      • DMA 컨트롤러의 시스템 버스 사용빈도 감소

'컴퓨터 구조 &운영체제 > 컴퓨터구조 + 운영체제' 카테고리의 다른 글

프로세스와 스레드  (1) 2024.02.20
운영체제  (0) 2024.02.15
메모리와 캐시 메모리  (0) 2024.02.07
CPU 성능 향상 기법  (0) 2024.02.06
CPU의 작동 원리  (0) 2024.02.05