페이지

2014. 7. 8.

입출력 구조와 방식

입출력 구조



  • 운영체제는 입출력 장치에 입출력에 관련된 각종 명령어를 입력하고 인터럽트를 발견하고 오류를 처리함
  • 또한, 단순하고 편리한 형태로 입출력 장치와 컴퓨터 시스템의 다른 부분간의 인터페이스 기능도 아울러 제공함
  • 다양한 주변 장치들을 관리할 때 유지되어야 할 기능들


    1. 블록 단위의 데이터 전송 기능
    2. 컴퓨터 본체나 디스크, 테이프 등의 2차 기억장치와 외부 환경과의 인터페이스 기능
    3. 하드웨어와 독립적인 관리가 가능한 자원과의 독립성 유지 기능
    4. 프로세스 개념을 사용한 쉽고 편리한 입출력 수행 기능



입출력 하드웨어 장치


<블록 장치>

  • 자신의 주소를 갖고 있으면서 고정된 크기의 블록으로 정보를 저장하는 장치
  • 기본적인 속성은 다른 블록과는 독립적으로 각 블록을 읽거나 쓸 수 있음


<문자 장치>

  • 어떤 블록 구조와도 상관없이 문자 스트림(stream)으로 송수신 가능
  • 디스크처럼 주소 지정이나 탐색 동작이 필요 없음
  • 터미널, 라인 프린터, 자기 테이프, 펀치 카드, 네트워크 인터페이스, 마우스


<장치 제어기(device controller)>

  • 시스템의 모듈화와 일반적인 설계를 제공하기 위한 전형적인 입출력 장치의 전기적인 구성 요소
  • 운영체제의 입출력 프로그래밍은 항상 장치가 아닌 장치 제어기와 연관되어 처리되기 때문에 장치 제어기와 장치의 명확한 구분 필요
  • 컴퓨터는 CPU와 장치 제어기 사이의 통신을 위해서 단일 버스 사용








입출력 소프트웨어 설계시 고려사항





  • 장치와의 독립성 유지
  • 입출력시 오류 처리
  • 입출력시 동기와 비동기 전송
  • 입출력시 장치의 공유와 전용










입출력 방식


직접 입출력 방식

<개념>

  • CPU가 직접 입출력을 담당하는 방식
  • 초기의 컴퓨터 시스템에서 사용
  • CPU가 프로그램을 수행 중 입출력 명령을 만나면 직접 CPU가 나서서 입출력을 수행하는 방식


<수행 방식>

  • CPU가 장치 플래그(flag)의 상태를 검사하여 장치 플래그가 0일 때 입출력 명령을 수행
  • 데이터 입력시에는 장치 플래그가 0이 되면 입출력 장치의 데이터를 주기억 장치에 넣은 다음 장치 플래그를 1로 설정한 후, 입출력 장치 초기화
  • 데이터 출력시에는 장치 플래그가 0이 되면 주기억 장치의 데이터를 입출력 장치에 보낸 다음 장치 플래그를 1로 설정한 후, 입출력 장치 초기화






간접 입출력 방식


<개념>

  • 다중 프로그래밍을 구현하기 위해 이용하는 방식
  • CPU가 직접 입출력 명령을 담당하지 않고 전용 입출력 프로세서인 DMA나 채널을 사용하는 방식


<수행 방식>

  • 어떤 프로그램이 수행되는 도중에 입출력 명령이 발생하면 CPU에게 입출력명령의 종류, 장치 이름, 입출력 프로그램의 등과 같은 정보 전달
  • CPU는 입출력 프로세서에게 입출력 명령을 수행토록 하고,입출력 프로세서로부터 입출력 완료 신호가 올 때까지 CPU 자신은 작업을 중단 하지 않고 다른 프로그램을 수행
  • 이후에, 입출력 프로세서로부터 입출력 완료 신호가 인터럽트 방식에 의해CPU에게 보고되면,CPU는 현재 수행 중이던 프로그램을 멈추고 입출력이 발생했던 최초의 프로그램으로 복귀하여 중단되었던 프로그램의 수행을 재개







<DMA 방식>

  • 입출력 장치로부터 데이터를 직접 기억장치로 전송하는 것
  • 직접 입출력 방식과의 차이는 CPU 레지스터를 이용하지 않고 CPU의 사이클을 훔쳐(cycle steal) 입출력을 수행한다는 점
  • 사이클 스틸 : CPU와 DMA가 각각 연산과 입출력을 위해 동시에 기억장치를 접근하는 경우, CPU는 기억장치 참조 사이클을 수행하여 입출력을 수행하는 것
  • 데이터 전송은 기억장치 버스를 통하여 수행되도록 함으로써 빠르게 데이터전송을 수행














<입출력 채널 방식>

  • 입출력 명령은 독립된 입출력 프로세서인 채널이 대신하는 것
  • 입출력 명령을 수행하는 동안 CPU는 다른 프로그램을 수행함으로써 CPU의 효율을 향상시킴
  • 다중 프로그래밍 가능
  • 입출력 프로세서 : PPU 또는 채널이라 불리는 프로세서 그 자체가 하나의 CPU와 유사한 성능을 갖는 프로세서
  • 종류


    1. 선택 채널(selector channel)
    2. 멀티플렉서 채널(multiplexor channel)
    3. 블록 멀티플렉서 채널(block multiplexor channel)