1 minute read

입출력 시스템

- 입출력장치와 채널

    입출력 장치는 데이터 전송 속도에 따라 저속 주변장치와 고속 주변장치로 분류

    주변장치들은 메인 보드 내의 버스로 연결됨

    버스를 한 개만 사용 시 병목 발생하기 때문에 여러 개의 버스를 묶어서 사용함

    - 저속 주변장치

        메모리와 주변 장치 사이에 오고가는 데이터 양이 적어 데이터 전송률이 낮은 장치

    - 고속 주변장치

        메모리와 주변 장치 사이에 오고가는 데이터 양이 많아 데이터 전송률이 높은 장치

    - 채널

        버스에서 데이터가 지나다니는 하나의 통로

        채널 공유 시 느린 장치가 막을 수 있기 때문에 채널 분리 사용

        - 채널 분리

            속도가 비슷한 장치 끼리 채널을 묶어서 사용하는 것

        - 채널 공유

            장치가 어느 채널이든 사용할 수 있는 방식

- 입출력 버스의 구조

    초기에는 하나의 버스 사용

    입출력 제어기를 사용하여 CPU 와 메모리가 사용하는 메인 버스, 입출력 장치가 사용하는 입출력 버스를 나누어 사용하며 CPU 가 입출력 요청 올 시 입출력 제어장치기는 입출력 장치로부터 데이터 직접 송 수신

    입출력 버스를 저속 입출력 버스와 고속 입출력 버스로 분리시키고 두 버스 사이의 데이터 전송은 채널 선택기가 관리

    현대의 컴퓨터는 GPU 사용량이 많기 때문에 CPU 와 메모리를 연결하는 메인버스, CPU 와 그래픽 카드를 연결하는 그래픽 버스, 고속 입출력 버스, 저속 입출력 버스 사용

- 직접 메모리 접근

    CPU 의 도움 없이도 메모리에 접근할 수 있도록 입출력 제어기에 부여한 권한

    입출력 제어기에는 DMA 제어기 포함됨

    채널 제어기가 어떤 것을 메모리에 보낼 지 결정하고 결정된 데이터는 DMA 제어기를 거쳐 메모리로 이동함

    - 메모리 맵 입출력

        메모리 공간에 DMA 제어기가 쓰는 입출력 메모리 공간을 따로 분리시키는 방법

        메인 메모리는 CPU 와 DMA 제어기가 동시에 사용될 수 있기 때문에

- 인터럽트

    CPU 작업, 입출력 작업, 하드웨어 이상 발생 등 다양한 경우에 인터럽트 발생

    - 외부 인터럽트

        주변 장치의 입출력 요구나 하드웨어의 이상 현상을 CPU 에 알려주는 역할을 하는 신호

        각 장치에는 고유의 인터럽트 번호가 부여되어 구분시킴

    - 내부 인터럽트

        프로세스의 오류와 관련된 인터럽트

    - 시그널

        사용자가 자발적으로 일으키는 인터럽트

    - 인터럽트 벡터와 인터럽트 핸들러
        - 인터럽트 벡터

            인터럽트가 여러개 발생했을 때 여러 인터럽트 중 어떤 인터럽트가 발생했는지 파악하기 위해 사용하는 자료 구조

            백터마다 인터럽트 핸들러가 저장된 메모리의 주소가 포인터 형태로 등록되어 있음

        - 인터럽트 핸들러

            인터럽트의 처리 방법을 함수 형태로 만들어놓은 것

- 버퍼링
    - 역할

        속도가 다른 두 장치의 속도 차이를 완화하는 역할

        단일 버퍼보다 이중 버퍼가 사용에 유리함

    - 주의점

        운영체제는 버퍼가 꽉 찼을 때 입출력 장치로 데이터를 전송하도록 설계되어 있기 때문에 버퍼를 잘 비워줘야 함

Categories:

Updated: