Skip to content

Commit

Permalink
Minor update (#59)
Browse files Browse the repository at this point in the history
* Minor updates

- Update the number of Internet users
- Add person's English name
- Fix typo

* Update "IBM System/360" as its official name format

* Dennard & Amdahl

* py 3.8 EOL

* Fix broken links

* oops, typo

* cnnic.net --> cnnic.cn
  • Loading branch information
celeron533 authored Oct 28, 2024
1 parent 348b13b commit 76f480a
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 13 deletions.
12 changes: 6 additions & 6 deletions docs/Ch01/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ icon: simple/linux

!!! abstract "导言"

21 世纪是计算机科学的世纪。在信息化程度日增月益的现代社会,与计算机和各类电子产品打交道已经成为我们,尤其是年轻人的日常生活中几乎不可避免的事情了。据统计,截至 2021 年 6 月,中国的网民规模已经高达 10.11 亿[^1],即比例已经超过七成,而其中以中青年为主。在你的生活中,你认为计算机又占据了多大的席位呢?事实上,计算机在你生活中的比重可能远超出你的想象:不仅包括我们熟悉的在日常生活中频繁使用的个人计算机(俗称“电脑”),诸如智能手机操作系统、车载定位导航系统、校内一卡通服务系统以及如今风靡中国的电子支付网络等等都十分倚重各式各样的计算机。这些隐藏在各类用途迥异的设备中、甚至是无形的网络后面的计算机又会是什么模样?
21 世纪是计算机科学的世纪。在信息化程度日增月益的现代社会,与计算机和各类电子产品打交道已经成为我们,尤其是年轻人的日常生活中几乎不可避免的事情了。据统计,截至 2024 年 6 月,中国的网民规模近 11 亿[^1],即比例已经超过七成,而其中以中青年为主。在你的生活中,你认为计算机又占据了多大的席位呢?事实上,计算机在你生活中的比重可能远超出你的想象:不仅包括我们熟悉的在日常生活中频繁使用的个人计算机(俗称“电脑”),诸如智能手机操作系统、车载定位导航系统、校内一卡通服务系统以及如今风靡中国的电子支付网络等等都十分倚重各式各样的计算机。这些隐藏在各类用途迥异的设备中、甚至是无形的网络后面的计算机又会是什么模样?

在本书的第一章,我们将带领你简单了解现代计算机和计算机系统的发展,并正式引入本书的核心介绍对象,即在个人计算机系统中虽然不甚流行,你可能也少有耳闻,但在科学研究、工业生产、计算机网络等各种专业场合中占据绝对主导的 Linux 操作系统。本章还会进一步引领你一步步了解我们身边的 Linux 系统,认识到其实它并不遥远缥缈也绝非高不可攀。最后,我们还会把它带到你的眼前,让你亲自上手感受它的魅力。

## 计算机与操作系统 {#computer-and-os}

### 计算机的更新换代 {#computer-generations}

自 1946 年第一台通用计算机埃尼阿克(全称“电子数值积分计算机”,英文简称 ENIAC)问世以来,人类文明就朝向信息化大步迈进。在接下来的几十年,计算机经历了真空管时代(第一代,ENIAC 就是真空管计算机)、晶体管时代(第二代,如贝尔实验室的世界上第一台全晶体管计算机 TRADIC)、集成电路时代(第三代,如 IBM System / 360 系列)和如今的大规模集成电路时代(第四代,如世界上第一款微处理器 Intel 4004)。在更新换代中,计算机的性能和集成度都有着飞跃般的提升,在过去几十年的表现呈指数级增长,因而就有了计算机行业内耳熟能详的“摩尔定律”,即**集成电路上可容纳的晶体管数目每两年就会翻一倍**,这条定律描述了近几十年来计算机性能爆发增长的现象。
自 1946 年第一台通用计算机埃尼阿克(全称“电子数值积分计算机”,英文简称 ENIAC)问世以来,人类文明就朝向信息化大步迈进。在接下来的几十年,计算机经历了真空管时代(第一代,ENIAC 就是真空管计算机)、晶体管时代(第二代,如贝尔实验室的世界上第一台全晶体管计算机 TRADIC)、集成电路时代(第三代,如 IBM System/360 系列)和如今的大规模集成电路时代(第四代,如世界上第一款微处理器 Intel 4004)。在更新换代中,计算机的性能和集成度都有着飞跃般的提升,在过去几十年的表现呈指数级增长,因而就有了计算机行业内耳熟能详的“摩尔定律”(Moore's Law),即**集成电路上可容纳的晶体管数目每两年就会翻一倍**,这条定律描述了近几十年来计算机性能爆发增长的现象。

??? tip "摩尔定律"

对于摩尔定或许你会更熟悉这种说法:**计算机的性能每 18 个月提高一倍**,但事实上这句话来自英特尔首席执行官大卫·豪斯而不是摩尔。不过有一点可以肯定的是,这两句话都预测计算机的性能将随着时间产生指数爆炸级别的增长,而这在过去几十年间确实实现了。
对于摩尔定律或许你会更熟悉这种说法:**计算机的性能每 18 个月提高一倍**,但事实上这句话来自英特尔首席执行官大卫·豪斯(David House)而不是摩尔。不过有一点可以肯定的是,这两句话都预测计算机的性能将随着时间产生指数爆炸级别的增长,而这在过去几十年间确实实现了。

不过,由于晶体管的密度会受到量子物理理论上的限制,以及 CPU 会受到功耗和散热的限制,事实上这个定律已经开始失效了,计算机性能的提升开始放缓。为了不受制于这些限制,人们从最初追求单个 CPU 性能的提升逐渐转向了多个 CPU 之间的联合协作,因而基于多核的开发成为了未来计算机领域开发人员的一个不可绕过的话题。

Expand Down Expand Up @@ -58,9 +58,9 @@ icon: simple/linux

1969 年,美国 AT&T 公司的贝尔实验室开发了 UNIX 操作系统,并在此后的 10 年里在学术机构和大型企业中得到了广泛的应用。在这段时间,许多计算机从业者开发了很多基于 UNIX 的变种,统称为“类 UNIX 操作系统”。最初 AT&T 公司将 UNIX 的源码以低价甚至免费的许可授权给学术机构做研究和教学之用,然而后来它开始意识到了其商业价值,改变了之前的策略,取消了授权并对代码进行闭源,并对之前在 UNIX 之上研究出来的各类衍生组件和变种系统全部声明了著作权,随后开始了一场旷日持久的诉讼。虽然 UNIX 在此前 10 年在学界和业界起着十分重要的作用,但 AT&T 公司的这种行为对诸多使用 UNIX 和其变种的学术机构和商业厂家造成了巨大的负面影响,许多曾经的用户对 AT&T 公司的行径十分不满。

1983 年 9 月 27 日,理查德·斯托曼在麻省理工学院发起了 GNU 计划,它的目标是创建一套类似 UNIX 但完全自由的操作系统,因此这套系统不会包括任何 UNIX 的代码。在这个计划中诞生了之后十分有名的“GNU 通用公共许可证”(英文简称 GPL),这份许可证把使用该许可的软件的所有权利授予任何使用它的人。这种授权方式与通常的版权授权方式相左,它十分慷概地让出了几乎所有权利,让基于它的软件成为了自由且开源的软件,因此这种权利又被称为著作传(相对于通常的“著作权”)。
1983 年 9 月 27 日,理查德·斯托曼(Richard Stallman)在麻省理工学院发起了 GNU 计划,它的目标是创建一套类似 UNIX 但完全自由的操作系统,因此这套系统不会包括任何 UNIX 的代码。在这个计划中诞生了之后十分有名的“GNU 通用公共许可证”(英文简称 GPL),这份许可证把使用该许可的软件的所有权利授予任何使用它的人。这种授权方式与通常的版权授权方式相左,它十分慷概地让出了几乎所有权利,让基于它的软件成为了自由且开源的软件,因此这种权利又被称为著作传(相对于通常的“著作权”)。

1991 年,正在大学内进修的林纳斯·托瓦兹对他使用的一个类 UNIX 操作系统 MINIX 十分不满,因为当时 MINIX 仅可用于教育但不允许任何商业用途。于是他在他的大学时期编写并发布了自己的操作系统,也就是后来所谓的 “Linux 内核”,成为了如今各类 Linux 发行版的基础。
1991 年,正在大学内进修的林纳斯·托瓦兹(Linus Torvalds)对他使用的一个类 UNIX 操作系统 MINIX 十分不满,因为当时 MINIX 仅可用于教育但不允许任何商业用途。于是他在他的大学时期编写并发布了自己的操作系统,也就是后来所谓的 “Linux 内核”,成为了如今各类 Linux 发行版的基础。

Linux 内核并不是一个完整的操作系统,因为它过于精简,单单从它的功能上来说就已经不符合通常的现代的操作系统的定义了。为了能让这个内核拥有更多功能、完善的用户界面和更佳的使用体验,许多自由软件社区的开发人员和一些计算机商业公司便开始把各种组件添加到这个内核之上,这才构建成了一个完整的 Linux 操作系统。因为 Linux 内核是一个开源软件,所以通过这种方式组合出来的 Linux 操作系统会有许许多多的形式,不像 Windows 或者 macOS 这种受到公司统一规定的商业操作系统。正是因为开源社区的诸多成员以及许多商业公司的去中心化的贡献,让 Linux 充满了多样性。因为这种独特的属性,或许我们可以说 Linux 操作系统从来都不是指哪一种操作系统。取而代之地,为了指代某一个基于 Linux 内核构造出来的操作系统,我们通常都将其称之为“Linux 发行版”。

Expand Down Expand Up @@ -349,7 +349,7 @@ LUG@USTC 欢迎校内外的朋友加入社群交流。如果你是中国科学

## 引用来源与备注 {#references .no-underline}

[^1]: 数据来自中国互联网信息中心[48 次 《中国互联网络发展状况统计报告》(全文)](https://www.cnnic.cn/hlwfzyj/hlwxzbg/hlwtjbg/202109/P020210915523670981527.pdf)
[^1]: 数据来自中国互联网信息中心[54 次 《中国互联网络发展状况统计报告》(全文)](https://www.cnnic.cn/NMediaFile/2024/0911/MAIN1726017626560DHICKVFSM6.pdf)
[^2]: 信息来自维基百科条目:[操作系统](https://zh.wikipedia.org/wiki/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F)
[^3]: 尽管有许多说法称 Ubuntu LTS 有十年的支持,但是后五年实际上是 Extended Security Maintenance (ESM) 阶段,需要付费的 Ubuntu Advantage 订阅,或者最多 3 台设备的个人免费订阅。ESM 的安全更新仓库与主仓库也是独立的,需要登录后才能访问。
[^4]: 数据来自 Ubuntu 介绍:[The Ubuntu lifecycle and release cadence](https://ubuntu.com/about/release-cycle)
4 changes: 2 additions & 2 deletions docs/Ch01/solution.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

**(2)**

计算机指数增长的黄金年代之所以能长期保持,主要还是因为集成电路的密度可以稳定大幅度提升。罗伯特·丹纳德归纳了一个规律,被称之为丹纳德标度:“在晶体管的密度增加的时候,单个晶体管的功耗会下降,这样下来可以保持晶体管的功耗密度(每单位面积的功耗)不变”。根据这条规律,在晶体管密度增加的同时,计算机性能会提升(正比例于晶体管数目),但功耗不变,因此计算机的能量利用率会越来越高。
计算机指数增长的黄金年代之所以能长期保持,主要还是因为集成电路的密度可以稳定大幅度提升。罗伯特·丹纳德(Robert Dennard)归纳了一个规律,被称之为丹纳德标度(Dennard Scaling):“在晶体管的密度增加的时候,单个晶体管的功耗会下降,这样下来可以保持晶体管的功耗密度(每单位面积的功耗)不变”。根据这条规律,在晶体管密度增加的同时,计算机性能会提升(正比例于晶体管数目),但功耗不变,因此计算机的能量利用率会越来越高。

不过,这条规律没有考虑到一些重要的问题。一个问题是晶体管的“漏电电流”(微安级别),即晶体管在工作时会有轻微漏电,这些漏电会导致处理器发热,如果不加以控制会造成严重的散热问题。当然,可以通过降低电压的方法来减少散热,但此时也出现了第二个问题,即是晶体管的“阈值电压”(大约是 0.7 ~ 0.8 伏),可以理解成最低工作电压,低于此电压晶体管不再工作。这两个问题导致了晶体管存在一个不可跨越的最低功率(以及最低发热功率),从而使得丹纳德标度失效。进一步增加密度将需要更多能耗而不再恒定,也会导致散热问题。因此,为了避免这个问题,芯片厂商研究了多核处理器来达到并行的效果,从而进入了多核时代。

Expand All @@ -32,7 +32,7 @@

**题外话**

然而,核并不是越多越好的,因为一个任务总会有一些先后次序是不能颠倒的,所以这些部分就必须串行运行。就算假设一个任务能并行的部分可以被完美地平均切分而并行执行,剩余的串行部分也无法利用到并行的任何收益(而且往往过度的并行反而降低效率),因此增加更多核的收益会越来越低。这种规律被称之为阿姆达尔定律,核的数目越多,越受到阿姆达尔定律的限制。
然而,核并不是越多越好的,因为一个任务总会有一些先后次序是不能颠倒的,所以这些部分就必须串行运行。就算假设一个任务能并行的部分可以被完美地平均切分而并行执行,剩余的串行部分也无法利用到并行的任何收益(而且往往过度的并行反而降低效率),因此增加更多核的收益会越来越低。这种规律被称之为阿姆达尔定律(Amdahl's Law),核的数目越多,越受到阿姆达尔定律的限制。

* 阿姆达尔定律阶段:这是多核时代的第二个阶段,这个阶段标志着多核所带来的性能提升已经越来越不明显了。这个阶段大致的时间范围是 2011 - 2015 年,平均每年性能提升只有 12%。

Expand Down
2 changes: 1 addition & 1 deletion docs/Ch01/supplement.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ I/O 大小(最小/最佳):512 字节 / 512 字节
```

这里可以看到,`/dev/sda2` 这个**分区**被自动扩大了。
如果没有,那么可以输入以下命令(请勿输入 `$ `,详见[记号约定](../notations.md#命令行环境-command-line)):
如果没有,那么可以输入以下命令(请勿输入 `$ `,详见[记号约定](../notations.md#command-line)):

```console
$ LANGUAGE=C sudo growpart /dev/sda 2
Expand Down
2 changes: 1 addition & 1 deletion docs/Ch04/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ $ nohup ping 101.lug.ustc.edu.cn &
nohup: ignoring input and appending output to '/home/ustc/nohup.out'
```

在需要屏蔽 SIGHUP 的程序前添加 nohup,则运行时的输出将被[重定向](../Ch06/index.md#redirect)到 nohup.out,也可以通过重定向手段自定义输出的文件。
在需要屏蔽 SIGHUP 的程序前添加 nohup,则运行时的输出将被[重定向](../Ch06/index.md#redirection)到 nohup.out,也可以通过重定向手段自定义输出的文件。

### 命令行多终端方案——tmux {#tmux}

Expand Down
2 changes: 1 addition & 1 deletion docs/Ch04/supplement.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ DESCRIPTION

strace 开头字母为 s 是由于该命令为 Sun™ 系统移植而来的调用追踪程序。

注意 strace 会输出到标准错误 (stderr),需要将输出重定向到标准输出之后通过管道后才能使用 grep 等工具。关于重定向、管道等内容,可以查看[第六章](../Ch06/index.md#redirect-and-pipe)。
注意 strace 会输出到标准错误 (stderr),需要将输出重定向到标准输出之后通过管道后才能使用 grep 等工具。关于重定向、管道等内容,可以查看[第六章](../Ch06/index.md#redirection-and-pipe)。

```shell
$ strace ps
Expand Down
2 changes: 1 addition & 1 deletion docs/Ch05/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ drwxrwxr-x 2 ustc ustc 4096 Feb 3 22:38 a_folder
- `/dev/zero`:总是返回零数据。
- `/dev/urandom`:输出随机数据。

配合[第六章中提到的重定向功能](../Ch06/index.md#redirect),这些设备文件可以帮助我们做到丢弃程序输出等操作。
配合[第六章中提到的重定向功能](../Ch06/index.md#redirection),这些设备文件可以帮助我们做到丢弃程序输出等操作。

`/etc`

Expand Down
2 changes: 1 addition & 1 deletion docs/Ch07/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ Python 2 到 3 某种程度上讲不是变革,实际上 Python 2 和 3 基本
实际上,Python 2 已在 2020 年初正式宣告停止维护,
现在如果我们要使用 Python,最好使用 3 版本。

而在 Python 3.x 版本中,截至 2023 年末,3.7 亦已经 EOL(end of life)。
而在 Python 3.x 版本中,截至 2024 年下半年,3.8 亦已经 EOL(end of life)。

!!! tip "我应该选择哪个版本的 Python?"

Expand Down

0 comments on commit 76f480a

Please sign in to comment.