순차적으로 액세스할 수 있는 장치를 무작위로 액세스할 수 있게 만드는 방법은 무엇입니까?

순차적으로 액세스할 수 있는 장치를 무작위로 액세스할 수 있게 만드는 방법은 무엇입니까?
  1. 장치가 순차 액세스만 제공하고 임의 액세스는 제공하지 않는 경우 장치 드라이버나 파일 시스템이 장치를 사용자가 임의 액세스 권한이 있는 것처럼 보이게 만들 수 있습니까?

    그렇다면 장치에 버퍼/캐시를 제공하여 이를 수행합니까?

  2. 예를 들어, 다음은 제가 들은 내용이지만 맞는지 확실하지 않습니다.

    • 테이프를 되감으면 순차 액세스만 제공됩니다.

    • 이러한 테이프 장치의 경우 현재 위치에서 뒤로 이동하려면 테이프를 처음으로 되감은 다음 앞으로 이동해야 할 수도 있습니다.

    장치 자체, 테이프의 장치 드라이버 또는 장치/하드웨어 수준에서 다른 것을 변경하는 등 이러한 테이프에 무작위로 액세스할 수 있는 이유는 무엇입니까?

    이렇게 무작위로 액세스할 수 있는 테이프가 있는 경우 open() 이를 사용 하면 O_DIRECT테이프에 무작위로 액세스할 수 없고 순차적으로만 액세스할 수 있나요?

답변1

장치가 외부 개입 없이 앞뒤로 움직일 수 있다면 그렇습니다. 장치 드라이버에서 이를 구현하도록 할 수 있습니다.나타나다무작위 접근을 위해. 여러 가지 방법으로 이 작업을 수행할 수 있습니다.

  1. 장치에 사용 가능한 주 메모리의 양이 적은 경우 장치의 콘텐츠를 임의 액세스 메모리에 미러링할 수 있습니다.
  2. 장치가 너무 커서 주 메모리에 저장할 수 없으면 페이징할 수 있습니다. 기본적으로 (1)을 수행하지만 기본 콘텐츠의 조각에 대해 수행합니다. 현재 메모리에 없는 페이지에 대한 읽기/쓰기 속도는 매우 느립니다. "이전" 페이지를 플러시해야 하고 새 페이지를 메모리로 읽어야 하기 때문입니다.

모든 쓰기는 결국 기본 미디어로 다시 플러시되어야 합니다. 이는 매우 느린 프로세스일 수 있으며 "미디어가 부분 업데이트를 지원합니까"(예: 운영 체제가 업데이트된 데이터만 덮어쓸 수 있습니까, 아니면 전체 미디어를 다시 작성해야 합니까)와 같은 질문을 제기합니다.

즉, "실행 가능"하다고 해서 그것이 좋은 생각이라는 의미는 아닙니다. 하드웨어의 동작에 따라 제한됩니다. 진정한 무작위 액세스를 제공하지 않으면 위조하는 속도가 매우 느려집니다.

관련 정보