QIO

QIO

QIO(Queue I/O)는 매사추세츠메이나드의 구 DEC(Digital Equipment Corporation)가 설계한 여러 컴퓨터 운영 체제에서 사용되는 용어입니다.

이러한 시스템의 I/O 조작은 커널에 QIO 콜을 발행함으로써 시작됩니다.QIO에는 큐 I/O와 큐 I/O와 대기라는 두 가지 유형이 있습니다.

대기하지 않는 QIO의 경우 콜은 즉시 반환됩니다.요구가 정상적으로 큐잉되면 실제 조작은 비동기적으로 실행됩니다.완료되면 상태가 QIO 상태 이중 워드로 반환됩니다.QIO 요구는 완료 시 이벤트플래그를 설정하거나 Asynchronous System Trap(AST; 비동기 시스템트랩)을 발행하도록 지정할 수도 있습니다.

콜은 QIOW(Queue I/O 및 Wait for Complete)로 발행되어 동기 I/O가 가능합니다.이 경우 wait-for-event-flag 조작이 결합되어 I/O 조작이 완료되거나 실패할 때까지 콜이 반환되지 않습니다.

QIO(W)를 구현한 운영체제는 다음과 같습니다.

VMS의 QIO 인수

VMS에서 QIO 콜에 대한 인수는 다음과 같습니다.

  • 작업이 완료될 때 설정하는 이벤트 플래그입니다.이벤트 플래그를 지정하지 않을 수 없습니다.플래그 0은 유효합니다.완료 시 동일한 이벤트 플래그를 설정하는 여러 작업을 동시에 수행할 수 있습니다.이로 인해 발생할 수 있는 혼동을 분류하거나 이벤트 플래그를 무시하는 것은 응용 프로그램에 달려 있습니다.
  • 이전에 디바이스에 관련되어 있던 작은 정수인 채널.이 레벨에서는, 디스크 파일 및 디렉토리의 모든 조작(파일명 해석, 디렉토리 검색, 파일 열기/닫기)은, 적절한 QIO 요구에 의해서 행해집니다.
  • 수행할 함수 코드입니다.6비트는 기본 코드(읽기, 쓰기 등)에 할당되며, 그 의미는 기본 코드에 따라 달라지는 "수정자"의 경우 추가로 10비트가 할당됩니다.
  • 옵션의 I/O Status Block(IOSB; I/O 상태 블록). QIO 콜에 의해 클리어되어 I/O 조작이 완료되면 입력됩니다.처음 2바이트는 완료 상태(성공, 파일 종료 도달, 타임아웃, I/O 오류 등)를 유지하고 다음 2바이트는 일반적으로 작업에서 읽거나 쓴 바이트 수를 반환합니다.마지막 4바이트(있는 경우)의 의미는 동작에 따라 달라집니다.
  • 작업이 완료되면 호출하는 선택적 AST 루틴입니다.
  • AST 루틴에 전달되는 추가 파라미터(발신자에게 의미가 있다).
  • P1 ~ P6로 알려진 최대 6개의 파라미터의 부분적으로 표준화된 목록.처음 2개의 파라미터는 일반적으로 I/O버퍼 시작주소(P1)와 I/O바이트 카운트(P2)를 지정합니다.나머지 파라미터는 조작 및 특정 디바이스에 따라 달라집니다.예를 들어 컴퓨터 단말기의 경우 P3는 읽기를 완료할 때까지의 시간이지만 디스크 드라이브의 경우 전송의 시작 블록 번호일 수 있습니다.

QIO 완료

큐잉된 I/O 작업이 완료되었음을 감지하는 방법은 세 가지가 있습니다.

  1. 이벤트 플래그가 설정되었을 때.
  2. IOSB의 처음 2바이트가 0이 아닌 경우.
  3. 그 공중 감시 기사 일상적인 시행하고 있습니다.

복잡한 처리를 필요로 하는 비정상적인 QIO

심플 QIOs, 읽기 또는 쓰기 요청 등도 커널 자체 또는 장치 드라이버의에 의해 서비스된다.일부 더 복잡한 요청, 특히 그 테이프 드라이브 및 파일 수준 작전과 관련된, 원래 보조 지상 설비 제어 처리계(ACP)(자체 주소 매핑과 특별한 목적 임무)에 의해 처형당했다.

RSX-11에 그 Files-11 ODS-1 파일 시스템은 과제 F11ACP의 이름 QIOs의 특별한 집합이"ACPQIOs."이라고에 전달된 서브 루틴 도서관으로 추진하였다.자기 테이프 장치를 제어하는 것과 동등한 기능성을 과제 MTAACP의 이름에 의해 제공되었다.

원래 Files-11 ODS-2 파일시스템은 VMS 상의 F11BACP에 의해 제공되었지만 F11BACP의 기능은 나중에 프로세스 컨텍스트스위치의 오버헤드를 줄이기 위해 VMS 커널에 통합되어 현재는 XQP(Extended Qio Processor)라고 불립니다.

IO$_READPROMPT

가능한 가장 복잡한 단일 QIO 요구는 IO$M_TIMED 수식자를 가진 VMS 터미널 드라이버의 IO$_READPROMPT 콜입니다.이 QIO에는 다음 6개의 추가 파라미터가 모두 필요합니다.

  • P1은 입력 문자를 수신하는 버퍼 주소입니다.
  • P2는 버퍼의 길이이며 읽을 수 있는 최대 문자 수를 제한합니다.버퍼가 가득 차면 사용자가 줄 바꿈 문자를 입력하지 않아도 읽기가 정상적으로 완료됩니다.0이 허용됩니다. 이 경우 읽기가 성공적으로 종료되고 0자가 읽힙니다.
  • P3는 추가 입력을 대기하는 최대 초수입니다.이것은 IO$M_TIMED 수식자가 존재하는 경우에만 사용되며, 값이 0이면 0초가 됩니다.읽기가 즉시 종료되므로 가능한 입력은 사용자가 "앞으로 타이핑한" 입력뿐입니다.
  • P4는 선택적 "터미네이터 마스크"의 주소로, 읽기를 종료하는 ASCII 문자를 지정합니다.생략하면 캐리지 리턴을 포함한 일반적인 VMS 행 구분자로 기본 설정됩니다(라인 피드는 제외).줄 바꿈이 없는 마스크를 지정할 수 있습니다. 이 경우 버퍼가 가득 차거나 시간 초과가 경과했을 때만 읽기가 완료됩니다.
  • P5는 입력을 받기 전에 사용자에게 표시되는 프롬프트 문자열의 주소입니다.이 프롬프트를 기입 조작이 아닌, 판독중에 입력 회선을 갱신할 필요가 있는 상황(오퍼레이터 메세지가 단말기에 브로드캐스트 된 후나, 유저가 CTRL/R 를 눌러 회선을 재표시하는 경우 등)에 자동적으로 재표시하는 메리트가 있습니다.
  • P6은 프롬프트 문자열의 길이입니다.

상기 파라미터를 적절히 선택함으로써 1개의 콜로 단말기의 입력과 출력을 모두 실행할 수 있습니다.단말기의 출력에는 통상의 IO$_WRITEVBLK 콜을 사용할 필요가 전혀 없습니다.

참조