《UNIX 传奇:历史与回忆》Note

只是为了不污染微信读书的“想法”线(此处想批评一下产品经理,没有非公开的注释功能),不具有实用性。推荐陈硕大佬的 Kernighan《UNIX 传奇:历史与回忆》杂感  
 
## Unix雏形
1. 贝尔实验室和科研型高校的绩效评估的不同:
在高校,招聘和晋升会参考同领域知名学者的推荐信,因此专注于狭窄领域的精专研究
在贝尔,从下到上的绩效考核,跨领域的协作研究会被更多人注意到
2. 面向非技术背景:
《普林斯顿计算机公开课》(Understanding the DigitalWorld)
3. CTSS分时系统
Multis是CTSS二代
UNIX:部分原因是Multics的复杂架构
4. 1969年,肯.汤普森 磁盘转速太快->磁盘调度算法->为了测试,需要批量写数据的程序->三周:用来创建代码的编辑器、将代码转成PDP-7能运行的汇编语言的汇编器、操作系统
5. 词根uni, Multics->Unics, Unix
6. 肯2000年从贝尔退休,2006年加入谷歌,然后合作发明了Go语言

 

## Unix初版 1.0
1. 文本格式化:在PDP-11上写专利申请文档
2. Unix房间:每位MTS都有独立的办公室,但还是在“Unix房间互通有无、分享点子或只是随便聊聊
3. 在线手册: `man man`
4. 那时候的主存储器是甜甜圈形状的铁氧体小磁芯组成,磁芯可以顺时针和逆时针两种磁化,因此能够代表一个信息位
5. 那时,内存往往是计算机中最昂贵的部件
6. 程序出现严重错误时,操作系统会创建一个文件,用来保存主存储器的状况(即磁芯中的内容),这就是“磁芯转储(core dump)”。

 

## Unix 第6版 1975年
1. 第六版Unix首次扩展到贝尔实验室以外,开始对世界产生重大影响
2. 系统调用:Unix的一个创新是把磁盘、终端等外围设备看做文件系统中的文件,访问设备的系统调用和访问文件的系统调用是一样的
3. 文件只是字节:不管文件是怎么存的、不管字节代表什么含义
4. shell是运行其他程序的程序。shell是普通的用户程序,而不是操作系统的一部分。如果你觉得这个shell不好用,你大可以换一个,这就是为什么有这么多个Unix shell的原因
5. 通配符(文件名扩展)和输出重定向,程序是并不知道的,是shell在做展开和重定向。因为这是一种统一的机制,应该由shell来做
6. 管道相反,管道是一种机制,是操作系统提供的,而不是shell。shell只是使用管道这种机制
7. 只花了一个小时就在操作系统中添加管道系统调用,花一个晚上升级系统中的每个命令(最大的改变就是,当没有指定文件名参数时,从标准输入流中读取数据)
8. 标准错误流stderrd的创造是必要的。它和标准输出流是独立的,因此不会进入管道。所以自己写程序时,要想结合管道使用,也应该将错误发送给stderr.
9. dc: reverse-polish desk calculator, 这个命令macos中也有
10. grep:g/re/p,列出所有符合正则表达式re的行
11. creat 创建文件 肯.汤普森个人爱好 去掉了末尾的e

 

## Unix 第7版 1976~1979
1. 第7版是第一个可以移植的版本,Unix从此爆炸性的移植到无数硬件上
2. 所有Unix共享的部分大多数来自第7版
3. makefile中,每行命令必须以制表符(Tab)开头,而不能是空格。作者怕用的人太人懒得售后,故意设置的debuff

 

## 商业化
1. USL(Unix System Laboratories)来做Unix的推广,专有Unix版本:SVR4

 

## 派生物
1. 贝尔实验室新的操作系统Plan 9, 贡献了Unicode中的UTF-8。UTF-8是可变长的编码,可以是1个字节、2个字节最多不超过4个字节。UTF-8可以边读取变解码,因为没有任何合法字符是其他字符的前缀(哈夫曼编码?)
2. Unix 6 在x86上的重新实现:xv6。新版的xv6已经迁移到RISC-V上
 

 

 

posted @ 2021-09-06 21:41  Rogn  阅读(130)  评论(0编辑  收藏  举报