(计算机系统结构专业论文)网络专用服务器的专用linux系统开发与设计.pdf_第1页
(计算机系统结构专业论文)网络专用服务器的专用linux系统开发与设计.pdf_第2页
(计算机系统结构专业论文)网络专用服务器的专用linux系统开发与设计.pdf_第3页
(计算机系统结构专业论文)网络专用服务器的专用linux系统开发与设计.pdf_第4页
(计算机系统结构专业论文)网络专用服务器的专用linux系统开发与设计.pdf_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

旦鳖童旦竖堑墨塑妻旦! i ! 坚墨篁 中文摘要 f 目前,国内的i n t e m e t 应用正迈向一个繁荣和务实的阶段。“政府上网”、“企 业上网”、“学校上网”在社会上掀起了一个接一个的网络应用热潮。网络专用服 务器针对的用户群主要是中小型的企业、中小学校和政府机关。网络服务器提供 的服务包括邮件服务,文件服务,w e b 服务,动态主机配置服务,代理服务, 域名服务,流量控制等。 作为一种新兴的,快速发展的操作系统,可以预料的是,随着l i n u x 的发展, 在服务器操作系统方面的竞争将进一步加剧,而l i n u x 的高效、可靠和稳定以及 开放式源码的思想将在服务器高端、低端市场上和老牌服务器操作系统一争高 下。在我们的网络专用服务器的开发和设计中,我们决定采用经过针对专用服务 进行改造的l i n u x 系统。广厂一 本文详细介绍了针对网络专用服务器的专用l i n u x 系统的设计,对l i n u x 文 件系统进行了详尽的解析,包括v f s 的实现,b u f f e 咚a c h e 的作用等:并 对块设备驱动程序在内核中各个接口进行了分析:解析了内核接收和发送数据包 的全过程以及流量控制在内核中的全过程;并对l i n u x 系统的一些特殊的机制 如等待队列,任务队列,时钟中断等进行了详细的解释。 在对l i n u x 的文件系统进行详细分析的基础了,提出了文件系统的改造的设 计,针对e m a i l 、w e b 服务器小文件操作多的特点,我们引入了n v r a m 卡,通 过修改l i n u x 中文件系统的实现算法,改变了文件系统的读写的数据流程。俄 n v r a m 卡作为一种介于v f s 和硬盘之间的一种可掉电保存的数据缓冲,从而 提高了网络专用服务器器上对小文件的读写速率。 作为网络专用服务器,我们必须根据不同的用户或服务类型提供不同的带 宽。l i n u x 内核中虽然有了对q o s 的支持,但其处理接口是在网络接口发出数据 包的处理流程中,只能对数据包发出进行流量控制;而作为专用网络服务器,有 许多目的为服务器的数据包。因此,j 我们对q o s 的功能进行了一些修改,添加 了进行网络接口输入数据包的流量控制功能,在l i n u x 内核中实现了自定义的队 列规则i n c o n t r o l ,最大程度的利用了内核中有关q o s 的各个模块的功能。同时, 网络专用服务器的专用l i n u x 系统 也实现了与i p 层数据包输入控制模块的接口。使我们能对接收的数据包按照我 们的需要进行流量控制。 关键词:网络专用服务器、文件系统、流量控制。 网络专用服务器的专用l i n u x 系统 a bs t r a c t n o w , t h ed e v e l o p m e n to fi n t e m e t i nc h i n ai s e n t e r i n g ap r o s p e r o u s p h a s e “s u r fi nt h ei n t e r n e to fg o v e r n m e n t ,e n t e r p r i s ea n ds c h o o l r a i s e u p s u r g eo f i n t e r n e ti nt h es o c i e t y t h eu s e so fn e t w o r kd e d i c a t e ds e r v e ri s m i d d l i n gs c a l eo r m i n i a t u r ee n t e r p r i s e ,s c h o o la n dt h ed e p a r t m e n to fg o v e r n r n e n t n e t w o r kd e d i c a t e d s e r v e rp r o v i d em a i ls e r v i c e ,f i l es e r v i c e ,w e bs e r v i c e ,d y n a m i ch o s tc o n f i g u r a t i o n p r o t o c o ls e r v i c e , p r o x ys e r v i c e ,d o m a i nn a m es e r v i c e ,e t c a san e w t h r i f t i l y , f a s tg r o w i n go p e r a t i n gs y s t e m w ec a na n t i c i p a t et h a tw i t h t h ed e v e l o p m e n to fl i n u x ,t h ec o m p e t i t i o no f o p e r a t i n gs y s t e mo f s e r v e rw i l lb e m o r e t h ec h a r a c t e r i s t i co f h i g he f f i c i e n c y , c r e d i b i l i t ya n ds t a b i l i z a t i o na l s ot h eo p e n s o u r c ec o d ei d e aw i l lh e l pl i n u xt oc o m p e t ew i t ho l ds e r v e ro p e r a t i n gs y s t e mi nt h e m a r k e t i nt h i sp a p e r , w ei n t r o d u c et h ed e s i g no fd e d i c a t e dl i n u xi nd e t a i l ,w h i c hi sf o r t h en e t w o r kd e d i c a t e ds e r v e r a n da n a l y s i st h ef i l es y s t e m ,i n c l u d ev i s u a lf i l es y s t e m a n dt h ee f f e c to fb u f f e rc a c h ea n ds oo n ;a l s oe x p l a i nt h ei n t e r f a c eo fb l o c kd e v i c e d r i v e ri nk e r n e l m a k ec l e a rt h ep r o c e d u r eo f s e n d i n ga n dr e c e i v i n gp a c k e to fk e r n e l a n dt h ei m p l e m e n t a t i o no ft r a f e cc o n t r 0 1 t h es p e c i a lm e c h a n i s mi nl i n u xs u c ha s w a i tq u e u e ,t a s kq u e u e ,t i m e i n t e r r u p ti sa l s oe x p l a i n e d a f t e ra n a l y z i n gt h ef i l es y s t e mo fl i n u xa tl a r g e ,w eb r i n gf o r w a r dt h ed e s i g n o fm o d i f y i n go ff i l e s y s t e m s i n c em a n yl i t t l e f i l e i sc r e a t e dd u r i n gt h es e r v i c eo f e m a i la n df i l es e r v i c e ,w ei n t r o d u c et h en o nv o l a t i l er a n d o ma c c e s sr a m ,b y m o d i f y i n g t h ea r i t h m e t i co ff i l es y s t e m ,c h a n g i n gt h ed a t af l o wo ff i l e s y s t e m t h e nan o n v o l a t i l ec a c h ei sb e t w e e nt h ev i s u a lf i l es y s t e ma n dt h eh a r dd i s k ,t h e na d v a n c et h e s p e e d o f r e a d i n ga n dw r i t i n g l i t t l ef i l ei nt h en e t w o r kd e d i c a t e ds e r v e r a sn e t w o r kd e d i c a t e ds e r v e r , w em u s t p r o v i d ed i f f e rb a n d w i d t hf o rd i f fu s e r o r t h ed i f f t y p eo fs e r v i c e t h o u g h t h e r ei st h es u p p o r tt h eq u a l i t yo fs e r v i c ei nt h e k e r n e lo fl i n u x ,i to n l yc a l lh a v ee f f e c to ns e n d i n gp a c k e t f o rn e t w o r kd e d i c a t e d s e r v e r ,t h e r ea r em a n yp a c k e tw h i c h d e s t i n a t i o na d d r e s si si t s ow eh a v et om o d i f y i i i 网络专用服务器的专用l i n u x 系统 t h ef e a t u r eo fq u a l i t yo fs e r v i c e ,a d dt h et r a f f i cc o n t r o li n r e c e i v i n gp a c k e t s w e i m p l e m e n tt h e i n c o n t r o ”q u e u ew h i c hi sd e f i n e db yo u r s e l v e s ,a l s oa c h i e v et h e i n t e r f a c eo ft r a f f i cc o n t r o li nr e c e i v i n gp a c k e tm o d u l e t h e nw ec a n c o n f i g u r et r a f f i c c o n t r o li nr e c e i v i n g p a c k e ta sw e n e e d e d k e y w o r d s :n e t w o r kd e d i c a t e ds e r v e r f i l es y s t e m t r a f f i cc o n t r 0 1 一一 塑鳖童旦竖箜矍塑童旦! i ! 坚丕堑 第一章引言 1 1 网络专用服务器概述 网络专用服务器针对的用户群主要是中小型的企业、中小学校和政府机关。 这些单位一般缺乏专门的计算机管理人员,经费使用上受到一定的限制,需要的 网络服务的种类比较少( 通常就是e m a i l 服务、w e b 服务、代理服务) 。网络专 用服务器的低价格、免维护、高性能的特点正好适合这些用户的需要。 目前,国内的i n t e r n e t 应用正迈向一个繁荣和务实的阶段。“政府上网”、 “企业上网”、“学校上网”在社会上掀起了一个接一个的网络应用热潮。 但是,有关统计资料表明,我国现有企业的总数不少于i 0 0 0 万个,其中大 中型企业只有5 0 0 0 个,而年销售收入在5 0 0 0 万元以上的企业不超过1 6 万个。 尽管我国企业的上网热情不断高涨,域名注册数增长迅速,但目前能够拥有自己 的电子商务站点的企业数目还不到总数的0 8 ,建立了企业内部网的就更是凤 毛麟角。 为了改变这种局面,作为“企业上网工程”承办方的中国电信数据通信局和 国家经贸委经济信息中心明确表示,“企业上网工程”的目标是:2 0 0 0 年在全国 范围内实现1 0 0 万家小型企业,1 万家中型企业,1 0 0 家大型企业上网,企业上 网数在3 年内每年递增1 0 0 。 以上这些数据表明,我国将迎来网络发展的又一个高潮。由于网络专用服 务器具有性能高,易于使用维护的特点,它在中小型企业服务器市场上将占据一 个比较大的份额。以我国有中小型企业、学校、政府机关1 0 0 0 万家计,如果有 1 0 的单位上网,每家平均购买两台网络专用服务器,将有2 0 0 万台的市场容量。 以每台网络专用服务器平均售价i 万元计算,这将是一个值2 0 0 亿元的市场。 目前国内还没有厂商生产类似产品。但在国外,尤其是美国近年已经出现 很多生产网络专用服务器的公司,其中比较著名的有c o b a l t ,e n c a n t o ,e s o f t 。 f r e e g a t e 。由于这类产品具有使用方便、维护简单、性能可靠的优点,在美国市 场的销路很好。目前c o b a l t 公司的q u b e2 7 0 0 售价为1 2 4 9 美元。e s o f t 公司的 i n s t a c a t ec o m m u n i c a t i o n s 售价为3 9 9 5 美元。i n t e r n e ta p p l i c a n c e 公司的 一一一 旦竺妻旦堡堑墨盟主旦! i 翌坚墨笙 s e s l 5 0 0 售价为3 0 0 0 美元。可以说,这样的售价是有相当好的利润的。 网络专用服务器硬件一般采用标准的商用部件加上一些自主开发的板卡 服务器软件一般使用经修改、裁剪后的自由软件。 i 2l i n u x 操作系统介绍 随着时代的发展,计算机技术在各行各业中得到了广泛的应用。操作系统作 为各种应用软件的底层平台,有着十分重要的作用和地位。操作系统的稳定性、 安全性和效率直接影响了应用软件的使用。目前常用的商业操作系统有微软的 d o s 、w i n d o w s9 8 、w i n d o w sn t ,s c o 公司的s c ou n i x ,s u n 公司的s o l a r i so s , 苹果公司的m a co s 等等。虽然它们都是比较成熟的产品,而且它们稳定性都有 保证,但是它们都是国外的产品,我们国家不了解产品的技术细节。因此,当使 用这些操作系统特别是系统与i n t e r n e t 相连接时,我们不能保证操作系统是否 会有泄露一些重要的信息,也不能保证系统是否会存在安全漏洞。i n t e l 公司推 出的高性能处理器芯片p m 允许从因特网上读出其芯片编号,还有报道披露,微 软的w i n d o w s 系列操作系统都为美国国家安全局提供了“后门”。这些事情让人 们开始重视自己正在使用的系统的安全性问题。我们国家已经要求某些政府重要 部门的连网机器不能使用微软的操作系统和i n t e l 的咖处理器芯片,其原因是 这些国外的商业操作系统对我们看来就像一个庞大的黑箱子。在这种情况下,符 合g n u 、g p l 的l i n u x 操作系统公开的源码对我们说来无疑是个很好的系统,因 为我们可以通过源码了解l i n u x 操作系统的实现机制从而保证它没有安全“后 门”的存在,也因为在该操作系统上已经有了很多成熟的应用能够方便地使用。 国内各个系统软件开发上对l i n u x 的热情膨胀起来,中文化的l i n u x 有了t u r b o l i n u x 、红旗l i n u x 等等,并且它们的使用范围也在逐渐扩展。 随着l i n u x 不断发展,可以预料的是,在服务器操作系统方面的竞争将进一 步加剧,而l i n u x 的高效、可靠和稳定以及开放式源码的思想将在服务器高端、 低端市场上和老牌服务器操作系统一争高下。 一 囹鳖童旦竖箜墨盟主旦! i 呈竖丕竺 l i n u x 在产品方面的优势 夺可应用于多种硬件平台。l i n u x 已经被移植到多种硬件平台,这对受开销、 时间限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发然 后移植到具体的硬件上,加快了软件与硬件的开发过程。 夺l i n u x 可以随意地配置不需要任何的许可证或商家的合作关系。 夺它是免费的,源代码可以得到。这是最吸引人的。毫无疑问,这会节省大量 的开发费用。 夺它本身内置网络支持。 夺l i n u x 的高度模块化使添加部件非常容易。 夺l i n u x 在台式机上的成功和l i n u x 在嵌入式系统中的辉煌前景。 因此,我们决定在网络专用服务器上使用经过我们改造的l i n u x 系统。 1 3 适合于网络专用服务器的专用l i n u x 系统。 通用服务器为了对不同应用都能提供一个比较好的性能,在系统设计时作了 很多折衷考虑。因此某种特定应用往往不能利用通用服务器的全部资源以达到最 佳的性能。 我们的专用服务器则采用一种与通用服务器截然不同的做法:尽最大可能 优化系统的各个方面,使单一应用在该平台上能获得最好的性价比。 1 文件系统的改造 在文件系统的改造中,针对e m a i l 、w e b 服务器小文件操作多的特点,我们 引入了n v r a m 卡,n v r a m 的全名是n o n v o l a t i l er a n d o ma c c e s sm e m o r y ,一般电 脑使用的r a m ,在没有电源的时候资料就会丢失,但是如果要在掉电以后保存资 料,下次再开机时仍然能够使用这些资料,就必须使用n v r a m 。n v r a m 的特点就 是即使在电源中断时,也能保存储存的资料。 同时,通过修改l i n u x 中文件系统的实现算法,改变了文件系统的读写的数 据流程,提高了网络专用服务器上的文件系统性能。 2 网络层的改造。 我们网络服务器上运行了诸如m a i l ,代理服务器,文件服务器等服务。作 网络专用服务器的专用l i n u x 系统 为网络专用服务器,我们必须根据不同的用户提供不同的带宽。这就是 q o s ( q u a l i t yo fs e r v i c e ) q o s 是网络的一种安全机制。在正常情况下并不需要q o s ,但是当出现对精 心设计的网络也能造成性能影响的事件时就十分必要。当网络过载或拥塞时, q o s 能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。 l i n u x 内核中已经支持大量的网络协议,除了t c p i p u d p 协议栈之外,l i n u x 内核中已经加上了诸如f i r e w a l l ,q o s ,隧道等的支持。 l i n u x 内核中虽然有了对q o s 的支持,但其处理接口是在网络接口发出数据 包的处理流程中,只能对数据包发出进行流量控制;而作为专用网络服务器,我 们有许多进到服务器的数据。因此,我们应对q o s 的功能进行了一些修改,添加 对进行网络接口输入数据包的流量控制功能。 网络专用服务器的专用l i n u x 系统 第二章相关技术基础 2 1 l i n u x 下文件系统 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在 磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。 文件系统中的文件包含了数据的集合:一个文件系统不仅保存它包括的文件 的数据,也保存文件系统的结构。它保存了l i n u x 用户和进程看到的所有的信息, 例如文件、目录、软链接、文件保护信息等等。另外,它必须安全地保存这些信 息,操作系统的基本的一致性依赖于它的文件系统。没有人可以使用一个随机丢 失数据和文件的操作系统 2 1 1 虚拟文件系统( v f s ) l i n u x 的最重要特征之一就是支持多种文件系统。v f s 使得l i n u x 可以支持 多个不同的文件系统,v f s 向文件系统提供通用的接口。由于软件将l i n u x 文件 系统的所有细节进行了转换,所以l i n u x 核心的其它部分及系统中运行的程序将 看到统一的文件系统。 虚拟文件系统是物理文件系统与服务之间的一个接口层,对l i n u x 的每个 文件系统的所有细节进行抽象,使得不同的文件系统在l i n u x 内核以及系统中运 行的其他进程看来,都是相同的。严格说来,v f s 并不是一种实际的文件系统。 它只存在于内核中,不存在于任何外存空间。v f s 在系统启动时建立,在系统关 闭时消亡。 l i n u x 的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。 当每一个文件系统初始化的时候,它自身向v f s 登记。这发生在系统启动 操作系统初始化自身的时候。真实的文件系统自身建立在内核中或者是作为可加 载的模块。文件系统模块在系统需要的时候加载,所以,如果v f a t 文件系统用 网络专用服务器的专用l i n u x 系统 一- _ - _ _ _ - _ _ _ _ _ ,一 核心模块的方式实现,那么它只有在一个v f a t 文件系统安装的时候才加载。当 个块设备文件系统安装的时候,( 包括r o o t 文件系统) ,v f s 必须读取它的超 级块。每一个文件系统类型的超级块的读取例程必须找出这个文件系统的拓扑结 构,并把这些信息映射到一个v f s 超级块的数据结构上。v f s 保存系统中安装 的文件系统的列表和它们的v f s 超级块列表。每一个v f s 超级块包括了文件系 统的信息和完成特定功能的例程的指针。例如,表示一个安装的e x t 2 文件系统 的超级块包括个e x t 2 相关的i n o d e 的读取例程的指针。这个e x t 2i n o d e 读取 例程,象所有的和文件系统相关的i n o d e 读取例程一样,填充v f si n o d e 的域。 每一个v f s 超级块包括文件系统中的一个v f si n o d e 的指针。 虚拟文件系统的设计目标是为l i n u x 用户提供快速且高效的文件访问服务。 同时它必须保证文件及其数据的正确性和安全性。这两个目标相互间可能存在冲 突。当安装一个文件系统并使用时,l i n u xv f s 为其缓存相关信息。此缓存中数 据在创建、写入和删除文件与目录时如果被修改,则必须更新文件系统中对应内 容。如果能够在运行核心内看到文件系统的数据结构,那么就可以看到那些正 被文件系统读写的数据块。描叙文件与目录的数据结构被不断的创建与删除而设 备驱动将不停地读取与写入数据。这些缓存中最重要的是b u f f e rc a c h e ,它被集 成到独立文件系统访问底层块设备的例程中。当进行块存取时数据块首先将被放 入b u f f e rc a c h e 里并根据其状态保存在各个队列中。此b u f f e rc a c h e 不仅缓存数 据而且帮助管理块设备驱动中的异步接口。 v f s 使l i n u x 同时安装、支持许多不同类型的文件系统成为可能。v f s 拥 有关于各种特殊文件系统的公共接口,如超级块、i n o d e 、文件操作函数入口等。 特殊文件系统的细节问题统一由v f s 的公共接口来翻译,它们对系统内核和拥 护进程来说是透明的。 v f s 的功能包括: 夺记录可用的文件系统的类型。 夺将设备同对应的文件系统联系起来。 夺处理一些面向文件的通用操作。 夺涉及到针对文件系统的操作时,v f s 把它们映射到与控制文件、目录以 及i n o d e 相关的物理文件系统。 当进程发布一个面向文件的的系统调用时,内核将调用v f s 相应的函数, 网络专用服务器的专用l i n u x 系统 这个函数处理一些与物理结构无关的操作,并且把它重定向为真实文件系统中相 应的函数调用。 图2 1v f s 文件系统在l i n u x 内核中的结构 所有的l i n u x 文件系统使用一个共同的b u f f e rc a c h e 来缓存底层的设备的数 据缓冲区,这样可以加速对于存放文件系统的物理设备的访问,从而加快对文件 网络专用服务器的专用l i n u x 系统 系统的访问。这个b u f f e rc a c h e 独立于文件系统,集成在l i n u x 核心分配、读和 写数据缓冲区的机制中。让l i n u x 文件系统独立于底层的介质和支撑的设备驱动 程序有特殊的好处。所有的块结构的设备向l i n u x 核心登记,并表现为一个统一 的,以块为基础的,通常是异步的接口当真实的文件系统从底层的物理磁盘读取 数据的,引起块设备驱动程序从它们控制的设备上读取物理块。在这个块设备接 口中集成了b u f f e rc a c h e 。当文件系统读取了块的时候,它们被存放到了所有的 文件系统和l i n u x 核心共享的全局的b u f f e rc a c h e 中。其中的b u f f e r ( 缓冲区) 用 它们的块编号和被读取设备的一个唯一的标识符来标记。所以,如果相同的数据 经常需要,它会从b u f f e rc a c h e 中读取,而不是从磁盘读取( 会花费更多时间) 。 一些设备支持超前读( r e a da h e a d ) ,数据块会预先读取,以备以后可能的读取。 当系统的进程访问目录和文件的时候,调用系统例程,游历系统中的v f s i n o d e 。例如在一个目录中输入l s 或者c a t 一个文件,让v f s 查找代表这个文件 系统的v f si n o d e 。应为系统中的每一个文件和目录都用一个v f si n o d e 代表, 所以一些i n o d e 会被重复访问。这些i n o d e 保存在i n o d ec a c h e ,这让对它们的访 问更快。如果一个i n o d e 不在i n o d ec a c h e 中,那么必须调用一个和文件系统相关 的例程来读取适当的i n o d e 。读取这个i n o d e 的动作让它被放到了i n o d ec a c h e , 以后对这个i n o d e 的访问会让它保留在c a c h e 中。较少使用的v f si n o d e 会从这 个高速缓存中删除。 v f s 也保存了一个目录查找的缓存,所以一个常用的目录的i n o d e 可以快速 找到。作为一个试验,试着对于你最近没有列表的目录列表。第一次你列表的时 候,你会注意到短暂的停顿,当时第二次你列表的时候,结果会立即出来。目录 缓存本身不存储目录里的i n o d e ,这是i n o d ec a c h e 负责的,目录缓存只是存储目 录项目全称和它们的i n o d e 编号。 p a g ec a c h e 用来加快对磁盘上映像和数据的访问。它用于缓存文件的逻辑 内容,一次一页,并通过文件和文件内的偏移来访问。 2 1 2b u f f e r _ c a c h e 当使用安装的文件系统的时候,它们会对块设备产生大量的读写数据块的请 - 8 旦丝主旦望墨墨盟童旦! ! ! 坚丕笙 求。所有的块数据读写的请求都通过标准的核心例程调用,以b u f f e rh e a d 数据 结构的形式传递给设备驱动程序。这些数据结构给出了设备驱动程序需要的所有 信息:设备标识符唯一标识了设备,块编号告诉了驱动程序读去哪一块。所有的 块设备被看成同样大小的块的线性组合。为了加速对于物理块设备的访问,l i n u x 维护了一个块缓冲区的缓存。系统中所有的块缓冲区动保存在这个b u f f e rc a c h e , 甚至包括那些新的、未使用的缓冲区。这个缓存区被所有的物理块设备共享:任 何时候缓存区中都有许多块缓冲区,可以属于任何一个系统块设备,通常具有不 同的状态。如果在b u f f e rc a c h e 中有有效的数据,这就可以节省系统对于物理设 备的访问。任何用于从向块设备读取写入数据的块缓冲区都进入这个b u f f e r c a c h e 。随着时间的推移,它可能从这个缓存区中删除,为其它更需要的缓冲区 让出空间,或者如果它经常被访问,就可能一直留在缓存区中。 这个缓存区中的块缓冲区用这个缓冲区所属的设备标识符和块编号唯一标 识。这个b u f f e rc a c h e 由两个功能部分组成。第一部分是空闲的块缓冲区列表。 每一个同样大小的缓冲区( 系统可以支持的) 一个列表。系统的空闲的块缓冲区 当第一次创建或者被废弃的时候就在这些列表中排队。当前支持的缓冲区大小是 5 1 2 、1 0 2 4 、2 0 4 8 、4 0 9 6 和8 1 9 2 字节。第二个功能部分是缓存区( c a c h e ) 本身。 这是一个h a s ht a b l e ,是一个指针的向量表,用于链接具有相同h a s hi n d e x 的 b u f f e r 。h a s hi n d e x 从数据块所属的设备标识符和块编号产生出来。图9 7 显示了 这个h a s ht a b l e 和一些条目。块缓冲区要么在空闲列表之一,要么在b u f f e rc a c h e 中。当它们在b u f f e rc a c h e 的时候,它们也在l r u 列表中排队。每一个缓冲区类 型一个l r u 列表,系统使用这些类型在一种类型的缓冲区上执行操作。 不论何时文件系统需要从它的底层的物理设备读取一个缓冲区的时候,它都 试图从b u f f e rc a c h e 中得到一个块。如果它不能从b u f f e rc a c h e 中得到一个缓冲区, 它就从适当大小的空闲列表中取出一个干净的缓冲区,这个新的缓冲区会进入到 b u f f e rc a c h e 中。如果它需要的缓冲区已经在b u f f e rc a c h e 中,那么它可能是也可 能不是最新。如果它不是最新,或者它是一个新的块缓冲区,文件系统必须请求 设备驱动程序从磁盘上读取适当的数据块。 象所有的高速缓存一样,b u f f e rc a c h e 必须被维护,这样它才能有效地运行, 并在使用b u f f e rc a c h e 的块设备之间公平地分配缓存条目。l i n u x 使用核心守护进 程b d f l u s h 在这个缓存区上执行大量的整理工作,不过另一些是在使用缓存区的 网络专用服务器的专用l i n u x 系统 过程中自动进行的。 数据结构 1 b u f f e rc a c h e 的组成: 1 s t r u c tb u f f e r h e a d + + h a s h _ t a b l e 2 四个以b u f f e rh e a d 为接点的链表组成。 夺s t a t i cs t r u c tb u f f e r _ h e a d + l r u _ l i s t 口,最近最少使用链表。正在使用 的缓冲区链表。 夺s t a t i cs t r u c tb u f f e r _ h e a d + f r e el i s t ,空闲链表。回收来自l r u _ l i s t 的 b u f f e r , 从u n u s e _ l i s t 中得到b u f f e r _ h e a d 和b u f f e r 的封装。 夺按b u f f e r 的长度分成5 个链表( 5 1 2 ,1 0 2 4 ,2 0 4 8 ,4 0 9 6 ,8 1 9 2 ) : 夺s t a t i cs t r u c tb u f f e r _ h e a d + u n u s e dl i s t 未使用链表:u n u s e dl i s t ,只 有b u f f e r _ h e a d 接点。其是从内存中申请到的未使用的 b u f f e r _ h e a d ,r e c o v e r r e u s a b l e _ b u f f e r _ h e a d s o 从r e s u el i s t 中恢复 到b u f f e r _ h e a d 。 夺s t a t i cs t r u c tb u f f e r h e a d + r e s u e _ l i s t上次使用完毕后已经释放, 准备重新使用的链表,只有b u f f e r _ h e a d 接点。其是接收从服 务中返还的b u f f e r _ h e a d ,这些b u f f e r _ h e a d 使用了数据的传输而申 请的,在数据传输完毕,返回前,e n d _ r e q u e s t 要访问这些 b u f f e r _ h e a d ,所以不能直接挂到u n u s e d _ l i s t 下。 这四种都是b u f f e rh e a d 结构,只有bd a t a 的不同。 3 、s t r u c tb u f f e r _ _ h e a d u _ l o n gb _ b l o c k n r :本缓冲区对应的块号 k d e vtbd e v ;占有此缓冲区的设备 k d e v _ tr _ d e v ; r e a ld e v i c e u _ l o n gb _ r s e c t o r ;该缓冲区在磁盘上对应扇区号。 b _ s t a t e ,缓冲区状态 b _ b o u n t ;使用本缓冲区的用户数 b _ s i z e ;块长度 一 噜 赡 鸣|i孳|咄咄 网络专用服务器的专用l i n u x 系统 c h a r + b _ d a t a ;指向数据块的p t r 图2 - 2b u f f e r _ h e a d 的链表图 5 流程解释 要获得一个缓冲区用于读写, 从b u f f e rh e a d 的h a s h 表中寻找设备号和块号的缓冲区,如以 分配,则返回; 从舶e 1 i s t 中找对应长度的f r e e j i s t s i z e ; 如果找不到,则调用e f i l if r e e l i s t , 从内存中申请一块分配。 f i n dc a n d i d a t e o 从l r u _ l i s t 中找一个放入f r e e _ l i s t ( b u f f e r 和 b u f f e r h e a d ) ; t r y _ t of r e eb u f f e r ( ) 回收非d i r t y 的链表中可用的, b u f f e r h e a d - u n u s e d j i s t ,b u f f e r 释放。再用g r o w _ b u f f e r s 获得a 唤醒b d f l u s h e d ,如仍然,降低s i z e 的要求。 网络专用服务器的专用l i n u x 系统 2 1 3 注册文件系统 当重新建立l i n u x 核心时安装程序会询问是否需要所有可支持的文件系统。 核心重建时文件系统启动代码包含了所有那些编入核心的文件系统的初始化例 程。 l i n u x 文件系统可构造成模块,此时它们会仅在需要时加载或者使用i n s m o d 来载入。当文件系统模块被加载时,它将向核心注册并在卸载时撤除注册。每个 文件系统的初始化例程还将向虚拟文件系统注册,它用一个包含文件系统名称和 指向其v f s 超块读例程的指针的f i l e _ s y s t e m _ t y p e 结构表示,每个f i l e _ s y s t e m _ t y p e 结构包含下列信息: s u p e r b l o e kr e a dr o u t i n e此例程载文件系统的一个实例被安装时由v f s 调用。 h i e s y s t e m n a m e文件系统的名称如e x t 2 。 d e v i c en e e d e d 文件系统是否需要设备支持。并不是所有的文件 系统都需要设备来保存它。可以通过显示p r o c f i l e s y s t e m s 文件中的内容找出 已注册的文件系统。 如图所示,内核中的f i l e s y s t e m _ t y p e 的组织: 图2 3文件类型在内核中的数据结构 2 1 4 安装文件系统 当超级用户试图安装一个文件系统时,l i n u x 核心首先使系统调用中的参数 - 1 2 - 网络专用服务器的专用l i n u x 系统 有效化。尽管m o u n t 程序会做一些基本的检查,但是它并不知道核心构造时已经 支持那些文件系统,同时那些建议的安装点的确存在。看如下的一个m o u n t 命令: $ m o u n t tis 0 9 6 6 0 一or o d e v c d r o m m n t c d r o m m o u n t 命令将传递三个参数给核心:文件系统名,包含文件系统的物理块设 备以及此新文件系统要安装到的已存在的目录名。 虚拟文件系统首先必须做的是找到此文件系统。它将通过由链指针 f i l e s y s t e m s 指向的f i l e s y s t e m _ t y p e 结构来在所有已知文件系统中搜寻。 如果找到了一个相匹配的文件系统名,那么它就知道核心支持此文件系统并 可得到读取此文件系统超块相关例程的指针。如果找不到,但文件系统使用了可 动态加载核心模块,则操作仍可继续。此时核心将请求核心后台进程加载相应的 文件系统模块。 接下来如果由m o u n t 传递的物理设备还没有安装,则必须找到新文件系统 将要安装到的那个目录的v f si n o d e 。这个v f si n o d e 可能在i n o d ec a c h e 中 也可能在支撑这个安装点所在文件系统的块设备中。一旦找到这个i n o d e 则将对 它进行检查以确定在此目录中是否已经安装了其它类型的文件系统。多个文件系 统不能使用相同目录作为安装点。 此时v f s 安装代码必须分配一个v f s 超块并将安装信息传递到此文件系统的 超块读例程中。系统中所有的v f s 超块都被保存在由s u p e r _ b l o c k 结构构成的 s u p e rb l o c k s 数组中,并且对应此安装应有一个这种结构。超块读例程将基于 这些从物理设备中读取的信息来填充这些v f s 超块域。对于e x t2 文件系统此信 息的转化过程十分简便,仅需要读取e x t 2 超块并填充v f s 超块。但其它文件系 统如m s - d o s 文件系统就不那么容易了。不管哪种文件系统,对v f s 超块的填充 意味着文件系统必须从支持它的块设备中读取描叙它的所有信息。如果块设备驱 动不能从中读取或不包含这种类型文件系统则m o u n t 命令会失败。 每个文件系统用一个v f s m o u n t 结构来描叙。它们被排入由v f s m n t l i s t 指向 的的链表中。另外一个指针:v f s m n t t a i 指向链表的最后一个入口,同时 m r u v f s m n t 指针指向最近使用最多的文件系统。每个v f s m o u n t 结构中由以下 部分组成:包含此文件系统的块设备的设备号,此文件系统安装的目录以及文件 系统安装时分配的v f s 超块指针。v f s 超块指向这种类型文件系统和此文件系统 根i n o d e 的f i l e s y s t e m _ t y p e 结构。一旦此文件系统被加载,这个i n o d e 将一 网络专用服务器的专用l i n u x 系统 直驻留在v f si n o dc a c h e 中。 2 1 5 卸载文件系统 如果已安装文件系统中有些文件还在被系统使用则不能卸载此文件系统。例 如有进程使用m n f f e d r o m 或其子目录时将不能卸载此文件系统。如果将要卸载的 文件系统中有些文件还在被使用,那么在v f si n o d ec a c h e 中有与其对应的v f s i n o d e 。通过在i n o d e 链表中查找此文件系统占用设备的i n o d e 来完成此工作。对 应此已安装文件系统的v f s 超块为d i r t y ,表示它已被修改过所以必须写回到磁 盘的文件系统中。一旦写入磁盘,v f s 超块占用的内存将归还到核心的空闲内存 池中。最后对应的v f s m o u n t 结构将从v f s m n f l i s t 中释放。 2 2 块设备驱动程序 操作系统其中一个目的就是向用户掩盖系统硬件设备的特殊性。例如,虚拟 文件系统呈现了安装的文件系统的一个统一的示图。而和底层的物理设备无关。 本章描述l i n u x 核心是如何管理系统中的物理设备的。 2 2 1 l i n u x 下设备的管理 l i n u x 的一个基本特点是它抽象了设备的处理。所有的硬件设备都象常规文 件一样看待:它们可以使用和操作文件相同的、标准的系统调用来进行打开、关 闭和读写。系统中的每一个设备都用一个设备特殊文件代表。例如系统中第一个 i d e 硬盘用d e v h a d 表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论