(信号与信息处理专业论文)基于linux的快速自适应小波包图像压缩研究.pdf_第1页
(信号与信息处理专业论文)基于linux的快速自适应小波包图像压缩研究.pdf_第2页
(信号与信息处理专业论文)基于linux的快速自适应小波包图像压缩研究.pdf_第3页
(信号与信息处理专业论文)基于linux的快速自适应小波包图像压缩研究.pdf_第4页
(信号与信息处理专业论文)基于linux的快速自适应小波包图像压缩研究.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(信号与信息处理专业论文)基于linux的快速自适应小波包图像压缩研究.pdf.pdf 免费下载

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

文档简介

西北工业大学硕士论文 摘要 基于小波变换的图像编码技术是近些年来图像压缩领域的研究热点。随着 3 g 时代的到来,信息技术的发展和图像应用范围的不断扩大,对图像压缩和编 码的要求越来越高。本文结合课题,在对小波理论和图像的小波编码技术进行了 较为深入学习的基础上,研究并实现了基于l i n m x 的快速自适应小波包图像压 缩。本文首先介绍了l i n u x 系统的特点;然后从信号分析和数字信号处理的角度 对小波分析理论进行了系统的总结和介绍:最后从最佳基选择、滤波器构造、小 波包系数优化和量化等方面对这种自适应小波包图像压缩算法进行介绍。该算法 很适于对纹理图像进行压缩,而且它在最佳基的选择上并不需要迭代过程,这样 就节省了大量的时间,实现了快速压缩。 实验结果表明:该算法实现了对纹理图像的高效编码,虽然它的解压图像也 有振铃效应,但它能对复杂图案进行较好的恢复,其视觉效果和失真上都优于一 般的小波压缩算法而且它的速度也要更快一些。 关键词:小波变换自适应最佳基滤波器 迭代振铃复杂图案 堕韭三些查兰堡主堕奎 a b s 订a c t i m a g ec o m p r e s s t o nb a s e do nw a v e l e tt r a n s f o i t nh a sa t t r a c t e dm a n ya t t e n t i o n si n r e c e n ty e a r s w i t ht h et i m eo f3 g c o m i n g ,t h ed e v e l o p m e n to fi ta n dt h ee x t e n s i v e a p p l i c a t i o no fi m a g e ,s o m eh i g h e rr e q u i r e m e n t so ni m a g e c o m p r e s s i o na n dc o d i n ga r e t ob es a t i s f i e d i nt h i s p a p e r , t h e o r i e sa b o u tw a v e l e ta n a l y s i sa n di m a g ec o m p r e s s i o n a r er e v i e w e da n dr e s e a r c h e so nf a s t a d a p t i v ew a v e l e tp a c k a g ei m a g ec o m p r e s s i o n b a s e do nl i n u xa r ed i s c u s s e da tf i r s t ,id e s c r i b et h es y s t e mo f l i n u x t h e nt h e o r i e s a b o mw a v e l e t a n a l y s i s a r e s y s t e m a t i c a l l yr e v i e w e df r o mt h ev i e w p o i n to fs i g n a l a n a l y s i sa n dd i g i t a ls i g n a lp r o c e s s i n g a n da tl a s tid e s c r i b et h es e l e c t i o no ft h eb e s t b a s i s ,c o n s t r u c t i n g t h e f i l t e r s ,o p t i m i z i n g a n d q u a n t i z i n g t h ew a v e l e t p a c k a g e c o e f f i c i e n t sa b o u tt h ea d a p t i v ew a v e l e t p a c k e tc o m p r e s s i o na l g o r i t h m t h ea l g o r i t h m i sv e r yf i tf o re n c o d i n gt e x t u r e di m a g e sa n dt h es e l e c t i o no ft h eb e s tb a s i sd o e sn o t r e q u i r ea n yi t e r a t i v ep r o c e d u r e s oi tc a ne n c o d ev e r yf a s t e x p e r i m e n tr e s u l t ss h o wt h a tt h ea l g o r i t h mc a ne 舒c i e n t l ye n c o d et e x t u r e d i m a g e s 、r i n ga r t i f a c t s a r e v i s i b l e ,b u ti t c a l l e f f i c i e n t l yr e c o n s t r u c tt h eo s c i l l a t o r y p a t t e r n s n o t o n l y i t sr e s u l t so f e r n o u t p e r f o r m t h e g e n e r a lw a v e l e tc o m p r e s s i o n a l g o r i t h m sb o t hv i s u a l l ya n di nt e r mo f t h eq u a d r a t i ce r r o r b u ta l s oi ti sf a s t e r k e y w o r d s :w a v e l e t t r a n s f o r m a d a p t i v e t h eb e s tb a s i sf i l t e r i t e r a t i v e r i n g i n go s c i l l a t o r yp a t t e r n 西北工业大学硕士论文 第一章概论 1 1 研究h i n u x 的意义 l i n u x 的形成: l i n u x 的出现,最早开始于位名叫l i n u st o r v a l d s 的计算机业余爱好者, 当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替m i n i x ( 是由 位名叫a n d r e wt a n n e b a u m 的计算机教授编写的一个操作系统示教程序) 的操作 系统,这个操作系统可用于3 8 6 、4 8 6 或奔腾处理器的个人计算机上,并且具有 u n i x 操作系统的全部功能,因而开始了l i n u x 雏形的设计。 为什么要使用l i n u x 环境: 操作系统在近十几年取得了长足的发展,从早期的d o s tf j w i m o w s 再加上 u i n u x ,l i n u x ,它的发展似乎已经接近完美尤其是w i n d o w s 系列几乎到了无所不在 的地步但是它的广泛使用也导致了问题多多近2 0 年来,我国广泛应用的主流操 作系统都是从国外直接引进的产品。没有自己的技术控制权和产业的主导权就没 有信息时代真正的国家自主权,面临目前这样的状态,开发具有我国自主版权的 安全操作系统产品是我国各行各业的迫切需要而l i n u x 属于自由软件,用户不用 支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必 要的修改,无偿对它使用,无约束地继续传播。l i n u x 自身的特点使它具有很有 多优势 对于信息安全,每个人站在不同角度可以有不同的认识,对于安全的度量标 准也可以有不同的看法。不少人听了一些商家的宣传以为有了反骇客攻击技术、 防火墙、智能网关、数据加密技术、备份技术、防网络病毒措施等系统就安全了。 其实这只是整个信息安全保障体系的一些组成部分,信息安全的基础是在底层软 件特别是操作系统上。因为操作系统是最基本的软件,是一切其它软件包括网络 软件赖以运行的基础平台。且不说一个操作系统动辄几百万甚至几于万行代码, 其中存在一些b u g 似乎不足为怪,有些b u g 很不容易发现,但碰巧在某些条件的组 合下就会在什么地方遇到,系统就死机。这种不可靠的系统根本就谈不上安全。 更何况有些操作系统如w i n d o w s 类留有很多进入操作系统的“口子”,如系统中断 向量等只要了解这些向量的用法,就可进入操作系统内部“自由发挥”,有意 无意地去破坏整个系统的运行,许多计算机“病毒”就是这样制造出来的。当然 从严格意义上讲,谁都无法断言一个系统是完全安全的,因为计算机的安全问题 至今还没有一个完整的理论模型。但是我们又不能不用计算机,因此在现阶段, 西北工业大学硕士论文 我们只能正视骇客攻击,承认系统有漏洞,问题是对于信息安全要针对不同场合、 不同领域和不同时间作具体分析和处理,要综合治理,不只是靠一、两种措旌和 技术来“包治百病”。人们也不可以轻信某些厂家所宣传的系统,以为用了这样 的系统就可以高枕无忧了。但是大家一致公认,由于操作系统的特殊性,其安全 是一切信息系统安全的基础。现在用得最多的两大类操作系统w i n d o w s ( 包括n t ) 和u n i x ( 包括l i n u x ) 比较起来,前者安全隐患更多,这是大家的共识和不争的 事实。问题的要害是,信息安全不只是系统瘫痪或受到攻击在经济上会造成重大 损失,更有甚者,已经有敌对势力利用电脑信息安全在政治和军事上制约对方。 因此在全世界的网络都联到i n t e r n e t 情况下,对于网络系统来说,不但面临着病 毒和黑客侵袭的危险,也存在着电脑战的现实威胁,这就使得保障网络及信息的 安全成为刻不容缓的大事。尽管人们为此研究和开发了各种安全技术的措施,但 往往忽略了一个基本环节,即操作系统本身的安全性问题,而事实已经证明,操 作系统本身也不是绝对可靠的。对于这种不可靠,可用户似乎没有太多的办法。 l k 如w i n d o w s 类操作系统是不开放源码的,人们无法对它们进行分析,所以它是 否安全、只能靠用户自己去试;另外,由于不开放源码,人们也很难有什么有效 的手段加强操作系统本身的安全性,即使采用了其它一些安全技术和措施,它们 也都是在操作系统之外,并要依赖操作系统这个难以捉摸的“黑盒子”才能运行, 在这种情况下也很难说系统是安全的。因此,为了保障及信息的安全,发展自主 的操作系统产品已是当务之急。 人们都有一种共识,二十一世纪信息领域半导体集成电路和软件是基础。在 软件方面我们中国人的聪明才智更可以得到充分的发挥。软件虽然也是高风险、 高投入的产业,但相e l c p u 芯片的设计生产来说,是投入量相对较少,经济上 可以承受;二是我们掌握的软件技术和方法与国际上最新的水平相差无几,尤其 是如果利用国际上大量“f r e e ”的软件,可以较快地掌握其精髓,跳跃发展,加 上我们的创新,那么就有可能进入市场,与对手竞争;三是在最大规模的p c 机市 场上,如果不用自主的操作系统那么就只能用w i n d o w s ,受微软统治和剥削。若 要挣脱它的羁绊就只能开发有自主产权的系统软件,l i n u x 及其所代表的f r e e 软件为我们提供了一个机会、一种新的发展思路,而目前国外众多厂家通过l i n u x 服务和支持扩大市场的发展模式也为我们今后市场运作提供了有益的参照。 从另一角度,半导体集成电路的龙头是c p u 。本人认为,就我们国家目前的技术、 经济实力和市场份额而言,真正动手设计、开发自己的高性能的c p u 还需待时日。 国家信息产业部曾经因i n t e lp i i i 的某型号有“后门”而要大家“慎用”,而我们 在相当长一段时间里又不可能开发出自己的足够强大的c p u ,那么为了信息安全, 我们唯一可以做的,就是通过自主操作系统把有缺陷或认为不安全的c p u ( 不管 有意无意) “包”起来,减少或杜绝其“危害”的一面,就象在核电站,用一套防护 设施把中心核反应堆“包”起来一样。这在操作系统设计中是可以做到的。因为 西北t 业大学硕士论文 一切硬件都要通过操作系统对外发挥作用。因此,从信息安全角度来说,有了自 主的l i n u x 操作系统就又多了一道防线。 总而言之,就二十一世纪信息产业的两大基础,半导体集成电路和软件来说, 民族产业的建立与屏障的突破,如果分轻重缓急,那么无论从经济承受能力、技 术掌握程度还是市场占有份额等各方面,我们认为首先突破的应是软件,是系统 软件特别是操作系统。 除了安全性的考虑之外,发展自主l if l u x 操作系统还有更多的经济方面的意 义: 第一、关系到软件产业以致于整个信息产业的利润。1 9 9 9 年我国p c 机市场约为4 5 0 万台,据预测2 0 0 0 年我国p c 机市场将超过6 0 0 万台。依每台硬件平均价1 0 ,0 0 0 元, 操作系统价格为硬件价格1 0 ,即每台l ,0 0 0 元计,6 0 0 万台p c 若全部购买正版操 作系统,则必须支付6 0 亿元,如果把上层的一部分o f f i c e 套件、浏览器、s q l 、 s e r v e r 等计算在内,则费用着实惊人。按中国p c 市场的发展趋势,今后每年光为 w i n d o w s 类操作系统支付版权费即为上百亿元甚至更多。所以为了减少巨额财富 的流失,必须将降低对w i n d o w s 系列的依赖。 第二、关系到软件市场的问题。大家知道通过与操作系统捆绑或集成的办法,可 以使一个应用软件迅速占领市场。微软正是通过将i e 浏览器和w i n d o w s 捆绑( 或 集成) 打败了网景公司的浏览器。现在微软在中国市场上也在依法炮制,例如它 曾在o f f i c e2 0 0 0 的中文测试版上捆绑它自己的笔输入法,如果今后某一版本进 行捆绑销售,那么我们国内的汉王、蒙恬、紫光等公司努力奋斗开拓的市场将全 部被微软侵吞。所以不发展自主l i n u x 操作系统,就不能把握软件市场的龙头。 综上所述,为了保障网络及信息的安全,为了软件产业以致整个信息产业的 利益,为了争取应用软件开发的主动权,为了掌握软件市场的龙头,都必须加大 对l i n u x 的开发。 1 2 图像压缩编码方法概述 a a ,2 6 ,2 8 1 1 2 1 图像中的冗余信息 图像压缩通过去除图像数据的各种冗余达到压缩的目的。图像数据中的冗余 信息主要包括信息熵冗余、像素间冗余和视觉冗余。 1 ) 信息熵冗余 信息熵冗余是指对图像中出现概率相差很大的像素都用相同的比特数进行 编码。由信息论的有关理论可知,为表示图像数据的一个像素点,只需要按其信 息熵的大小分配相应比特数即可。然而实际图像中的每个像素一般都用相同的比 西北工业大学硕士论文 特数表示,这样必然存在冗余。 2 ) 像素间冗余 像素冗余包括多种。图像内相邻像素间存在空间冗余。运动图像中相邻两帧 图像间存在时间冗余。在多光谱图像中,谱间相邻的像素间存在谱间冗余。有些 图像的部分区域内存在着非常强的纹理结构,或是图像的各个部分之间存在着自 相似性,则形成了像素间的结构冗余。 3 ) 视觉冗余 多数情况下,重建图像的最终接收者是人的眼睛。由于人眼的分辨力有限, 一些图像信息的损失对人眼的影响微乎其微,因此可以允许压缩后的复原图像有 一定失真,只要这种失真难以察觉即可。这就是视觉信息的冗余。 1 2 2 常用的压缩编码方法 以上各种形式的冗余,是编码压缩图像数据的出发点。根据图像信息恢复的 准确程度,图像编码可分为无损压缩和有损压缩。无损压缩算法在图像信息编码 解码过程中没有信息损失,从而可以完全重建原图像。这类算法的压缩比较低, 一般不超过3 :1 ,常用于医学、遥感图像等敏感性的应用中。有损压缩技术多应 用于数字电视技术和静止图像通信、工业、贸易和娱乐等方面。这些图像由于受 传输信道容量限制,而接受图像信息的信宿又往往是人眼,过高的空间分辨率和 过多的灰度层次,不仅增加了数据量,而且人眼也接受不了,因此可咀在允许的 失真范围内进行图像压缩编码。常用的压缩编码方法包括: 1 ) 基于字典的技术 基于字典的技术生成的文件包含的是定长码,每个码代表原文件中数据的一 个特定序列,这类方法的代表是行程编码。 2 ) 基于统计的方法 基于统计的方法用较短代码代表频繁出现的字符,用较长代码代表不常出现 的字符,从而实现数据的压缩,常用的方法包括哈夫曼编码和算术编码。这 些方法去除了图像数据的信息熵冗余,属于无损压缩。在未知信源概率分布的大 部分情况下,算术编码要优于哈夫曼编码。 3 ) 量化法 量化是一种最直观的数据压缩方法,分为标量量化和矢量量化。标量量化是 把原图像的灰度值量化成较少的级别。矢量量化是把图像分块,将每个像素块看 作矢量进行量化。这两种量化过程都要建立量化查找表,对每一输入数据在表中 查找和它最相近的量化值作为输出。标量量化主要是去除视觉冗余,矢量量化还 利用了图像中不同区域的自相似性,它们都属于有损压缩。 4 西北工业大学硕士论文 4 ) 预测编码 由于图像中相邻像素间都存在着较强的相关性,因此可利用某一像素的邻近 像素来预测它的值。由于预测误差一般远小于像素的原始灰度值,只要对误差进 行量化编码,就可以降低编码率,这就是预测编码。预测编码不仅去除了图像信 号的信息熵冗余,也去除了视觉冗余。根据预测后量化编码器设计的不同,预测 编码可以是无损的,也可以是有损的。 5 ) 变换编码 消除图像数据空间相关性的更有效的方法是进行信号变换,使图像数据在变 换域上最大限度的不相关,常用的变换方法有k - l 变换、d c t 变换等。图像变 换本身并不能带来压缩,但由于变换系数一般具有良好的性质,只要采用适当的 量化和熵编码就可以有效的对图像进行压缩。变换编码是一种能得到较高压缩比 的有损压缩方法。 6 ) 其它编码 除了以上传统的编码方法,近年来又出现了许多新的编码方法,例如子带编 码、分形变码、模型编码和小波编码等。这些方法主要是结合人类视觉生理、心 理特性设计编码系统,被称为第二代图像编码技术,它们都得到了较好的压缩效 果,但一般都是有损压缩。 1 3 小波编码技术 2 8 ,2 9 1 小波编码技术属于变换编码,典型的变换编码器由变换器、量化器和编码器 变换量化 编码 图像样本变换系数 符号流 无损失变换 所有信息损符号流有效 对图像样本失在这里产 的、无损的表 解相关 三部分组成,结构如图1 1 所示。 图1 1 变换编码器 在变换编码中,原始图像首先经过某种无损变换被解相关。然后变换系数经 量化后产生符号流,这一符号流中的每一个符号对应于一个特定的量化值。量化 过程是用较少的符号表示变换系数,因此将带来信息的损失。最后,对符号流进 行无损熵编码后输出,使得对每个符号编码所需的平均比特数达到最少。 可以看到,变换编码中数据的压缩只在量化和编码时获得,变换本身并不能 西北工业大学硕士论文 产生压缩的效果。变换的目的是使变换系数与原始数据相比具有更好的性质,即 满足:( 1 ) 变换系数相关性降低,所有系数尽可能相互独立;( 2 ) 能量集中于少数几 个系数上;( 3 ) 这些系数集中于一个最小的区域内。如果变换系数具有以上性质, 那么保留少数重要系数就能够很好的恢复出国像,在量化和编码过程中就可以获 得较大的压缩比。 图像的小波变换系数不仅满足上述要求,还具有更好的性质。这是因为小波变换 的本质是对信号进行多分辨率分析,非常适合人类视觉系统对频率感知的对数特 性,从而提供了利用人眼视觉特性的良好机制。而且小波变换后的图像数据能够 保持原图像在各种分辨率下的精细结构,为进一步去除图像中其它形式的冗余信 息提供了便利。小波编码技术的另一优点是可以方便的实现渐进传输性能。因此 小波编码技术在图像压缩研究领域被非常看好。目前,小波编码技术是静态图像 国际压缩标准j p e g 2 0 0 0 的主要解决方案,并且已被列入运动图像压缩标准 m p e g 4 中。 1 4 小波分析发展历史1 2 3 ,2 5 ,2 7 】 小波理论的形成,可以追溯到1 9 1 0 年h a a r 提出的第一个规范正交小波基一 h a a r 小波。在这之后由于一直没有构造出紧支规范正交小波基,因而限制了 小波的应用。1 9 8 4 年法国地球物理学家m o r l e t 在分析人工地震探测信号的局部 性质时,发现传统的f o u r i e r 变换难以达到要求,因此他将小波概念引入到信号 分析中。理论物理学家g r o s s m a n 对m o r l e t 的这种信号按一个确定函数的伸缩平 移系展开的可能性进行了研究。1 9 8 5 年法国数学家m e y e r 证明了一元小波函数y 的存在性,同时创造性的构造了具有一定衰减性的光滑小波函数,奠定了小波分 析的理论基础。之后,m m l a t 在1 9 8 6 年将计算机视觉领域的多尺度分析思想引 入小波分析,结合正交镜像滤波器组,提出多分辨分析的概念,给出了构造小波 基的一般方法和快速小波算法一m a i l a t 算法,并将m a l l m 算法有效的用于信号的 分析和重构。1 9 8 8 年,d a u b e c h i e s 使用多分辨分析,完善了由h a a r 起头的工作, 建立了构造正交小波基的完整框架。1 9 9 2 年,a c o h e n 等人又构造了具有线性 相位的双正交小波,使小波分析更适用于信号处理。目前9 7 和5 3 双正交小波 是图像处理领域中最常用到的小波基。从m a l l a t 提出多分辨分析至今,小波分析 一直在蓬勃发展,样条小波、小波包、多小波、第二代小波等概念进一步完善了 小波理论,推举算法的提出使离散小波变换的速度大大提高,这些都为小波分析 理论在各方面的应用提供了良好的条件。随着小波分析理论的日趋完善,充分利 用小波分析的良好特质,深刻挖掘小波分析在各方面的应用已成为小波研究领 域中最为重要的方面。 6 西北工业大学硕士论文 1 5 论文主要内容 本文的第一章是概论部分,主要讲述了采用l i n u x 系统和图像压缩的意义, 对现有的图像编码压缩方法进行了概括,并对小波编码技术和小波分析的发展历 史也作了简要的介绍; 本文的第二章介绍了l i n u x 系统的基本情况,针对我们工作的需要大概讲述 了一下l i n u x 编程工具v i 、e m a c s 、g c c 以及g d b 的基本知识; 本文的第三章讲述了小波分析的理论基础,详细介绍了m a l l a t 算法,并从滤 波器组角度介绍正交小波基和双正交小波基的构造方法; 本文的第四章提出并实现了基于快速自适应小波包的图像压缩算法。从提出 最佳基到滤波器构造、系数的排序和量化的方面对该算法进行了介绍。 本文的第五章提供了试验结果,通过比较,我们可以看到这种压缩方法的优 越性。 7 西北工业大学硕士论文 第二章l i n u x i n u x 系统编程基础 弟一早 系现骊程荃由出 2 1l i n u x 系统的采用 本系统一个很重要的特点是服务器端工作在l i n u x 环境下,为什么选择 l i n u x 操作系统,基于以下几点原因。 降低成本 l i n u x 操作系统是免费的操作系统,而使用w i n d o w s 操作系统是需要支付费 用的。本套软件将来如果投入商业应用,就可以大大减少成本。 降低开发难度 表面上,使用l i n u x 操作系统增加了开发难度,一方面是由于l i n u x 应用不 如w i n d o w s 广泛,另一方面是由于l i n u x 没有提供象开发w m d o 、v s 应用程序那 么方便的开发环境和那么多的开发包。但实际上,开发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 有今天的地位,完全是因为爱。所以,我们 这套程序也是在前人的基础上开发的,继承了许多优秀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 内核的大小,把不需要的部分去掉,这样不仅进一步提高了操作系 统的稳定性,同时也降低了系统所占用的空间 2 2 操作系统和l i n u x 一个操作系统是为用户管理硬件和软件的一个程序,操作系统最初是设计成 执行重复管理硬件的任务。这些任务集中在文件管理,运行程序和从用户得到命 令。你通过一个用户界面和操作系统相联系,这个用户界面允许操作系统接收来 自用户的中断指令,你只需要发送一个指令给操作系统,就可完成像阅读一个文件 或打印一份文件等的任务。一个操作系统的用户界面可以用只输入命令行样简 西北工业大学硕士论文 单,也可以用选择菜单和图标一样复杂。一个操作系统也管理软件应用程序,去执 行像编辑文件或计算等不同的任务,你需要专门的应用程序。一个编辑器是一个 应用程序的例子。一个编辑器允许你去编辑一个文件,改变或增加新的文本。这 个编辑器本身是一个由计算机可执行的指令所组成的程序。为了应用这个程序, 必须把它装进内存,然后它的指令被执行。操作系统控制了所有程序的装入和执 行,包括所有应用程序。当你打算用一个编辑器时,只要简单地指示操作系统去装 入编程器应用程序并执行它。文件管理,程序管理和用户交互是所有操作系统传 统的共性。l i n u x 像所有u n i x 的版本一样,增加了两个特点,是一个多用户和多任 务的系统。作为一个多任务系统,你可以要求系统同时执行多个任务,例如,当其它 文件被打印时,你可以编辑另一个文件,你编辑之前,不用等打印工作被完成。作为 一个多用户系统,几个用户可以同时注册在一个系统中,每个用户通过终端和系统 相连。 操作系统最初是为有效地支持硬件而设计的,当计算机首先发展了,他们可能 会受操作系统的限制。操作系统必须能实现计算机的绝大部分资源,所以操作系 统是为硬件,并非为用户设计的,操作系统倾向于呆扳,不灵活,使用户必须适应硬 件效率的要求。而l i n u x ,因为来源于u n i x ,所以被设计的很灵活撤为u n i x 的一 个版本,l i n u x 和u n i x 享有同样的灵活性。其灵活性来源于u n i x 的早期设计。在 六十年代末和七十年代初u n i x 操作系统被工作在a t & t 贝尔实验室的k e n t h o m p s o n 开发出来。它结合了许多操作系统设计方面的新发展,开始,u n i x 被设 计成为研究人员的操作系统,一个主要目标是去产生一个能支持科研人员变换要 求的系统。为了做到这一点, t h o m p s o n 必须设计能处理许多不同种类任务的操作 系统,灵活性变得比硬件效率更重要。像u n i x 一样,l i n u x 已经能处理用户可能面 临的各种任务。这个灵活性允许l i n u x 成为和用户相通的操作系统,用户不受与 操作系统呆板联系的限制。取而代之,操作系统成为了提供用户能利用的一套高 效工具,面向用户的科学含义是你能对系统配置或编程以满足你的特殊需要。用 l i n u x ,操作系统变成了一种操作环境。 像u n i x 一样,l i n u x 一般被分成四个主要部分:内核,s h e l l ,文件结构和实用工 具。内核是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那 里收到命令并把命令送给内核去执行。文件结构是文件放在磁盘等存贮设备上的 组织方法。文件以目录的形式被组织每个目录可能包含许多子目录,其中有许多 文件。内核,s h e l l 和文件结构一起形成了基本的操作系统结构。使用这三个项目, 你就可以运行程序,管理文件以及使用系统,另外,l i n a x 还有被称为实用工具的软 件程序,实用工具被认为是一个系统的标准特征。实用工具是专门的程序,像编辑 器编辑器交互程序,执行标准的计算操作等,你甚至可以产生自己的工具。 西北工业大学硕士论文 2 3 编辑器v i 和e m a c s 编辑器是一个文本编辑器,用来编辑文本文件。编辑器有三种编辑模 式:命令模式、输入模式及底行命令模式。在不同模式下,键盘的特性将改变。 在命令模式下,每个键都是一个编辑命令;在输入模式下,键盘类似于一台打字 机,每个键用于向文件中输入文本:在底行命令模式下,屏幕的底行将出现一行, 你可以在该行上输入行编辑命令。在s h e l l 命令行上键入v i 命令,同时指定编辑 的文件名就可以启动编辑器,并开始该文件的编辑。你可以用w 命令保存文 件,用q ! 命令退出文件的编辑。这些命令必须处于底行命令模式下。键入:命令 可以进入底行命令模式。z z 命令将保存编辑的文件、结束本次编辑并退出v i 编辑器。当使用编辑器的时候,你会在输入模式与命令模式之间不断地转换。 在命令模式下,键入a 命令及i 命令可以直接进入输入模式:修改命令c c 将首先 删除文本,然后进入输入模式。尽管有很多方法进入输入模式,但只有一种方式 退出该模式,即键入e s c 键。一旦进入输入模式,键入e s c 命令将退出输入模 式。是一个非常复杂的编辑器,它有大量的命令,通过这些命令用户可以操 作、控制这一全屏幕编辑器。你可以以单词、句子及段落为单位进行光标移动。 大多数小写字母命令都有与之相对应的大写字母命令,例如:命令i 及命令i 都 用来在文本行上输入字符。本章的前半部分重点介绍了一组核心命令,这部分命 令主要用来实现基本的编辑操作,而本章的后半部分集中介绍编辑器的一些 高级命令与高级特性。编辑器中的编辑命令可以编辑处理字符、文本行、单 词、句子及段落等。这些修改、拷贝及删除等操作都可以用来操作文本( 见表 1 7 2 至表1 7 4 ) 。你可以移动、拷贝及取消文本操作,也可以根据指定的模式向 前或向后搜索文本。用来删除字符的命令是x 命令,而用来删除文本行的命令是 d d 命令。有时无意中删除或修改了文件中的文本,你可以使用u 命令取消向前 的编辑操作。如果你意外地删除或修改了文本,你可以键入u 键来取消这一意外 操作。编辑器的功能强大之处就在于它提供了大量的命令,在需要是我们可 以从相关资料中查找。 在s h e l l 命令行中键入$ e m a c s 然后按回车就可以启动e m a c s 。与编辑器 不同,e m a c s 编辑器没有特定的输入模式与命令模式之分。如果正在输入文本, 必要时,你也可以执行编辑命令,例如用c t r l 键来移动光标、保存文件等。 e m a e s 编辑器是一个面向缓冲区( b u f f e r - o r i e n t e d ) 的文本编辑器,你可以象使用其 它常见的文字处理软件一样使用这个编辑器。键盘上的所有的键都是输入键。所 有的命令都要使用c t r l 键或m e t a - k e y s 键。一个m e t a - k e y 键可以是a l t 键或 e s c 键。e m a c s 编辑器编辑的文本文件是面向字符的而不是面向文本行的。你 可以以字符、单词、行或段落为单位在文本中移动光标。e m a c s 编辑器在d e l e t e 西北工业大学j 甄士论文 与r e m o v e 文本之问有较大的区别。d e l e t e 是永久地从文件中删除文本,而r e m o v e 则首先将文本删除到缓冲区中去,必要时你可以访问这些缓冲区。这些缓冲区通 常称为k i l l 缓冲区,而这些r e m o v e 文本的命令也称为h l l 命令。在e m a c s 编辑 器中,常有一些术语如虹1 l 一个单词或“l l 一行,它们指的是将一个单词或文本 行删除至l ( i l l 缓冲区。必要时,你可以把k i l l 缓冲区的内容插入到文件中去。你 可以通过以下方式来移动文本:首先把文本删除至k i l l 缓冲区,然后把它输入到 文件中适当的地方。e m a c s 编辑器允许你在屏幕上同时打开多个窗口,在这些窗 口中,你可以显示多个不同的文件,也可以显示同一文件。你也可以沿水平或垂 直方向把一个窗口分割成多个窗口,这些窗口可以用来显示文件的不同部分,并 可以把一个窗口内的文本删除至k i l l 缓冲区,然后切换并插入到另一个窗口的文 本中完成字符块的移动。你可以同时打开多个文件,每个文件都有其自己的缓冲 区。你也可以创建自己的缓冲区,这些缓冲区不依赖于任何的文件。你可以在各 个缓冲区之间方便地切换,以便对缓冲区进行编辑。你甚至可以访问h l l 缓冲区, 并对它们进行编辑。b u f f e r m e n u 实用命令提供一个菜单界面,该菜单界面会列 出所有的缓冲区,你可以非常方便地选择要编辑的缓冲区。你也可以同时在各自 的窗口中显示不同的缓冲区。用来保存文件内容的缓冲区称为文件缓冲区。当你 在屏幕上显示多个文件缓冲区的时候,实际上是在屏幕上同时显示多个文件的内 容。列目录命令实用命令提供给用户一个菜单界面,该菜单将列出你当前目录下 的所有文件。你可以在该菜单界面上打开、保存或删除指定的文件。 2 4 编译器g e e 和调试器g d b l m u x 提供了一些工具程序,使开发人员能够控制应用程序的开发过程。在 这些工具中,g c c 是最重要的一个,它可以调用c 和c + + 编译器,生成相应的 可执行文件。绝大多数的l i n u x 应用程序是使用c 或c + + 语言编写的。g d b 符 号调试器可以帮助开发人员定位程序发生的错误。 键入g c c 命令就可以在l i n u x 系统中调用g n uc 编译器。g c c 命令将一次调 用4 个其它的组件。第一个组件为预编译器。预编译器是一个包含有特殊预编译 命令的c 程序,能够对需要编译的程序进行预编译处理。第二个组件为编译器。 编译器会对经过预编译处理的程序进行编译,生成相应的汇编代码版本。第三个 组件为汇编程序,它可以将编译器生成的汇编代码汇编为目标代码版本。最后一 个组件为连接程序,它的功能是将目标代码连接为可执行程序。该可执行程序的 默认文件名为”a o t l t ”。一般来说,应该使用参数指定自己选择的文件名。使用o 选项可以将文件名作为参数使用。这样,连接程序会使用指定的可执行文件名代 替默认的”a o u t 。使用w a l l 选项可咀在编译时给出错误信息。下面的例子使用 g c c 对i m a g e v i e w e r c 程序进行编译,注意此时指定了可执行文件的文件名为 西北工业大学硕士论文 ”i m a g e v i e w e r ”。在l i n u x 系统中可以直接键入可执行文件的文件名运行该文件。 s g c c 一矾耻li m a g e v i e w e r c - o l m a g e v i e w e r $ i m a g e v i e w e r h e l l o ,t h i si sa c o m p r e s s e di m a g e 在使用多个文件构成的程序时,必须注意c 编译器和连接程序的区别。c 编译器 的目的是生成目标代码文件,而连接程序的目的是使用目标代码文件生成可执行 文件。c 编译器单独对每一个源代码文件进行编译,生成多个对应的目标代码文 件,这些目标代码文件的扩展名为0 而不再是c o 只需要在g e c 后列出文件名就 可以使用同一个g e c 命令编译并连接多个文件。在下面的例子中,用户使用g e e 命令对v i e w e r 程序进行编译。_ o 选项指定了可执行文件的文件名。 $ g e e m a i n ci o c _ 0v i e w e r 使用g e e 命令也可以只完成连接工作,具体作法是在参数列表中只列出目标代码 文件的文件名。目标代码文件的扩展名为0 。下面的例子就只进行了一次连接操 作,而没有编译操作发生。当然,在执行连接工作前必须首先生成相应的目标代 码文件。 $ g e e m a i n 0i o 0 在开发、调试程序时,需要经常对源代码文件进行修改,然后重新编译以查看运 行效果。如果程序由多个文件组成且修改只涉及到少量的文件,每次都对所有文 件进行编译是非常不经济的。那些没有修改过的文件不需要重新编译,只需要进 行一次连接工作即可。将源代码和目标代码文件同时作为g e e 的参数列出就可以 完成这项工作。源代码文件的扩展名为- c ,目标代码文件的扩展名为0 。g e e 将对 列出的源代码文件进行编译,然后连接所有的目标代码文件。样就可以只对修改 过的少量文件进行编译,提高了效率。例如,如果只是m a i n c 发生了变化,i o c 没有变化,就应该在g e e 的参数中指定源代码文件m a i n ,c 和目标代码文件i o 0 。 这样就不会重新编译i o c 文件。 $ g e e m a i n ci o 0 0v i e w e r g d b 是l i n u x 系统上的符号调试器。如果应用程序运行中出了问题,就可以 使用符号调试器跟踪错误。符号调试器允许用户在运行程序时显示源代码。在调 试过程中可以在特定的位置停止运行,显示变量的内容。使用符号调试器甚至可 以检查特定地址或栈中的内容。为了能够使用符号调试器对可执行程序进行调 试,在编译和连接程序时必须使用g 选项。下面的例子可以编译适合符号调试器 进行调试的程序。在可执行程序生成后,就可以使用符号调试器进行调试。 $ g e c - g m a i n c i o c 键入关键字g d b 和可执行文件名就可以调用g d b 调试器。下面的例子中的可 执行文件名为a o u t 。 $ g d b a o u t 西北工业大学硕士论文 键入g d b 命令就可以进入调试器环境,此时的提示符由l i n u x 提示符( $ ) 变 为g d b 提示符( g d b ) 。在g d b 调试器中键入r i m 命令可咀运行指定的程序。 ( g d b ) r u n 如果程序中存在f o p e n 或o p e n 语句,说明程序中某处会使用某个数据文件。 这样g a b 需要知道数据文件的文件名,在输入r u n 命令时,应输入数据文件的文 件名。 ( g d b ) r u n f i l e n a m e 在调试过程结束后,使用q 或q u i t 命令就可以退出调试器。 绝大多数的g o b 命令都可以使用命令的第一个字母进行等价操作。键入r 与 键入r u n 命令等价,q 代表q u i t 命令,p 代表p r i n t 命令,n 代表n e x t 命令。表2 3 _ 2 中列出了可用的g d b 命令。 使用p r i n t 命令和变量名可以查看该变量的内容。下面的例子就可以显示 c o u n t 变量的内容。 ( g d b ) p r i n t c o u n t 1 0 使用w h e r e 命令,可以显示已经调用过的函数名和调用时使用的参数。在下 面的例子中,用户正位于t a l c 函数中,w h e r e 命令显示了m m n 和c a l c 函数调用 使用的参数。 ( g d b ) w h e r e # 3 c a l c ( n e w c o s t = 2 0 ) a t e a l c e :2 5 # 1 m a i n 0 a tm a i n c :1 9 # 2 0 x 8 0 0 0 4 5 5 i n c r t d u m m y 0 使用i n f ol o c a l s 命令可以列出当前函数中定义的所有变量和参数的值。下面 的例子就显示了所有定义的变量的值。 ( g d b ) i n f o l o c a l s c o s t = 2 n a i d _ e = ”r i c h a r d 、0 0 0 0 0 0 ” c o u n t = 1 0 c o u n t 2 = 1 0 n a m e p t r = 0 x 8 0 0 0 5 7 0 ”p e t e r s e n ” c o u n t p t r = ( i n t + ) o x b f f f f d e 8 可以使用b r e a k 命令在程序中设置断点。当程序运行到断点时程序将自动停 止。然后,用户就可以使用n e x t 或s t e p 命令逐行运行程序,也可以随时使用c o n t 命令运行到下一个断点处。 x x g d b x x g d b 是g d b 调试器的x w i n d o w s 版本,它由一些垂直放置的子窗口组成。 13 西北工业大学硕士论文 在初始状态下,将显示5 个窗口。最上面的子窗口称为文件窗口,在窗口中将显 示正在进行调试的文件名。下面是显示源代码文件的源程序窗口,在窗口左边的 滚动条可以滚动显示窗口中的内容。源程序窗口下是显示g d b 状态和错误消息的 消息窗口。最底部的子窗口称为对话窗口,可以用来输入g d b 命令并显示命令返 回的结果。窗口左边的滚动条允许用户查询己输入的命令和返回的结果。最后一 个窗口为命令窗口,在该窗e l 中使用按钮列出了可用的g d b 命令。当执行r u n 或 s t e p 命令时,只需要单击相应的按钮即可。 2 5 总结 l i n u x 编程是- - f q 新兴但有着广泛应用前景的技术。毕设以来我从开始接触到 慢慢熟悉它,实实在在的感受到了它的种种优点。但是,l i n u x 在我的毕设中只 是一个编程环境,涉及到

温馨提示

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

评论

0/150

提交评论