운영 체제가 디스크에 기록 할 때 이벤트를 전달합니까? 방법이 있는지

파일 Windows와 Linux 모두에서 디렉토리 쓰기를 마치는 시점 을 결정할 수있는 방법이 있는지 궁금합니다 .

이것은 대부분 임시 파일이 아닌 파일에 대한 디렉토리를 지속적으로 폴링하는 대신 디스크에 기록이 완료되는 것을 간단히 듣기 위해 프로그램을 설정할 수 있습니다 (그러한 일을하는 것이 좋습니다).



답변

  1. 파일은 “디렉토리에 쓰지”않습니다. 데이터는 파일에 기록되며 파일은 디렉토리에 (하드) 링크 될 수 있습니다. 그러나 파일에 대한 데이터 쓰기 프로세스는 디렉토리와 관련이 없습니다. 그리고 하드 링크 프로세스는 원자 적이며 기다릴 “완료”가 없습니다.
  2. Windows에서 찾고있는 기능은 FindFirstChangeNotification()입니다.
  3. 이것은 수퍼 유저가 아닌 StackOverflow 주제입니다.

답변

리눅스의 경우이 질문을 살펴볼 수 있습니다. 토론은 C ++로 진행되었지만 아이디어 (선택한 답변이 아니라 대답)에서 여전히 좋습니다. 기본적으로 리눅스에서는 플래그를 사용하거나 /proc/pid/fd프로세스를 볼 수 있습니다.


답변

적어도 Vista 이후 Windows에는 I / O 스케줄링 시스템이 있습니다.

Windows Vista의 I / O 우선 순위 .

또한 AHCI 모드의 최신 SATA 디스크에는 NCQ (Native Command Queuing) 라는 자체 통합 스케줄러가 있습니다.


답변