joe*_*moe 15 c linux windows caching system-calls
是否有Windows等同于Linux的readahead系统调用?
编辑:
如果可能,我想要一个完整的函数签名,显示等效的偏移/计数参数(或更低/更高).
例如:Linux函数签名是:
ssize_t readahead(int fd, off64_t *offset, size_t count);
Run Code Online (Sandbox Code Playgroud)
它的一个例子就是使用它
readahead(file, 100, 500);
Run Code Online (Sandbox Code Playgroud)
其中"file"是先前由mmap等函数设置的文件描述符.此调用在索引100处读取500个字节.
编辑2:如果您不确定什么是预读,请阅读此内容:http://linux.die.net/man/2/readahead
Ray*_*rns 11
是.是的FileSystemControl FSCTL_FILE_PREFETCH.
它在Windows Vista及更高版本中用于在应用程序启动和启动时预取.
它也被SuperFetch技术使用,该技术使用启发式技术在您通常使用它们的大约一天中加载应用程序.
FSCTL_FILE_PREFETCH本身没有在MSDN上记录,但通过检查DeviceIoControl在app启动时进行的调用很容易找出参数格式:只需在调试器中启动一个已经在c:\Windows\Prefetch目录中有.pf文件并打破的应用程序DeviceIoControl(或者如果你'使用内核调试器,在NTFS驱动程序收到第一个FSCTL_FILE_PREFETCH时中断).检查传入的缓冲区,并将其与.pf文件和稍后实际使用的范围进行比较.我出于好奇而做了一次,但没有记录细节.
如果你不熟悉DeviceIoControl和IRP_MJ_FILESYSTEM_CONTROL,这里有一些链接查看: