연예인

입출력 시스템 (I/O System) 핵심 요약 정리

비하인드톡톡 2022. 10. 23. 15:29

입출력 시스템
입출력 시스템

 

입출력 시스템

 

입출력 시스템 장치는 시스템 버스에 연결되어야 하며, 물리적 I/O 장치는 시스템 버스에 직접 연결해서는 안 된다. 즉, 장치 드라이버가 시스템 버스에 연결되어 있다.

 

하드웨어 인터페이스

  • 장치 드라이버 컨트롤러와의 통신은 장치 컨트롤러 내에서 특정 레지스터의 값을 읽거나 쓰는 장치 드라이버에 의해 이루어진다. 이러한 기록에는 교육 기록, 작업 기록 및 데이터 기록이 포함됩니다.
  • 명령 레지스터는 쓰기 또는 읽기 장치를 명령하기 위해 명령 코드가 로드되는 장소입니다.
  • 상태 로그는 예를 들어 장치에 오류가 있는지, 작업이 진행 중인지, 작업을 완료한 후 정지 상태인지 여부를 확인하는 데 사용됩니다. 사용 중/실행된 것과 같은 배너 표현 또는 오류 코드로 표시됩니다.
  • 데이터 레지스터는 명령어를 통해 명령된 작업을 수행하는 데 필요한 데이터를 읽고 쓸 수 있는 버퍼로 사용됩니다.

 

커널과 디바이스

 

장치 드라이버는 커널 배포 후에도 기업이 새로운 장치를 만들고 제어할 수 있도록 구성된다. 즉, 커널 개발자는 커널 소스 코드를 변경하지 않고 새로운 장치 드라이버를 연결하고 제거한 것처럼 커널에 설치할 수 있어야 한다.


장치 코어와 드라이버 사이의 인터페이스는 특정 드라이버에 필요한 기능을 저장하는 태그된 데이터 구조를 가지고 있다.

 

애플리케이션이 기기 사용에 대한 특정 시스템 호출을 수행할 때, 신호는 트랩을 통해 커널로 들어가 위에서 언급한 표의 드라이버에서 기능을 수행한다. 이 과정을 통해 커널과 장치 드라이버 사이의 인터페이스가 작동한다.


장치 드라이버는 커널 모드에서 동작하므로 커널 함수를 직접 호출하거나 커널 변수에 직접 접근할 수 있다. 그러므로, 그것을 사용하면 커널 기능을 효과적으로 사용하는 장치 드라이버를 만들 수 있다.

 

입출력 시스템 자료 이동

 

직접 입출력 : CPU는 장치 컨트롤러 내부의 데이터 레지스터로의 데이터 이동을 직접 제어합니다.

 

입출력 할 때마다 끊어야 하기 때문에 부담이 될 수 있다. 따라서 입력 간격은 비교적 긴 그림(키보드)을 가진 장치에 주로 사용되므로 대형 블록 장치(하드 디스크)에서 사용하기 어렵습니다. 블록이 512바이트인 경우 사실상 불가능하므로 512 인터럽트가 필요합니다.

 

Direct Memory Access(DMA): I/O 장치에 대한 독립적인 액세스를 통해 프로세서의 도움 없이 단일 I/O 명령만 사용하여 블록에 데이터를 입력할 수 있습니다.

 

그러나 프로세서가 메모리에 독립적으로 액세스하고 DMA 메모리가 독립적일 경우 서로 충돌할 수 있습니다. 이러한 문제는 CPU와 DMA가 동시에 메모리 액세스를 필요로 하는 경우 DMA를 우선시하고 프로세서가 루프를 사용합니다.이러한 DMA는 CPU 로드를 줄이고 블록 기기에서 빠른 I/O를 허용합니다.

 

레지스터 접근

 

격리형 입출력 : 공간으로부터 메모리를 분리하는 방법이다. 메모리 주소에 사용되는 주소 버스 외에도 입출력 시스템 장치를 위한 주소 라인이 별도로 사용된다.

 

따라서, 주소가 메모리 주소인지 또는 I/O 장치 주소인지를 결정하는 제어 라인은 별도로 필요한 하드웨어이다.

 

이러한 하드웨어 특성을 활용하기 위해서는 특별한 I/O 명령을 사용해야 한다. 비록 I/O가 메모리 공간 사용에 영향을 미치지 않는 장점이 있지만, 개별 명령어를 사용해야 하기 때문에 프로그래밍 순서나 휴대성이 낮다는 단점이 있다.

 

메모리 사상형 입출력 : 메모리 사상형 입출력 시스템은 버스 주소와 입/출구 관리 라인을 구분한다. 즉, 메모리에 할당된 주소의 일부가 컨트롤러 레지스터에 액세스하기 위한 주소로 사용됩니다.

 

메모리 주소와 I/O 주소는 동일한 공간에 있으므로 LOAD 및 STORE와 같은 메모리 액세스 명령을 특별한 명령 없이 사용할 수 있습니다.

 

명령 수가 줄어들어 프로그래밍이 쉽고 일관성과 휴대성이 뛰어납니다. 그러나 일부 메모리는 I/O에 사용되므로 메모리 공간에 영향을 미칩니다.

 

인터럽트와 인터럽트 마스크

 

'서브 인터럽트'라는 단어에서 추론할 수 있듯이, 인터럽트도 여러가지가 있습니다. 인터럽트는 다양한 인터럽트에 의해 수신된다. 따라서 이러한 충돌을 방지하기 위한 상당한 수준의 중단이 있습니다. 따라서, 다양한 인터럽트가 있으며 이를 다중 인터럽트라고도 합니다.

 

인터럽트 마스크는 랭크 비교에 사용됩니다. 입출력 시스템 인터럽트가 발생한 경우 인터럽트 레벨을 낮출 수 없습니다. 물론 상위 레벨의 인터럽트는 마스크를 무시하고 통과할 수 있습니다. (AND 계산 후에 값이 남아 있는 경우는, 현재 실행중의 인터럽트를 처리하고, 새로운 인터럽트를 처리합니다).

 

빠른 인터럽트 핸들러(Fast Interrupt Handler) : 특히 빠른 응답과 짧은 시간 내에 최종 처리를 위해 다른 인터럽트 핸들러를 비활성화합니다. 중요한 일시 중단과 같은 상황에서만 사용하는 것이 좋습니다.

 

정보를 얻기 위해 시계를 멈추는 것은 많은 활동을 수반하므로, 이러한 모든 활동을 허용하면 다음과 같은 결과를 초래할 수 있다: 따라서, 입출력 시스템 간헐적 요법의 순수한 부분은 상부와 하부로 나뉜다.

 

또한 상위 절반은 빠른 인터럽트 방식으로 처리되는 반면, 나머지 절반은 하위 절반의 다단계 퇴보입니다.