본문 바로가기
CS/컴퓨터구조와운영체제

다양한 입출력 방법

by cariño 2023. 7. 1.
728x90
반응형

CPU와 장치 컨트롤러가 정보를 주고 받기 위한 다양한 입출력 방법

  •  프로그램 입출력
  • 인터럽트 기반 입출력
  • DMA 입출력

 

 

[ 프로그램 입출력]

특정 레지스터에 입출력작업을 하는 과정으로 백업작업이 완료 될때까지 반복되게 된다.

CPU가 장치 컨트롤러의 입출력 명령어로써 레지스터 값을 읽고 씀으로써 장치 컨트롤러와 상호작용이 이루어진다. 

입출력장치는 종류도 다양하고 제품에 따라 다양한 입출력장치가 많기에 규격화 하기가 어렵다.

그렇다면 CPU 어떻게 장치컨트롤러 레지스터들을 어떻게 인식하고 알 수 있을까

 

* 입출력장치에 연결된 명령어로써 장치컨트롤러와 상호작용하는 방법

예를들어 메모리에 저장된 정보를 하드디스크에 백업 (= 하드디스크에 새로운 정보 쓰기)

 

 

1. 프로그램 입출력

 

1). CPU는 하드디스크 컨트롤러의 새로운 정보를 쓰는 과정으로 제어 레지스터쓰기 명령을 내보낸다. 

 

2). 하드디스크 컨트롤러는 상태 레지스터에 하드디스크 상태 값을 확인하고 준비가 완료되면 상태 레지스터준비 완료 표시를 한다. 

 

3). 하드 디스크가 준비되었따면 백업할 메모리의 정보를 데이터 레지스터에 쓴다. 

 

 

 

2. 장치컨트롤러는 어떻게 입출력장치 주소들(레지스터)를 관리할 수 있을까?

CPU가 장치컨트롤러와 상호작용할 때 여러개의 장치컨트롤러의 여러 레지스터를 인식할 수 있을까?

(장치컨트롤러의 레지스터 명령어들이 어떻게 명령어로 표현되고, 메모리에 저장되는지?)

 

ex) 프린터 컨트롤러의 상태 레지스터를 읽기

프린트 컨트롤러의 데이터 레지스터에 100을 써라

키보드 컨트롤러의 상테 레지스터를 읽어라 등등..

 

즉, CPU가 장치컨트롤러의 레지스터 값을 알기 위한 방법으로는 크게메모리 맵 입출력과 고립형 입출력으로 2가지의 방식이 있다. 

 

 

1. 메모리 맵 입출력:

메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소공간을 하나의 주소공간으로 간주하는 방법

메모리 접근 명령어 == 입출력장치 접근 명령어

 

 

2. 고립형 입출력

 

 

 

 

 

 

728x90

댓글