- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在传统的操作系统中,内核为每个进程打开的文件保持一个读写指针,但可能会产生两种情况:如果服务器故障后重新启动,所持有的状态信息将会全部丢失,而客户可能不知道服务器的故障而继续工作,从而产生不一致的结果;同样,当一个客户程序故樟而重新启动工作时,服务器仍继续持有原状态信息,同时又不易恢复到初态。因此,操作在不依赖于服务器的存储状态时,可以简化文件服务器的设计。因此,对于分布式文件服务器,无状态的文件服务更为优越。 四、原子性 简单的无状态服务器不能满足所有应用的需要。如果多个客户进程同时修改文件,按照一致性约束,服务器必须能够保证一个客户对某数据项所做的完整修改应在另一个客户进程访问这一数据项之前完成。 五、Cache的应用 Cache(高速缓存)的应用非常广泛,其意义在于提高访问效率,减少文件的访问开销。在文件服务中,文件可以在四个位置上存储,就是客户机的主存、客户机硬盘、服务器主存和服务器硬盘(如图所示) 在Cache的设置时必须解决几个重要问题: 首先是Cache中可交换单元的大小,如可以用磁盘块作为单位,也可以将整个文件作为缓冲单位。以磁盘块为单位,可以增加Cache的利用率;以整个文件为单位,可以提高文件的访问速度. 4 2 3 1 客户机 主存 客户机 磁盘 服务器 主存 服务器 磁盘 网络 文件可以存放的位置 其次是Cache中文件或文件块的替换算法, 这些算法在操作系统和体系结构课程中均有论述,常用算法有随机选取、FIFO(先进先出)和LRU(最近最小使用)等。其中最一般方法是将文件放在服务器的硬盘上,此方法最大问题是效率即访问文件非常慢。 Cache设置于何处? 第一种方法是设置在服务器的主存中; 第二种是将其设置在客户机的磁盘中; 第三种是将其设置在客户机的内存中。 第一种方法直接、简单,对于客户机是透明。完全由服务器来处理Cache与磁盘的数据一致性和同步关系,且可对客户透明,可保持主存和磁盘拷贝同步,不产生一致性问题。但这种方法在网络上仍然有大量消息需要传送。 第二种方法可以消除大量的网络传输,对于大量数据的访问有优势,但对于少量数据反而不如第一种方法,此种方法还存在Cache的一致性问题。 第三种方法既可以消除大量的网络传输,又可以获得较高的性能。但是这种方法需要系统给予必须的支持(如内存锁定),若无此功能,用户是无法控制数据是否处于内存之中的。与第二种方法一样,必须考虑Cache的一致性问题。 六、Cache的一致性 值得注意的是,在计算机中任何设计方法都是“有得必有失”,比如,Cache的设置带来了访问的高效性,同时又带来了访问数据的一致性问题。 解决一致性问题的一般方法有写穿透(WriteThrough),也就是当客户机程序要修改文件时,直接修改服务器文件,而读文件时直接读取Cache中的文件。但是,如果当客户机1上的A进程读取文件F后暂时挂起,另一个客户机上的进程B此时修改文件F,当进程A重新执行时,会直接使用其Cache中的数据,那么两个客户机进程使用的数据便是不一致的。 解决这一问题,可以让Cache管理程序定期检查服务器是否已经修改,可以通过比较Cache的读取时间和服务器上的文件最后修改时间得知其修改状况。如果时间一样,则Cache可用,否则必须从服务器中重新读取数据。 写穿透算法只有助于读文件时提高性能:对于写文件,则没有任何性能收益。许多设计人员认为这是不能接受的,于是提出一种修改方案,就是客户程序在写文件时只在Cache中做记号,过一段时间(如30s)之后,再将这些有记号的数据一起写人服务器,这种方法叫做延迟写(Delayed Write)。 但是许多程序都产生一些临时文件,在短时间内先写、后读,最后删除,假如这个时间段小于延迟写方法中的写时间段,那么,这些文件就不会写入服务器,这样,对于临时文件既不必使用服务器,也提高了访问效率。 当然,延迟写带来的问题是语义问题。因为若有另一进程读文件,则读取文件的正确性取决于读的时刻。因此,延迟写策略是在性能和清晰语义之间的权衡。 沿此思路就有了使用--
文档评论(0)