




已阅读5页,还剩57页未读, 继续免费阅读
(计算机软件与理论专业论文)linux下的网络管理网关.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 网络管理网关允许网络服务提供者向其客户提供宽带接入服务,从而获得超 出一般因特网连接服务的增值服务收入。n m g 的主要功能包括即插即用的接入、 n a t 、a 从( 身份验证、授权和记帐) 功能、带宽管理、流量计费、帐单系统集成 并提供多项增值服务。n m g 能与任何基于t c p i p 的设备( 如以太交换机、d s l a m 、 无线装置等) 集成在一起,系统管理员能够通过t e l n e t 、s n m p 和基于w e b 的管理 界面配置n 。 本文首先收集和整理有关网络管理网关的已有研究成果,强调了建立具有自 主知识产权的网络管理网关的重要性。在分析l i n u x 内核源代码基础上,给出进 程调度、内存管理、文件系统、进程间通讯的实现目标、组成模块、提供的外部 接口、同时对其子系统进行详细描述,给出数据结构的组成方法;这是建设整个系 统结构的基础,特别是相关的路由策略和带宽控制算法,和内核构造密切相关。 接着描述了该系统的底层网络结构和实现方法,主要包括:l i n u x 下建立 n a t 、d h c p 服务器、防火墙、带宽控制,重点介绍数据包在l i n u x 中的流动方式、 l i n u x 内核调度策略、带宽控制策略、给出该控制方法在实验条件下的测量结果。 最后对未来的工作做出展望,给出基于嵌入式l i n u x 网络管理管理网关的构 造方法和应用前景。 关键词:n a td h c p 防火墙带宽控制 a b s t r a c t t h en m g ( n e t w o r km a n a g e m e n tg a t e w a y ) a l l o w st h es e r v i c ep r o v i d e r st o o f f e rb r o a d b a n da c c e s ss e r v i c ea n dg e n e r a t ei n c r e m e n t a lr e v e n u eb e y o n daf l a tr a t e i n t e r n e tc o n n e c t i o nf e e t h em a j o rf e a t u r e so fn m g i n c l u d e :p l u g a n d - p l a ya c c e s s , n a t ,a u t h e n t i c a t i o n , a u t h o r i z a t i o na n da c c o u n t i n g ( a a a ) s u p p o r t ,b a n d w i d t h m a n a g e m e n t ,f l e x i b l eb i l l i n gp o l i c y ,b i l l i n gs y s t e mi n t e g r a t i o n n m ga l s op r o v i d e s m a n y k i n d so f m u l t i p l ev a l u e a d d e ds e r v i c es u p p o r t t h en m gc a nb ei n t e g r a t e d 、i t h a n yt c p i p b a s e db r o a d b a n da c c e s sd e v i c e ss u c ha se t h e rs w i t c h ,d s l a m ,w i r e l e s s d e v i c e ,e t c t h es y s t e ma d m i n i s t r a t o rc a nc o n f i g u r et h en m gv i at e l n e t ,s n m p , a n dw e b - b a s e d m a n a g e m e n t i n t e r f a c e f i r s t l y , t h e a r t i c l ec o l l e c t sa n ds u n l s u p e x i s t e dr e s e a r c ha b o u tn m g , e m p h a s i z e i ti m p o r t a n tt os e tu pn m gt h a th a v eo w n k n o w l e d g ep r o p e r t yr i g h t b a s e d o na n a l y z i n gl i n u xk e r n e ls o u r c e c o d e ,t h ea r t i c l eg i v e sg o a l ,m o d u l e ,e x t e m a l i n t e r f a c ea b o u tt a s kc o n t r o l ,m e m o r ym a n a g e m e n t , f i l es y s t e m ,t a s kc o m m u n i c a t i o n , a tt h es a m et i m ed e s c r i b ec h i l ds y s t e m ,d a t as t r u c t u r e l i n u xk e r n e li sf o u n d a t i o nt o n m g ,e s p e c i a l l y t or o u t e p o l i c y a n db a n d w i d t hc o n t r 0 1 s e c o n d l yt h ea r t i e l eb r i e f st h eb o t t o ma r c h i t e c t u r eo f t h en e t w o r ka n dt h ew a y t h a ti tr e a l i z e s i nn m g f o re x a m p l e :n a t ,d h c ps e r v e r , f i r e w a l l ,b a n d w i d t h c o n t r 0 1 e s p e c i a l l y t h ef l o wo fd a t ap a c k a g e ,t h es c h e d u l eo fk e r n e l b a n d w i d t h c o n t r o l p o l i c y , e x p e r i m e n tr e s u l tb a s e d o nb a n d w i d t hc o n t r 0 1 a tl a s tt h ea r t i c l ep r o s p e c t sf u t u r ej o b s ,g i v eap l a na b o u ts e t t i n g u pn m g b a s e do ne m b e 【l d e dl i n u x k e yw o r d s :n a td h c pf i r e w a l lb a n d w i d t hc o n t r o l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得鑫壅盘茔或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:签字臼期:年 月日 学位论文版权使用授权书 本学位论文作者完全了解鑫注态堂有关保留、使用学位论文的规定。 特授权墨鲞盘生可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存汇编以供查阅和借阅。同意学校向 国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:豁j 融 签字日期:7 以年1 月蚋 一名;多韶惦 签字日期z p 7 年。月。徊 第一章绪论 第一章绪论 1 1 本研究提出的背景及必要性 计算机技术和国际互联网技术的出现和飞速发展,人类正在经历一场前所未 有的新技术革命一信息革命。在这场革命中,信息技术起着举足轻重的作用,当 代信息技术主要是指借助以微电子学为基础的计算机技术和电信技术的结合而 形成的手段,对声音的、图像的、文字的、数字的和各种传感信号的信息进行获 取、加工处理、存储、传播和使用的技术。其中,网络技术在社会信息化的进程, 信息产业的兴起中,起到了关键作用。而互联网络的出现则是这些技术应用的一 项具体体现。 互联网络是相互联接的不同网络( 局域网、城域网、广域网) 的集合。因特 网( i n t e r n e t ) 就是一个最大的国际互联网络,它采用网关路由器将各个不同类 型的网络相互联接起来,再通过网关路由器联接到i n t e r n e t 的主干网上。因特 网是国际计算机互联网络,它将全世界不同国家,不同地区、不同部门和机构的 不同类型的计算机及国家主干网、广域网、城域网、局域网通过网络互联设备“永 久性”地互联。 作为信息时代的一项主要标志的互联网,由于其自身的优势在不断地发挥着 巨大的作用。通过互联网,可以实现高度的资源共享,人们可以迅速从网上搜索 到自己所需的资源;通过互联网,可以实现快速的信息传播。人们可以在第一时 间知道世界上发生的大事;通过互联网,可以实现不同国家地区的人们之间的交 流与互动,人们可以通过电子邮件( e m a i l ) 、讨论组( d i s c u s s i o ng r o u p ) 、 聊天室( c h a tr o o m ) 等交流思想,增进了解;目前,每一时刻网络上传送的数 据量都十分惊人。为了提高网络的服务效率,使用户获得更优质的服务,就需要 开发和研制高效的网络管理系统来实现对网络中的用户的管理和控制。 通常的网关就是将两个使用不同协议的网络段连接在一起的设备,它的作用 就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换。将我们自 主开发的防火墙和动态带宽算法结合到网关内,可形成具有优质网络管理功能的 智能型网关。 1 2 国内外的研究情况 。 华为公司开发的宽带网络管理器作为一种网络管理网关,可以帮助服务供应 商实现网络部署所需要的,对宽带服务的实施,操控等功能。经过验证,它可以 为诸如旅馆和多住宅单元等建筑物提供即插即用的接入、身份验证、终端用户的 第一章绪论 自我供应、自动排序列表、分等级服务,以及基于w e b 的报告等功能的服务器软 件解决方案。它实现了终端用户对宽带服务的访问,适合移动计算机用户要求的 宽带网络需要一种解决方案来实现对接入、支持移动用户连接、计算连接费用、 显示用户指定的内容,以及关于系统使用的报告等功能的控制。帮助服务供应商 有能力根据用户所处的不同位置和所拥有的不同权限,在不同的公共场所为用户 提供不同的访问规则、费用和内容。当用户连接高速网络的时候,服务网关可以 根据特定的收支模型提供不同速度的连接,并且提供仅与用户相关的内容。 美国t i n ys o f t w a r e 公司的产品w i n r o u t e 构造出的软件路由器,网络服务器 可以提供的功能有:多种接入方式( 以太局域网、无线、长距离以太局域网( l r e ) 、 数字用户环路( d s l ) 、有线) ;多种身份验证方法( 基于端口、远程接入拨号 用户服务、已经预先付款的帐号) ;多种付款方式( 向物业管理系统付帐、信用 卡付帐、通过远程接入拨号用户服务帐号付帐、通过访问密码付帐) ;多种带宽 选择。 华为公司和t i n ys o f t w a r e 公司的产品功能丰富,并且已经形成产品,但美 中不足的是上述产品的操作平台是微软的w i n d o w 系统。一方面,该系统的并行 能力较差,限制了用户的数量,降低了服务效率;另一方面,网络管理系统对于 整个网络安全至关重要,我们无法确切了解流动的信息进入网关都被操作系统做 过哪些处理。因此我们有必要在具有开放源代码的操作系统上开发具有自主知识 产权的网络管理系统。 1 3 本系统的应用前景 根据国内外的统计资料显示:小区客户中8 5 有上网需求,其中4 2 的客 人提出了高速上网的要求,另有8 5 的住户对小区网络服务质量和收费制度比 较敏感。因此,对于众多小区,在管理水平和房间设施趋于相近的情况下,提供 高质量的互联网接入服务和完善的收费制度,是小区吸引更多住户入住的非常有 效的手段。采用我们提供的方案后,可以显著提高小区的信息化服务水平。 1 4 工作简介和工作安排 具体完成的工作如下: 1 收集和整理有关网络管理网关的已有研究成果,通过对其相 关资料的研究,吸取它们成功经验,分析其不足之处。 2 分析l i n u x 内核源代码,这是建设整个系统结构的基础:特别 是相关的路由策略和带宽控制算法,和内核构造密切相关。 3 进行相关功能模块设计和界面设计。 2 第一章绪论 4 对完成的项目进行测试和分析。 本文将在第二章将给出系统环境、系统的结构,列出主要研究方法,说明本 研究的困难之处及解决方法;第三章对l i n u x 内核各部门进行全面介绍和分析, 因为这不仅关系到相关防火墙控制策略和带宽控制,也有利未来内核的裁减和进 一步优化;第四章重点介绍基于内核的路由策略及带宽控制;第五章介绍系统的 实现过程;最后,展望未来工作,提出基于嵌入式l i n u x 的网关构造方法。 3 第二章相关技术探讨 第二章相关技术探讨 2 1 系统的构建环境 2 1 1 硬件 c p u :i n t e lp e n t i u mi i i1 g h z 内存;1 2 8 m b 硬盘:2 0 g b 显示器:1 0 2 4 7 6 8 网络接口:两个1 0 1 0 0b i b p s 网卡( 可扩充到4 个) 2 1 2 软件 操作系统:r e d h a tl i n u x 7 2 ( 或者以上) 数据库系统:m y s q l3 2 3 ( 或者以上) 2 2 系统的结构 图2 1 系统结构图 过程说明:用户开机后通过d h c p 获得i p ( 动态分配) 时,登录并通过认证后,相 关服务器通过n a t 和f i r e w a l l 进行服务,并动态的产生账单,送入后台数据库 处理,带宽管理模块和增值服务模块可根据用户的账单计划动态的提供服务,同 时产生账单。 4 第二章相关技术探讨 2 3 研究方法介绍 1 数据库设计首先建立数据字典,分析数据字典的完整性和可扩展性,然 后描述表格间的数据流程,反映登记、计费、帐单等实际需要。 2 l i n u x 下网络服务器的建立采取调用与编写相结合的方法,若l i n u x 下 存在符合需求的s e r v e r 或经过改造可符合需求的s e r v e r ,可用s h e l l 编程进行接口和界面的整合:否则自行编写代码。 3 n a t 设置采取自下而上的方法,这种方法尽管增加了编程的难度和工作 量,但容易捕捉进出的p a c k e t ,而且降低了p a c k e t 被破坏的几率,保 证网络的安全性。l i n u x 在n i c ( n e t w o r ki n t e r f a c ec a r d ) 驱动和t c p 协议栈之间的网络层支持n a t ,其层次结构如下图所示: t c p i p 协议 瑚gm o d u l e s ( n a t ) n e t w o r ka d a p t e rw a ns u b s y s t e m d r i v e r n e t w o r ka d a p t e rm o d e mi s d n 2 4 关键点介绍 图2 2n a t 层次结构图 1 检测程序的建立 由于系统访问量比较大( 2 5 0 0 人) ,对建立的s e r v e r 性能检测存在一 定困难。为此,在编程之前先编制模拟测试程序( 模拟2 5 0 0 - 3 0 0 0 人) ,对 实现的s e r v e r 同时发出2 5 0 0 - 3 0 0 0 个不同用户的信息包,进行性能模拟测 试。 2 系统对a 从服务的可靠性要求很高,拟采取如下解决方案: a u t h e n t i c a t i o n :通过u s e rn a m e 、p a s s w o r d 、m a ca d d r e s s 、 v l a ni d 、d h c pa d d r e s st y p e 、i pa d d r e s s 、n a t p o r t 等。 a u t h o r i z a t i o n : 用户名用户组的方式 a d m i n i s t r a t o r s 有不受限制的访问权 b a c k u po p e r a t o r s 有备份和恢复的权利 u s e r s 其使用权取决于付费水平 , 第二章相关技术探讨 当用户购买接入服务时,内部帐单模块将产生帐目 记录并存放在本地数据库中,包括:服务水平( 上 下行带宽) ,计费方式( 按月、按天、按小时、按分 钟,或按收发字节数) ,以及单价。 3 有效的带宽管理是系统的核心 i pp a c k e t 包括一个t y p e o f - s e r v i c e ( t o s ) 域,它定义了包的转发信 息,t o s 可能设置的信息包括: m i n i m iz e d e l a y m a x i m i z et h r o u g h p u t m a x i m i z er e l i a b i l i t y m i n i m i z em o n e t a r yc o s t n o r m a ls e r v i c e l i n u x 提供的c l a s sq u e u ea n ds c h e d u l e 。s c h e d u l e 根据被指定的 服务水平和带宽要求将p a c k e t 放入不同的c l a s sq u e u e ,同时s c h e d u l e 可标记一个指定的值给i pp a c k e t s 的t o sf i e l d s 。 6 第三章l i n u x 内核结构探析 第三章l j n u x 内核结构探析 3 1l i n u x 操作系统概述 图3 1 显示了整个li n ux 操作系统的结构。 linux 操作系统由4 个主要的子系统所组成: 用户应用程序:在某个特定的lin ux 系统上运行的应用程序集合,它将 随着该计算机系统的用途不同而有所变化,但一般会包括文字处理应用程序 和w e b 浏览器。 0 s 服务:这些服务一般认为是操作系统的一部分( 启动系统,命令外壳程 序,等等) ;此外,内核的编程接口( 编译工具和库) 也属于这个子系统。 linux 内核:这是本文的关注焦点:包括内核抽象和对硬件资源( 如cp u ) 的间接访问。 硬件控制器:这个子系统包含在linux 实现中所有可能的物理设备,例 如,cpu 、内存硬件、硬盘以及网络硬件等都是这个系统的成员。 3 2 内核的目标 图3 1l i n u x 操作系统结构图 li i 1u x 内核向用户进程提供了个虚拟机器接口。编写进程的时候并不 需要知道计算机上安装了哪些物理硬件,linux 内核会把所有的硬件抽象成统 一的虚拟接口。此外, lin ux 以对用户透明的方式支持多任务:每个进程工 作时就象它是计算机上唯一的进程,好象是独自使用了主存和其他硬件资源一 第三章l i n u x 内核结构探析 样。内核实际上同时运行许多个进程,并负责对硬件资源的间接访问,这样可以 保证各个进程访问的公平性,并保证进程间的安全性。 3 3 内核结构的概述 进程调度程序( sched ) 负责控制进程访问cpu 。调度程序所使用的 策略可以保证进程能够公平地访问cpu ,同时保证内核可以准时执行一些 必需的硬件操作。 内核管理程序( mm ) 使多个进程可以安全地共享机器的主存系统。此外, 内核管理程序支持虚拟内存。虚拟内存使得l inux 可以支持进程使用超 过系统中的内存数量的内存。暂时用不着的存储信息可以交换出内存,存放 到使用文件系统的永久性存储器上,然后在需要它们的时候再交换回来。 虚拟文件系统( vfs ) 。通过提供一个所有设备的公共文件接口,v fs 抽象了不同硬件设备的细节。此外, vfs 支持与其他操作系统兼容的不同 的文件系统格式。 网络接口( net ) 提供了对许多建网标准和网络硬件的访问。 进程间通信( ipc ) 子系统为单个li nux 系统上进程与进程之间的通 信提供了一些机制。 进程之间的关系图3 2 所示: 图3 2 内核结构图 从图中可以看出,最中心最重要的子系统是进程调度程序:其他所有的予系 统都依赖于进程调度程序,这是因为所有的子系统都需要中断和恢复进程的执 行。一般来说,子系统会中断那些等待硬件操作完成的进程,同时恢复那些操作 8 第三章l i n u x 内核结构探析 已经完成了的进程。例如,当某进程试图通过网络发送消息时,网络接口可能需 要中断该进程,直到硬件成功完成了消息的发送。当消息发送完以后( 或者硬件 返回出错信号) ,则网络接口将用返回码来恢复该进程。返回码显示了操作是成 功完成还是失败。其它子系统( 内存管理程序、虚拟文件系统、以及进程间通信) 都是由于相似的原因而必须依赖于进程调度程序。 相比之下,其他的依赖关系就不那样明显了,但是它们也同样重要: 在进程恢复执行时,进程调度程序将使用内存管理程序来调整硬件内存映射。 进程间通信子系统依赖于内存管理程序来支持共享内存通信机制。进程除了 可 以访问它们通常的私有内存外,共享内存通信机制将使它们可以访问一个公共的内存 区。 虚拟文件系统使用网络接口来支持网络文件系统( nfs ) ,它还使用内存 管 理程序来提供ramdi sk 设备。 内存管理程序使用虚拟文件系统来支持交换。这是内存管理程序之所以依赖 于 进程调度程序的唯一原因。当某进程访问的内存当前已经被交换出内存时,内 存管理程序请求文件系统从永久性存储设备中去取该内存,并中断该进程。 3 4 进程调度程序系统结构 3 4 1 目标 进程调度程序是li n u x 操作系统的核心。进程调度程序需要完成以下任 务: 允许进程创建它们自己的新拷贝。 判定哪个进程可以访问cpu ,并影响运行进程之间的传输。 接收中断,并把它们转交给适当的内核子系统。 向用户进程发送信号。 管理定时器硬件。 当进程结束执行时清除进程资源。 进程调度程序还为动态装入的模块提供支持;动态装入模块是指在内核开始 执行之后才能装入的内核功能。虚拟文件系统和网络接口将会用到这个可装入的 模块功能。 3 4 2 模块 9 第三章l i n u x 内核结构探析 调度程序可以划分为三个主要的模块: 1 ) 调度策略模块负责判定哪个进程对cpu 有访问权;策略的设计应该使进程可 以公平地访问cp u 。 2 ) 系统结构相关的模块一般使用公共接口设计而成,这样可以抽象出任意特定 的计算机系统结构的细节。这些模块负责与cpu 的通信,以中断或者恢复进程 的执行。这些操作包括需要为每个进程保留某些寄存器和状态信息,以及执行汇 编代码来影响中断或者恢复操作。 3 ) 独立于系统结构的模块与策略模块互相通信,确定接下来执行哪个进程,然 后调用系统结构相关的模块来恢复适当的进程。此外,这个模块调用内存管理程 序,确保已经为被恢复的进程准备好了内存 3 4 3 外部接口 进程调度程序提供了两个接口:首先,它提供了一个可供用户进程调用的系 统调用接口;其次,它为内核系统的其他部分提供了一个丰富的接口。进程只能 通过拷贝现有进程的方法创建其他的进程。在系统引导的时候, linux 系统 只有一个运行进程: il qit 。然后该进程再产生其他的进程,而其他进程又可 以利用自身的拷贝产生新进程,方法是使用f o r k ( ) 系统调用。f o r k ( ) 调用会 产生新的子进程,而子进程实际上是父进程的拷贝。在系统关闭的时候,某个用 户进程( 隐式地或者显式地) 调用一ex i t 系统调用。系统提供了几个过程来 处理可装入模块。c r e a t e _ m o d u l e ( ) 系统调用将分配足够的内存,以便装入模块, 该调用将初始化m0dule 结构( 下面将会介绍该结构) ,填入分配的模块的 名称、大小、始地址以及初始状态。系统调用i n i t _ m o d u l e ( ) 将从磁盘装入模 块并激活它。最后d e l e t em o d u l e ( ) 将会卸载一个运行中的模块。 可以用系统调用s e t i t i m e r ( ) 和g e t i t i m e r ( ) 来完成定时器的管理,前者 设置一个定时器,而后者则获取定时器的值。s i g n a l ( ) 是一个非常重要的函数。 这个函数允许用户进程把函数处理程序和特定的信号联系起来。 3 4 4 子系统描述 进程调度程序子系统主要负责用户进程的装入、执行以及正确的结束。在执 行用户进程时,一般在两个不同的地方调用这个调度算法。首先,有一些系统调 用可以直接调用调度程序,岫l s l e e p ( ) 。其次,在每一个系统调用之后,以 及在每一个慢的系统中断之后,可以调用调度算法。 信号可以认为是一种ipc 机制,所以将在介绍进程间通信的一节中进行讨 论。 中断允许硬件与操作系统进行通信。li nux 下的中断分为快速中断和慢中断。 第三章l i n u x 内核结构探析 慢中断是典型的中断,当系统正在处理慢中断时,其他的中断是合法的,一旦处 理完了慢中断,li nux 就可以正常工作了,例如可以调用调度算法。定时器 中断是慢中断的典型例子。相比之下,快中断所完成的任务要简单一些,例如处 理键盘输入等等。在处理快速中断时,其他的中断将被屏蔽。l i n u xo s 使用的定 时器每l0ms 发生一次定时器中断,这样,根据前面所讲的调度程序描述,应 该至少每1 0ms 发生一次任务调度。 3 4 5 数据结构 结构task struct 代表li nux 任务,其中有一个域表示的是进 程的状态,它的值可以是: 运行 从系统调用返回 处理中断过程 处理系统调用 就绪 等待 此外,该结构中还有一个域,它表示进程优先级,另外还有一个域存放着时 钟滴答( 以10ms 为周期) 的数量,它表示进程可以持续执行多长时间而不用 重新调度。该结构中还有一个域存放着最近一次出错系统调用的错误编号。为了 跟踪所有的执行进程,系统维护一个双链表( 通过两个指向task struc t 的域) 。因为每一个进程与其他一些进程相关,所以需要提供一个域来描述一 个进程:原始父母、父母、最小子进程、弟弟进程,最后是兄长进程。 mm struct 是一个嵌套结构,它包含着进程的内存管理信息( 例如代码 段的始地址和结束地址) 。 进程id 信息也存放在task struct 中。该结构中存放的信息包括 进程id 和组id 。同时还提供了组id 的一个数组,所以进程可以与多个组联系 在一起。文件相关的进程数据存放在fs struct 子结构中。该结构中存 放着一个指针,指向对应着处理器的根目录以及当前工作目录的索引节点。由进 程打开的所有文件将通过task struct 的子结构fi 1 es str u ct 来跟踪。最后,还有一些域提供计时信息;例如,进程在用户模式下花费的 时间总量。所有的执行进程在进程表中都有对应的一项。进程表被实现为指向任 务结构的指针的一个数组。进程表中的第一个项目是特殊的init 进程,它是l inux 系统所执行的第一个进程。 最后,还实现了一爪modu1 e 结构来表示已经装入的模块。该结构中包 含着一些域,可用来实现一个模块结构的列表:一个域指向模块符号表,另一个 域存放着模块的名称。m odule 结构中还存放着模块的大小( 以页面为单位) 以及指向模块始地址的指针。 3 5 内存管理程序 3 5 1 目标 大地址空间:用户程序可以使用超过物理上实际所有的内存数量。 保护:进程的内存是私有的,不能被其他进程所读取和修改;而且,内存管理 程序可以防止进程覆盖代码和只读数据。 内存映射:客户可以把一个文件映射到虚拟内存区域,并把该文件当作内存来 访问。 对物理内存的公平访问:内存管理程序确保所有的进程都能公平地访问计算 机的内存资源,这样就可以确保理想的系统性能。 共享内存:内存管理程序允许进程共享它们内存的一部分。例如,可执行代码 通常可以在进程问共享。 3 5 2 模块 系统调用接口:这组模块通过一个定义良好的接口,把内存管理程序的服务提 供给用户进程。 内存映射文件( mmap ) :这组模块负责受支持的内存映射文件i 0 。 交换( swat o ) :这组模块控制内存交换。这些模块引起页调入和页调出的 操作。 核心内存管理( c0re ) :这些模块负责核心内存管理程序功能,其他内核 子系统将需要使用该功能。 系统结构相关的模块:这些模块为所有支持的硬件平台提供一个通用的接e l , 这些模块执行命令来改变硬件mmu 的虚拟内存映射,并在发生页面错误时提供 一种通用方法,用来通知内存管理程序子系统的其他部分。 内存管理程序结构使用了ks wapd ,它是一个用于判定应该把哪个内存 页面交换出去的守护进程。ks wapd 可以作为一个内核线程来执行,它周期 性地检查使用中的物理页面,看看是否可以把哪个页面交换出去。这个守护进程 是与内存管理程序子系统的其他部分并发执行的: 3 5 3 外部接口 内存管理程序向它的功能提供了两个接口:用户进程所使用的系统调用接 口,以及其他内核子系统用来完成任务的接口。 第三章l i n u x 内核结构探析 系统调用接口 m a l l o c ( ) f r e e ( ) :分配或者释放一块供进程使用的内存区域。 衄a p ( ) m u n m a p ( ) m s y n c ( ) m r e m a p ( ) :把文件映射到虚拟内存区域。 m p r o t e c t :改变对虚拟内存区域的保护。 m l o c k ( ) m l o c k a l l ( ) m u n l o c k ( ) m u n l o e k a l l ( ) :超级用户例程,防止 内存被交换。 s w a p o n ( ) s w a p o f f ( ) :超级用户例程,可以为系统增加或删除交换文件。 内核内部的接口 k m a l l o c ( ) k f r e e ( ) :分配或者释放由内核的数据结构所使用的内存。 v e r i f y a r e a ( ) :检查一下用户内存的某块区域是否以所需的许可权限映射。 g e t f r e e _ p a g e ( ) f r e e a g e ( ) :分配和释放物理内存页面。 除了以上这些接口以外,内存管理程序允许在内核中使用它所有的数据结构 以及大部分的过程。 。 3 5 4 子系统描述 因为li n ux 支持许多硬件平台,所以内存管理程序中有一个与平台相关 的部分,它把所有硬件平台的细节抽象成一个通用的接口。对硬件内存管理程序 进行的所有访问都是通过这个抽象接口实现的。 内存管理程序使用硬件内存管理程序把虚拟地址( 由用户进程所使用) 映射 到物理内存地址。当用户进程访问内存地址时,硬件内存管理程序把这个虚拟内 存地址翻译成物理地址,然后使用物理地址来执行这次访问,因为存在这种映射 关系,用户进程无需关心特定的虚拟内存地址是与哪个物理地址相联系的。这就 允许内存管理程序子系统把进程的内存映射到物理内存的各个地方。此外,如果 两个进程的虚拟内存地址空间区域映射到同一个物理地址空间,实际上这种映射 方式允许这两个进程共享该物理内存。 此外,当某进程内存未使用时,内存管理程序会把它交换到分页文件中。这 就允许系统可以执行那些需要使用较多内存的进程,即使它们所需的内存超过系 统上实际所有的内存。内存管理程序包括一个守护进程( kswapd ) 。lin ux 使用的术语“守护进程”指的是内核线程。守护进程也是由进程调度程序来 调度的,方法与调度用户进程的方法相同,但守护进程可以直接访问内核数据结 构。这样,相对进程而言,守护进程的概念更接近于线程。 kswapd 守护进程周期性地检查是否有任何物理内存页面最近没有使用 到。如果有,则这些页面将被移出物理内存,如果需要则把它们存储在磁盘上。 内存管理予系统特别注意减少所需的磁盘活动的数量。如果可以用另一种方法来 达到目的,内存管理程序将避免把页面写到磁盘上。 第三章l i n u x 内核结构探析 3 5 5 数据结构 下面的数据结构在系统结构上是相关的: 1 ) v ma r e a :内存管理程序为每个进程存储一个对应的数据结构,里面记录着哪 块虚拟内存区域被映射到哪个物理页面上。这个数据结构中还存放着一个函数指 针的集合,允许它在进程的某块虚拟内存区域上执行操作。例如,进程的可执行 代码区域并不需要交换到系统分页文件中,因为它可以使用可执行文件来作后援 存储。当进程的虚拟内存区域被映射时( 例如在装入可执行文件时) ,虚拟地址 空间中每一块连续的区域都将设置一个vm ar ea stru ct 。因为在 查看vm area st ruct 检查页面错误时,速度是非常关键的,所以 该结构存放在a vl 树中。 2 ) m e m _ m a p :内存管理程序为系统上物理内存的每个页面都维护一个数据结构。 该数据结构中存放着表示页面状态( 例如,该页面当前是否正在使用) 的标志。 所有的页面数据结构都可以在一个向量( mem map ) 中找到,该向量是在 内核引导的时候进行初始化的,当页面状态变化时,该数据结构中的属性也相应 地更新。 3 ) f r e e a r e a ;free area 向量用于存储朱分配的物理内存页面,当页面 被分配时,需要从fr e e ar ea 中删除该页面,而当页面被释放时,它又 返回到fr ee area 中。 3 6 文件系统 3 6 1 目标 linux 在设计时就考虑到支持许多不同的物理设备。甚至就一种特定类 型的设备而言,例如硬盘驱动器,在不同的硬件厂商之间也会存在许多接口上的 差异。除了linux 所支持的物理设备以外,li nux 还支持大量的逻辑文 件系统。正因为它能支持许多逻辑文件系统,所以li 1 1 ux 可以轻松地与其他 操作系统进行甄操作。li e lux 文件系统支持下列目标: 多个硬件设备:提供对许多不同的硬件设备的访问。 多个逻辑文件系统:支持许多不同的逻辑文件系统。 多个可执行格式:支持许多不同的可执行文件格式( 例如a out 、elf 、 j ava ) 。 均一陛:所有的逻辑文件系统以及所有的硬件设备提供了一个通用接口。 性能:提供对文件的高速访问。 安全:不会丢失或毁坏数据。 第三章l i n u x 内核结构探析 保密性:限制用户访问文件的许可权限,限制分配给用户的总的文件大小。 3 6 2 模块 虚拟文件系统的大部分功能都是以动态装入模块的形式提供的。这种动态配 置的特征使得l inux 用户可以编译一个尽可能小的内核,如果在单个操作过 程中需要的话,还可以允许内核装入所需的设备驱动程序和文件系统模块。例如, li i 2 ux 系统可能会有一个打印机连接到它的并行口。如果打印机驱动程序永 远链接在内核中,则当没有打印机时内存将会浪费。通过使打印机驱动程序成为 一个可装入的模块,li nux 允许用户在需要使用打印机时装入驱动程序。 3 6 3 外部接口 文件系统提供了两个级别的接口:用户进程所使用的系统调用接口,以及其 他内核子系统所使用的内部接口。系统调用接口主要负责处理文件和目录。文件 操作主要包括由p0six 兼容系统所提供的一般的0pen elose re ad write seek te1 1 等操作,目录操作包括p0six 系统的 readdi r creat unli nk chm0d stat 等操作。文 件子系统用于支持其他内核子系统的接口要丰富一些。文件系统提供了一些数据 结构和实现函数,以供其他内核子系统进行直接操作。特别是,它为内核的其他 部分提供了两个接口索引节点和文件。其他内核予系统也会使用文件子系统的 另一些实现细节,但用得不太普通。 索引节点接口 c r e a t e ( ) :在目录中创建一个文件。 l o o k u p ( ) :使用文件名称在目录中查找文件。 l i n k ( ) s y m l i n k ( ) u n l i n k ( ) r e a d l i n k ( ) f o l l o w _ l i n k ( ) :管理文 件系统连接。 m k d i r ( ) r m d i r ( ) :创建或删除子目录。 m k n o d ( ) :创建目录、特殊文件或者常规文件。 r e a d p a g e ( ) w r i t e p a g e ( ) :从后援存储中读物理内存页面,或者把物理 内存页面写入到后援存储中。 t r u n c a t e ( ) ;把文件的长度设置为0 。 - p e r m i s s i o n ( ) :检查一下用户进程是否具有执行某操作的权限。 s m a p ( ) :把逻辑文件块映射到物理设备扇区。 b m a p ( ) :把逻辑文件块映射到物理设备块。 r e n a m e ( ) :重新命名文件或者目录。 除了以上这些用户调用索引节点的方法以外,还提供t n a m e i ( ) 函数,它 第三章l i n u x 内核结构探析 允许其他内核子系统可以找到与文件或目录相联系的索引节点。 文件接口 o p e n ( ) r e l e a s e ( ) :打开或关闭文件。 r e a d ( ) w r i t e ( ) :读或写文件。 s e l e c t ( ) :一直等待,直到文件处于一个特殊的状态( 可读或者可写) 。 i s e e k ( ) :如果此功能受支持的话,则移动到文件中特定的偏移量处。 m m a p ( ) :把一个文件区域映射到用户进程的虚拟内存。 f s y n c ( ) f a s y n c ( ) :把任意内存缓冲区与物理设备同步。 r e a d d i r :读某个目录文件所指向的文件。 i o c t l :设置文件属性。 - c h e c km e d i ac h a n g e ;检查一下可移动媒体( 如软盘) 是否己被拿走。 r e v a l i d a t e :确认所有高速缓冲的信息都是合法的。 3 6 4 子系统描述 文件子系统需要支持许多不同的逻辑文件系统和许多不同的硬 牛设各。它是 通过拥有两个概念层而做到这一点的,这两个概念层很容易扩展。设备驱动程序 层用一个通用的接口来表示所有的物理设备。虚拟文件系统层( vfs ) 则用通 用接口来表示所有的逻辑文件系统。 3 6 5 数据结构 下面这些数据结构在系统结构上是与文件子系统相关的: st l per b1 0ck :每个逻辑文件系统都有一个相联系的超级块,用于 把它提供给l inux 内核的其他部分,该超级块包含着整个挂装文件系统的有 关信息一正在使用哪些块、块的大小有多大等等。超级块与索引节点的相似点在 于:它们均可作为逻辑文件系统的虚拟接口。 in0de :索引节点是一个内存中的数据结构,它表示内核需要知道的有关 磁盘上某文件的所有信息。单个索引节点可以被打开该文件的所有进程使用。索 引节点存储着内核需要与某个文件相关联的所有信息。计帐、缓冲以及内存映射 信息都存储在索引节点中。一些逻辑文件系统在磁盘上也会有一个索引节点结 构,可以永久性地保存这一信息,但这与内核的其他部分所使用的索引节点数据 结构是不同的。 fil e :文件结构代表由特定进程打开的文件。所有打开的文件都存储在一 个双链表中( 由fi rs t fi le n 指向) ,在p0six 形式的过程( op er l 、read 、writ e ) 中所使用鸽文件描述符是这个链表中某个打开文件 的索引。 1 6 第三章l i n u x 内核结构探析 3 7 进程间通讯 3 7 1 目标 linux 提供了下列形式的ipe r a s , i , 信号:最古老的u n i xi p c 形式。信号是发往某进程的异步消息。 等待队列:当进程正在等待某操作的完成时,等待队列提供了一种机制,可以 把进程置为睡眠状态。 文件锁:它提供了一种机制,允许进程声明文件的一个区域,或者整个文件本 身,把它们声明为对所有进程都是只读的,除了拥有文件锁的进程以外。 管道和命名管道:允许在两个进程之间进行面向联接的单向的数据传输,方法 可以是显式地建立管道连接,或者通过驻留在文件系统中的命名管道进行通讯。 信号量:传统信号量模型的一种实现,该模型还允许创建信号量数组。 消息队列:一种无联接的数据传输模型。消息是字节的序列,并带有相应的类 型。消息可以写入到消息队列中,并且可以通过从消息队列中读取来获得消息, 当然也可以限制读入哪种类型的消息。 共享内存:通过使用这种机制,几个进程可以访问物理内存的同一块区域。 unix 域套接字:男一种面向连接的数据传输机制,它提供了与inet 套接 字相同的通信模型。 3 7 2 模块 对于多用户、多进程的操作系统来说,进程间通讯是一项非常重要、甚至 必不可少的基本手段,这种通信手段是在a t &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年形象设计师-中级鉴定模拟100题及答案
- 西藏省重点中学2025届高二物理第二学期期末调研模拟试题含解析
- 车棚租赁与新能源汽车租赁合作合同
- 有关家装合同模板汇编(3篇)
- 桥梁工程劳务分包合同最终
- 营业员技能大赛复习试题含答案
- 行政组织理论与实际管理经验结合试题及答案
- 从容应对2025年考试的技巧与试题及答案
- 数据库工程师考试的成功路径试题及答案
- 公路工程考试有效学习试题及答案
- 活动策划服务投标方案(技术方案)
- 肺动脉高压临床路径
- 韩国文化智慧树知到答案章节测试2023年青岛职业技术学院
- 本科公共关系:理论、实务与案例NO14教学课件
- LSLV-C100变频器说明书
- DLT 1055-2021 火力发电厂汽轮机技术监督导则
- 桡骨远端骨折临床路径PPT课件
- 预制梁场验收及质量管理实施细则
- 爱莲说对比阅读(1)
- 大理石打磨工程装饰协议合同
- 链轮齿数尺寸对照表二
评论
0/150
提交评论