컴퓨터 공학/혼자 공부하는 컴퓨터 구조 +운영체제

18.다양한 입출력

공부를하자 2023. 7. 14. 14:34

1.프로그램 입출력(programmed I/O)

 1)정의: 프로그램 명령어로 입출력장치를 제어하는 방법.

 2)과정

  -첫째. CPU 하드디스크 컨트롤러의 제어 레지스터에 쓰기 명령을 보냅니다.

 

 

  -둘째.하드디스크 컨트롤러는 하드 디스크 상태를 확인합니다. 하드 디스크가

  준비된 상태라면 하드디스크는 상태 레지스터에 준비완료 상태를 저장합니다.

 

 -셋째. CPU 상태 레지스터를 지속적으로 읽으며 하드디스크의 준비여부를 확인.

        하드디스크가 준비됐음을 CPU 알게 되면 백업할 메모리의 정보를

       데이터 레지스터에 씁니다. 작업이 완료될 때까지 지금까지의 과정을 반복합니다.

 -CPU 상대적으로 장치 컨트롤 간의 명령어를 알고 있지 않다.

  그래서 명령어를 저장하는 방식 메모리 입출력 고립형 입출력 방법이 있다. 

2.메모리 입출력

 1)정의: CPU 장치컨트롤러의 사이의 명령어를 저장하는 방법 하나.

  -메모리에 접근하기 위한 주소공간과 입출력 장치에 접근하기 위한 주소공간을

   하나의 간주하는 방법.

  -메모리공간의 축소되는 단점이 있다.

3.고정 입출력 장치(isolated I/O)

  1)정의:메모리를 위한 주소공간과 입출력장치를 위한 주소공간을 분리하는 방법.

    메모리 축소가 되지 않는다.

   -메모리에 접근하는 읽고 쓰는 통로와 입출력출력 장치의 읽고 쓰는 통로를 따로하고

    입출력 전용 명령어를 사용한다.

   

 

4.인터럽트 기반 입출력(interrupt-Driven I/O)

 1)정의

   -CPU 장치 컨트롤러를 통해 명령어를 전달하고 입출력장치가 작업을 완료했다는

    메시지(인터럽트) 보내면 다시 CPU 작업(인터럽트 서비스 루틴) 수행하는 방식.  

    메시지를 받기 전까지 CPU 다른 일을 수행할 있다.

 

     -

 

    -입출력 장치는 여러 개를 사용하게 된다. 그만큼 인터럽트가 발생하는 수도 늘어난다.

    -여러 개의 인터럽트를 순차적으로 처리할 있지만 먼저 처리해야할 인터럽트도 존재하므로

     좋은 방법은 아니다.

    -CPU 인터럽트간의 우선순위를 정하여 수행한다.

 

  2)NMI(Non-Maskable-Interrupt)

    -인터럽트 비트가 비활성화 되있어도 무시할 없는 인터럽트(우선순위가 제일 높은 인터럽트)

   3)프로그래머블 인터럽트 컨트롤러 : PIC(Programmuable Interrupt Controller)

      -장치컨트롤러에서 보낸 인터럽트 요청들의 우선순위를 판별하고 알려주는 장치.

 

   -PIC 작동과정

 

5.DMA 입출력

1)정의 개요

 -프로그램 입출력과 인터럽트 입출력 방식은 데이터 이동 데이터 명령처리를 모두 CPU 거친다.

 -모든 작업이 CPU 거치기 때문에 CPU 부담이 크다.

 -DMA(Direct Meomory Access) CPU 거치지 않고 입출력장치와 메모리가

  상호작용하는 입출력 방식이다.

  -DMA컨트롤러: DMA 입출력방식에 필요한 하드웨어

 

 2)DMA입출력 과정

 

3)입출력 버스(input/output bus)

-시스템버스는 공용자원으로 DMA컨트롤러가 작업을 수행함에 있어 CPU 방해를 해선 안된다.

-그래서 DMA버스와 장치컨트롤러들을 입출력 버스라는 별도의 버스를 연결할 있다.

-입출력 버스에는 PCI(Peripheral Component Interconnect)버스와 PCI Express(PCle)버스

 여러종류가 있다. 그리고 PCIe 입출력버스와 여러 입출력 버스를 연결하는 PCIe슬롯이 있다.