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
系统下载:
Comments Closed.