1/1910
1假设有一个文件系统,它里面的文件被删除后,当连接到该文件的链接依然存在时,文件的磁盘空间会再度被利用
如果一个新的文件被创建在同一个存储区域或具有同样的绝对路径名,这会产生什么问题
如何才能避免这些问题
Answer:令旧的文件为F1,新文件为F2
用户希望通过存在的链接进入F1,实际上将进入F2
注意,使用的是文件F1的访问保护,而不是F2的
这个问题可以通过确保所有被删除文件的链接也被删除来避免
可以从几个方面来完成:a
保存一份文件所有链接的列表,删除文件时,删除每一个链接b
保留链接,当试图访问一个已删除文件时删除他们c
保存一个文件引用清单(或计数器),只有在文件所有链接或引用被删除后,删除该文件10
2打开文件表被用以保持当前打开文件的信息,操作系统应该为每个用户保持一个单独的表吗
或者只是保持一个包含当前所有用户访问文件的引用的表
如果两个不同程序或用户访问同样的文件,在打开文件表中应包含单独的条目吗
Answer:保持一个中央的打开文件表,操作系统可以执行下列操作,否则不可执行:假设一个当前有一个或一个以上进程访问的文件
如果该文件被删除,那么应该直到所有正在访问文件的进程关闭它时,它才能从磁盘上删除
只要有正在访问文件的进程数目的集中核算,该检查就可以执行
另一方面,如果两个进程正在访问该文件,则需要保持两个单独的状态来跟踪当前位置,其中部分文件正被两个进程访问
这就要求操作系统为两个进程保持单独的条目
2/19在许多情况下,单独的程序可能愿意容忍同时访问一个文件,而不需要获得锁,从而确保文件的相互排斥
其他程序结构也可以确保相互排斥,如内存锁;或其他同步的形式
在这种情况下,强制锁将限制访问文件的灵活性,也可能增加与访问文件相关的开销
4在文件的属性中记录下创建程序的名字,其优点和缺点是什么
(在Macintosh操作系统中就是这样