高质量嵌入式Linux C编程第一次博客作业

来源:互联网 发布:知乎 感动 句子 编辑:程序博客网 时间:2024/06/01 11:38

1:linux 与 Unix的关系?

某些PC机的Unix和Linux在实现方面相类似。几乎所有的商业Unix版本都基本支持同样的软件、程序设计环境和网络特性。然而,Linux和Unix的商业版本依然存在许多差别。Linux支持的硬件范围和商业Unix不一样。一般来说,商业Unix支持的硬件多一些,可是Linux支持的硬件也在不断扩大。突出的是,Linux至少和商用Unix一样稳定。对许多用户来说,最重要的因素是价格。Linux是免费软件,用户可以从Internet网上下载。如果上网不方便,可以很便宜地通过邮购得到Linux的磁盘或CD-ROM。当然也可以直接从朋友那里得到。商业Unix的价值不应被贬低。除了软件本身的价格外,用户还需支付文档、售后支持和质保费。对于较大的机构,这些都很重要,但是PC机用户也许从中得不到什么好处。许多商业公司和大学等单位已经发现,在实验室用廉价的PC机运行Linux比用工作站运行商业Unix还好。Linux可以在PC机上提供工作站的功能,而PC机的价格是工作站的几分之一。也有一些针对PC机的便宜的Unix,其中最有名的是386BSD。在许多方面,386BSD软件包和Linux兼容,但Linux更适合用户的需求。最显著的是,Linux的开发是开放的,任何志愿者都可以对开发过程做出贡献。相比之下,386BSD是由封闭的团队开发的。正是这样,这两种产品存在着严重的概念上和设计上的差别:Linux的目标是从头开始开发一个完整的Unix系统;386BSD的目标则是对现有的BSD做些修改,以适合80386系统。

2:linux是如何发展的?

在1981 年,IBM 公司推出了享誉全球的微型计算机IBM PC。在1981-1991 年间,MS-DOS 操作系统 一直是微型计算机操作系统的主宰。此时计算机硬件价格虽然逐年下降,但软件价格仍然居高不下 【a】。
        当时Apple 的MACs 操作系统可以说是性能最好的,但是其天价使得没人能够轻易靠近 【b】。
        当时的另一个计算机技术阵营就是UNIX 世界。但是UNIX 操作系统就不仅是价格昂贵的问题 了。为了寻求高利润率,UNIX 经销商们把价格抬得极高,PC 小用户根本不能靠近它。曾经一度收到Bell Labs许可而能在大学中用于教学的UNIX 源代码也一直被小心地守卫着不许公开 【c】。
        对于广大的PC 用户,软件行业的大型供应商们始终没有给出有效的解决这个问题的手段。

       正在此时,出现了MINIX 操作系统 【d】,并且有一本描述其设计实现原理的书 同时发行。由于AST的这本书写的非常详细,并且叙述得有条有理,于是几乎全世界的计算机爱好者都开始看这本书,以期能理解操作系统的工作原理。
        其中也包括Linux 系统的创始者Linus Benedict Torvalds。当时(1991 年),Linus Benedict Torvalds 是赫尔辛基大学计算机科学系的二年级学生,也是一个自学的计算机hacker。这个21岁的芬兰年轻人喜欢鼓捣他的计算机,测试计算机的性能和限制。但当时他所缺乏的就是一个专业级的操作系统。
        在同一年间,GNU 计划已经开发出了许多工具软件。其中最受期盼的GNU C 编译器已经出现,但还没有开发出免费的GNU 操作系统。 即使是教学使用的MINIX 操作系统也开始有了版权,需要购买才能得到源代码。虽然GNU 的操作系统HURD一直在开发之中【e】,但在当时看来不能在几年内完成。

(已经有了【a-e】,但是还没有一个os)
        为了能更好地学习计算机知识(或许也只是为了兴趣),Linus 使用圣诞节的压岁钱和贷款购买了一台386 兼容电脑 ,并从美国邮购了一套MINIX 系统软件 。就在等待MINIX 软件期间,Linus 认真学习了有关Intel 80386 的硬件知识。为了能通过Modem 拨号连接到学校的主机上,他使用汇编语言并利用80386 CPU的多任务特性编制出一个终端仿真程序。此后为了将自己一台老式电脑上的软件复制到新电脑上,他还为软盘驱动器、键盘等硬件设备编制出相应的驱动程序。(他编写了一些os相关的程序)
       通过编程实践,并在学习过程中认识到MINIX 系统的诸多限制(MINIX 虽然很好,但只是一个用于教学目的简单操作系统,而不是一个强有力的实用操作系统),而且通过上述实践Linus 已经有了一些类似于操作系统硬件设备驱动程序的代码,于是他开始有了编制一个新操作系统的想法。(一个影响深远的想法诞生了)
       从1991年4月份起(let take this time as thestart),他通过修改终端仿真程序和硬件驱动程序,开始编制起自己的操作系统来。开始,他的目的很简单,只是为了学习Intel 386 体系结构保护模式运行方式下的编程技术。但后来Linux发展却完全改变了初衷。(起始的时间)
       根据Linus 在comp.os.minix 新闻组上发布的消息,我们可以知道他逐步从学MINIX 系统阶段发展到开发自己的Linux 系统的过程。(具体了解的来源)
        Linus第1次向comp.os.minix 投递消息是在1991年3月29日。所发帖子的题目是“gcc on minix-386doesn't optimize”,是有关gcc 编译器在MINIX-386 系统上运行优化的问题(由此可知,Linus在1991 年初期就已经开始深入究了MINIX 系统,并在这段时间有了改进MINIX 操作系统的思想。在进一步学习MINIX 系统之后,这个想法逐步演变成想重新设计一个基于Intel 80386 体系结构的新操作系统的构思。(思想的转变)
       他在回答有人提出MINIX 上的一个问题时,所说的第一句话就是“阅读源代码”(“RTFSC (Read the F**ing Source Code :-)”)。他认为答案就在源程序中。这也说明了对于学习系统软件来说,我们不光需要懂得系统的工作基本原理,还需要结合实际系统,学习实际系统的实现方法。因为理论毕竟是理论,其中省略了许多枝节,而这些枝节问题虽然没有太多的理论含量,但却是一个系统必要的组成部分,就象麻雀身上的一根羽毛。(实践的重要意义)

(以下是按照时间顺序进行介绍)
        从1991 年4 月 份开始,Linus 几乎花费了全部时间研究MINIX-386 系统(Hacking the kernel),并且尝试着移植GNU 的软件到该系统上(GNU gcc、bash、gdb 等)。并于4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了MINIX 上,而且已经爱不释手、不能离开这个shell 软件了。
        第一个与Linux 有关的消息是在1991 年7 月3日 在comp.os.minix 上发布的(当然,那时还不存在Linux 这个名称,当时Linus 脑子里想的名称可能是FREAX,FREAX 的英文含义是怪诞的、怪物、异想天开等)。其中透露了他正在进行Linux 系统的开发,并且已经想到要实现与POSIX 兼容的问题了。
        在Linus 另一个发布的消息中(1991 年8 月25日 comp.os.minix),他向所有MINIX 用户询问“Whatwould you like to see in minix?”(“你最想在MINIX系统中见到什么?”),在该消息中他首次透露出正在开发一个(免费的)386(486)操作系统,并且说只是兴趣而已,代码不会很大,也不会象GNU 的那样专业。希望大家反馈一些对于MINIX 系统中喜欢哪些特色不喜欢什么等信息,并且说明由于实际和其它一些原因,新开发的系统刚开始MINIX 很象(并且使用了MINIX的文件系统)。并且已经成功地将bash(1.08版)和gcc(1.40 版)移植到了新系统上,而且在过几个月就可以实用了。最后,Linus 申明他开发的操作系统没有使用一行MINIX 的源代码;而且由于使用了386 的任务切换特性,所以该操作系统不好移植(没有可移植性),并且只能使用AT 硬盘。对于Linux 的移植性问题,Linus当时并没有考虑。但是目前Linux 几乎可以运行在任何一种硬件体系结构上。
       到了1991 年的10 月5 日 ,Linus 在comp.os.minix 新闻组上发布消息,正式向外宣布Linux 内核系统的诞生(Free minix-like kernel sources for 386-AT)。这段消息可以称为Linux 的诞生宣言,并且一直广为流传。因此10 月5 日对Linux社区来说是一个特殊的日子,许多后来Linux 的新版本发布时都选择了这个日子。所以RedHat 公司选择这个日子发布它的新系统也不是偶然的。(产生的时间)

3:什么是GNU计划?

 软件产业在70年代成就了两位针锋相对的领袖人物,来自哈佛大学的比尔·盖茨和Richard M.Stallman。前者宣布了Copyright(版权)时代的到来,并构建了微软帝国的辉煌;后者于1984年创立自由软件体系GNU,拟定普遍公用版权协议(GeneralPublicLicense,简称GPL),今天Linux的成功就得益于GPL协议。
        所有GPL协议下的自由软件都遵循着Richard M. Stallman的"Copyleft"(非版权)原则:即自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开。
        GNU 计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手创办的。旨在开发一个类似UNIX 并且是自由软件的完整操作系统:GNU 系统(GNU 是"GNU's Not Unix"的递归缩写,它的发音为"guh-NEW")。
        各种使用Linux 作为核心的GNU 操作系统正在被广泛的使用。虽然这些系统通常被称作"Linux",但是Stallman 认为,严格地说,它们应该被称为GNU/Linux系统。
        到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux”操作系统。

4:什么是GPL协议?

GPL,是General Public License的缩写,是一份GNU通用公共授权非正式的中文翻译。它并非由自由软件基金会所发表,亦非使用GNU通用公共授权的软件的法定发布条款─直有GNU通用公共授权英文原文的版本始具有此等效力。

大多数软件许可证决意剥夺你共享和修改软件的自由。相比之下,GNU通用公共许可证试图保证你共享和修改自由软件的自由。——保证自由软件对所有用户是自由的。GPL适用于大多数自由软件基金会的软件,以及由使用这些软件而承担义务的作者所开发的软件。(自由软件基金会的其他一些软件受GNU库通用许可证的保护)。你也可以将它用到你的程序中。当我们谈到自由软件(free software)时,我们指的是自由而不是价格。
为了保护你的权利,我们需要作出规定:禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本,这些规定就转化为你的责任。
例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;并且将这些条款给他们看,使他们知道他们有这样的权利。
我们采取两项措施来保护你的权利。
(1)给软件以版权保护。
(2)给你提供许可证。它给你复制,发布和修改这些软件的法律许可。
同样,为了保护每个作者和我们自己,我们需要清楚地让每个人明白,自由软件没有担保(no warranty)。如果由于其他某个人修改了软件,并继续加以传播。我们需要它的接受者明白:他们所得到的并不是原来的自由软件。由其他人引入的任何问题,不应损害原作者的声誉。
最后,任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险,自由软件的再发布者以个人名义获得专利许可证。事实上,将软件变为私有。为防止这一点,我们必须明确:任何专利必须以允许每个人自由使用为前提,否则就不准许有专利。
下面是有关复制,发布和修改的确切的条款和条件。
5:什么是posix标准?
 POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口。用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。它是在1980 年早期一个UNIX 用户组(usr/group)的早期工作基础上取得的。该UNIX 用户组原来试图将AT&T 的System V 操作系统和BerkeleyCSRG 的BSD 操作系统的调用接口之间的区别重新调和集成。并于1984 年定制出了/usr/group 标准。
        关于POSIX标准的制定过程:略。
        在90 年代初,POSIX 标准的制定正处在最后投票敲定的时候,那是1991-1993 年间。此时正是Linux刚刚起步的时候,这个UNIX 标准为Linux 提供了极为重要的信息,使得Linux 能够在标准的指导下进行开发,并能够与绝大多数UNIX 操作系统兼容。在最初的Linux 内核源代码中(0.01 版、0.11 版)就已经为Linux 系统与POSIX 标准的兼容做好了准备工作。在Linux 0.01 版内核的/include/unistd.h 文件中就已经定义了几个有关POSXI 标准要求的符号常数,而且Linus 在注释中已写道:“OK,这也许是个玩笑,但我正在着手研究它呢”。




0 0
原创粉丝点击