본문 바로가기
전공/운영체제

Ch10. 입출력 시스템과 저장장치_01)입출력 시스템(1)

by 임 낭 만 2023. 6. 15.

입출력 시스템

입출력 장치와 채널

  • 컴퓨터의 주변장치는 입출력장치와 저장장치로 구성되며, 각 장치는 메인보드에 있는 버스로 연결됨
    • 주변장치는 저속주변장치(키보드, 마우스 등)와 고속주변장치(그래픽카드, 하드디스크 등)로 나뉨
    • 저속주변장치: 메모리와 주변장치 사이에 오고 가는 데이터 양이 적어 데이터 전송률이 낮은 장치
    • 고속주변장치: 메모리와 주변장치 사이에 대용량의 데이터가 오고가므로 데이터 전송률이 높은 장치

주변 장치별 데이터 전송 속도

  • 여러 주변장치는 메인보드 내의 버스로 연결됨. 버스에는 많은 종류의 장치가 연결되기 때문에 버스 1개만 사용하면 병목현상 발생
  • 여러 개의 버스를 묶어서 사용하는데, 이때 데이터가 지나다니는 통로를 채널이라고 함
  • 채널 공유와 채널 분리
    • 채널을 모든 주변장치가 공유하면 전체적으로 데이터 전송 속도가 느려짐
    • 전송 속도가 비슷한 장치끼리 묶어서 장치별로 채널을 할당하면 전체 데이터 전송 속도를 향상할 수 있음

채널 공유와 채널 분리


입출력 버스의 구조

입출력 버스 초기의 구조

  • 모든 장치가 하나의 버스로 연결 (컴퓨터 사용초기 CPU와 메모리의 속도가 빠르지 않음)
  • CPU가 작업을 진행하다가 입출력 명령을 만나면 직접 입출력장치에서 데이터를 가져오는 폴링polling 방식 이용

초기 입출력 버스의 구조

입출력 제어기(I/O controller)를 사용한 구조

  • 버스는 메인버스와 입출력 버스의 2개의 채널로 나뉨
    • 메인버스: 고속으로 작동하는 CPU와 메모리가 사용
    • 입출력 버스: 주변장치가 사용
  • CPU에서 입출력 요청이 오면 입출력제어기는 입출력 장치로부터 데이터를 직접 송수신함
  • 입출력 제어기를 사용하면 느린 입출력장치로 인해 CPU와 메모리의 작업이 느려지는 것을 막을 수 있어 전체 작업 효율 향상

입출력 제어기를 사용한 입출력 버스의 구조

입출력 버스의 분리

  • 입출력 제어기를 사용하면 작업 효율을 높일 수 있지만, 저속 주변장치 때문에 고속 주변장치의 데이터 전송이 느려지는 문제가 있음
  • 고해상도 모니터와 3D 게임이 보급되면서 그래픽카드는 많은 양의 데이터를 전송
  • 그래픽 카드같은 고속주변장치가 키보드, 마우스 같은 저속주변장치와 입출력 버스를 공유하면 입출력속도가 저하됨
  • 이를 해결하기 위해 입출력 버스를 고속 입출력 버스와 저속 입출력 버스로 분리하여 운영
  • 고속 입출력 버스에는 고속 주변장치를 연결하고 저속 입출력 버스에는 저속 주변장치를 연결
  • 두 버스 사이의 데이터 전송은 채널 선택기가 관리
  • 예) 고속 입출력버스에서 10번 데이터를 받으면 저속 입출력 버스에서 1번 데이터를 받는 방법으로 두 버스의 데이터 전송속도 조절
  • 입출력 버스로 감당하기 어려워진 그래픽카드는 입출력 버스에서 분리하고 메인버스에 바로 연결하여 사용
  • 그래픽 카드는 전용포트(AGP: accelerated graphics port)를 사용함
  • 현대의 컴퓨터는 CPU와 메모리를 연결하는 메인버스, CPU와 그래픽카드를 연결하는 그래픽 버스, 고속 입출력 버스와 저속 입출력 버스를 사용

입출력 버스의 분리


입출력 관리

입출력 시스템과 입출력 모듈

  • 프로그램 실행속도는 입출력 시스템의 성능에 영향을 많이 받음
  • 운영체제 역할 중 입출력을 관리하고 제어하는 일이 매우 중요함
  • 모니터나 프린터 같은 하드웨어 장치 뿐만 아니라 입출력 모듈까지 포함
  • 물리적 입출력장치가 실제로 입출력을 수행하고, 입출력 모듈은 메모리나 프로세서, 레지스터 등 내부 저장장치와 물리적 입출력 장치 사이의 이진 정보를 전송 방법 제공
  • 입출력 모듈이 프로세서를 대신하여 입출력과 관련된 복잡한 일을 처리하면 입출력 채널 또는 입출력 프로세서가 되고, 단순히 프로세서의 입출력과 관련된 일을 담당하면 입출력 제어기 또는 장치 제어기가 됨

컴퓨터 하드웨어 구성과 입출력 모듈

입출력장치를 직접 시스템 버스에 연결하지 않고 입출력 모듈을 이용하여 연결하는 이유는 입출력장치에 따라 제어하고 운용하는 방법이 다르기 때문


입출력 모듈의 구성

입출력 모듈 구성

  • 입출력장치의 수와 구조에 따라 다양하게 구성 가능
  • 일반구성

입출력 모듈의 내부 조직

입출력 모듈로 들어가거나 나오는 데이터는 데이터 레지스터에 일시 저장.
현재의 상태 정보를 저장하는 상태 레지스터는 제어 레지스터로 동작.
상태 레지스터에는 프로세서의 명령에 따라 입출력 모듈을 제어하는 장치와 인터페이스를 제어하는 입출력 논리회로가 있 음.
입출력 논리회로는 상태 레지스터가 제어하는 장치의 주소를 인식하고 주소를 발생할 수 있어야 하므로 연결된 각 장치와 인터페이스를 제어하려고 장치 인터페이스를 포함. 그리고 제어버스로 프로세서와 교신


입출력 모듈의 기능

입출력 모듈의 기능

  • 내부 자원과 데이터 입출력 등 다양한 동작을 제어하고 타이밍 기능을 제공
  • 입출력 모듈이 외부장치의 타이밍과 데이터 형식, 기계적인 세부 사항들을 처리하므로 프로세서는 단순히 파일 열기나 닫기 명령만으로도 장치를 제어 가능
  • 프로세서가 입출력장치에 명령을 보내려면 입출력장치의 식별자를 주소로 지정해야 함
  • 주소를 지정하는 방법
    • 메모리 주소 공간과 입출력 주소 공간이 별도로 있는 전용 입출력 주소 방법
    • 메모리 주소 공간의 일부를 입출력 주소 공간으로 공유하는 메모리 매핑 주소 방법
  • 프로세서에서 명령을 전달받고, 관련된 메시지를 인식하는 기능 제공
  • 입출력 모듈은 명령 해독 → 데이터 교환 → 상태 보고 → 주소 인식 과정 거쳐 메시지 인식
    • 명령 해독 : 프로세서에서 명령들을 받아 해독한다.
    • 데이터 교환 : 데이터 버스로 프로세서와 데이터를 교환한다.
    • 상태 보고 : 저속 주변장치의 상태를 확인하여 프로세서에 보고한다.
    • 주소 인식 : 모듈에 연결된 여러 장치를 구분할 주소를 인식한다
  • 버퍼링을 이용하여 전송 속도 조절
  • 오류 검출(종이걸림, 불량디스크 트랙, 데이터 전송오류)

프로세서 역할에 따른 입출력 방법

프로그램 제어 입출력

  • 프로세서 내부의 입출력 데이터와 주소 레지스터를 입출력 모듈과 연결한 형태
  • 주소 레지스터와 버스 사이에서 데이터를 직접 전송할 수 있는 가장 단순한 형태
  • 데이터 입력할 때는 입출력 모듈을 거쳐 한 번에 한 워드씩만 데이터 레지스터로 전송, 입출력 데이터 레지스터에서는 프로그램을 이용하여 산술 논리연산장치로 전송
  • 데이터를 출력할 때는 산술논리연산장치에서 입출력 데이터 레지스터로 이동, 프로그램을 이용하여 입출력 모듈로 전송

프로그램 제어 입출력 방법의 구성

프로그램 제어 입출력 방법을 폴링polling 방법이라고도 함

  • 폴링 : 상태 비트를 주기적으로 검사하여 프로세서보다 상대적으로 느린 입출력장치의 상태를 확인
  • 폴링 방법으로 데이터를 전송할 때는 폴링 순환 수행
  • 폴링 방법에서는 순환 횟수가 데이터 전송 성능에 영향
  • 너무 빈번하게 순환하면 입출력 동작의 진행 여부를 검사하는데 시간 많이 낭비

폴링 순환

  • 모든 데이터는 프로세스의 입출력 명령에 따라 전송하며, 입출력 장치는 메모리를 직접 접근 할 수 없음

인터럽트 기반 입출력 방법

  • 입출력장치가 작업을 완료한 후에 작업과 관련된 상태와 결과를 메모리에 저장하고 인터럽트를 발생시켜 프로세서에 알림
  • 인터럽트를 받은 프로세서는 입출력 명령을 전송하고 입출력 작업 중에 다른 명령 시작
  • 프로세서의 도움이 필요한지 입출력장치에 확인하는 대신 입출력장치가 프로세서에 직접 신호를 주는 방법
  • 불규칙적이고 빠른 응답성을 요구할 때 적합

인터럽트 기반 입출력 방법의 구성

인터럽트 기반 입출력 방법 과정

인터럽트 기반 입출력 방법 과정

프로세서가 폴링 절차를 생략할 수 있어 입출력 연산의 대기시간이 필요 없으므로 효율성 증가

그러나 현재의 작업 내용을 스택에 저장해야 하는 오버헤드가 발생하고, 프로세서의 레지스터에서 모든 데이터 전송한다는 단점

DMA 입출력

  • 프로세서의 도움 없이도 메인 메모리를 직접 제어하여 데이터를 전송하는 형태
  • 직접 메모리 액세스라고 함
  • 프로세서가 읽기와 쓰기 정보, 입출력 주소와 메모리 주소, 길이를 DMA 제어기에 전달하여 입출력을 요청하면 DMA 제어기는 이것을 직접 처리
  • 입출력장치에서 메모리로 데이터를 블록 단위로 전송 가능

DMA 입출력 방법의 구성 (입출력 모듈 : 제어 담당)

DMA 전송 동작

: 디스크의 데이터 전송과 멀티미디어 같은 대용량 데이터 전송에 적합

*프로세서는 데이터 전송을 시작하고 종료 할 때만 관여

DMA 전송 동작

댓글