2、Linux发展史

2.1 操作系统的发展及Linux的出现

2.11  Linux优势及目前常用的Linux

         Linux 内核非常庞大,超过 600 万行的代码。所以我们介绍 Linux 内核,也不可能每一行代码去分析,但是我会提炼其中的重点出来。我们不管学习什么,最关键的是学会其中的思想。

       虽然 Linux 内核非常庞大,但是横向对比计算机的发展史, Linux 的历史非常的简短,计算机出现的时候,还没有什么花里胡哨的包装,都是光着身子跑,用技术的语言说就是它只能执行一个任务,执行一个进程,也可以叫“裸跑”,或者称之为是批处理执行任务。学习计算机的同学应该很快明白什么是裸机程序,裸机程序只可以让一个进程使用硬件资源,一次只能完成一个任务,这无形上是对硬件资源的浪费。一开始硬件性能弱的时候这样也没什么问题,但是随着硬件不断地迭代发展,批处理对于硬件的浪费的问题就越来越凸显出来。

      可以拿我们的手机来比喻,裸机的话,我们玩王者荣耀的时候,有人打电话进来的话,王者荣耀是要被终止的,后来就有了操作系统,操作系统可以保证多任务执行,同样的 CPU 芯片,有了操作系统,我可以开微信,QQ ,还同时做其他很多事情。

       下面是关于几个比较有特色的linux嵌入式操作系统的简单介绍

1、 VxWorks

          VxWorks 是美国 WindRiver 公司的产品,是市场占有率比较高的嵌入式操作系统。

          VxWorks 实时操作系统由 400 多个相对独立、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统,具有优先级的任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,符合 POSIX (可移植操作系统接口)规范的内存管理,多处理器控制程序,并且具有简明易懂的用户接口,在核心方面甚至町以微缩到 8 KB。

       这个操作系统因为稳定性太好了,也被应用到了航空,卫星,军事等各个领域,实用性非常强,所以很多培训机构也针对这个操作系统开了培训课程。

2、 μC/OS-II

          μC/OS-II是在μC-OS的基础上发展起来的,是美国嵌入式系统专家 Jean J.Labrosse 用 C 语言编写的一个结构小巧、支持抢占式的多任务实时内核。

        μC/OS-II 能管理 64 个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。

3、μClinux

         μClinux 是一种优秀的嵌入式 Linux 版本,其全称为 micro-control Linux,从字面意思看是指微控制 Linux。

       同标准的 Linux 相比,μClinux 的内核非常小,但是它仍然继承了 Linux 操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的 API,以及 TCP/IP 网络协议等。因为没有 MMU 内存管理单元,所以其多任务的实现需要一定技巧。

4、eCos

          eCos(embedded Configurable operating system),即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。

        最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C 语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用 eCos 提供的配置工具可以很方便地配置,并通过不同的配置使得 eCos 能够满足不同的嵌入式应用要求。

2.12 UNIX 的诞生

生日:UNIX 在 1969 年出生。

他的父亲和母亲:是 Dennis Ritchie 和 Ken Thompson 两个人擦出了灵感的火花创造出来的。

出生户籍地址:贝尔实验室

贝尔实验室图片

贝尔实验室的logo

出生具体流程:

               VAX --> vms(专用系统,只在自己的硬件上使用)

                           ken开发的简单的系统Unics        --> Unix

                            B语言(引入静态变量)-->C语言

                    贝尔实验室的toms和rich最后用C语言重写了整个Unix,性能比使用汇编慢了很多,但是适用性更广

         1965 年,贝尔实验室要做一个项目,这个项目叫PDP-7计算机计划,发起人是通用电气和麻省理工学院,要用汇编语言编写一个替换批处理的系统。

       他们给这个操作系统起了一个漂亮的名字叫做「MULTICS 操作系统」("Multiplexed Information and Computing Service"的缩写)。这个操作系统的目标是实现多个人同时使用,按照我们现在的人来说就是多用户系统,多任务,多层次等等。

        但是一直到了1969 年,还没有做出来,发起人觉得这个项目进度太慢了,本来想早点制造出来我们好用来玩电脑游戏的,结果你们这几个科学家整了这么久还是没整出来,那只好停掉了这个项目,停掉了投资方就不再提供后备的资源了,留下的东西就自己瞎整吧,投资方也不管了。

       计划被停下来了,但是Ken Thompson当时还在调试一个程序,这个程序名字叫做 “星级旅游”( Space Travel),这个程序一开始运行在一个叫做 GE-635 的机器上面,但是因为这个机器的硬件设备比较落后,运行速度非常慢,这让Ken Thompson感觉非常不爽,然后他发现之前做「PDP-7计算机计划」项目的时候还剩了一台PDP-7计算机,这个计算机就是图片下面的那个计算机,然后他们就把 GE-635 程序移植到 PDP-7 计算机上面。

PDP-7计算机(当时应该没有人想到计算机可以做到这么小)

       到了1970年,PDP-7 可以运行 GE-635程序了,但是却只能支持两个用户,当时 Brian Kernighan 就开玩笑的称他们的系统是 “UNiplexed Information and Computing Service”,这个缩写就是 UNICS,再后来,大家就取谐音,称为 UNIX。所以1970 年可以称为 UNIX元年。

 Dennis Ritchie 和 Ken Thompson

2.13 BSD操作系统

       kein toms 1976年去加州大学伯克利分校任教,伯克利软件套件(英语:Berkeley Software Distribution,缩写为 BSD ),也被称为伯克利UNIX(Berkeley UNIX),是一个操作系统的名称。衍生于UNIX(类UNIX)。19世纪70年代由伯克利加州大学的学生比尔·乔伊(Bill Joy)研发出来,也被用来代表其衍生出的各种套件。

       BSD 常被当作工作站级别的 UNIX 系统,这得归功于 BSD 用户许可证非常地宽松,许多 1980 年代成立的计算机公司,不少都从 BSD 中获益。比较著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS等等。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系统所取代,但其开源版本被采用,促进了因特网的开发。BSD 比 Linux 早出现,稳定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有来自 BSD 的代码,但是现在一提到开源自由软件,人们首先想到的是Linux,而不是资格更老的BSD。

         UNIX创始人之一的 Ken Thompson 曾如此评价 Linux:”Linux不过是反微软思潮下的产物。“这个家伙觉得 Linux 不可能有多大的成就,非常自信的觉得 BSD 在任何时候都可以击败 Linux,甚至觉得Linux 是一个低端和下流的操作系统内核。

       但是事实证明,Linux 赢得了这场战争,有实力,也有些运气。 贝尔实验室自有的的操作系统称之为System V,后来贝尔实验室被收购,就开始销售Unix,4万美元一套,贝尔和BSD进行竞争,打官司,Unix发展陷入停止。而在Linux发展的时候,BSD 当时正被官司缠上,没有多余的心思应战 Linux,而BSD腹背受敌的原因很明显是因为他们的商业化,而Linux正是因为开源而更受全世界开发者的青睐。

       一个事情的成功,90% 是由他的领导者决定的,就好像一个球队能走多远,队长和教练可以决定它的深度,Linux 也一样,Linus Torvalds 是位杰出的领袖人物,他成功的让一群性格迥异的、绝非泛泛之辈的黑客共同合作开发,而没有如其他开源项目一般分崩离弃。还有一点,Linux 的硬件支持比 BSD 好,这在各种终端设备上来说简直就是一种惊喜,随着PC不断被边缘化,移动端的产品急需找到一款适合他们的操作系统,Linux 是最好不过的人选了。GNU 的许可证与 BSD 不兼容,因此 Linux 的出现让两者完美结合,所以现在Linux 全名叫 GNU/Linux。

       BSD后续发展

                  FreeBSD:世界上第一个能运行在PC机上的Unix(Apple核心)

                  OpenBSD:安全

                  NetBSD

2.14 Microsoft和APPLE

        81左右Unix开始销售,IBM,康柏公司开始销售PC兼容机(3万美元一套),使用intel CPU,丑陋性能低,Unix     开发者不愿意适配

        Microsoft:卖Unix(起名叫Xenix),

      有一位教授开发了CP/M(3万美元一套)-->DOS(Desk Operation System)(比尔盖茨5万美元买断,改名为DOS,卖给IBM,开始卖license)

         jobs:创建Apple,开发强大的PC机系统,使用强大的硬件,Apple I,

         Xerox: 复印机

             PARK实验室,研究出来世界上第一个鼠标和图形化操作系统(施乐领导不喜欢,卖给了乔布斯,后来又被比尔盖茨偷走,研发出了一个新的Windows系统)

         Windows NT Server(基于DEC的vms开发的新的Windows,稳定性好了一点)

2.15 GNU计划的产生

理查·斯托曼

       因为 UNIX 操作系统的商业化,原来的 UNXI 系统已经不能再被随意的使用,很多人都希望能有一款免费好用的操作系统,因为并不是每个人都很有钱,也不是每个人都有能力自己去写操作系统,此时,理查·斯托曼在麻省理工学院人工智能实验室发起 GNU 计划,希望发展出一套完整的开放源代码操作系统来取代 UNIX,计划中的操作系统,名为 GNU(GNU is Not Unix)。

         1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新闻组中公布这项计划。在此项计划中,开发出了很多我们现在熟悉的常用的工具,包括GNU编译器套装(GCC)、GNU的C库(glibc)、以及 GNU 核心工具组(coreutils)。另外也是 GNU 除错器(GDB)、GNU 二进制实用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面环境,(但是软件还是基于Unix内核的)。

      当然,GNU计划的目的还是开发出一款自由传播的操作系统,这个操作系统的名字叫 Hurd。

      但是由于对操作系统的要求过高,以至于 Hurd 一直处于测试阶段,本意是一个好事情,但是能力有限啊,开发的东西老是出bug,再好的创意那也是徒劳了。

       不过 Linus 大神通过 GNU 发布了自己的 Linux 系统后,就火起来了,真的就一发不可收拾,GNU软件开始全面迁移到linux上,    后来GNU/Linux正式出现,不过现在大家一般叫它Linux。

开源协议

2.16 Linux和MINIX的出现

MINIX启动界面

       在 UNIX 产生后,版权在 AT&T 手里,在 Version 7 UNIX 发布之后,发布新的授权条款,将UNIX 源码私有化,在大学不得再使用 UNIX 源码。

       荷兰阿姆斯特丹自由大学计算机科学系的塔能鲍姆教授(Andrew Stuart "Andy" Tanenbaum)为了教学,自己写了一个类 UNIX 的小系统,命名为 MINIX(意为mini-UNIX)。

       大家可能都不知道什么是“宏内核”和“微内核”,但是这个家伙和 Linus 的辩论轰动一时,不管怎么说,Linux 应该是现在的胜利者,最直接的原因是开源,让更多的开发者可以使用 Linux 内核移植到自己的设备上,包括 ARM 设备。

林纳斯 托瓦兹(Linus Torvalds)

         1991年,林纳斯·托瓦兹在赫尔辛基大学上学时,对操作系统很好奇。由于当时 386BSD 还没有出来。可是他不喜欢他的 386 电脑上的 MS-DOS 操作系统,所以就安装了 Minix,可他对 Minix 只允许在教育上使用很不满(在当时 Minix 不允许被用作任何商业使用),于是他便开始写他自己的操作系统。

         Linux 的第一个版本在 1991 年 9 月被大学 FTP server 管理员 Ari Lemmke 发布在 Internet上。最初 Torvalds 称这个内核的名称为 「Freax」,意思是自由「free」和奇异「freak」的结合字,并且附上「X」这个常用的字母,以配合所谓的类 UNIX 的系统。但是 FTP 服务器管理员嫌原来的命名「Freax」的名称不好听,把内核的称呼改成Linux。当时仅有 10000 行代码,仍必须运行于Minix操作系统之上,而且必须使用硬盘开机,随后在10月份第二个版本(0.02版)发布,与此同时这位芬兰赫尔辛基的大学生在 comp.os.minix 上发布了这样一则公告

         Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

          1994 年 3 月,Linux1.0 版正式发布。为了让 Linux 可以在商业上使用,林纳斯·托瓦兹决定更改他原来的协议(这个协议会限制商业使用),以 GNU GPL 协议来代替。之后许多开发者致力融合 GNU 元素到 Linux 中,做出一个有完整功能的、自由的操作系统。

80386 的芯片

80386的电脑

       如果单凭林纳斯一个人的力量,Linux 不可能发展到这个程度。他当时做了一个非常正确的决定,就是「开源」,让世界上更多的优秀程序员加入到他的事业当中。为了让更多的人同步开发,林纳斯还写了 GIT ,这个让很多协作开发者为之兴奋的工具。

2.17 Linux的标志物

          Linux 的标志和吉祥物是一只名字叫做 Tux 的企鹅,标志的由来是因为 Linus 在澳洲时曾被一只动物园里的企鹅咬了一口,便选择企鹅作为 Linux的标志。更容易被接受的说法是:企鹅代表南极,而南极又是全世界所共有的一块陆地。这也就代表 Linux 是所有人的 Linux。

       曾经有一个笑话说林纳斯被企鹅咬了之后,因为咬过的伤口会发炎,发炎的时候伤口会有点疼。晚上写代码想打瞌睡,但是就是因为这个炎症的疼痛感刺激着自己。当然了,这个只是个传说,传说是否是真的,哪天大神心情好了可能会揭晓答案。

2.18 Linux的现状及其优势

       今天在 Linus Torvalds 带领下,众多开发者共同参与开发和维护 Linux 内核。

       理查德·斯托曼领导的自由软件基金会,继续提供大量支持 Linux 内核的 GNU 组件。

       一些个人和企业开发的第三方的非 GNU 组件也在提供对 Linux 内核的支持,这些第三方组件包括大量的作品,有内核模块和用户应用程序和库等内容。

         Linux 社区或企业都会推出一些重要的 Linux发行版,包括 Linux内核、GNU组件、非GNU组件,以及其他形式的的软件包管理系统软件。

         Linux 内核现在覆盖的领域非常广,手机、平板、路由器等等,就大家非常喜欢的苹果操作系统,底层内核也是有 Linux的影子,Linux 的普及毋庸置疑,学习 Linux 应该作为每个技术人员的标配。学习完 Linux 内核你会对整个计算机体系有一个更深刻的认知,作为一个开发者,不管你从事的是驱动开发,应用开发,还是后台开发,你都需要理解计算机操作系统和内核的运行机制,才可能更好的编写你的代码,出现更少的错误。作为开发人员,不应该只局限在自己的小领域,因为你设计的模块,看起来非常小,但是你不了解进程的调用机制,不知道进程会阻塞,就绪,执行几个状态,你怎么可能编写好一个低容错率的代码呢?

 2.19 Linux后续发展

        源代码: C --> 编译成二进制 (交叉编译)

          ABI:Application Binary Interface(应用二进制接口,每个CPU支持的不一定一样)

       Release:将linux内核编译打包形成一个能在通用计算机平台上运行的系统,这些团体被称之为是发行商(release):

         比较著名的发行商:

RedHat:1993年美国,不卖版权费,卖软件维护服务

rhel:redhat enterprise linux每18个月发行一个新版本

SLS(slackware):1991

Debian:1992年德国,目前唯一一个不受商业组织支持的系统,最先进,最难用,由爱好者维护

SUSE(基于SLS发展) --> Novell (Netware), OpenSUSE           

Ubuntu: Mint(基于Ubuntu二次发行),基于Debian二次发行,主要基于PC机使用

CentOS: Community ENTerprise OS(社区企业操作系统),社区版的redhat

Fedora: 更改红帽个人版,引入新功能,更改bug,半年一更新,更新的新特性会引入redhat企业版

Mandriva:桌面版红帽

软件管理:

Debian, dpt(软件管理器)

RedHat, rpm(模仿dpt创建了rpm)                        

Archlinux

Gentoo

LFS:Linux from scratch

Androd:linux kernel + busybox+java虚拟机

Linux内核版本: 0.1, 1.0, 2.0, 2.2, 2.4, 2.6, 3.0, 3.7,…,5.12.8

RHEL发行版的版本: 3.0, 4.0, 5.0, 6.0,7.0,8.0

程序包管理器:

rpm:

RHEL,Fedora,S.u.S.E,CentOS

dpt:

Debian,Ubuntu

系统下载:

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)

Index of / (sohu.com)

欢迎访问网易开源镜像站 (163.com)

Comments Closed.