是否有可能無限延長對內存位置的讀取(並且允許另一個線程允許在任意超時後完成讀取)?可以無限期地訪問文件映射內存
例如,阻止套接字,我們可以得到一個進程使用read
系統調用時停止:
fd = socket(AF_UNIX, SOCK_DGRAM, 0);
read(fd, buffer, 256);
通常我們不能mmap
插座,但我基本上是一樣的東西發生直接訪問內存時:
int x = *(int *)map;
我知道的技術,使內存訪問需要更長的時間,比如訪問之前使用madvise
頁出內存,但我找得到這個持續的方法無限期。
我已經考慮在文件上使用mmap
,然後「鎖定」該文件,但找不到適當的接口。系統調用似乎不能以這種方式工作。
具體來說,我對FreeBSD x86-64體系結構感興趣,但對其他類Unix系統(如Linux)以及其他體系結構的答案也將不勝感激。
如果你想「阻止」內存訪問,你可以嘗試mmap()在NFS掛載文件,並在這個內存上執行一些真正的隨機訪問。 – wildplasser
如果該文件位於自定義['FUSE' mount](https://en.wikipedia.org/wiki/Filesystem_in_Userspace)上,您可以獲得任意的行爲。 –