• 《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上
     
    个性签名:时间会解决一切
  • 相关阅读:
    制作图片自转的效果
    随机摆放文字带飞入飞出的效果
    Spinner的样式大致简介
    Android视图SurfaceView的实现原理分析
    Android应用程序与SurfaceFlinger服务的关系概述和学习计划
    分享两篇关于ActionBar样式设置的博客
    RMI(远程接口调用)
    j建立一个小的servlet小程序
    eclipse上ndk环境的搭建&&so文件的生成&&jni文件的调用
    Java 过滤器实现(登录) + 拦截器(两种方法)
  • 原文地址:https://www.cnblogs.com/lfri/p/15235879.html
Copyright © 2020-2023  润新知