[Study] 5주차(1)

hyo_d·2023년 4월 25일
0

Study

목록 보기
8/9

입출력장치

입출력장치 특징

  • 입출력장치는 종류가 다양하다.
    • 장치마다 속도, 데이터 전송 형식이 달라 CPU와 정보를 주고받는 방식을 규격화 하기 어렵다.
  • CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다.
  • 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받는다.

장치 컨트롤러 역할

  • CPU와 입출력장치 간의 통신중개
    • 번역가 역할 수행
  • 오류 검출
  • 데이터 버퍼링
    • 버퍼링: 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법

장치 컨트롤러 구조

  • 장치 컨트롤러는 버스에 연결돼서 정보를 주고받는다.
  • 주고받는 데이터에는 데이터 레지스터, 상태 레지스터, 제어 레지스터가 있다.
  • 데이터 레지스터
    • CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터(버퍼)
    • RAM을 사용하기도 한다
  • 상태 레지스터
    • 입출력장치가 입출력 작업을 할 준비가 되었는지, 입출력 작업이 완료되었는지, 입출력장치에 오류는 없는지 등의 상태 정보를 저장
  • 제어 레지스터
    • 입출력장치가 수행할 내용에 대한 제어 정보

장치 드라이버

  • 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램
  • 장치 컨트롤러 - 하드웨어적 통로, 장치 드라이버- 소프트웨어적 통로
  • 장치 드라이버를 실행시키는 주체는 운영체제
  • 운영체제가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면 컴퓨터 내부와 정보를 주고받을 수 있음

입출력 방식

  • 프로그램 입출력
    • 프로그램 속 명령어로 입출력장치를 제어하는 방법
    • 입출력 명령어로써 장치 컨트롤러와 상호작용
    • CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이뤄짐
    • 메모리에 저장된 정보를 하드 디스크에 백업(하드 디스크에 새로운 정보 쓰기)

      - CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령을 보냄
      - 하드 디스크 컨트롤러는 하드 디스크 상태를 확인하고 상태 레지스터에 준비 완료 표시
      - CPU는 상태 레지스터를 주기적으로 읽으며 하드 디스크의 준비 여부 확인 / 하드 디스크가 준비 되었다면 백업할 메모리 정보를 데이터 레지스터에 쓰기
      - 백업(쓰기) 작업이 끝나지 않았다면 1번부터 반복
      업로드중..
    • 메모리 맵 입출력
      • 메모리 앱: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
    • 고립형 입출력
      • 입출력 읽기/쓰기 선을 활성화시키는 입출력 전용 명령어 사용
  • 인터럽트 기반 입출력
    • 하드웨어 인터럽트는 장치 컨트롤러에 의해 발생
    • 동시다발적 인터럽트: 입출력 장치가 많을때 동시 다발적으로 인터럽트 요청이 들어올 경우
      • 플래그 레지스터 속 인터럽트 비트를 비활성: 순차적으로 처리
      • 플래그 레지스터 속 인터럽트 비트를 활성: NMI가 발생한 경우, 우선순위를 반영하여 처리 / PIC(Programmable Interrupt Controller)가 여러 장치 컨트롤에 연결되어 장치 컨트롤러의 하드웨어 인터럽트 우선순위를 판단한 뒤 CPU가 지금 처리해야하는 인터럽트가 무엇인지 판단하는 하드웨어(NMI 우선 순위까지는 판단하지 않음)

프로그램/인터럽트 입출력 공통점: 입출력장치와 메모리 간의 데이터 이동은 CPU가 주도하고 이동하는 데이터도 반드시 CPU를 거친다

  • DMA(Direct Memory Access) 입출력
    • CPU를 거치지 않고 입출력장치가 메모리에 직접적으로 접근하는 방식
    • CPU는 DMA컨트롤러에 입출력 작업을 명령 -> DMA컨트롤러가 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행 -> 인터럽트를 통해 CPU에 작업이 종료됐음을 알림(이때 DMA는 필요하다면 메모리에 직접 접근)
    • CPU는 입출력 작업의 시작과 끝만 관여
    • DMA컨트롤러는 CPU가 시스템 버스를 이용하지 않을 때마다 조금씩 사용
    • CPU가 일시적으로 시스템 버스를 이용하지 않도록 허락을 구하고 이용
    • 입출력 버스를 통해 시스템 버스 이용 빈도 낮추기(슬롯->입출력 버스->시스템 버스)
profile
햇병아리

0개의 댓글