介绍linux系统内核文件cache管理机制

介绍linux系统内核文件cache管理机制

ID:10528708

大小:424.00 KB

页数:0页

时间:2018-07-07

介绍linux系统内核文件cache管理机制_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《介绍linux系统内核文件cache管理机制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、介绍Linux系统内核文件Cache管理机制1、前言  自从诞生以来,Linux就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与Windows、UNIX一起占据了操作系统领域几乎所有的市场份额。特别是在高性能计算领域,Linux已经成为一个占主导地位的操作系统,在2005年6月全球TOP500计算机中,有301台部署的是Linux操作系统。因此,研究和使用Linux已经成为开发者的不可回避的问题了。  下面我们介绍一下Linux内核中文件Cache管理的机制。本文以2.6系列内核为基准,主要讲述工作原理、数据结构和算法,不

2、涉及具体代码。  2操作系统和文件Cache管理  操作系统是计算机上最重要的系统软件,它负责管理各种物理资源,并向应用程序提供各种抽象接口以便其使用这些物理资源。从应用程序的角度看,操作系统提供了一个统一的虚拟机,在该虚拟机中没有各种机器的具体细节,只有进程、文件、地址空间以及进程间通信等逻辑概念。这种抽象虚拟机使得应用程序的开发变得相对容易:开发者只需与虚拟机中的各种逻辑对象交互,而不需要了解各种机器的具体细节。此外,这些抽象的逻辑对象使得操作系统能够很容易隔离并保护各个应用程序。  对于存储设备上的数据,操作系统向应用程序提供的逻辑概念就是"文

3、件"。应用程序要存储或访问数据时,只需读或者写"文件"的一维地址空间即可,而这个地址空间与存储设备上存储块之间的对应关系则由操作系统维护。  在Linux操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从存储设备读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。文件Cache管理指的就是对这些由操作系统分配,并用来存储文件数据的内存的管理。Cache管理的优劣通过两个指标衡量:一是Cache命中率,Cache命中时数据可以直接从内存中获取,不

4、再需要访问低速外设,因而可以显著提高性能;二是有效Cache的比率,有效Cache是指真正会被访问到的Cache项,如果有效Cache的比率偏低,则相当部分磁盘带宽会被浪费到读取无用Cache上,而且无用Cache会间接导致系统内存紧张,最后可能会严重影响性能。  下面分别介绍文件Cache管理在Linux操作系统中的地位和作用、Linux中文件Cache相关的数据结构、Linux中文件Cache的预读和替换、Linux中文件Cache相关API及其实现。  2、文件Cache的地位和作用  文件Cache是文件数据在内存中的副本,因此文件Cache

5、管理与内存管理系统和文件系统都相关:一方面文件Cache作为物理内存的一部分,需要参与物理内存的分配回收过程,另一方面文件Cache中的数据来源于存储设备上的文件,需要通过文件系统与存储设备进行读写交互。从操作系统的角度考虑,文件Cache可以看做是内存管理系统与文件系统之间的联系纽带。因此,文件Cache管理是操作系统的一个重要组成部分,它的性能直接影响着文件系统和内存管理系统的性能。  图1描述了Linux操作系统中文件Cache管理与内存管理以及文件系统的关系示意图。从图中可以看到,在Linux中,具体文件系统,如ext2/ext3、jfs、n

6、tfs等,负责在文件Cache和存储设备之间交换数据,位于具体文件系统之上的虚拟文件系统VFS负责在应用程序和文件Cache之间通过read/write等接口交换数据,而内存管理系统负责文件Cache的分配和回收,同时虚拟内存管理系统(VMM)则允许应用程序和文件Cache之间通过memorymap的方式交换数据。可见,在Linux系统中,文件Cache是内存管理系统、文件系统以及应用程序之间的一个联系枢纽。  3、文件Cache相关数据结构  在Linux的实现中,文件Cache分为两个层面,一是PageCache,另一个BufferCache,每

7、一个PageCache包含若干BufferCache。内存管理系统和VFS只与PageCache交互,内存管理系统负责维护每项PageCache的分配和回收,同时在使用memorymap方式访问时负责建立映射;VFS负责PageCache与用户空间的数据交换。而具体文件系统则一般只与BufferCache交互,它们负责在外围存储设备和BufferCache之间交换数据。PageCache、BufferCache、文件以及磁盘之间的关系如图2所示,Page结构和buffer_head数据结构的关系如图3所示。在上述两个图中,假定了Page的大小是4K,

8、磁盘块的大小是1K。本文所讲述的,主要是指对PageCache的管理。  在Linux内核中,文件的每个数据

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。