Solaris文件系统缓存深度解析
1. 文件缓存简介
文件系统的一项关键特性是其缓存文件数据的能力。在传统Unix系统中,文件系统缓存是在I/O子系统中实现的,通过块缓存来保存最近读写的块副本。这个块缓存位于磁盘之上,用于缓存与物理磁盘扇区相对应的数据。
当一个进程读取文件时,它会向操作系统发出读取系统调用。文件系统需要通过查找文件的直接/间接块中的块号来确定对应的磁盘块,然后向I/O系统请求该块。第一次读取时,I/O系统会从磁盘中获取该块;后续的读取则可以直接从块缓冲缓存中获取磁盘块。不过,即使磁盘块已经缓存在内存中,每次进行缓存读取时,仍需要调用文件系统并查找物理块号。
传统的缓冲缓存大小通常由内核配置参数静态设置,更改其大小需要重新构建内核并重启系统。
2. Solaris页面缓存
Solaris引入了一种新的文件系统数据缓存方法——页面缓存。该缓存于1985年在SunOS 4的虚拟内存重写过程中开发,并被System V Release 4 Unix采用,其衍生版本也应用于Linux和Windows NT。
页面缓存与旧的缓存方法有两个主要区别:
- 动态大小 :它可以使用应用程序未使用的所有内存。
- 缓存文件块 :它缓存的是文件块而非磁盘块,是一种虚拟文件缓存,而非物理块缓存。虚拟文件缓存允许操作系统通过简单查找文件引用和偏移量来检索文件数据,比旧方法更高效。
当Solaris进程首次读取文件时,文件数据会以页面大小的块通过文件系统从磁盘读取到内存中,并返回给用户。下次读取相同的文件数据段
超级会员免费看
订阅专栏 解锁全文
67

被折叠的 条评论
为什么被折叠?



