[oeasy]python031_[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
可观测监控 Prometheus 版,每月50GB免费额度
性能测试 PTS,5000VUM额度
简介: 回顾了上次内容关于调试的基本概念后,本文介绍了Unix操作系统的起源。从早期计算机任务的独占执行方式讲起,到1960年代 Dartmouth 开发出分时算法,使得一台主机能够面对多个终端,轮流使用CPU时间片。随后,贝尔实验室、通用电气和MIT合作开展Multics项目,项目成员Kenneth Thompson与Dennis Ritchie在此期间开发了一款名为《Space Travel》的游戏。然而,因金融动荡等原因,Multics项目最终被裁撤。Thompson和Ritchie后来利用实验室闲置的一台PDP-7计算机仅用三周时间就开发出了Unix操作系统的第一版,初衷是为了能够继续玩游戏。

[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics 🥋

回忆上次内容

  • 上次 动态设置了 断点
  • 断点 可以把代码
  • 切成一段一段的
  • 可以 更快地调试
  • 调试的目的 是 去除 bug
  • 别害怕 bug
  • 一步步 总能找到 bug
  • 这 就是 程序员基本功
  • 调试 debug
  • 在bug出现的时候
  • 甚至还没有出现操作系统
  • 那操作系统
  • 是怎么开始有的呢??🤔

出现

  • 1960年以前
  • 计算机中的 任务
  • 都是 以独占的方式执行

  • 批处理 命令
  • batch
  • 把指令都提前写好
  • 进入cpu一把执行结束

分时算法

  • 1960年
  • Dartmouth 出现分时算法
  • cpu分时系统
  • Compatible Time-Sharing System

  • 可以让主机
  • 同时 面对多个终端
  • 以非独占的方式
  • 轮流使用cpu时间片

操作系统

  • 多任务、多用户的操作系统
  • 诞生

  • 贝尔实验室、通用电气、MIT
  • 也想要制作 基于超级主机 的
  • 分时操作系统

multics

  • 联合系统开发计划
  • multics
  • 启动

两人

  • 项目组里面有两个打工人
  • Kenneth Thompson
  • Dennis Ritchie

  • 在 multics项目主机Ge635上
  • 自制游戏的 《space travel》

《space travel》

  • 模拟物理环境
  • 在各个星球上着陆的游戏
  • 根据质量、周期、引力弓之类的
  • 在太阳系穿梭

暴风雨

  • multics很注重
  • 多用户
  • 多任务
  • 多层次
  • 但是
  • 则惑
  • 想要得越多
  • 越不容易聚焦

  • 1969 年
  • 发生金融动荡
  • 这个商业项目
  • 由于进度不可控
  • 最终被裁撤

两人

  • 项目组被裁撤后
  • 贝尔实验室中
  • 无所事事的两人

  • 主机Ge635没了
  • 游戏也没法玩了

新的希望

  • Thompson希望能搞到一个PDP系列主机
  • 好继续玩star travel
  • 他写报告 申请买一个PDP-10
  • 大概需要 12万美元
  • 结果是 请求被驳回

  • Thompson 并没有放弃寻找
  • 不久之后
  • 发现了意外之喜

unix

  • Thompson 在实验室角落发现
  • 有一台几乎全新的PDP-7
  • 1964年生产的

  • Thompson 利用multics中积累的经验
  • 开始做操作系统
  • Thompson
  • 拉上 Ritchie
  • 在 multics 文件系统的基础上
  • 实现了 文件读写

unix

  • 目标
  • 只有一个
  • 为了 玩游戏
  • 少则得

  • 这个系统
  • 被戏称为 unics
  • 和multics项目的相比
  • 最大的特点就是
  • 非常简单
  • 抱一为天下式
  • 如何 让计算机和这些文件
  • 进行互动呢?

三周

  • Thompson 的妻子
  • 休了三周假
  • 带着1岁的儿子回娘家

  • Thompson
  • 有了三周不受打扰的工作时间

三周做了 一个操作系统

  • 三周目任务

  • 第1周. 实现了 shell 环境
  • 第2周. 实现了 editor 编辑器
  • 第3周. 实现了 assembly compiler 汇编语言 编译器

操作系统

  • 这个世界从此上出现了
  • 一种叫 操作系统的东西
  • operating system

  • 操作系统
  • 在纯硬件 裸金属 上 建立了 软件环境
  • 为 具体应用 提供 基础

multics模拟器

  • 今天可以去模拟multics

总结

  • 这次我们了解了unix系统
  • 在multics项目失败后
  • 汤普森和里奇
  • 为了 玩游戏
  • 自制了 unix
  • 这个世界从此有了
  • 操作系统
  • operating system
  • os

相关文章
|
2月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
61 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
7天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
9 1
|
18天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
29 4
|
25天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
19 1
|
11天前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
11 0
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
21 3
|
1月前
|
算法 Unix 数据安全/隐私保护
Python编程--UNIX口令破解机
Python编程--UNIX口令破解机
|
1月前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
26 0
|
2月前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
28 4
|
2月前
|
Unix 编译器 C语言
[oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ordinal_
[oeasy]python034_计算机是如何认识abc的_ord函数_字符序号_ord
22 0