2진 파일 I/O 함수에 대한 파일 버퍼링을 비활성화하여 효율성 향상시키기
- 업데이트 날짜:2025-08-27
- 2분 (읽기 시간)
각 파일 I/O 작업에서, LabVIEW가 OS를 호출하고 디스크에 있는 파일에서 및 파일로 데이터 전송을 요청하는데에는 몇 ms의 시간이 걸립니다. 이러한 ms 단위의 시간은 LabVIEW가 OS를 호출할 때마다 누적되게 됩니다. 이렇게 반복적으로 시간이 소요되는 것을 방지하기 위하여, 대부분의 OS 파일 시스템은 버퍼를 제공하여 일시적으로 파일 읽기 또는 파일 쓰기 대기 상태인 각 데이터 조각을 보관합니다. 버퍼가 가득차면, OS는 하나의 파일 I/O 작업을 수행합니다.
위에서 설명한 프로세스를 '버퍼링'이라고 하며, LabVIEW는 기본으로 버퍼링을 활성화합니다. 버퍼링은 OS가 디스크를 사용하는 횟수 및 이에 소요되는 처리 시간을 줄여줍니다.
버퍼링을 비활성화해야 하는 경우
일부 경우에서 버퍼링을 비활성화하여 데이터 스트리밍 속도를 향상시킬 수 있습니다. 예를 들어, RAID(Redundant Array of Independent Disks)를 사용하여 프로세스 속도를 높일 수 있습니다. RAID는 단일 디스크처럼 동작하는 여러 하드 디스크의 모음으로, OS가 동시에 사용할 수 있어서 데이터를 읽고 쓰는데 소요되는 시간이 적습니다. 버퍼링이 활성화된 상태에서 RAID를 사용하면, OS가 실제로 디스크에 데이터를 쓰는데 소요되는 시간보다도 LabVIEW가 OS에 데이터를 복사하는데 시간이 더 많이 필요할 수도 있습니다. [파일 열기/생성/대체] 함수의 버퍼링 비활성화 입력에서 버퍼링을 비활성화하여, 이렇게 데이터를 복사하지 않고 강제적으로 OS가 디스크에 직접 데이터를 전송하도록 만들 수 있습니다.
하지만, 버퍼링을 비활성화하는 경우, 다음의 조건이 참이어야 합니다.
- 파일에 있는 데이터의 크기가 파일을 포함하고 있거나 앞으로 포함하게 될 디스크의 섹터 크기의 배수가 되어야 합니다. 이때, 디스크의 섹터 크기는 바이트로 표기됩니다. 섹터는 디스크 공간의 일부로서 주로 512 바이트의 데이터, 즉 지정된 양의 데이터를 저장합니다. [볼륨 정보 얻기] 함수의 섹터 크기(바이트) 출력을 사용하여 디스크의 섹터 크기를 확인할 수 있습니다. LabVIEW가 디스크에 데이터를 저장할 때, 데이터가 여러 섹터를 차지할 수 있지만 각각의 섹터가 완전히 채워져야 합니다. 512 바이트 섹터는 512 바이트의 데이터를 필요로 합니다. 데이터 크기가 섹터 크기의 배수가 아닌 경우, 데이터를 채우기용 데이터로 늘린 후 LabVIEW가 해당 파일을 읽기 전에 채우기용 데이터를 제거해야 합니다.
- 파일에 있는 데이터는 디스크가 요구하는 정렬 기준의 배수에 맞춰서 정렬되어야 합니다. LabVIEW가 데이터를 정렬하며, 사용자가 정렬 기준을 변경할 수 없습니다. 데이터가 정렬 기준을 충족하지 못하는 경우, LabVIEW는 에러를 반환하며 사용자가 버퍼링을 활성화하여 파일을 다시 열어야 합니다.