




已阅读5页,还剩60页未读, 继续免费阅读
(电力电子与电力传动专业论文)嵌入式linux在高速数据采集系统中的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
堕苎三些查堂堕主堂垡丝兰些! ! 竺 a b s t r a c t i n c o r p o r a t i n g l i n u xw i t he m b e d d e ds y s t e mi s a r e s e a r c h i n g f o c u si nt h e e m b e d d e df i e l d t h i sd i s s e r t a t i o nd i s c u s s e st h ed e v e l o p m e n tm e t h o do fe m b e d d e d l i n u xs y s t e m ,a n di m p l e m e n t st h eh i g hs p e e dd a t aa c q u i s i t i o ns y s t e mb a s e do nt h e e m b e d d e dl i n u x s y s t e m w h e nw ed e v e l o pt h ea p p l i c a t i o nb a s e do nt h ee m b e d d e dl i n u xs y s t e mw e m u s tf i r s tr e s o l v eh o wt ob u i l dt h ee m b e d d e dl i n u xo s d u r i n gt h eb u i l d i n gw em u s t c o n s i d e rs e v e r a lp r o b l e m ss u c ha sh o wt ob o o tl i n u x ,w h e t h e ri st h ev i r t u a lm e m o r y m e c h a n i s mn e c e s s a r y , h o wt os e l e c tt h ef i l e s y s t e m a n dh o wt o e l i m i n a t et h e d e p e n d m e n t o nd i s k o na b o v eb a s i st h ea r t i c l ep r e s e n t st h ek e ys t e p so f b u f f i n gt h e e m b e d d e dl i n u xs y s t e mo np c 1 0 4m o d u l ew i t hc o m p a c tf l a s hc a r d t h ed e v i c ed r i v e rw h i c hi sap a r to fl i n u xk e r n e la n ds t a y sa l la l o n gi nt h e c o m p m e rm e m o r y i si ne s s e n c et h es h a r e dl i b r a r yo f p r o g r a m sp r o c e s s i n gh a r d w a r e t h ed e v i c ed r i v e ri ss oc r i t i c a lt ol i n u xo st h a ti t s w r o n gc o u l dc a n s et h es y s t e m b r e a k d o w n t h i sd i s s e r t a t i o n a n a l y z e s t h e e l e m e n t a r yo p e r a t i n gp r i n c i p l eo ft h e d e v i c ed r i v e ri n l i n u x ,e x p a t i a t e s o nt h e m e m o r y m a n a g e m e n t ,i n t e r r u p t p r o c e s s i n g ,i op o r ta n d d m a p r o c e s s i n g t h e h i g hs p e e d d a t aa c q u i s i t i o ns y s t e ma c c o m p l i s h e s m o s t l yt h ed a t aa c q u i r i n g a n dd a t as t o r i n ga ss o o na sp o s s i b l e h o wt ot r a n s f e rd a t af r o md a t aa c q u s i t i o nc a r dt o h a r dd i s ki st h ek e yt e c h n o l o g yt oe n s u r et h ew h o l es y s t e mw o r k i n gr a p i d l ya n d p r e c i s e l y t h et r a d i t i o n a lp r o g r a m c o n t r o lm o d e b e i n gc p u c e n t r ec a nn o ts a t i s f yt h e r e q u i r e m e n to f t h eh i g hs p e e dd a t aa c q u i s i t i o ns y s t e m i nt h i sd i s s e r t a t i o nt h ed m a m o d ei sa d o p t e dt oc o m p l e t et h ed a t a t r a s f e r r i n gi nw h i c h h a r d w a r e r e p l a c e ss o f t w a r e p a r t l ya n d i nt h er e s u l tt h e t r a n s f e r r i n gs p e e di m p r o v e sg r e a t l y i nc o n c l u s i o n ,i ti sv i a b l et ob u i l de m b e d d e dl i n u xo np c 1 0 4s y s t e ma n d a p p l y i tt ot h em e a s u r e m e n ta n dc o n t r o lf i e l di ni n d u s t r y k e y w o r d s :e m b e d d e d l i n u xl i n u xd e v i c ed r i v e r d a t aa c q u i s i t i o nd m a l i 西北工业大学硕士学位论文 第一章绪论 第一章绪论 在工业测控领域,网络技术飞速发展。网络控制要求测控系统必须具有两 方面的功能:一方面在测控现场完成复杂的测控任务,另一方面要求能与某一 类型的控制网络互联,实现远程监控。而在目前应用的大多数测控系统中,嵌 入式系统的硬件采用8 1 6 位单片机,软件多采用汇编语言编程,仅包含一个简 单的循环处理的控制流程,单片机与单片机或上位机之间通过r s 2 3 2 r s 4 8 5 来 组网。这些网络存在通信速度慢、联网功能差、开发困难的问题。随着工业以 太网的逐步成熟,再加上嵌入式l i n u x 在网络方面与生俱来的贵族气质,将二 者结合起来用于测控领域具有广阔的应用前景。 作为测控领域非常重要的一个分支一数据采集系统,在其它领域亦有非常 广泛的应用,本论文研究并开发了基于嵌入式l i n u x 的高速数据采集系统。 1 1 嵌入式操作系统 所谓嵌入式系统,是指以应用为中心、以计算机技术为基础、软硬件可裁 减、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机 系统。它将操作系统和功能软件集成于计算机硬件系统之中,简单的说就是系 统的应用软件与系统的硬件一体化,类似于b i o s 的工作方式,具有软件代码小、 高度自动化、响应速度快等特点,特别适合于要求实时的和多任务的系统。嵌 入式系统是将先进的计算机技术、半导体技术、电子技术和各行业的具体应用 相结合的产物。 嵌入式系统具有以下特征: 硬件 嵌入式系统主要由嵌入式处理器、相关硬件和嵌入式软件系统组成,它是 集软硬件于一体的可独立工作的“器件”。 嵌入式处理器的功耗、体积、成本、可靠性、速度、处理能力、电磁兼容 性等方面均受到应用要求的制约,而且必须针对用户的具体需求,对芯片配置进 行裁减和添加才能达到其理想的性能。嵌入式处理器发展比较稳定,因为一个 西北工业大学硕一l 学位论文 第一章绪论 体系结构及其相关的片上外设、开发工具、库函数、嵌入式应用产品是一套复 杂的知识系统,用户和半导体厂商都不会轻易放弃一种处理器。 相关硬件包括显示卡、存储介质、通讯设备、i c 卡或信用卡的读取设备等, 有别于一般的计算机处理系统,嵌入式系统不具备象硬盘那样大容量的存储介 质,而大多使用闪存( f l a s hm e m o r y ) 作为存储介质。 系统软件和应用软件 嵌入式软件是实现嵌入式系统功能的关键,它包括与硬件相关的底层软件、 操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等, 对它的要求与通用计算机不同: 1 ) 软件要求固态化存储。为了提高执行速度和系统可靠性,嵌入式系统中 的软件般都固化在存储器芯片或单片机本身中,而不是存储于磁盘等载体中。 2 ) 软件代码质量、可靠性要求高。尽管半导体技术的发展使处理器速度不 断提高,片上存储器容量不断增加,但在大多数应用中,存储空问仍然是宝贵 的,还存在实时性的要求。为此要求程序编写和编译工具的质量要高,以减少 程序二进制代码长度、提高执行速度。 3 ) 系统软件的高实时性是基本要求。在多任务嵌入式系统中,对重要性各 不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键,单纯 通过处理器速度是无法完成和没有效率的,这种任务调度只能由优化编写的系 统软件来完成,因此系统软件的高实时性是基本要求。 嵌入式系统结构图如图1 1 所示。 图1 1 嵌入式系统结构图 2 西北工业大学硕士学位论文 第一章绪论 1 2l i n u x 用于嵌入式操作系统 在嵌入式系统这一领域,传统的选择不外乎以下几种: 独立编码( 汇编语言c c + + ) :由于独立编码功能过于简单,资源十 分匮乏,因而不适应于复杂的嵌入式应用。 d o s :技术过于陈旧难以满足功能及硬件资源的更新速度。 自己开发套核心,技术难度过大,开发和维护费用过高。 w i n d o w s 系统过于庞大,价格昂贵,性能不是很稳定,因而也不适合嵌 入式应用,另外国内许多人士对w i n d o w s 的安全性持怀疑态度。 u n i x 由于本身的一些特点也不太适应于嵌入式领域。 专用实时操作系统( v r t x0 s 9p s o sv x w o r k sl y n x o sq n x ) :私有接口, 缺乏统一标准,l i c e n s e 和开发费用过高。 l i n u x 从1 9 9 1 问世到现在,已发展成为一个功能强大设计完善的的操作系 统,目前l i n u x 已可以与各种传统的商业操作系统分庭抗礼,占据了市场的相 当大份额。在嵌入式领域l i n u x 同样获得了飞速发展,目前正在开发的嵌入式 系统中,4 9 的项目选择l i n u x 作为嵌入式操作系统。l i n u x 用于嵌入式系统具 有以下优势。 1 ) l i n u x p q 核精简,各部分的功能明确,可扩展性强,容易裁减。在内 核模块中,进程管理、内存管理和文件系统是其三个最基本的子系统。用户程 序可以直接通过系统调用或者函数库来访问内核的资源。如图1 2 所示l i n u x 单 内核结构图。 图1 2l i n u x 单内核结构 西北工业大学硕士学位论文 第一章绪沧 2 ) l i n u x 免费,可以极大的降低产品成本。只要遵循g p l 协议,就可以自 由发布和使用软件。l i d u x 的开发者遍布全球,无数的自由软件爱好者都支持它 的发展,为它找b u g 。完善它的性能。 3 )代码开放,可以免费获得,有利于后来者学习,缩短开发过程。 4 ) l i n u x 符合i e e ep o x i x 1 标准,有非常好的可移植性,而且具有非常 稳定的性能。它对多种c p u 都能很好的支持,而且驱动程序的管理有它自己独特 的方法。它本身是u n i x 系统的一种克隆,支持商业u n i x 的全部功能,u n i x 平台 上的众多应用程序稍加修改就可以应用到嵌入式环境中的l i n u x 平台。 5 ) 支持t c p i p 协议,有强大的网络功眍。l l n u x 天生就是一个网络操作系 统,几乎所有的网络协议和网络接口都被定制在其中,这一点是别的嵌入式操 作系统不具备的。 6 ) 丰富的开发工具。l i n u x 提供c 、c 十+ 、j a v a 以及其他很多的开发工具, 这些工具可以被免费的使用。而且这些工具本身在设计时就考虑到了支持各种 不同的微处理器结构和调试环境。 7 ) 大量的文档。大量的文档有利于后来者能快速跟上最为先进的l i n u x 技术,跟得上l i n u xo s 的开发步骤。 可见,l i n u x 是嵌入式操作系统的理想选择。 另一方面,由于嵌入式系统的特殊性,将普通的桌面l i n u x 应用于嵌入式系 统时仍需解决以下问题: 1 ) 内核需要裁减。嵌入式产品的可用资源较少,不需要过多的考虑兼容 性,所以桌面的内核相对于嵌入式系统来说就显得过于庞大。要让它很好的适 用于环境,就需要裁减其内核到可用的大小。 2 ) 文件系统的选择。桌面l i n u x 用的是e x t 2 文件系统,该文件系统用于 桌面环境具有很明显的优势,但是在嵌入式环境中显得过大,组织e x t 2 文件系 统的数据结构中的一些成员显得累赘。 3 ) 在实时领域内其实时性存在问题。l i n u x 是一个分时系统,虽然实现 了软实时性,在很多情况下还是无法满足实时性的要求。对于一些实时性要求 高的环境显然需要改进。 4 ) 对于具体的应用还需开发具体的启动程序、设备驱动程序和上层应用 4 西;i l z 业大学硕士学位论文 第一章绪论 程序。这些程序不具备通用性,需专门开发。 总之,桌面l i n u x 经过适当的改造,可以高效运行于嵌入式操作系统,即嵌 入式l i n u x 。 1 3本论文研究的内容及章节安排 本课题所涉及的数据采集系统要求在现场长时间高速采集数据,并实时将 数据保存至硬盘,要求采集系统体积小、工作温度范围宽、可靠性性高、以及 具有高的抗震性和抗电磁干扰性。 基于上述考虑,硬件上,选择p c 1 0 4 模块作为嵌入式处理器、数据采集卡 选用基于p c 1 0 4 $ 口p c 1 0 4p l u s 总线的d m 7 5 2 0 ,连接于p c 1 0 4 底部的c o m p a c t f l a s h 卡用于存放嵌入式操作系统和应用程序,采集后的数据保存至i d e 或s c s 接e l 的硬盘。软件上,通过将桌面l i n u x 裁减编译后移植到c o m p a c tf l a s h 卡中 作为嵌入式操作系统,应用程序中采用d m a 方式实现高速数据传输。 系统加电后,c f 卡上的引导程序将压缩的l i n u x 内核复糨g r a m 中解压启动, 然后自动运行数据采集程序。由于l i n u x 及其根文件系统完全运行于r a m 中,不 仅保证了整个系统的高速性,而且系统的意外断电或重启不会破坏操作系统和 应用程序,从而使系统具有高的可靠性。 围绕这一系统的研究开发,论文按以下章节展开论述: 第一章绪论,介绍本论文的研究背景、嵌入式操作系统的综述,以及将 l i n u x 用于嵌入式系统有哪些优势与问题,最后说明了本论文的研究内容。 第二章l i n u x 内核分析,通过阅读源代码,分析t l i n u x 下的进程管理、内 存管理、文件系统管理、设备管理和网络管理。 第三章构造嵌入式l i n u x 系统,首先讨论了构造嵌入式l i n u x 系统的几个关 键问题,然后详细介绍了如何在p c 1 0 4 的c f 卡上构造嵌入式l i n u x 操作系统。 第四章l i n u x 设各驱动程序编写,介绍了k i n u x 设备驱动程序的基本实现原 理和需要解决的一般问题,然后详细论述t d m 7 5 2 0 数据采集卡驱动的开发。 第五章数据采集系统设计,详细论述了系统的实现方案和数据采集软件的 设计。 第六章总结与展望。 西北工业人学硕士学位论文 第二章l i n u x 内核分析 第二章l i n u x 内核分析 作为汇集了无数编程人员优秀编程思想的l i n u x 核,永远吸引着一批批的 后来者去研究它。只有深刻领悟t l i n m x p q 核的编程思想,才可以构造出更加精 简高效的嵌入式l i n u x l 匈核,才可以编写出更高质量的驱动与应用。因此,本章 首先剖析l i n u x 内核的系统结构与实现机制。 2 1l i n u x 内核概述 l i n u x 是一个多用户、多任务、支持内核级多线程和多c p u 的操作系统,它 符合p o s i x ( p o r t a l b l e o p e r a t i n g s y s t e mi n t e r f a c e ) 可移植操作系统接口定义, 支持e x t 2 、f a t 、v f a t 、f a t 3 2 、n f s 、m i n i x 、x e n i x 等多种文件系统。 l i n u x 通常被分成四个主要部分:内核、s h e l l 、文件结构和实用工具。内 核、s h e l l * n 文件结构一起形成了基本的操作系统结构。其中l i n u x p q 核是整个 操作系统的重要组成部分,是运行程序和管理硬件设备的核心程序。 作为类u n i x 操作系统,l i n u x 不仅继承t u n i x 优秀的特质,而且在许多方面 都超过了u n i x ,具有相当的创新精神。 l i n u x 内核具有如下特征: 1 ) l i n u x 的进程调度方式简单有效。对于用户进程,l i n u x 采用简单的动态 优先级调度方式;对于内核中的例程( 如设备驱动程序、中断服务程序 等) ,则采用了一种独特的机制- - b o t t o mh a l fh a n d l e r 内核例程处理 程序,从而保证了内核例程的高效运行。 2 ) l i n u x 支持内核线程( 守护进程) 。内核线程是在后台运行而又无终端 或登陆s h e l l 和它结合在一起的进程。有许多标准的内核线程,其中有 一些周期地运行来完成特定的任务( 女1 s w a p d ) ,而其余一些则连续地 运行,等待处理某些特定的事情( p 1 i n e t d s f d l p d 等) 。内核线程可以说 是用户进程,但和一般的用户进程又不同,它象内存一样不被换出,因 此运行效率较高。 3 ) l i n u x 支持多平台的虚拟内存管理。内存管理是和硬件平台密切相关的 西北工业大学硕士学位论文嚣= 章l i n u x 内核分析 部分,为了支持不同的硬件平台而又保证虚拟内存管理技术的通用性, l i n u x 的虚拟内存管理为不同的硬件平台提供了统一的接口,因此把 l i _ n u x 移植到一个新的硬件平台并不是一件很困难的事。 4 ) l i n u x 的虚拟文件系统( v f s ) 很有特色。l i n u x 的虚拟文件系统不仅为 多种实际文件系统( 如e x t 2 ,f a t 等) 提供了统一的接口,而且为各种 硬件设备( 作为一种特殊文件) 也提供了统一的接口。 5 ) l i n u x 的模块机制使得内核保持独立而又易于扩充。模块机制可以使内 核很容易地增加一个新的模块( 如一个新的设各驱动程序) ,而又无需 重新编译内核;同时模块机制还可以把一个模块按需添加到内核或从内 核中卸下,这使得我们可以按需要定制自己的内核。 6 ) 网络部分使用面向对象的设计思想。使得l i n u x 内核支持多种协议、多 种网卡驱动程序变得容易。 2 2 l i n u x 内核的抽象结构 从结构f l i n u x p q 核可划分为五个主要部分:进程管理、内存管理、虚拟文 件管理、设备驱动管理和网络管理。 异 户级程序l 【i i 。l il i 丫r 。一一1 。一 。 系统闻用接口 皇审+ 严竖臣茎臣堇已蒸 实际塞赞墨錾f+ f 设备驱动程序 h 厂元万耳商西i i ;订 p十 j 。d e 硬盘驱动程序fr 磊i i i 订l l j 仲硬盘 ) 1 软盘 j 1 以 网卡 j 图2 1l i n u x 内核结构 般程序 西北t 业大学硕士学位论文 第二章l i l 、u x 内核分忻 如图2 1 所示,系统调用接口是用户和操作系统之间的接口,通过系统调用 可以允许高层软件访问指定的内核函数。虚拟文件系统可分为实际文件系统和 设备驱动程序两部分,实际文件系统指l i n u x 所支持的女h e x t 2 、f a t 、n f s 等文件 系统,而设备驱动程序指为每一种硬件控制器所编写的驱动程序模块。内存管 理允许多个进程安全地共享主内存区域,并支持虚拟内存技术。进程管理包括 对进程调度和进程间通信在内的管理。进程调度控制着进程对c p u 的访问,当需 要选择下一个进程运行时,调度程序选择最值得运行的程序;进程间通信支持 进程间的各种通信机制。网络管理部分提供了对各种网络设备的存取和各种网 络硬件的支持。网络接口可分为网络协议和网络驱动程序两部分,网络协议部 分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进 行通信,每一种可能的硬件设备都有相应的设备驱动程序。 2 3 1进程 2 3进程管理 进程是进程实体的运行过程,具有由创建而产生、由调度而执行的特点。 可定义为,可并发执行的程序在一个数据集合上的运行过程。l i n u x 是一个多进 程操作系统,它的目标是在每一时刻都有一个进程运行在系统的每个c p u 上,来 极大化c p u n 用率。 进程定义 在l i n u x e e 每个进程都由一个t a s k s t r u c t 数据结构描述。t a s l s t r u c t 结构 定义在k e r n e l s c h e d c 中: s t r u c tt a s k s t r u c t * t a s k n rt a s k s = & i n i t t a s k : n r t a s k s 定义在i n c l u d e 1 i n u x t a s k h 中,是系统最大进程数: # d e f i n en r j a s k s5 1 2 当系统创建一个进程时,l i n u x 为新的进程分配一个t a s k s t r u c t 结构,占 据一部分内存空间。同时指向该结构的指针被加入到t a s k 数组中,用来记录系 统中进程数目的全局变量n r t a s k s 自增1 ;进程结束时又回收t a s k s t r u c t 结构, 进程也随之消失,兀r t a s k s 自减l 。 8 两北工业大学硕士学位论文 第一章l i n u x 内核分析 进程状态 l i n u x 进程有以下状态: a 运行( r u n n i n g )进程或者正在运行( 它是系统中的当前进程) 或者已 经准备好运行( 等待被分配到系统的一个c p u 上) 。 b 等待( w a i t i n g )进程正在等待一个事件或一个资源。l i n u x 区分两种 类型的进程:可中断的和不可中断的。可中断等待进程可以被信号中断,而不 可中断等待进程直接等待硬件条件,并且在任何环境下都不会被中断。 c 停止( s t o p p e d )进程停止了,通常是通过接收一个信号。一个_ i _ f 在 被调试的进程可以处于停止状态。 d 死亡( z o m b i e ) 这是一个被终止的进程,由于某种原因,仍在t a s k 向量中有一个t a s k s t r u c t 数据结构,正像其名字那样,它是一个死去的进程。 进程调度 常用的进程调度算法有:先来先服务( f i f o ) 、时间片轮转( r o u n dr o u b i n ) 、 优先权调度算法,多级反馈队列调度算法等。 l i n u x 进程调度大致可分为两种情况:一种是通过s c h e d u l e 0 启动一次调 度;另一种是强制性调度,当进程运行于用户空间时,可能产生强制性调度, 运行于内核空间则不会发生。 在每个进程的t a s k s t r u c t 结构中有四项,作为调度进程的依据: p o ii c y 进程的调度策略。用来区分实时进程和普通进程,实时进程比所有 其它进程的优先级高。实时进程有两种策略:轮转法或先进先出( r o u n dr o b i n a n df i r s ti nf i r s to u t ) 。 p r i o r i t y 进程的调度优先级。它也是进程被允许运行时可以使用的时间量 ( 在j i f f i e s 中) ,可以通过系统调用或者r e n i c e 命令来改变进程的优先级。 r t _ p r i o r i t y 实时进程特有。用于实时进程间的选择。 c o u n t e r 进程剩余的时间片。其起始值就是p r i o r i t y 的值,可看作是动态 优先级。 对于普通进程,l i f l u x 采用动态优先调度。创建进程时,优先级p r i o r i t y 被 赋予一个初值( 0 7 0 ) ,这个数字同时也是c o u n t e r 的值:进程运行中c 。u n t e r 不断减少, 而p r i o r i t y 保持不变;一个普通进程的时间片用完后,并不马上用 p r i o r i t y 对c o u n t e r 进行赋值,只有所有可运行的普通进程的时间片用完后才用 9 两北工业大学硕上学位论文 第二章l i n u x 内核分析 p r i o r i t y 对c o u n t e r 重新赋值。这说明在普通进程运行过程中,c o u n t e r 减少给 了其他进程运行的机会,直至c o u n t e r 减为0 才放弃对c p u 的使用,相当于优先级 在动态变化。 对于实时进程,l i n u x 采用f i f o 和r r 两种调度策略。每个实时进程有两种优 先级,c o u n t e r 只用来表示该进程剩余的时间片,r t p r i o r i t y 用来衡量实时进 程是否值得运行。 2 3 2 进程间通信机制 内核用于协调进程间相互通信的活动。l i n u x 支持一部分进程间的通信( i n t e r p r o c e sc o m m u n i c a t i o n ,i p c ) 机制。信号和管道是两种i p c 机制,但l i n u x 也支持u n i xt ms y s t e mv 的i p c 机制。 信号机制( s i g n a l s ) 信号机制是u n i x 系统使用最早的进程间通信机制之一,主要用于向一个或 多个进程发异步事件信号。 l i n u x 使用存贮在每个进程t a s k s t r u c t 结构中的信息实现信号机制。它支 持的信号数量受限于处理器的字长,3 2 位字长的处理器有3 2 种信号,6 4 位字长 的处理器有6 4 种信号。 t a s k s t r u c t 结构中的s i g 指针指向一个s i g n a 工一s t r u c t 结构,该结构定义于 i n c l u d e l i n u x s c h e d h 中: s t r u c ts i g n a l s t r u c t a u t o m ic _ tc o u n t ; s t r u c tk s i g a c t i o na c t i o n _ n s i g : s p i n l o c k ts i g l o c k : 数组a c t i 。n 相当于一个信号向量表,数组中的每个元素相当于一个信号向 量,确定当进程收到一个具体的信号时应采取的行动。 每个进程都有一个掩码m a s k ,它保存在t a s k s t r u c t 结构中的b l o c k e d 中,信 号的阻塞通过设置信号掩码来实现。b l o c k e d j 长度为一个字长,每一位对应一个 信号,位置为l 表示信号被阻塞。信号之间不存在内在的相对优先级。如果对同 西北工业大学硕士学位论文 第二章l i n u x 内核分析 一个进程同时产生两个信号的话,它们就会保存在进程的t a s k s t r u c t 结构中, 并按任意顺序处理。 管道( p i p e s ) 所谓管道,是用于连接一个读进程和一个写进程,以实现它们之间通信的 共享文件,又称p i p e 文件。 在l i n u x 系统中,将两个f i l e 结构指向同一个临时性v f s 索引节点,并且此 v f s 索引节点又指向内存中的一个物理页,这样管道就实现了,如图2 1 所示。 这两个f 订e 数据结构所定义的文件操作例程地址不相同,一个是向管道中写入 数据的例程地址,一个是从管道中读出数据的例程地址。管道的写过程是把字 节拷贝到共享数据页面中,而读过程则是把数据从共享数据页面中读出来。 p r o c e s s l p r o c e s s 2 f i l ef i le 图2 2p i p e s 使用管道克服了使用文件进行通信的两个问题:第一,管道是一个固定大 小的缓冲区( l i n u x 中为4 k ) ,它的大小不会象文件那样不加检验地增长:其次, 读进程可能比写进程工作得快( 从管道读取数据是一次性操作,数据一旦被读 取就从管道中被抛弃,并释放空间) 。 l i n u x 同时支持命名管道( n a m e dp i p e s ) 或称为f i f o 管道。 套接字( s o c k e t s ) l i n u x 支持u n i x 系统v 版本中的三种进程间通信机制( i p c ) :消息队列 ( m e s s a g eq u e u e s ) 、信号量( s e m a p h o r e s ) 和共享内存( s h a r e dm e m o r y ) 。 西北工业大学硕士学位论义 第二章l i n u x 内核分析 系统把消息队列、信号量和共享内存定义为s y s t e mv 的i p c 对象,每个i p c 对象都有一个唯一的标识号。这些s y s t e mv 的进程间通信机制使用相同的认证 方法,即通过系统调用向内核传递这些资源的全局唯一标识来访问它们。l i n u x 用i p e p e r m 数据结构描述s y s t e mv 对象,定义在i n c l u d e 1i n u x i p c h 。 2 4 内存管理 l i n u x 系统使用虚拟内存技术来管理内存以提供大于实际物理内存的内存 空间。在两种地址空间采用删u 来执行内存管理的地址映射,并采用t l b ( t r a n s l a t i o nl o o k a s i d eb u f f e r s ,翻译后缓存储器) 来加速这种映射的速度。 l i n u x 分页机制 l i n u x 假定系统中有三级页表。所访问的每级页表包含下一级页表的页帧号 ( p f n ,p a g ef r a m en u m b e r ) 。 幽2 3t h r e el e v e lp a g et a b l e s 如图2 3 所示,一个虚拟地址被分解成几个字段,每个字段包含一个特定 页表的偏移。为了将一个虚拟地址转换成一个物理地址,处理器必须取出每一 个字段的内容,把它变换成包含页表的物理页的偏移并读出下一级页表的页帧 号。这个过程被重复三次,直到包含该虚拟地址的物理页的页帧号被找到。然 后虚拟地址的最后一个字段即字节偏移,被用来查找页中的数据。 页的分配和回收 系统中所有物理页都用m e mm a p 数据结构描述,它是一个在启动时被初始化 的m e r e _ m a p t 结构的列表。结构m e r e _ m a pt 定义于i n c l u d e l i n u x m m h 中,每个 垦韭三些奎兰堡主兰竺丝茎j 蔓三兰塑竺上! ! ! ! 堕 m e r n m a p t ,描述系统中一个物理页。 f r e e _ a r e a 向量被页分配代码用来寻找和释放页。f r e e a r e a 的每个元素包 含页块的信息。数组中第一个元素描述一页,下一个描述两页的一块,再下一 个描述4 页的一块,依此以2 的幂增长。 图2 4t h ef r e e a r e & d a t as t r u c u r e t y p e d e fs t r u e tf r e ea r e a _ s t r u c t s t r u c t1 i s t _ h e a df r e e 一1 i s t : u n s i g n e di n t * m a p : ) f r e e a r e a _ t : f r e e a r e a _ tf r e e a r e a m a x _ o r d e r : f r e el i s t 是一个双向链表的头指针,该双向链表的每个节点包含空闲页 的起始物理页帧号,而m a p 则是记录这种页组分配情况的位示图,位示图的第n 位为1 表示第n 页是空闲的。 图2 4 展示了f r e e _ a r e a 结构。元素0 有一个空闲页( 页帧号o ) ,而元素2 有 两个空闲的4 页块,第一个开始于页帧号4 而第二个开始于页帧号5 6 。 l i n u x 使用b u d d y 算法2 来分配和回收页。 西北工业大学烦上学位论文 第二章l i n u x 内核分析 分配算法首先搜索请求大小的页。它沿f r e e a r e a 中f r e e j i s t 元素处排成 队列的空闲页链表进行搜索。如果没有请求大小的页是空闲的,两倍于所请求 大小的块将被查找,这个过程一直进行到整个f r e e a r e a 被检查过或找习一页为 止。若找到的页比请求的大,就须将其分开直到得到合适大小的一块,因为块 大小都是2 的指数幂,所以只需把块等分。空闲的块排到合适的队列中,被分配 的块返回给调用者。页分配函数定义在r a m p a g e a ll o c c 中。 s t r u c tp a g e * 一a 1 1 0 c _ p a g e s ( z o n e l i s t t z o n e l i s t , u n si g n e dl o n go r d e r ) : 一个页被释放时将检查相邻同样大小的页是否空闲,如果空闲则与新释放 的页组合成一个空闲页。每次两个页被组合成更大的空闲页时,页回收代码将 试图将该块组合成更大的块。释放页函数为: v o i d f r e e _ p a g e ( s t r u c tp a g e * p a g e ) : 内存映射 当一个映像被执行时,该可执行映像的内容必须被放到进程的虚拟地址空 间。对于可执行映像链接到的共享库也是如此。这种将个映像链到个进程 的虚拟地址空间的技术也被称为内存映射( m e m e r ym a p p i n g ) 。 每个进程的虚拟内存都通过一个m m _ s t r u c t 数据结构表示。它包含当前正执 行的映像( 如b a s h ) 的信息以及一些指n v ma r e a s t r u c t 数据结构的指针。每个 v ma r e a _ s t r u c t 数据结构描述虚拟内存区的开始和结束、进程对该内存的访问 权以及对该内存的一组操作。当个可执行映像被映射到进程虚拟地址空间时, 一组v m _ a r e a s t r u c t 数据结构将被产生。 缺页处理 执行应用程序时,虽然程序已经被分配了虚拟地址空间,但l i n u x 并不把全 部程序代码调入物理内存,仅仅加载需要立即运行的部分;程序运行到需要访 问尚未装入物理内存的虚拟内存区域时,处理器将n l i n u x 报告一个页故障及相 应的故障原因,即缺页中断。缺页中断调用定义于i n c l u d e i 3 8 6 f a u l t c 的页 错误处理程序d o p a g ef a u l t0 。 产生缺页中断时,t i n u x , g , 须判断该页所在的位置,即判断页是在交换文件 中还是在可执行映象中。如果该页的页表项无效但非空,蜕明该页处于交换文 件中,操作系统要从交换区装入该页。否则需要从磁盘映象中装入。这就需要 西北工业大学硕士学位论文第二章l i n u x 内核分析 操作系统分配新的物理页,更新页表,并从映象中装入内存。 交换机制 当物理内存变得短缺时,l i n u x 内存管理子系统必须试着释放物理页。这项 任务落在内核交换守护进程( k s w a p d ) 头上。内核交换守护进程是一种特殊类型 的进程一一个内核线程。内核线程是没有虚拟内存的进程,它们在核态下的物 理地址空间中运行。它的作用是确保系统中有足够空闲页来保持内存管理系统 高效运行。 内核交换守护进程( k s w a p d ) 在启动时由内核初始化进程启动,并等待内核 交换定时器周期性超时。每当定时器超时,交换守护进程就去看系统中空闲页 的数目是否太少了。它使用两个变量,f r e e _ p a g e s h i g h $ f r e e p a g e s _ l o w 来 决定是否应释放一些页。只要系统中空闲页数目多于f r e e p a g e h i g h ,内核交 换守护进程就什么也不做,它再次“睡眠”直到其定时器再次超时。在进行这 次检查时,内核交换守护进程把当前正被写出到交换文件的页也计算在内。它 保持一个这种页的计数于n r a s y n c j o a g e s 中,每当有一页排队等待被写出到交 换文件时,则递增;而当交换设备的写完成后递减。f r e ep a g e sl o w 和 f r e e _ p a g e s h i g h 在系统启动时被置值并与系统中物理页数有关。如果系统中的 空闲页数少于f r e e _ p a g e s h i g h ,甚至少于f r e e p a g e s l o w ,则内核交换守护 进程将试用三种方法来减少系统中使用的物理页数: 减少缓冲区和页缓存的大小。 - 交换出s y s t e mv 共享内存页。 换出及淘汰页。 如果系统中空闲页数低于f r e e p a g e s l o w ,内核交换守护进程将在下次运 行前试着释放6 页,否则将试着释放3 页。上面三种方法将依次被使用直到足够 的页被释放。内核交换守护进程会记住上次它是用哪种方法来释放物理页。每 当运行时它将开始试着用上次成功的方法释放页。当释放完足够页后,交换守 护进程再次睡眠直到定时器超时。如果内核交换守护进程释放页的原因是系统 中空闲页数少于f r e e p a g e s l o w ,那么它仅睡眠通常一半的时间。一旦系统 中空闲页多于f r e e p a g e s l o w ,内核交换守护进程将在检查前睡眠长些。 西北工业大学硕士学位论文 第二章l i n u x 内核分析 2 5 文件系统管理 2 5 1l i n u x 文件系统结构 l i n u x 像u n i x 一样。系统可用的独立文件系统不是通过设备标识来访问的, 而是把它们链接到一个单独的树形层次结构中。该树形层次结构把文件系统表 示成一个整个的独立实体。l i n u x 以装配的形式把每个新的文件系统加入到这个 单独的文件系统树中。无论什么类型的文件系统,都被装配到某个目录上,由 被装配的文件系统的文件覆盖该目录原有的内容。该目录被称为装配目录或装 配点。在文件系统卸载时,装配目录中原有的文件才会显露出来。 观察t a s k s t r u c t 数据结构的定义: s t r u c tt a s ks t r u c t s t r u c tf s s t r u c t * f s : 文件系统的结构 s t r u c tf i l e s s t r u c t * f i l e s :已打开的文件信息 图2 5l i n u x 文件系统结构 如图2 5 所示,每个文件系统都有一个目录项- - d e n t r y 数据结构,还有一个 索引节点一i n o d e 数据结构。i n o d e 数据结构记录文件在存储介质上的位置与分 布信息等,记录其物理属性;d e n t r y 数据结构代表逻辑意义上的文件,记录其 西北工业人学硕士学位论文 第_ 二章l i n u x 内核分析 逻辑属性。一个文件可能有几个d e n t r y 数据结构,而i n o d e 数据结构唯一。 2 5 2虚拟文件系统( v f s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CI 614-2024COB小间距显示屏可靠性测试与评估规范
- 2025江苏无锡市妇联实验托幼中心招聘编外工作人员10人备考考试题库附答案解析
- 2026粤规科技校园招聘备考考试题库附答案解析
- 工厂安全培训活动的感想
- 资阳现代农业发展集团有限公司下属子公司一般员工市场化招聘(6人)备考考试题库附答案解析
- 工厂安全培训标语课件
- 线上线下数据联动-洞察及研究
- 2025重庆大学土木工程学院科研团队劳务派遣工勤人员招聘1人备考考试题库附答案解析
- 2025版男科疾病常见症状及护理技巧
- 运动饮食养成之道
- 济宁市“技能状元”职业技能竞赛-全市煤化工行业技能大赛化学检验工参考题库
- 邢台城市介绍课件
- 怎样写好硬笔字-硬笔书法教程课件 4-1 硬笔隶书笔画技法
- 旅行社旅游突发公共事件应急预案
- 统编版中考语文一轮复习:义务教育语文课程常用字表(3500字注音版)(2022版课标)
- 建筑工程技术专业《房屋建筑学》课程标准
- 人教版部编版统编版一年级语文上册汉语拼音5《gkh》课件
- DL-T1083-2019火力发电厂分散控制系统技术条件
- 《2024年北京市医疗服务收费目录》
- 意外险医疗险重疾险
- 便利店陈列培训
评论
0/150
提交评论