linux内核2.4版源代码分析大全
feilongw 2025-03-26 15:07 12 浏览
每天十五分钟,熟读一个技术点,水滴石穿,一切只为渴望更优秀的你!
————零声学院
对经常使用计算机的人来说 ,时常会感到操作系统是一个神奇、神秘而又几乎无所不 能的“上帝”。一打开计算机,我们首先看到的是操作系统,所有软件的运行都离不开它, 它给我们带来一个个的惊喜,但有时也带来烦恼和不安。
实际上,很多人都有这样强烈的愿望,即“上帝”到底是怎样操纵这一切的?UNIX 操作 系统曾经敞开 UNIX 操作系统的胸怀,让我们窥视到它的内在机制,但它毕竟属于“贵族”阶 层,我们大多数人并不能使用上它。
Windows 以平民的身份来到我们中间,我们欢呼它的友好和平易近人,正因为 Windows, 才使得计算机走进我们寻常百姓家,使得计算机普及成为现实。但 Windows 有时也“伤风感 冒”,我们想找到原因,以便对症下药。可是,Windows 的窗户并没有打开,我们无法透过 窗户看看 Windows 的内部世界到底是什么样的,这让我们困惑,尤其让喜欢追根寻源的人们 感到失望。
Linux 带着一股清新的风翩翩而来,它并不成熟,也不完美,甚至自身有很多缺点,可 Internet 的龙卷风把它吹遍世界,世界各地的计算机爱好者狂热地喜欢上 Linux。Linux 不 再是一个孤单的个体,而成为软件发展史上的“自由女神”,很多的计算机高手和计算机爱 好者为之倾其了极大的热情。它在迅速地成长,短短几年功夫,从一个摇摇晃晃的婴儿成长 为脚步稳健的少年。这一切都源于什么?那就是 Linux 的创始人 Linus Torvalds 把 Linux 适时地放入到了 GNU 公共许可证下。
GNU 与 Linux 的成长
GNU 是自由软件之父 Richard Stallman 在 年组织开发的一个完全基于自由软件的 软件体系,与此相应的有一份通用公共许可证(General Public License,简称 GPL)。Linux 以及与它有关的大量软件是在 GPL 的推动下开发和发布的。
自由软件之父 Stallman 像一个神态庄严的传教士一样喋喋不休地到处传播自由软件的 福音,阐述他创立 GNU 的梦想:“自由的思想,而不是免费的午餐”。这位自由软件的“顶 级神甫”为自己的梦想付出了大半生的努力,他不但自己创作了许多自由软件如 GCC 和 GDB, 在他的倡导下,目前人们熟悉的一些软件如 BIND、Perl、Apache、TCP/IP 等都成了自由软件 的经典之作。
如果说 Stallman 创立并推动了自由软件的发展,那么,Linus 毫不犹豫奉献给 GNU 的 Linux,则把自由软件的发展带入到一个全新的境界。 实际上,Linus 是一个理想主义者,但他又脚踏实地。当 Linux 的第一个“产品”版本Linux 问世的时候,是按完全自由扩散版权进行扩散的。他要求 Linux 内核的所有源代 码必须公开,而且任何人均不得从 Linux 交易中获利。他这种纯粹的自由软件的理想实际上 妨碍了 Linux 的扩散和发展,因为这限制了 Linux 以磁盘拷贝或者 CD-ROM 等媒体形式发行的 可能,也限制了一些商业公司参与 Linux 的进一步开发并提供技术支持的良好愿望。于是 Linus 决定转向 GPL 版权,这一版权除了规定自由软件的各项许可权之外,还允许用户出售 自己的程序拷贝。
这一版权上的转变对 Linux 的进一步发展可谓至关重要。从此以后,便有很多家技术力 量雄厚又善于市场运作的商业软件公司,加入到了原先完全由业余爱好者和网络黑客所参与 的这场自由软件运动,开发出了多种 Linux 的发行版本,磨光了自由软件许多不平的棱角, 增加了更易于用户使用的图形用户界面和众多的软件开发工具,这极大地拓展了 Linux 的全 球用户基础。
Linux 内核的功能以及它和 GPL 的结合,使许多软件开发人员相信这是有前途的项目, 开始参加内核的开发工作。并将 GNU 项目的 C 库、gcc、Emacs、bash 等很快移植到 Linux 内 核上来。可以说,Linux 项目一开始就和 GNU 项目紧密结合在一起,系统的许多重要组成部 分直接来自 GNU项目。Linux操作系统的另一些重要组成部分则来自加利福尼亚大学 Berkeley 分校的 BSD UNIX 和麻省理工学院的 X Window 系统项目。这些都是经过长期考验的成果。
正是 Linux 内核与 GNU 项目、BSD UNIX 以及 MIT 的 X11 的结合,才使整个 Linux 操作系 统得以很快形成,而且建立在稳固的基础上。
当 Linux 走向成熟时,一些人开始建立软件包来简化新用户安装和使用 Linux。这些软 件包称为 Linux 发布或 Linux 发行版本。发行 Linux 不是某个个人或组织的事。任何人都可 以将 Linux 内核和操作系统其他组成部分组合在一起进行发布。在早期众多的 Linux 发行版 本中,最有影响的是 Slackware 发布。当时它是最容易安装的 Linux 发行版本,在推广 Linux 的应用中,起了很大的作用。Linux 文档项目(LDP)是围绕 Slackware 发布写成的。目前RedHat 发行版本的安装更容易,应用软件更多,已成为最流行的 Linux 发行版本;而 Caldera 则致力于 Linux 的商业应用,它的发展速度也很快。这两个发行版本也有相应的成套资料。 在中文的 Linux 发行版本方面,国内已经有众多的 Linux 厂商,如红旗 Linux,BluePoint Linux,中软 Linux 等。每种发行版本有各自的优点和弱点,但它们使用的内核和开发工具则 是一致的。
Linux 的开发模式和运作机制
自由软件的出现,改变了传统的以公司为主体的封闭的软件开发模式。采用了开放和协 作的开发模式,无偿提供源代码,允许任何人取得、修改和重新发布自由软件的源代码。这 种开发模式激发了世界各地的软件开发人员的积极性和创造热情。大量软件开发人员投入到 自由软件的开发中。软件开发人员的集体智慧得到充分发挥,大大减少了不必要的重复劳动, 并使自由软件的脆弱点能够及时发现和克服。任何一家公司都不可能投入如此强大的人力去 开发和检验商品化软件。这种开发模式使自由软件具有强大的生命力。
商业 UNIX 开发过程中,整个系统的开发有严格的质量保证措施、完整的文挡、完善的源代码、全面的测试报告及相应的解决方案。开发者不能随意增加程序的特性和修改代码的 关键部分,如果要修改代码,他们得将其写入错误报告中才能使其有效,并随后接收源代码 控制系统的检查,如果发现修改不合适,修改也可能作废。每个开发者设计系统代码的一个 或几个部分,开发者只有在程序检查过程中才能更改相应的代码。质量保证部门在内部对新 的操作系统进行严格的回归测试,并报告发现的问题,开发者则有责任解决所报告的问题。 质量保证部门采用复杂的统计分析系统以确保在下次发行时有百分之几的程序错误已修改。
总之,商业 UNIX 开发过程使得其代码非常复杂,公司为了保证下次操作系统的修订质 量,得收集和统计分析操作系统的性能。开发商业 UNIX 是一个很大的工程,常常大到有数以 百计的编程者、测试员、文档员以及系统管理员参与。
对于 Linux,你可将整个组织开发的概念、源代码控制系统、结构化的错误报告、统计 分析等通通扔到一边去。 Linux 最初是由一群来自世界各地的自愿者通过 Internet 共同进行开发的。通过互联网 和其他途径,任何人都有机会辅助开发和调试 Linux 的内核、链接新的软件、编写文档或帮 助新用户。实际上,并没有单独的组织负责开发此系统,Linux 团体大部分通过邮递清单和 USENET 的消息组进行通信。许多协定已跳过开发过程,如果你想将自己的代码包括进“正式” 内核,只需给 Linus Torvalds 发一个邮件,他就会进行测试并将其包括进内核(只要代码不 使内核崩溃并且不与整个系统设计相悖,Linus 都很乐意将其包括进去)。
Linux 系统本身采用彻底开放、注重特性的方法进行设计。一般规律是大约隔几个月就 发行一个 Linux 内核的新版本。当然发行周期还依赖于其他一些因素,如排除的程序故障数、 用户测试预发行版的返回数以及 Linux 的工作量等。
可以说在两次发行期间,并不是每个故障都已排除,每个问题都已得到了解决。只要系 统不出现很挑剔或明显的故障,就认为比较稳定,可以推出新版本。Linux 开发的动力不在 于追求完美、无故障,而是要开发 UNIX 的免费实现。
如果你想把新的特性或应用软件增加到系统上,就得经过一个“初始”阶段。所谓“初 始”阶段,就是一个由一些想对新代码挑出问题的用户不断进行测试的阶段。由于 Linux 团 体大多在 Internet 上,“初始”软件通常安装在一个或多个 LinuxFTP 上,并且在 LinuxUSENET 消息组上张贴一张如何获取和测试其代码的消息,从而使得下载和测试“初始”软件的用户 可以将结果、故障或问题等邮件告之作者。
初始代码中的问题解决后,代码就进入“第二”阶段:工作稳定但还不完全(即能够工 作,但可能还不具备所有特性)。当然,它也可能进入“最后”阶段,即软件已完备并且可 以使用。对于内核代码,一旦它完备,开发者就可让 Linus 将其包括进标准内核内,或者作 为内核的可增加选项。
注意,这些仅是达成协定,并未形成规则。很多人对他们的软件不必发行“初始”或测 试版充满信心,因此发行哪个版本是根据开发者的决定而定的。
你可能对一群自愿者居然能编写、调试出完整的 UNIX 系统惊讶不已。整个 Linux 内核 通过拼凑而成,没有采用专利的源代码,大量工作都由自愿者完成,他们将 GNU 下的免费软 件移植到 Linux 系统下,同时开发出库、文件系统以及通用的设备硬件驱动程序等。
实际上,Linus 率领的分布在世界各地的 Linux 内核开发队伍仍然在高速向前推进。当 前推出的稳定的 Linux 内核的 .x 版本充分显示了 Linux 开发队伍的非凡的创造能力以及协作开发模式的价值。
走进 Linux 内核
如果说 CPU 是计算机硬件的心脏的话,那么,操作系统的内核则是整个计算机系统的心 脏,或者说,是最高管理机构。Linux 的内核包含些什么?
简单地说,它包含五大部分内容: 进程调度、内存管理、进程间通信、虚拟文件系统及网络接口这五部分,我们也称为五个子 系统。在走进 Linux 内核前,读者可能想知道,它到底有什么特点呢?
1 Linux 内核的特征
Linux 是个人计算机和工作站上的类 UNIX 操作系统。但是,它绝不是简化的 UNIX。相 反,Linux 是强有力和具有创新意义的类 UNIX 操作系统。它不仅继承了 UNIX 的特征,而且 在许多方面超过了 UNIX。作为类 UNIX 操作系统,Linux 内核具有下列基本特征。
(1)Linux 内核的组织形式为整体式结构。也就是说整个 Linux 内核由很多过程组成, 每个过程可以独立编译,然后用连接程序将其连接在一起成为一个单独的目标程序。从信息 隐藏的观点看,它没有任何程度的隐藏—每个过程都对其他过程可见。这种结构的最大特 点是内部结构简单,子系统间易于访问,因此内核的工作效率较高。另外,基于过程的结构 也有助于不同的人参与不同过程的开发,从这个角度来说,Linux 内核又是开放式的结构, 它允许任何人对其进行修正、改进和完善。
(2)Linux 的进程调度方式简单而有效。可以说 Linux 在追求效率方面孜孜不倦,体现 在调度方式上也是别具一格。对于用户进程,Linux 采用简单的动态优先级调度方式;对于 内核中的例程(如设备驱动程序、中断服务程序等)则采用了一种独特的机制—软中断机 制,这种机制保证了内核例程的高效运行。
(3)Linux 支持内核线程(或称守护进程)。内核线程是在后台运行而又无终端或登录 shell 和它结合在一起的进程。有许多标准的内核线程,其中有一些周期地运行来完成特定 的任务(如 swapd),而其余一些则连续地运行,等待处理某些特定的事件(如 inetd 和 lpd)。 内核线程可以说是用户进程,但和一般的用户进程又有不同,它像内核一样不被换出,因此 运行效率较高。
(4)Linux 支持多种平台的虚拟内存管理。内存管理是和硬件平台密切相关的部分,为 了支持不同的硬件平台而又保证虚拟存储管理技术的通用性,Linux 的虚拟内存管理为不同 的硬件平台提供了统一的接口,因此把 Linux 内核移植到一个新的硬件平台并不是一件很困 难的事。
(5)Linux 内核另一个独具特色的部分是虚拟文件系统(VFS Virtul File Systen)。 虚拟文件系统不仅为多种逻辑文件系统(如 ext2,fat 等)提供了统一的接口,而且为各种硬 件设备(作为一种特殊文件)也提供了统一接口。
(6)Linux 的模块机制使得内核保持独立而又易于扩充。模块机制可以使内核很容易地 增加一个新的模块(如一个新的设备驱动程序),而无需重新编译内核;同时,模块机制还可以把一个模块按需添加到内核或从内核中卸下,这使得我们可以按需要定制自己的内核。
(7)增加系统调用以满足特殊的需求。一般来说,系统调用是操作系统的设计者提供给 用户使用内核功能的接口,但 Linux 开放的源代码也允许你设计自己的系统调用,然后把它 加入到内核。
(8)网络部分面向对象的设计思想使得 Linux 内核支持多种协议、多种网卡驱动程序变 得容易。
2 Linux 内核版本的变化
自从 年 9 月 日,Linus Torvals 正式宣布 Linux 的第一个正式版本— 版 本,到现在,Linux 的内核版本发生了一系列的变化,新旧版本之间的时间间隔为几个月甚 至几个星期,关于这一变化的非常详细的资料请看站点
http://ps.cus.umist.ac.uk/~rhw/kernel. versions.html 的内容。
我们把内核版本之间内容较大的变化分为三个阶段,第一阶段为 ~.15j,第二 阶段为 ~.x,第三阶段为 .x~2.x.x。一般来说,一个软件要到理论上已经完备或 者已经没有毛病时才给予 版本的版本号,而 Linux 以后的版本比起 .x 版本有了 较大幅度的变化,请看站点 http://www.linuxhq.com/的内容。 从 Linux 诞生开始,Linux 内核就从来没有停止过升级,从 Linus 第一次发布的 版 本到 年具有里程碑意义的 版本,一直到现在的 版本,都凝聚了 Linux 内核开发 人员大量辛苦的劳动。目前 Linux 在各种工作平台上,包括企业服务器和个人电脑上的广泛 应用,使得 Linux 成为了 Windows 的强劲对手。
本文所分析的 Linux 内核版本是 版的 版。那么 Linux 版具有什么样的 特点呢,我们可以用四个字来概括,那就是“广、新、快、小”。
1.广泛的支持
o 处理器芯片的广泛支持:Linux 提供了大量的处理器芯片的支持。原先的 Linux 就可以支持多种处理器体系结构,如 Intel x86、Motorola/IBM PowerPC、Compaq(DEC)Alpha 等,现在还增加了对 IA 、S/、SuperH 这 3 种体系结构的处理器的支持。对 Intel 的 x86 系列来说,AMD 和 Cyrix 公司的系列处理器产品也是使用 x86 指令的,同样也能获得很好 的支持。
o 对 ISA即插即用设备的支持:过去在 Linux核心开发小组里面存在有两种不同的观点, 一种是支持对 ISA 即插即用,另外一种持反对意见,认为对即插即用的支持简直是多余的。 因此过去在 Linux 里对即插即用设置的通用做法只能是利用用户级的工具(如 isapnp tools),手动配置即插即用设备。现在的内核则有所不同了,在内核级实现了对即插即用的 管理。我们可以看到系统会在启动的时候自动完成对即插即用设备的检测和自动配置,比如 说,我们可以从一个即插即用的 IDE 控制器上启动系统。
o 广泛的文件系统支持:很少有一个操作系统能支持这么多种文件系统。Linux 使用的 是 VFS(虚拟文件系统)的技术,提供了对多种文件系统的支持。从 Linux 1.x 到 Linux , Linux 已经可以支持多种文件系统。如 Windows 9x 的 VFAT、DOS 的 FAT、Mac OS 的 HFS、OS/2的 HPFS、Windows NT 的 NTFS(NTFS 的支持还处于测试阶段)等;当然还包括 Linux 自己使 用的高性能的 Ext2 文件系统。新版本的 Linux 新增支持现在的 DVD 使用的 UDF 文件系统和 SGI 的 IRIX 系统上的 XFS 文件系统。
在 Windows 里面使用 SMB 协议来实现“网上邻居”的共享访问,Linux 的内核里会 让您自己选择是否从 Windows /NT 下载驱动器,还可以自动检测远端的系统类型,使得 Linux 在 Windows 环境的局域网里工作得更好。
对 NFS(网络文件系统)来说,Linux 版本支持最近发布的 NFS v3 版本的网络文件 系统。
o 对软猫的支持:软猫实际上也被称为 WinModem,就是因为现有的这种软猫的驱动都 是由为 Windows 开发的软件来完成的。这种 Modem 和一般 Modem 的处理方法不同,它的 DSP 处理并不是在硬件层次上完成的,而是使用软件通过 CPU 来实现的,因此无法在现有的 Linux 中配置这种 Modem 上网。现在的 Linux 内核里已经开始了这方面的支持。
2.新思路
o 新型的设备管理方法:Linux 引入了 I2O(Intelligent Input/Output)的设备 驱动管理方法。它的做法是,将驱动程序分成了两个部分:一个是在操作系统模块的部分, 另外一个是在硬件模块的部分。操作系统模块的部分是独立的,硬件模块的部分是依赖于硬 件结构的。这种新型的管理方法使得 Linux 可以更好地支持大部分的 ISA 和 PCI 设备。
o 对 USB 总线的支持:近年来,USB(通用串口总线)的技术是计算机界振奋人心的事 情之一,现在已经出现了大量的使用这种接口的设备,如键盘、鼠标、音箱、Modem 等。使 用 USB 接口使得计算机外设的安装和使用变得更为简单,自然成为了一种潮流。现在的 Linux 也可以很好地支持这种总线接口的设备。
o 新型的二进制执行代码类型(Binary Types):Linux 是第一个在内核级提供内建 Java 解释器的支持,从而进行 Java 代码的执行的操作系统之一。这在 Linux 版本里已经实现 了。Linux 版本又做了改进,将这种支持的方法改为对“Misc”二进制类型的支持。通 过使用这种类型的二进制代码类型,用户甚至可以利用 DOSEMU(MS DOS 模拟器)或者 WINE (MS Windows 模拟器)来运行在 DOS/Windows 下的.exe 或.com 的程序。同样用户也可以自己 配置出 Java 字节码运行类型。
o 内核级的 Web 服务器:这种 Web 服务器和所谓的 Apache 用户层上的 Web 服务器并 不冲突。对 HTTP 请求首先由内核级的 Web 服务器进行处理,如果不能处理就将请求提交给 Apache 用户级 Web 服务器来处理。像这样的构思和实现在网络操作系统中实属一绝。
3.高性能
o 对虚拟文件系统(VFS)的修改:Linux 版本的文件系统修改了 VFS 中的错误, 尤其是在文件的缓存管理上。过去的文件系统的高速缓存管理是建立在复杂的双缓冲池 (dual-buffer pool)上的,这种方法导致连开发人员都不知道什么时候将双缓冲池进行同步。 这种处理方法并没有给文件处理带来好处,反而增加了内存的使用。因为要处理双缓冲系统 的同步,使得系统的处理速度降低。现在开发人员修改这段代码,使用了简单有效的单缓冲 系统,提高了文件系统的处理效率
o 对高端服务器的支持:Linux 版本的内核可以支持在 SMP(对称多处理器系统) 下的多个 IO-APIC(输入输出的高级可编程中断控制器),提高了对高端服务器的支持效率。
Linux 版本可以支持多达 个 IDE 控制器。过去的 Linux 版本只能支持最多 4 个 ID 控制器。一些强大的企业级 Web 服务器正需要这样的硬件支持。
Linux 版本可以支持 Intel P6 以上芯片的 MTRR(内存类型范围寄存器),对非 Intel 的如 Cyrix 6x86、6x86MX、MII 的 ARR(地址范围寄存器)也能有很好的支持,这使一些高 带宽的设备的运行性能得到了提高。
现在的内核可以支持多达 亿个用户。在 Intel 架构上可以支持到多达 4GB 的内存。 并且现在的内核还可以支持多达 块以太网卡,同时支持最大容量为 2GB 的文件。
这些性能都使得 Linux 对高端设备的支持能力得到了提高。
o 对高速网的支持:Linux 版本支持 ATM 网络适配器等高速网络设备,为进一步的 网络发展做好了准备。对低端用户来说,Linux 提供的 PPP 层和 ISDN 层的结合,提供了在并 口线上的 PPP 和在以太网上的 PPP 支持。
4.小内核
o 内核本来就很小:Linux 的整个内核源代码大概需要占用 多 MB 的硬盘空间,但是 编译出来的二进制代码只占用 600KB 左右的空间,完全可以放在一张软盘上,随时可以使用 这张软盘启动系统。
o 对内存的需求很小:大家比较关心的一个问题是 Linux 现在需要多少内存才能正常工 作。我们知道,大部分的操作系统在升级的同时,对硬件的需求也在不断提高,尤其是对内 存的需求方面,很大层次上影响了系统的性能。不过 Linux 和其他操作系统不同,Linux 可 以进行个性化的定制,用户完全可以根据自己的系统配置来生成自己需要的操作系统内核, 也可以根据需要启动或关闭一些系统服务,这样可以减少系统对资源的占用,提高系统的运 行效率。
Linux 内核发展到现在已经相当庞大,要想在一段时间内搞清所有的内容几乎是不可能 的,因此,本书对内核的分析也集中在几个主要部分的主要内容上,其运行的平台也只选择 了 i386 的单 CPU,在一些特殊情况下,我们也会讨论 SMP(对称多处理机)的情况。
走进 Linux 不是一件容易的事,但走出来同样不容易。阅读 Linux 源代码如同阅读一 篇优美的作品,会深深地吸引着你,既可以满足你好奇的愿望,也可以检验你挑战困难的 勇气。
分析 Linux 内核的意义
Linux 开放的源代码为我国软件产业的发展和腾飞提供了前所未有的机遇,这体现在以 下几个方面。
1 开发适合自己的操作系统
因为操作系统是所有软件赖以生存的基础,因此,我们强烈地需要拥有自己的操作系统, 这不仅对我们国家的民族软件发展有极大的好处,而且对国家的安全和国防事业都至关重 要。但是如果象日本那样搞自己的一套体系结构(PC98),不与国际标准兼容,结果会严重 阻碍软件业的发展,那也是死路一条。但是国产操作系统没有任何市场,而 Windows 又几乎 处于垄断地位,面对这种局面,出路何在?Linux 的出现正符合我们所有的要求,因为源代 码公开,我们可以立即加入开发,不仅开发速度大大快于任何商业操作系统,并且可以保证 操作系统中不存在任何黑洞和隐蔽的问题,永远不会受制于人。因为 Linux 是国际化的,我 们也不必考虑兼容性问题,永远不会同国际脱轨。因此 Linux 对于我们来说,是实现民族软 件腾飞的一个难得的机遇。
实际上,操作系统的发展必将出现基于某一标准的百花齐放的局面,定制适合自己的操 作系统也将不仅仅是梦想。但是,开发一个操作系统不是一件容易的事,甚至分析一个现有 的操作系统也并不简单,而 Linux 作为分析实例是比较合适的。因为 Linux 的开放、众多人 的参与以及 Linux 社区的互助都为 Linux 的学习和普及提供了良好的外部环境。
开发嵌入式操作系统
Linux 为嵌入操作系统提供了一个极有吸引力的选择,它和 UNIX 相似,是以内核为基础 的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括 X86、Alpha、 Sparc、MIPS、PPC、ARM、NEC、MOTOROLA 等现有的大部分芯片。程序源码全部公开,任何人 可以修改并在 GNU 通用公共许可证(GNU General Public License)下发行,这样,开发人 员可以对操作系统进行定制,再也不必担心像 Windows 操作系统中“后门”的威胁。同时由 于有 GPL 的控制,大家开发的东西大都相互兼容,不会走向分裂之路。Linux 用户遇到问题 时可以通过 Internet 向网上成千上万的 Linux 开发者请教,这使最困难的问题也有办法解决。
正是嵌入式操作系统的特殊要求为 Linux 在嵌入式系统中的发展提供了广阔的空间,使 得 Linux 成为嵌入式操作系统中的新贵。在应用上,嵌入式 Linux 可应用于信息家电(机顶 盒、数字电视)、多媒体手机、工业、商业控制(智能工控设备、POS/ATM 机)、电子商务平 台,甚至军事应用等。
开发实时操作系统
在实时 Linux 出现之前,在为实时应用选择系统平台的时候,人们大抵只有两种选择, 要么使用 DOS 并自己编写所有必要的驱动程序,要么就得购买专用的实时系统。前者不仅费 时费力,其性能也难以令人满意。而后者性能虽佳,其价格却高得让人难以接受。
实时 Linux 的出现解决了这一问题,它为实时应用领域的研究与开发提供了一个物美价 廉的完备的操作系统平台。凭着自身的技术特色,借助于 Linux 的强大功能,实时 Linux 下 开发出的实时应用有着不俗的表现。
2 开发高水平软件
自由软件联盟及“中国自由软件库”就已涵盖了操作系统、开发语言、视窗系统、数据 库、网络、文字处理、排版及多媒体等各个领域,还有 VCD 解压源程序、路由器源程序等。 利用自由软件让个人计算机带十几个硬盘实现阵列技术,及其亚微米超大规模集成电路 CAD 系统,可直接输出生产线控制数据等,这能让我们学到最先进的软件开发规范和开发技术, Linux 内核的许多面向通信的底层代码对开发我国自己的信息安全产品极有参考价值。
实际上,目前 Linux 的源代码中包含了世界各地几百名计算机高手的作品,分析这些源 代码对于我们掌握核心技术会起到事半功倍的作用,尤其是各种驱动程序的编写,对于我们 把软硬件结合起来发展民族信息产业至关重要。要改变目前我国软件开发在低层次上的重复 过程,必须掌握操作系统的核心技术。
只要站在“巨人”的肩上,认真钻研,就一定能吃透它,利用它,研制出自己的解压芯 片、路由器、磁盘阵列产品,开发出高级的 CAD 系统等,打破国外的技术封锁,振兴我国电 子工业。
3 有助于计算机科学的教学和科研
对于从事计算机科学教学和科研的人来说,Linux 具有更多一层的意义。一般市场上出 售的 UNIX,除了价格之外,还不提供其核心程序的源代码。这样,若想了解 UNIX 的内核, 或在内核程序上作一些改进就很困难,更谈不上作为操作系统教学和科研的平台了,而 Linux 提供了从内核到上层的所有软件的全部源程序代码。在易于获得源代码的条件下,如果能对 源代码的组织结构、实现原理及实现机制进行较详细的描述,那么对很多人深入了解源程序 将有很大帮助。
实际上,Linux 也很适合教学用操作系统,一般的操作系统教材只讲操作系统的实现原 理,学生既觉得抽象又感觉不到操作系统的重要价值。尽管有些书也是以 UNIX 为实例,但学 生很难接触到 UNIX 操作系统,这对学生真正深入了解操作系统造成了困难。
国外很多大学已经把 Linux 作为教学用操作系统,我们认为这主要是因为:①Linux 平 台易于建立;②Linux 内核源代码易于获得;③Linux 结构简单、清晰;④Linux 的实现采用 了大量的数据结构,可以锻炼学生的抽象能力和知识应用能力。
可以说,Linux 内核源代码的开放乃至自由联盟各种应用程序源代码的开放,为我们的 软件教学提供了活教材,我们的学生可以在这种“自由”文化的氛围下,学习并掌握软件开 发的核心技术,我们就有希望在 世纪不仅拥有中文 Linux 操作系统,而且拥有适合中国国 情的大量而优秀的 Linux 应用软件。
每日分享分钟技术摘要选读,关注一波,一起保持学习动力!
相关推荐
- java-verbose是什么意思 java -verbose
-
灵魂拷问:为什么short、byte会被提升为int?boolean到底多大?为什么short、byte会被提升为int?在学习Java语法的时候,知道short、byte、byte类型在做运...
- Android Hanlder 揭密之路- 深入理解异步消息传递机制Looper、Handler、Message三者关系
-
Handler知识点梳理:Handler、Looper以及Message三者之间的关系前言Handler、Looper以及Message之间的关系,概括性来说,Looper负责的是创建一个Me...
- csdn freemarker jquery 预览word
-
高质量人才助推高质量发展——西安市高新区“精益创业带动就业示范行动”系列活动西安市高新区“精益创业带动就业示范行动”系列活动已于8月日在高新区软件新城正式启动。本周五(8月日)上午点分,系列活动之“直...
- android 修改菜单menu背景
-
教你把手机的状态栏和通知栏改造成安卓L风格说道颜值,就得吐槽一下安卓及一下的版本了。原生真的是丑,丑到没朋友。到了安卓,谷歌终于大刀阔斧的对安卓的颜值进行了大动刀。【下拉通知栏】那么,安卓有没有办法搞...
- DCDC架构中 dcdc类型(dcdc的主要作用)
-
DC-DC工作原理,看完你就懂了上篇文章说了LDO的原理,那本篇就来说一下DCDC的工作原理吧。开关电源:是一种高频化电能转换装置,其主要利用电力电子开关器件(如晶体管、MOS管、可控晶闸管等),通过...
- getPath(),getAbsolutePath(),getCanonicalPath() 区别
-
java获取文件路径1.前言Java开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件简单地探讨一下。2.文件的路径文件的路径通常有相对路径与绝对...
- android 多任务键app后台重新唤起生命周期 安卓任务管理器快捷键
-
好用的备忘录待办提醒APP任务管理工具怎么选?在这个信息高速流通的时代,选择一款合适的任务管理应用变得尤为关键。一个好的任务管理工具不仅能帮助我们更好地规划时间、提升效率,还能在快节奏的生活中保持条...
- android数据包下载地址 数据包apk
-
《地牢猎手5》安卓怎么下载APK数据包下载万众期待的地牢猎手5终于推出啦,此次Gameloft在安卓平台首发推出,不过目前谷歌商店还未提供正式下载数据包,不过不用担心,蚕豆网小编为大家带来了地牢猎手...
- 51c大模型~合集24(c5.0模型)
-
北大校友打造的个智能体「我的世界」,背后原理揭晓了!来源:量子位北大校友打造的个智能体「我的世界」,背后原理揭晓了!团队全新公开页技术报告,详尽解密AI智能体如何产生专业化分工、社交互动、甚至传播虚拟...
- ao3archive of own our如何使用
-
肖战ao3事件始末揭秘ao3是啥意思肖战粉丝举报AO3为什么惹众怒3月4日凌晨2时分,肖战工作室再次发表声明:肖战海外社交账号已无法正常登陆,任何更改均非本人及工作人员操作,后续动作均与肖战本人无关...
- ansible变量运算 ansible查看变量的命令
-
Python中的Ansible库在Python中集成Ansible功能,主要通过以下两种方式实现,结合官方库和核心API可满足不同场景的自动化需求:一、AnsibleRunner库Ansible官方...
- 25个简单shell例子(shell实例讲解)
-
shell编程其实真的很简单(一)如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux。说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的...
- ByConity ELT 测试体验
-
字节跳动开源云原生数仓引擎ByConity技术详解与应用导读本文介绍字节跳动开源的云原生数仓引擎,ByConity。主要包含四个主题:1.ByConity产生背景2.ByConity设计...
- 45个小众而实用的NLP开源字典和工具
-
从算法到产品:NLP技术的应用演变文章回顾了近几年NLP的发展历程,从项目实施的两个阶段中带我们梳理了NLP技术的应用演变。第一个与大家分享的Case,基于NLP展开。分为3个部分,分别是NLP的发展...
- [美国]《速度与激情6》[HD-RMVB.1024x576.中英双字][2013年动作]
-
安利电影。爱情:不良教育里克(费雷o马丁内兹饰)和伊格莱西奥(弗朗西斯科o拜奥拉饰)是教会学校的同学,更是一对同性恋人。学校的莫雷神父以留下恩里克为诱饵占有了伊格莱西奥,但最终恩里克还是离开了教会...
- 一周热门
- 最近发表
-
- java-verbose是什么意思 java -verbose
- Android Hanlder 揭密之路- 深入理解异步消息传递机制Looper、Handler、Message三者关系
- csdn freemarker jquery 预览word
- android 修改菜单menu背景
- DCDC架构中 dcdc类型(dcdc的主要作用)
- getPath(),getAbsolutePath(),getCanonicalPath() 区别
- android 多任务键app后台重新唤起生命周期 安卓任务管理器快捷键
- android数据包下载地址 数据包apk
- 51c大模型~合集24(c5.0模型)
- ao3archive of own our如何使用
- 标签列表
-