标题 作者 说明 毕业论文 李超 ?所有版权作者保留 题目 时间 页数 80386保护模式与Linux内核引导分析 2005-4-1 共91页 路漫漫其修远兮,吾将上下而求所。
开题报告
计算机技术高速发展的今天,对于计算机系统底层技术的掌握,已经到了至关重要的时候,尤其是操作系统、编译原理等核心技术的研究。这些核心技术,直接关系到一个公司、一个国家是否有自己真正知识产权的问题。
操作系统和编译原理是计算机领域的两个重大课题。之所以说它们重大,是因为这两个方向既重要(计算机的核心技术)又庞杂。
随着硬件的不断升级和各种相关技术的发展,(由于INTEL与AMD公司竞争的越来越激烈,CPU的更新速度会越来越快?,而其结构也会相应发生更大的改变。)操作系统也会随之不断更新和发展。如现在基于网络的分布式操作系统、基于多个CPU的多处理机操作系统等等。现在CPU最新的研究方向是“乱序发射”,当它有了更新的发展之后,相信操作系统还会随之做相应的改变。
对于编译器的研发也是极具挑战的。由于编译原理本身涉及很多的算法,加之又与CPU有着紧密的联系,所以能够对其进行深入研究的人为之甚少。不用说对代码优化,就是使用yacc工具产生一个语法分析器的人,在中国的本科生中也不是很多。
那么,研究它们有何意义呢?
很多软件开发人员觉得没有必要过深的去研究这些核心技术。“我们大多是搞应用的,更应关注的是如何把应用做好,如何给企业带来更大的利润,而不应该去把时间浪费在研究底层上面,而且又那么难懂、麻烦”。通过分析这句话,可以得出这样一个结论:应用简单,我们就做。而麻烦、难懂的东西,我们不做。 然而我却不这样认为。作为应用软件的开发人员,我们当然应该更多的关注如何把应用做好,如何使用户操作起来更加简便。但是,如果不了解系统的底层,不了解系统的运行原理,我们在以后就会遇到很多麻烦,也很难做出好的应用程序。可以举个现实的例子,我们花了很长时间学习了一种新的技术。如VC(MFC的结构很难懂呦?)。但计算机行业里新技术很快就会过时,又会出现更新的技术。由于项目要求必须采用新的技术和语言,所以我们只能再去学习。于是我们就在一个又另一个新技术之间疲于奔命,当我们再也没有精力去学习的时候,我们也就随着新技术的出现而被淘汰了?。
可悲!可叹!而中国的软件程序员的命运大多如此。正所谓 “无源之水、无本之木”。为什么会这样呢?这当然有程序员本身的原因,但我觉得更多的还是社会导向的原因。
如果我们不是这样急功近利,多花一些时间去研读一下系统的底层,那我们的情况就会大不一样。我们会发现,其实这些所谓的新技术,大多不过是商家为
第1页
标题 作者 说明 毕业论文 李超 ?所有版权作者保留 题目 时间 页数 80386保护模式与Linux内核引导分析 2005-4-1 共91页 路漫漫其修远兮,吾将上下而求所。
了商业的目的而做的一些“装簧”罢了。举个例子,如“回调函数”其实就是一个指针函数,钩子函数就是一种特殊的回调函数,其实还是一个指针函数。它们来做什么用的呢,找段代码分析一下我们就会发现,原来是为了实现软件框架而使用的一种技术。还有指针,其实就是地址的意思。还搞的特别神秘似的?。磨刀不误砍柴功!所以我们做事情搞学问就要踏踏实实。尤其是在中国,这一点就显得更为重要了。
下面我就要一步一步进入我的正题了,关于学习保护模式的意义。 首先引入www.oldLinux.org论坛上的一个帖子。它是关于学习Linux内核意义的讨论,这又与保护模式有什么关系呢?当然有关系了,而且还有很强的联系(否则我这段企不是没有任何意义了?)。应该说80386不仅与Linux有紧密的联系,而且它还和其它在INTEL CPU上开发的很多操作系统有着紧密的联系。先让我们来看一下他们的讨论吧。
我想无论做什么事,考虑什么问题,首先一点应该知道这件事的到底有何意义。即所谓的出师有名,所以我提出这个问题,大家来讨论一下学习Linux的重大意义在那里。 我曾和我身边的人说我正在学习Linux内核,一些人觉得这个很深奥,一些人很不屑。他们说学习它有什么意义吗? Linux red hat 才50元一套,难道你想自己开发一个操作系统?即使你开发出来了,别人会用吗?而且学习底层的东西要学的东西太多,花的精力也太多。这有必要吗。现在只要学好java就能赚钱,还不如把这些时间放到学习j2ee的好。多看看数据结构和算法。以后挣钱是肯定的。你开发出一套自己的操作系统又能挣多少钱?况且 Linux 很多公司做的已经相当成熟,你做出来的东东会有人用吗?所以这个只能玩玩,没有多大意义。 面对上述的说法你们的想法是什么?难道学习Linux内核只能是玩玩而以吗? ——by lgr 学习Linux内核是为了更好地了解一个操作系统的运行原理,从而能够轻松地理解几乎所有运行在其上的所有软件的工作原理,并能为应用软件的开发打下扎实的基础。一个真正的编程高手是肯定对操作系统的工作原理有一定的了解的,而且了解越深就能编制出越好的软件来。也许我说的有些绝对,但几乎没有人会完全反对我的这种论调。 当然,学习内核还有很多其他原因。作为理解嵌入式系统工作原理、更好地熟第2页
标题 作者 说明 毕业论文 李超 ?所有版权作者保留 题目 时间 页数 80386保护模式与Linux内核引导分析 2005-4-1 共91页 路漫漫其修远兮,吾将上下而求所。
练地掌握C语言、了解硬件与软件的交互关系等等。 如果学习的直接目的只是为了挣钱,那么我认为这个目的或目的太短浅。钱是为了生活、生存,当然也是富有的表现。但它并不能代表你的精神生活有多么得充实。以我之见,人活着的最根本目的是为了追求快乐、幸福。但有了很多钱并不就很快乐。君不见富翁跳楼自杀者现象吗?照理他们这种做法是荒唐的,因为已有大把大把的钱。很可惜,人不是一般动物。人还需要精神享受。 因此,如果在学习中不仅能掌握基础知识(我把内核当作基础知识),还能从学习基础知识中获得乐趣,这也不免是一件一举两得的事。若自己想编制自己的操作系统,这也可以,只要乐在其中:) 说白一点,学习操作系统的工作原理,主要目的是促进应用程序的编程。理解内核你就能用更好的思路编制应用程序,从而。。。因此娱乐与生活最终还是可以统一的:) ——by 赵烔 《Linux内核完全注释》的作者 c语言高手通常会或多或少的了解汇编语言 c语言专家,或多或少需要浏览c标准库源代码甚至编译器源代码 优化c或汇编语言的性能,或多或少需要了解cpu的运算机制 编写操作系统,或多或少需要了解cpu的运作机制 —— by engumen Linux高手 看一下梁肇新的编程高手缄言,就知道一个程序员如果不知道操作系统是干什么,不知道数据结构,不知道计算机体系结构,不了解编译器对于一个程序员来说是干什么的,而只是一味地追求java,.net这个编程工具,那么这个程序员肯定会陷入java,.net挖的看起来像金子般的坑,而无法自拔! —— by love-centry 第3页
标题 作者 说明 毕业论文 李超 ?所有版权作者保留 题目 时间 页数 80386保护模式与Linux内核引导分析 2005-4-1 共91页 路漫漫其修远兮,吾将上下而求所。
论坛版主 从上面几位高手的讨论中我们可以看出,在他们眼里学习Linux内核有多么的重要了。既然这些大“牛”们都认为学习Linux很重要,对于我们这些“菜鸟”,当然应该顺着光辉方向勇往直前了?。
Linux的开源给了我们机会,一窥一个真正的,强大的操作系统到底是如何工作的。在真实的操作系统里,处理机是如何分配的,进程是如何体现的,文件管理又在系统中占有怎样的位置呢,这些疑问终于可以通过对Linux源代码的分析而得到。使我们不光只是在操作系统的原理课上知道一些它的原理,而且还真的感受到操作系统确实是在真正运行着的,那种只见树木不见森林的状况有了很大的改观。然而要想看懂Linux这么庞大的东西,不知道“保护模式”是不成的。 操作系统是直接在硬件上运行的。它在软件与硬件之间搭起了一座桥。软件必须通过操作系统才能与硬件沟通。而硬件同样也需要操作系统将它完成的结果告诉给软件,所以操作系统的地位就显得格外重要了。它是不允许其它软件对其进行破坏的,否则企不是整个世界就要崩溃了?,所以就要对其进行保护。 用软件的方法行吗?当然是不行了。软件来保护软件,那谁又来保护它呢。(都快把我绕晕了?)。看来还是硬件进行保护来的直接。那么它应该如何进行保护呢?(终于切入正题了?)当然是保护模式了。
所以在我进行Linux内核源代码的研读之前,来仔细研究一下保护模式的工作原理是很有必要的。那么关于保护模式我们都要了解那些东西呢?我觉得至少要知道下面几个方面的知识:什么是实模式,什么是保护模式、为什么要使用保护模式,如何从实模式转到保护模式、在保护模式下硬件上是怎样实现分段、分页的,从而保护操作系统的等等。
上面我已经对我要写的论文的目的和意义做了一个说明,就算是我这篇论文的开题报告了。以后的时间里我就要逐步、细致的讨论保护模式的方方面面。在这里,先预祝我们:一路成功?。
第4页