Linux Kernel学习001——简介(一)

严格来说,Linux是一个像Unix内核一样设计的操作系统内核。而今天的UNIX是一个用Open Group拥有的商标。对于自称为UNIX的系统,它需要满足某些条件,通过一致性测试并许可名称。关于哪些操作系统通过了Open Group的认证,可以访问Open Group的官网。链接

Apple

有趣的是,Mac OS X自10.5到最新的10.14(除了10.7)外,都通过了UNIX 03的认证。

虽然Linux类似于UNIX系统并提供与UNIX兼容的环境,但它尚未正式认证为UNIX系统。 另一方面,如果它看起来像一只鸭子,像鸭子一样走路,像鸭子一样嘎嘎叫,那么它可能就是一只鸭子。来源于APUE官网

因为Linux和Unix的密切关系,若要了解Linux,我们必须首先认识Unix系统。

1.1 Unix历史

UNIX是一个历史悠久的操作系统,早在MS DOS、Windows出现前就诞生了,到现在已经快有五十年的历史了。

1964年麻省理工学院,通用电气公司和贝尔实验室领导了一个合作项目——开发一个新的名为Multics的多用户、交互式操作系统。Multics旨在向大用户团体提供同时计算和存储的能力。但是,在1969年,贝尔实验室撤出了该项目组,麻省理工学院和通用电气继续开发Multics。贝尔实验室的一些主要开发人员仍在继续研究另一个课题。其中的Ken Thompson用Fortran编写了一个"太空旅行"(Space Travel)程序。与此同时,Thompson、Dennis Ritchie和贝尔实验室的其他人提出了一个新的文件系统原型,为了改善他们的程序设计环境。不久后,Thompson在GE-645计算机上实现了模拟这个文件系统的程序,但是任然无法满足"太空旅行"游戏的需要。因此,Thompson就用一台闲置的PDP-7实现了"太空旅行"游戏。此后,Thompson和Dennis Ritchie为PDP-7开发了一个操作系统环境,在这个系统中实现了之前的文件系统。不久后,该操作系统中又加入了进程子程序、一个简单的命令解释程序(后来演变成Bourne shell, sh)和一组管理文件系统的实用程序,并且实现了对两个用户分时使用的支持。这就是Unix操作系统的第一个用汇编完成的版本,当然当时它的名字不是Unix而是UNICS。在1970年,正式命名为Unix。

1971年,Unix的第一个汇编版本被移植到PDP-11中。1972年发布了Unix的第二版,该版本加入了用B语言写的管道和内核。由于B语言是一种解释型语言,因此受到了性能不高的困扰。之后,Ritchie将B语言改进成一门新的语言即C语言。1973年,第三版的Unix发布,它包含了C语言的编译器cc。同年,Unix被用C语言重写,与1973年11月发布了第四版。

1973年,Thompson和Dennis Ritchie共同撰写了第一篇关于Unix的论文"The UNIX Time Sharing System",发表在《ACM Symposium on Operating System》上,并在1974年1月发表在了《Communication of ACM》上。这篇论文第一次让外界看到了Unix,并且世界各地的学者开始对这个新系统感兴趣,并导致了对Unix源代码的需求。之后不久,Unix发布了第五版,该版本在一个简单的许可协议下可以自由获取,第一个获得许可的是加州大学伯克利分校。

1975年贝尔实验室第一次通过Western Electric Company对外发布了Unix第六版,也称为V6。

1979年1月,Unix v7发布,这是第一个真正可移植的Unix系统。该版本包含了一个C语言编译器pcc(即Portable C Compiler),一个称为"Bourne Shell"的命令解释器以及其他许多特性。

加州大学伯克利分校获得Unix许可后,很多研究生和教授都对这个系统产生了很大的兴趣,其中包括Bill Joy和Chuck Holey。他们为这个Unix开发了一些实用程序,包括Pascal编译器和ed编辑器(后来演变为vi,vi演变为vim)。Bill Toy将这些新增的内容和一些广泛发布的软件集中起来,打成一个软件包,形成了"Berkeley Software Distribution"(BSD),并且在1978年以每个许可协议50美元的价格发售。之后不久,又退出了2BSD。

前两个BSD只包含了应用和实用程序,并没有修改也没有包含Unix操作系统,第一个包含操作系统的版本是1979年发布的2BSD。3BSD在内核加入了页式请求和虚拟内存等新特性。3BSD的虚拟内存功能引起了国防高级研究项目部(DARPA)的注意,他们为BSD系统的开发提供了资金。DARPA项目的主要目的之一是集成TCP/IP网络协议包。80年代产生了后来统称为4BSD的几个版本:4.0BSD(1980)、4.1BSD(1981)、4.2BSD(1983)、4.3BSD(1986)以及4.4BSD(1993)。

伯克利Unix的研究工作是由计算机科学研究组(CSRG,Computer Science Research Group)进行的。4.4BSD之后,由于Unix系统变得越来越大,以至于很难由一个小组来维护和发展,同时也由于经费问题,CSRG决定不再进行Unix的开发。

伯克利小组对Unix的发展做出了许多重要的共享。包括但不限于:虚拟内存、TCP/IP协议、快速文件系统、可靠信号和套接字等功能。

另一方面,贝尔实验室发布了综合各种变体的Unix System Ⅲ(1982)、System Ⅴ(1983)、System V R2(1984)、System V R3(1987)、System V R4(1989)。

在1982年,AT&T(贝尔实验室的母公司)与美国司法部的反垄断官司告结。作为结果之一,贝尔实验室独立出来并重新命名为AT&T实验室,同时AT&T被允许进入计算机商务。为此,AT&T提前宣布了Unix System V,并且宣布对Syste V以及将来的版本提供技术支持,且System V与未来的版本向上兼容。

System V引入了许多新的特征,比如:进程间通信(共享存储、信号量和消息队列等)、远程文件共享、共享库等。

Unix的广泛使用引起了不少计算机公司的兴趣。在1977年,AT&T公司向计算机厂商提供了制造许可证,这使得许多OEM厂商可以重写Unix的部分内核和外部结构,他们基于Unix推出了自己的商业版本。

版本演变历史可以参考下图:

Unix_history-simple.png

1.2 Minix操作系统

Minix系统是由Andrew S. Tanenbaum开发的。Tanenbaum在荷兰一所大学的数学与计算机科学系任教,他与1987年编写了Minix,主要用于帮助学生学习操作系统原理。到1991年时版本是1.5,目前(2018)年最新版达到了3.3.0。官网:http://www.minix3.org/

作为一个操作系统,Minix也许算不上优秀,但是它同时提供了C语言和汇编语言编写的系统源代码。

1.3 GNU计划

GNU计划和自由软件基金会(the Free Software Foundation, FSF)是由Richard M. Stallman与1984年一手船板的,旨在开发一个类似Unix并且是自由软件的完整操作系统:GNU系统(GNU是GNU's Not Unix的递归缩写)。到20世纪90年代初,GNU项目已经开发出许多高质量的自由软件,其中包括有名的Emacs文本编辑器、Bash、GCC、GDB等。这些软件为Linux操作系统的开发提供了一个合适的环境。也是Linux能够诞生的基础之一。

现在,各种以Linux为内核的GNU操作系统被广泛使用。虽然这些系统通常被称作Linux,但是Stallman认为,严格地说,它们应该叫做GNU/Linux。

1.4 POSIX标准

Unix变体的激增产生了许多兼容性问题,特别是各种商业Unix变体的出现使得情况变得更加复杂。System V和BSD在许多方面不同,比如:文件系统、网络机制和虚拟内存结构。这些不同中有一部分限制在内核设计和实现上,而另一部分出现在程序设计的接口层,这导致没有一个复杂的应用程序能够不加修改地同时运行与System V和BSD系统。

这种情形导致了对Unix标准的需求,1986年美国电子和电气工程协会IEEE制定了一个委员为正式形成试用标准POSIX 1003.1,这是关于可移植操作系统计算机环境标准的第一次尝试。因为AT&T保留了Unix名字的所有权,因此该标准使用POSIX(Portable Operating System Interface based on UNIX)作为其名称。自此以后,POSIX委员会提议了该标准的若干规范,其目的是产生一个关于可移植操作系统环境的ISO标准。目前最新的标准是POSIX 1003.1-2017。

POSIX的出现使得用户能够遵循由正式标准化组织承认的标准。此外,POSIX允许转换POSIX的调用至目标操作系统的调用,如DEC-Open VMS和微软的Windows NT。反过来说,任何操作系统都可以在源代码级用POSIX调用重写,因而用户可以继续使用他们喜欢的操作系统(不必是UNIX)。

现代Unix系统实现都采纳了POSIX1003.1,因而提供了源代码级的可移植性。

1.5 Linux

现在可以来讲Linux了。

Linux出现于1991年,作者是芬兰赫尔辛基大学的一名大二学生Linus Torvalds。Linus喜欢折腾计算机,测试计算机的性能和极限,但是缺乏一个专业级的操作系统。

在同一年间,GNU疾患已经开发出了许多工具软件。其中已经哟欧乐GNU C编译器,但是还没有开发出免费的GNU操作系统。而即使是教学用的Minix操作系统也有版本,需要购买才能获取。虽然GNU的内核HURD正在开发当中,当时在当时看来还不能在几年内完成。

此时Linus购买了一台386兼容电脑和一套Minix系统软件,之后他通过修改终端仿真程序和硬件驱动程序,开始编制自己的操作系统。在1991年10月5日,Linus在comp.os.minix新闻组上发布消息,正式向外宣布了Linux内核系统的诞生。最初发布的Linux很快赢得了众多用户,并且吸引了很多开发者、黑客对其代码进行修改和完善。由于其许可证条款,0.12版本之后使用用 GNU 通用公共许可证第二版。该协议允许任何人对软件进行修改或发行,包括商业行为,只要其遵守该协议,所有基于Linux的软件也必须以该协议的形式发表,并提供源代码。

目前我们可以访问Linux内核的官网https://www.kernel.org/,获取内核各个版本的内核源码,阅读内核文档等。截止到2019年初,最新的稳定版内核为4.20。

Linux目前被广泛移植到Alpha、arc、arm、ia64、mips、powerpc、sparc、x86-64等许多体系结构上。Linux是l类Unix(Unix-like)系统,但是它不是Unix系统(未经过Open Group的认证测试)。Linux用途广泛,包含的东西也非常多。Linux系统的基础是内核、C库(glibc)、工具集和系统的基本工具,如登录程序和Shell等。Linux系统也支持现代的X Window系统,这样就可以使用完整的图形用户桌面程序。在之后的博客中,一般用Linux一词指Linux内核。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容