谷动谷力

 找回密码
 立即注册
查看: 771|回复: 0
收起左侧

操作系统入门科普(Unix/Linux篇)

[复制链接]
发表于 2023-5-18 22:47:39 | 显示全部楼层 |阅读模式
操作系统入门科普(Unix/Linux篇)
$ N& Q+ y1 ?3 {' t
- B4 n5 t( }) J/ h$ F- @3 ]  Y
; x5 S4 c& @* A( x, `" y. r9 J
说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS系统。
, s5 W! }- p1 o- ?. z5 q
如果是从事信息通信行业,还经常会和ubuntu、CentOS、Fedora这样的Linux系统打交道。
/ \' V  V8 e  c. p4 t0 [! K
其实,操作系统的种类极多,远远不止我们知道的这些。

4 A7 q- ?0 n8 F! T3 |8 O
从使用场景来看,操作系统大致可以分为桌面操作系统、服务器操作系统、移动终端操作系统、嵌入式操作系统、物联网操作系统、云操作系统等类别。

8 y2 z7 v) |! @8 y7 i: u
如下表所示:
640?wx_fmt=png.jpg
# e- E' M/ L9 r6 w, b" z' X5 Q
那么,操作系统究竟是什么?

- c8 }6 j. ~6 t# \( [4 f
从本质来看,操作系统其实就是一套软件。

  R. |$ c3 |5 L% [  t
它属于底层软件,可以说是一个大管家,专门负责把所有的硬件和上层软件(中间件、数据库、应用程序等)管理和连通起来,并进行资源调配,完成用户下达的任务。
' E  S6 k( n/ j/ C* _1 S
640?wx_fmt=png.jpg

' ^- Q' |) @6 ?/ u/ m" `
操作系统包揽了很多底层的复杂工作,大大简化了应用软件的开发难度。
" J' x& B  F; }( C* x3 a, v' T
比如说,我开发一个视频播放器,就不需要写那些底层硬件代码。

) d& Y% {6 A* X" e
操作系统还有一个重要作用,就是方便用户使用。
$ c( {4 R  b+ Z& u9 |0 F% J: k) N; m; e
用户有了操作系统,就能更好地管理计算机,进行人机交互(下达命令,查询结果和状态)。

* Z; A2 B+ B) F: M( B2 P. W
新手学习操作系统,最麻烦的是认名字和认类别。接下来,小枣君就从时间线的角度,对所有的操作系统关系进行一下梳理。
! O4 y* r1 v& h+ n, ?
/ j0 L# `" ?) o4 }) y" p: F1 b$ B! v& {
$ L4 X2 K' y$ r# t
█ 操作系统的诞生
  A( R9 C* s% E& l
操作系统这个东西,并不是计算机诞生时就有的。

  x7 r' u: G0 p* F( R* K( O, G( A
1946年2月,在美国的宾夕法尼亚大学诞生了世界上第一台电子计算机,它的名称叫ENIAC(埃尼阿克)。

7 [4 }# i7 |+ ~1 H; T/ P* i8 |+ x% M
ENIAC是由大量的电子管(真空管)组成,体积极为庞大,占地170平方米,重达30吨,耗电174千瓦。在算力上,它可以实现每秒5000次的加法运算。

7 ^. \! x) D  X! {$ `: H" O
0?wx_fmt=jpeg.jpg

* L4 v$ ?& x% L
这种早期的计算机,既没有显示器,也没有键盘,更没有鼠标,全部都是人工操作。

9 T' Q+ U0 b6 U( B) g) H( ~
在使用时,专职操作员将运算信息记录在穿孔卡带上。系统启动后,读取卡带信息,然后进行运算,最后输出结果。

% F4 L3 K  @- |- P
0?wx_fmt=webp.jpg
穿孔卡带

' W6 e9 e* q: \
计算机的速度快,人的速度慢。所以,计算机经常处于等待状态,等待操作员的输入。
8 W! i6 T& _# k" {. k
这严重耽误了计算效率,浪费时间,也浪费钱(电费)。于是,到了20世纪50年代,开始出现了批处理系统(batch processing)。
! J5 l& m5 Y" |" C! y- B
批处理系统中,操作员把用户提交的作业进行分类,把一批作业编成一个“作业执行序列”。每一批作业,都由专门编制的监督程序(monitor)自动依次处理。
/ }8 S0 k% P  v- F6 e  f/ S
这个“监督程序”,就是操作系统的雏形。它标志着操作系统的诞生(1955年)。

6 e  ?, H7 ]1 i  G+ U+ Y- v
最早使用批处理系统的,是第二代通用计算机,代表产品是IBM的1401和7094等。
; v) B& s4 b- q$ m
640?wx_fmt=jpeg.jpg
* t% J/ t8 y# e3 R' J
批处理虽然提升了效率,但仍存在缺陷。

' Y9 v4 ~. ^8 M
例如,当作业进行I/O(输入/输出)操作时,主机会等待操作完成,造成自身空闲。再例如,计算机只能同时运行一个批处理任务,效率还是太低。. ?. m  }2 g9 @4 P8 X
' h6 r; E: k! ?6 Q* V! l. C' t
到了60年代,集成电路技术高速发展,我们有了更快的处理器、更大的内存、更丰富的I/O设备。同时,通道和中断技术出现,开始允许系统执行“挂起”操作。

+ d2 n- [  ~2 N3 A2 D: }- z3 ~% G
于是,就有了“多道程序系统”。
$ w8 \, j2 {* m7 o: h
简单来说,计算机系统从串行变成了并行,可以同时运行多个任务(多个程序放入内存,交替在CPU中运行,共享硬软件资源)。

9 y$ M2 P, {$ |( Y; v7 A% u
多道程序系统大幅提升了计算机的工作效率。再后来,系统又支持了多个用户同时使用。于是,就变成了“多用户+多任务”的系统,称为“分时系统”。
$ D9 S7 t* a: s+ o: Z# i' ~2 D
“分时”和我们通信领域的“时分复用”有点像,就是把处理机的运行时间分成很短的时间片,按时间片轮流分配给各个作业使用。

/ d/ _5 s0 Q# }6 \+ @9 Z5 L; R+ b
再后来,技术又继续演进。终于,我们有了时效性更强的“实时操作系统”。这种系统,就非常接近于现代操作系统的概念了。
9 s: b+ `! R! ~! D
- w0 p3 E9 z9 x# E& g
640?wx_fmt=png.jpg , v( c! R4 f1 A' j; t4 T% H7 |
: b/ v* v; _7 p# J+ c( l' n2 E% s
█ UNIX的诞生
# ?- v' [0 n, M$ E3 D- h% p, i
1964年,美国电话电报公司(AT&T)、通用电器公司(GE)及麻省理工学院(MIT)合作,提出了一个超级分时操作系统的开发计划。
) l( B! H7 Z8 T* T) A3 z, v
这个计划,被命名为Multics OS。Multics是“MULTiplexed Information and Coputing System(多路信息与计算系统)”的意思。

$ r5 D" U) X6 S8 q9 r3 z9 w
当时,他们打算借助这个系统,打造一台能够连接1000台终端、满足300人同时在线的计算机。

& c  }9 N' l6 _7 `, W# X2 j6 |
这个计划持续了五年,并没有达到既定目标。于是,1969年,隶属AT&T公司的贝尔实验室(Bell Labs)宣布退出。
: K6 H) U& N( n" T4 k
贝尔实验室退出之后,相关的项目组成员就闲了下来。其中就有一个人,名字叫做肯·汤普森(Ken Thompson)。

' w! D" F+ {3 k) s! [* a- l8 }
640?wx_fmt=jpeg.jpg
' P4 G, `+ T! Q3 ]
肯·汤普森此前在Multics上开发了一款名叫"星际旅行(Space Travel)" 的游戏。退出Multics项目后,肯·汤普森就没办法继续玩这个游戏了。

$ m5 F0 ?2 z; y% k# M  r
于是,他突发奇想,打算在一台空闲的PDP-7(DEC公司生产的一种小型计算机,性能很低)上,开发一个简单操作系统,运行这个游戏。

7 [$ v* h& u. q8 R& i& x5 Z4 c! F1 O
1969年8月,肯·汤普森趁着妻子回家探亲,用了1个月的时间,使用汇编语言,写出了一个简版的Multics系统(包括一组内核程序,一些内核工具程序,以及一个小的文件系统)。
2 F& r' |: k! l, a

" d. S- c' a% M% E0 u  F3 U, R
实验室的同事们,将这个系统戏称为Unics。Uni作为前缀,是“单一、一个”的意思。Unics,对应Multics,是“单路信息与计算系统”的意思。
+ Q& i) b8 P( k
后来,大家又取其谐音,直接称其为“Unix”。
( p4 j9 _7 j9 L9 ^
640?wx_fmt=jpeg.jpg
一边工作一边下棋的肯·汤普森
, _+ e6 J% o. n+ L$ T/ x
基于汇编语言编写的Unics,硬件通用性差,没法移植到其它机器上运行。因此,肯·汤普森尝试使用BCPL、PASCAL语言进行重写。但是,效果并不理想。
4 z# X" {. T, I% }4 z2 \
这时,他的同事丹尼斯.里奇(Dennis Ritchie)站了出来。
3 I; \$ U9 g* \1 |
640?wx_fmt=png.jpg
- r* _& Q* W5 G2 `8 r9 N
丹尼斯.里奇在BCPL语言(也就是B语言)的基础上,开发了一套新的语言,也就是后来如日中天的C语言(按字母表顺序,B之后就是C)。

* V. V1 D/ y( k2 Z& W# I
不久后,丹尼斯.里奇用C语言重写Unics成功。就这样,Unix操作系统正式诞生了。
. O! }8 t% K1 i( }5 M
640?wx_fmt=jpeg.jpg
正在操作DEC PDP-11计算机的
肯·汤普森(坐者)和丹尼斯.里奇(站者)
3 ^2 g; J5 ]/ |
1973年,丹尼斯·里奇和肯·汤普森正式发表论文,宣布了Unix的存在。消息引起很大反响,很多人都期望学习和研究Unix。
2 A" S) c8 N8 r3 @
贝尔实验室(AT&T)推出了Unix之后,因为受美国政府反垄断制裁的原因,并不能对它进行销售。所以,他们只能将Unix无偿提供给所有人学习。
; p! `5 m# P4 \! I
又过了一段时间,AT&T发布了Unix系统第5版,并授权给教育机构使用。1975年,他们第一次以2万美元的价格,授权企业使用Unix第6版。
1 g8 C7 l# _6 _: h; z3 ?
这期间,很多企业和机构开始打Unix的主意。
5 z. l% B* p- i% _
1977年,伯克利大学的研究生比尔·乔伊(Bill Joy),将Unix程序整理到磁带上,推出了BSD版本。BSD,就是Berkeley Software Distribution(伯克利软件发行版)。
+ O, O0 ]% Q8 r9 y# V
1978年,SCO(一家服务器系统软件供应商)包装发行了商用版的Unix。
# G. \% o! B- b
目前公认的最完美版本,是1979年发行的System V7。这个版本也被Unix玩家们称为“最后一个真正的UNIX”。
- x6 {" ?  @/ R% R, ~" K9 D
1980年,美国国防高级研究计划局(DARPA)准备制定TCP/IP协议,选择了与BSD合作。这大大刺激了Unix的发展和普及。% _9 f& D2 ]1 b2 s

+ o  z( f* s. `0 d; T/ ~5 ]: I+ @
后来,丹尼斯·里奇和肯·汤普森被誉为Unix之父和C语言之父。1983年,他们二人都获得了图灵奖。
) a$ |0 G0 t" T+ j$ b9 M3 @
9 R, @" z1 |+ I
0?wx_fmt=jpeg.jpg

- M( q5 _1 x; W/ V& ?$ x8 q
在System V7推出之后,AT&T发布新的使用条款,将Unix源代码私有化。Unix开始走向了商业闭源之路。

2 \( r) C, Q* i9 K* x$ U
很多公司,都推出了自己的Unix系统分支。比较有名的,是Sun公司的Solaris、IBM公司的AIX、惠普公司的HP-UX,以及由BSD版本发展起来的FreeBSD。

8 X8 h3 S/ v. [
Solaris这个系统,小枣君非常熟悉。当年我就是通过Solaris学会的Unix。它的稳定性极高,主要用在SUN公司的服务器(V240/V440等)上,CPU都是完全不一样的,叫做SPARC。
4 d: j6 b" k1 `2 Q# R
FreeBSD的应用范围就广多了。它在BSD许可协议下发布,由来自世界各地的志愿者开发和维护,允许任何人随意使用和发行(在保留版权和许可协议信息的前提下)。
* G  p8 W; p- X1 o; I  l1 g
苹果公司的OS X,就是基于FreeBSD的。2 T6 Z, o2 P& i# m# u  r4 a+ E3 r: n

4 H+ n9 ?4 v( v4 p0 b! |
详细的Unix闭源分支我就不多说了,发一张图,大家可以参考:

* @: h! M1 D2 V1 j
640?wx_fmt=jpeg.jpg
" J, {$ {, E4 u9 }6 S  A) R! o

8 m: r* y- @  q, e' e█ Linux的诞生
! X. V, |! U% h- q
) W& N/ r+ Z! V
Unix开始收费和商业闭源之后,引起了一个大叔的不满。这个大叔,名叫理查德·马修·斯托曼(Richard Matthew Stallman)。
5 E( `) |2 e' N( r: m! U6 N8 _7 N9 a, }# l
640?wx_fmt=jpeg.jpg
理查德·马修·斯托曼
' S. R6 `  }- @! |; ?# w4 T
1984年,他发起了自由软件体系GNU(GNU is not unix),模仿Unix的界面和使用方式,重新开发一个开源的版本。他还组织成立了FSF(Free Software Foundation,自由软件基金会),起草了GPL(GeneralPublicLicense,通用公共许可证)。
0 g: m8 B" K! G6 G5 t- R3 @5 Q
640?wx_fmt=png.jpg
GNU著名的牛头logo

1 q% g3 T; f) _7 M" L
斯托曼的做法,具有划时代的意义。他开创了开源软件的黄金时代。

; T3 Y4 D5 X% ]1 l9 [
所有GPL协议下的自由软件,都必须遵循“Copyleft(非版权)"原则——
+ e; Q* F5 S  e
即:自由软件,允许用户自由拷贝、修改和销售。但是,对其源代码的任何修改,都必须向所有用户公开。
3 `) ]. o! n9 C5 u5 r1 \$ n
到上世纪90年代初,GNU项目已经开发出许多高质量的免费软件,其中包括有名的emacs编辑系统、bash shell程序、gcc系列编译程序、gdb调试程序等等。
! }" z6 [; ?5 a3 n
这些都为后来Linux的诞生创造了条件。
0 e6 S6 O: h: [+ k8 m" I& I; p7 I8 f$ d
Unix源代码私有化之后,在大学中不再允许使用Unix源代码。

/ V8 t% {& M/ |& s! x* d
1987年,荷兰阿姆斯特丹自由大学计算机系的安德鲁·塔能鲍姆教授(Andrew S. Tanenbaum,也译为谭宁邦),为了能在课堂上教授操作系统课程,决定在不使用任何AT&T源代码的前提下,自行开发与Unix兼容的操作系统。

. f5 q$ Q; u2 ^! X0 R  D* Z7 f
640?wx_fmt=png.jpg
安德鲁·塔能鲍姆
- b  |3 u* I1 l
他将这个系统称为MINIX,也就是mini-UNIX(小型UNIX)的意思。

' e7 |$ O4 \/ \
MINIX的主要工作平台,是IBM PC及其兼容机。这款PC搭载了英特尔公司的16位处理器——Intel 8080。

7 W& Z1 S+ l* g) J! d
开发出MINIX之后,塔能鲍姆教授并没有对它进行大规模推广。而且,他认为这个系统只是用于教育目的,所以也没有进行深入开发。
4 O1 y! ~6 T% Z2 c' j  @
他甚至还不允许别人加入代码(估计是怕侵权Unix),这就更加限制了MINIX的发展和普及。

& N& M  W  @1 G6 }1 O
1991年,正在芬兰赫尔辛基大学求学的林纳斯·托瓦兹(Linus Torvalds),对Unix产生浓厚兴趣,尝试借助MINIX完成一些日常工作。

  Y# v1 E% b0 e! v; x% l
MINIX的功能太弱,无法满足林纳斯的需求。于是,他利用GNU的bash当做开发环境,gcc当做编译工具,成功编写出了拥有10000行代码的Linux内核(Linux kernel)。
7 N: o! K4 n+ I; t6 {' {* c- e
此时的林纳斯,只有21岁!
6 V3 m/ y9 i6 ~& p+ e3 \
640?wx_fmt=jpeg.jpg
林纳斯·托瓦兹

( Q: w$ B2 Q7 X; d
林纳斯的Linux内核基于POSIX(Portable Operating System Interface for Computing Systems,可移植操作系统接口)标准,能够与绝大多数Unix操作系统兼容。

) ?" u- ]! F7 Z+ ~# n3 z1 H; P
他在发布时,选择了遵循GPL协议和GNU宗旨,所以,正式发布时,命名为“GNU/linux”。

" i' W9 V4 S5 _9 u) k% M
640?wx_fmt=png.jpg
Linux的吉祥物是企鹅(英文名: Tux)
因为林纳斯小时候被企鹅咬过,印象非常深刻

  @9 ~' I4 v9 a- ~: H; I5 g3 d: q" l9 g3 O% H
█ Linux和Unix的关系
4 p# |6 ~& b" z1 O; w8 [
这里,我要特别说明一下,Linux和Unix的关系。
! d5 P& v5 J$ u, i& s
很多人觉得,Linux就是Unix,这显然是不对的。由上面的介绍可以看出,Linux是开源自由软件,而Unix是对源代码实行知识产权保护的传统商业软件。两者是完全不同的东西。

2 [" F; E  ]) G5 V6 L6 l' m
那么,Linux是不是类Unix(Unix-like)系统呢?
) e! B# W9 e6 a& p( f7 ]! B; B
严格来说,也不行。
/ R1 m* ~3 X  W, I/ ]# a
Linux只是风格上和Unix很像,但它并不含有Unix的代码。UNIX的源代码,为SCO公司所有。UNIX的商标权和标准认定权,属于OPENGROUP所有。

) ]) H" y8 D5 X2 l真正意义上的类Unix系统,必须要通过官方认证(例如苹果的MacOS)。而Linux并没有。
" F2 }. a0 j7 b

9 @8 {7 A) K5 S4 X! ]█ Linux的发行版
4 f2 _1 `& U$ k* c& g
大家注意,林纳斯1991年开发的,并不是一个操作系统,而是一个内核。
2 r8 X$ h# u/ ^
后来,全球开发者(开源社区、企业、个人等)对内核代码进行大量的修改和补充,加入GUI(图形界面)、应用等部分,才形成了相应的Linux操作系统发行版,也就是真正的操作系统。

: E) x" u* ?* d& l  B. `6 ~+ @& i
这些发行版分为社区版和商业版。社区版数量较多,开发和维护的主体是开源社区。商业版数量较少,是在社区版的基础上进一步优化而来。
% p3 Q+ f" S& i% w: H
值得一提的是,发行版之间也有复杂的衍生关系。也就是说,发行版可以构建在另一个发行版之上。

+ i3 [3 R; @: q+ I/ _
一些大家可能比较熟悉的发行版,包括:Ubuntu、Debian、Centos、Fedora、 Redhat Linux、Slackware、Turbolinux、Mandrake、SUSE、红旗、麒麟等。
5 ]# |7 L. p) V( O8 O
640?wx_fmt=png.jpg
1 g! W/ }3 s9 jSlackware和Debian是最早期的两个发行版,创建于1993年。. W, b+ G, |1 b: F
640?wx_fmt=png.jpg 3 k" a7 S9 C- S# Z/ D' K7 `7 H
Debian的后代分支比较庞大。除了Debian本身之外,这个分支的主要代表还有Ubuntu(构建在Debian之上)、LinuxMint(构建在Ubuntu之上)、Kali Linux。
% _8 V% n  l: K% |# g 640?wx_fmt=gif.jpg
* M# Q9 [. {: D: e3 i* JRedhat,也就是大家很熟悉的红帽系列。它的主要发行版是Red Hat Enterprise Linux(RHEL),针对企业客户。" A) h# _( f7 Z( U) K. `0 }8 a+ L
640?wx_fmt=png.jpg : W$ H2 B8 ]+ r3 l, l
CentOS是RHEL源代码再编译的产物,修正了不少Bug,稳定性更强。
* h0 b& r# S$ ^7 G5 y 640?wx_fmt=png.jpg
9 X9 j) w% U/ w, L" `, ]5 I5 \4 O8 e除了RHEL之外,Redhat还向社区提供另一个免费发行版,即Fedora。
, b6 R3 f; W4 \. y2 ?" F 640?wx_fmt=png.jpg
  D* F! T1 B) j这些发行版的具体关系和发布时间,如下图所示:
2 j( ?$ x1 W3 R! d4 [! m, D' i# @1 g
640?wx_fmt=jpeg.jpg . a; N7 u! J1 N1 a
上面这些操作系统,小枣君基本都用过。2005年我刚工作的时候,用的是Debian、RHEL、Solaris。后来,开始用Fedora。再后来,是CentOS。刚开始的使用,很难受,不适应。但是一旦用习惯了,就觉得很爽。
8 _9 d; \$ H( U+ ]; n2020年底,红帽公司宣布陆续停止维护CentOS,后续将无法获得官方升级和补丁。虽然比较可惜,但也给国产操作系统带来了机会,我们以后会讲。- x" `! \/ a5 w6 P

, Y- G5 Z; D  z6 e4 s█ 未完待续……; H; w- `0 n4 Y4 q! M
今天先说到这里,看完这篇文章后,相信大家应该对Unix和Linux操作系统的家族脉络有了基本的了解。
3 m& O6 i- `& o; O
$ y' k' h( x1 t, ?' r, ]4 [" ?) ~( E
下期文章,我们将重点聊一聊Windows和macOS那条线,敬请关注!
, X3 K" r2 I7 H2 }( [' E2 q
来源:鲜枣课堂- B6 H' l- a! l% H

9 ?  z' h2 L! I3 I$ F
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-3-29 17:10 , Processed in 0.104703 second(s), 37 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表