Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1052686
  • 博文数量: 836
  • 博客积分: 43880
  • 博客等级: 大将
  • 技术积分: 5485
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-20 17:36
文章分类

全部博文(836)

文章存档

2011年(1)

2008年(835)

我的朋友

分类: LINUX

2008-08-20 18:26:24


1、前言 自从诞生以来,Linux就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与Windows、UNIX一起占据了操作系统领域几乎所有的市场份额。特别是在高性能计算领域,Linux已经成为一个占主导地位的操作系统,在2005年6月全球TOP500计算机中,有301台部署的是Linux操作系统。因此,研究和使用Linux已经成为开发者的不可回避的问题了。 下面我们介绍一下Linux内核中文件Cache管理的机制。本文以2.6系列内核为基准,主要讲述工作原理、数据结构和算法,不涉及具体代码。 2操作系统和文件Cache管理 操作系统是计算机上最重要的系统软件,它负责管理各种物理资源,并向应用程序提供各种抽象接口以便其使用这些物理资源。从应用程序的角度看,操作系统提供了一个统一的虚拟机,在该虚拟机中没有各种机器的具体细节,只有进程、文件、地址空间以及进程间通信等逻辑概念。这种抽象虚拟机使得应用程序的开发变得相对容易:开发者只需与虚拟机中的各种逻辑对象交互,而不需要了解各种机器的具体细节。此外,这些抽象的逻辑对象使得操作系统能够很容易隔离并保护各个应用程序。 对于存储设备上的数据,操作系统向应用程序提供的逻辑概念就是"文件"。应用程序要存储或访问数据时,只需读或者写"文件"的一维地址空间即可,而这个地址空间与存储设备上存储块之间的对应关系则由操作系统维护。 在Linux操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从存储设备读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。文件Cache管理指的就是对这些由操作系统分配,并用来存储文件数据的内存的管理。Cache管理的优劣通过两个指标衡量:一是Cache命中率,Cache命中时数据可以直接从内存中获取,不再需要访问低速外设,因而可以显著提高性能;二是有效Cache的比率,有效Cache是指真正会被访问到的Cache项,如果有效Cache的比率偏低,则相当部分磁盘带宽会被浪费到读取无用Cache上,而且无用Cache会间接导致系统内存紧张,最后可能会严重影响性能。 下面分别介绍文件Cache管理在Linux操作系统中的地位和作用、Linux中文件Cache相关的数据结构、Linux中文件Cache的预读和替换、Linux中文件Cache相关API及其实现。 2、文件Cache的地位和作用 文件Cache是文件数据在内存中的副本,因此文件Cache管理与内存管理系统和文件系统都相关:一方面文件Cache作为物理内存的一部分,需要参与物理内存的分配回收过程,另一方面文件Cache中的数据来源于存储设备上的文件,需要通过文件系统与存储设备进行读写交互。从操作系统的角度考虑,文件Cache可以看做是内存管理系统与文件系统之间的联系纽带。因此,文件Cache管理是操作系统的一个重要组成部分,它的性能直接影响着文件系统和内存管理系统的性能。 图1描述了Linux操作系统中文件Cache管理与内存管理以及文件系统的关系示意图。从图中可以看到,在Linux中,具体文件系统,如ext2/ext3、jfs、ntfs等,负责在文件Cache和存储设备之间交换数据,位于具体文件系统之上的虚拟文件系统VFS负责在应用程序和文件Cache之间通过read/write等接口交换数据,而内存管理系统负责文件Cache的分配和回收,同时虚拟内存管理系统(VMM)则允许应用程序和文件Cache之间通过memorymap的方式交换数据。可见,在Linux系统中,文件Cache是内存管理系统、文件系统以及应用程序之间的一个联系枢纽。
1 2 3 4 下一页>>


下载本文示例代码
阅读(293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~