2022.29 Unix和Linux

Unix诞生于1969年,ken Tphmpson(肯.汤普森)最初用汇编语言编写,后来他和Dennis Ritch(丹尼斯·里奇)一起用高级C语言重写。UNIX 第一次公开露面是 1973 年丹尼斯·里奇和肯·汤普森在操作系统原理(Operating Systems Principles)上发表的一篇论文,然后 AT&T 发布了 UNIX 系统第 5 版。

AT&T公司下的贝尔实验室和学术界合作开发(加州伯克利大学),从而快速将其在各大高校传开。随后在1977年,伯克利大学的Bill Joy在取得了Unix的核心原始码后,着手修改成适合自己机器的版本, 同时增加了很多功能软件与编译工具,最终将它命名为Berkeley Software Distribution (简称BSD),苹果的操作系统实际源自此分支。

1979年,AT&T公司出于商业的考量,将Unix的版权收了回去,AT&T在1979年发行的第七版Unix中,特别提到了 “不可对学生提供原始码”的严格限制。 这导致后来学术界自力更生,Andrew Tanenbaum(安德鲁·塔能鲍姆)教授参照Unix的功能,写了一个Minix 这个 UNIX-like 的内核程序(1984-1986,没参照源码,避免版权纠纷),用于教授学生操作系统。同时,1984年,斯托曼开始发起 GUN 计划目的是建立一个自由、开放的 UNIX 操作系统。但是操作系统太麻烦,斯托曼就先写可以在 UNIX 上运行的程序,写了一堆免费的 GUN 软件,包括著名的 gcc,斯托曼还成立了自由软件基金会(FSF),请更多的工程师和志愿者编写软件。 1985 年,为了避免 GUN 与 FSF 所开发的自由软件被其他人所利用而成为专利软件,斯托曼与律师草拟了有名的通用公共许可证(GPL),对这些开源的自由软件都使用 GPL 的版权声明。

1988 年, 林纳斯.托瓦兹在上大学期间接触到了 UNIX 操作系统,但当时整个大学只有一台最新的 UNIX 主机,同时仅能提供 16 个终端,经常要花时间等待使用上,他就想:为什么不自己搞台 UNIX 来用呢?于是他买了台 Intel386 个人计算机,买了 Minix 的磁盘,并从Minix 源代码学习到了很多内核程序设计的概念,并在 GUN 计划提供的 bash 以及 gcc 编译器等自由软件的辅助下,托瓦兹得以顺利开始编写内核程序。1991 年,Linus Torvalds开发出最初的Linux,他把这个内核放到了网络上供人下载,同时发布了一则消息,他希望能够得到更多人的建议与反馈来发展这个操作系统它的源代码基于GNU公共许可证(GNU Public License,GPL),任何人都可以获得源码并研究它;只要得到源代码,就可以深入探究这个成功而又现代的操作系统。1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,到2019年,Linux 最新内核发布,此内核有大约2500万行代码。

从技术角度来说,Linux只是操作系统内核,而不是一个完全的类UNIX操作系统,这是因为它不包含全部的UNIX应用程序,诸如文件系统实用程序、命令解释器、窗口系统、图形化桌面、系统管理员命令、文本编辑程序、编译开发程序等。以上这些应用程序大部分都可在GNU公共许可证下免费获得,因此包含Linux内核、基础运行环境(运行时库如GLibc)、编译环境(如GCC)、外壳程序(Shell,即命令解释器)和图形操作界面(GUI)的完整操作系统套件被称为GNU/Linux。在大多数情况下,仍用Linux来指代完整的GNU/Linux。

Linux 内核遵循IEEE POSIX标准(POSIX全称是Portable Operating System Interface of UNIX)。它包括了现代UNIX操作系统的全部特点,诸如虚拟存储、虚拟文件系统、内核线程、轻量级进程、UNIX信号量、SVR4进程间通信、支持内核抢占、对称多处理器(Symmetric Multi-Processor,SMP)系统等。

Linux内核是一体化内核(或称宏内核)操作系统,宏内核的设计风格是“凡是可以在内核里实现的都在内核里实现”。因此,除了异常/中断处理、内存管理和进程管理三大基本功能以外,文件系统、设备驱动和网络协议也放在内核层实现。

宏内核的优点是内核内部的各种互操作都可以通过函数调用实现,因此性能较好;而缺点是体积较大且理论上健壮性不太好(因为内部耦合性太高)。与宏内核相对的是微内核,如GNU Hurd,其设计风格是“凡是可以不在内核里实现的都不在内核里实现”,因此很多功能子系统被设计成了一种服务(进程)。

微内核的优点是体积较小且理论上更健壮(因内核本身的功能较少而不容易出错);而缺点是操作系统的大量互操作都依赖于进程间通信(Inter-Process Communication, IPC),因此性能较差。微内核虽然把一些内核的核心功能剥离到了服务进程中,但重要的服务崩溃后实际上跟内核崩溃类似,因为整个系统也同样处于一个基本不可用的状态。

Linux虽然是宏内核,但是也吸收了一些微内核的优点,比如从1.0版本开始就可以通过模块化(将一些非核心的功能设计成可以运行时动态加载/卸载的内核模块)来减少内核核心部分的体积。

众多GNU/Linux的distribution(安装套件)的区别:利用同样的Linux Kernel,几乎相同的自由软件套件 (如GNU里面的gcc/glibc/vi/apache/sendmail/bind),几乎相同的操作系统接口 (bash/KDE/GNOME等等)。不同点是使用的kernel与各软件的版本可能会不同;各开发商加入的应用工具不同 ,使用的套件管理方式不同(debian与RPM)。

Android是一个使用了Linux内核的操作系统,但Android并不是GNU/Linux的某个发行版,因为Android并没有使用GNU/Linux发行版中常用的那些软件,比如Xorg的X-Window,而是在Linux内核的外围另行开发了一整套从内核层到应用层的新框架,与我们平时在桌面上使用的Ubuntu、Debian、CentOS等GNU/Linux发行版除了Linux内核的那些功能外几乎无任何共通之处,所以Android是使用了Linux内核的一个新类型Linux系统,不是GNU/Linux系统。

鸿蒙支持多种内核:Linux、liteos-a,是多内核设计,鸿蒙手机版使用了linux内核,在IoT设备上使用liteos-a。

2019 年 12 月 31 日,面向多样性计算的操作系统开源社区 openEuler 正式成立,2020 年 3 月 30 日, openEuler 20.03 LTS (Long Term Support,简写为 LTS,中文为长生命周期支持)版本正式发布,为 Linux 世界带来一个全新的具备独立技术演进能力的 Linux 发行版。2022年4月15日,欧拉捐赠之后首个社区共建版本openEuler22.03 LTS版本正式发布,采用了 Linux 内核 5.10 长期支持版。


posted on 2022-07-12 23:37  时间朋友  阅读(298)  评论(0编辑  收藏  举报

导航