问答题 为了加快文件目录的查找,许多操作系统为用户强加了两个文件操作系统调用:OPEN系统调用和CLOSE系统调用。但是在某些操作系统中,不需要打开和关闭文件操作用户也可以进行文件读/写。请问在两类系统中,读和写文件的系统调用分别应该包含哪些参数?
【正确答案】
【答案解析】支持文件打开和关闭的文件系统参照《计算机考研考点精讲及复习指导》一书的对应章节的“考点精讲”。
在不支持文件打开和关闭的文件系统中,读/写文件的系统调用参数包括:①文件名;②文件读/写缓冲地址;③文件读/写长度;④文件读/写指针位置。 [解析] 在文件系统实现上存在许多选择,OPEN和CLOSE并不是唯一的实现选择。OPEN和CLOSE存在的唯一理由是整数比较的开销小于字串匹配,但是有许多没有实现OPEN/CLOSE接口的操作系统,其性能并没有显著的下降(这个性能问题可以进一步讨论,读者可以继续考虑这样的实现方法)。
是否支持OPEN/CLOSE接口的问题本质上是有状态和无状态服务器问题。支持OPEN/CLOSE接口的操作系统实现了一个有状态的服务器——文件系统,文件系统维持文件的操作状态,因此调用者无需提供状态参数。而不支持OPEN/CLOSE接口的操作系统则实现了一个无状态服务器,因此需调用者自行维护文件状态,在调用时必须提供类似于“读/写指针位置”的状态信息。