1601_读Dennis M. Ritchie and Ken Thompson的The UNIX TimeSharing System_Unix分时复用系统

news2024/11/14 15:15:56

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         很久之前就闻听了UNIX的大名,也看过很多相关的故事类文章。其中最让我印象深刻的莫过于Ken发明UNIX的故事以及这个系统对于Linux以及GNU的OS的影响,虽然由于商业化的各种原因看上去如今UNIX不如Linux等流行,但是这背后有一个让程序员看起来比较有趣的故事。另外,这篇文章的两个作者因为这个系统的设计而获得了图灵奖,也足以看得出来这个系统在整个计算机行业的影响足够深远。另外,工作之后接触的一些书籍中也有很多UNIX的思想介绍,但是我一直算是一知半解并没有特别深刻的领悟感。正好现在又遇到了一个小长假,疫情因素我会在家里躲着,这些东西看看也是很好的。

1. 从这里看,最早期的UNIX至少是可以提供文本以及文档准备功能的。

2. 这篇文章中的主要概念可能会涉及到分时、操作系统以及命令语言等。

3. 整个系统的开发时间用了大概2人年,从这个数据上看,这的确是一个伟大的作品创作经历。

4. 早期的UNIX运行在一个16bit的处理器计算机上,只有144K的RAM,而UNIX系统则会占用42K。每次看到这样的参数我都为之震惊,因为我现在用到的很多MCU甚至都有着完全超越他的配置。

1. UNIX系统扮演的一个最重要的角色就是文件系统管理角色,而UNIX中涉及到的文件分为三种:普通的磁盘文件、目录文件以及特殊文件。

2. 目录是一种特殊的文件,这个我在大学的时候就知道这个结论。那么,它的体现形式究竟是什么呢?今天算是第一次知道这其中的设计理念,其实目录文件提供的是文件名与文件的一个映射关系。

3. 在所有的UNIX文件中,最为特殊的莫过于根目录文件,这个是所有文件的一个最初访问点。

4. 这里看到了一个早期UNIX对于文件命名的要求,文件名不能够超过14个字符。现在看起来,的确是很大的限制。估计曾经使用这个OS的人员在文件命名上肯定是很劳神费心。

1. 特殊文件的一个典型代表就是外设,那么一个外设的响应动作如何与文件操作产生对应关系呢?这个看上去简单,如果接下来我去分析代码肯定得看看具体的实现来体会一下。

2. 根文件时钟在一个固定的存储外设中,然而整个系统的文件系统却不一定如此。

1. 大部分的编辑器在修改文件的时候会有一个对修改内容进行拷贝的过程。

2. 文件系统中i-number是否会成为文件系统中文件数目的限制?比如一个目录中平行等级的文件限制?显然还是会的。

3. 在文件的数据结构中会有存放地址以及大小等信息。

1. 文件数据结构中还有修改时间戳、目录、是否是特殊文件、大文件还是小文件等属性。

2. 整个文件系统看上去就是一个树状链表,主要是产生各种信息关联。

1. 这里有一个对于性能的基本评估方式,那就是汇编程序每秒可以执行多少行代码。感觉这不是一个很严格的评估方式,但是又是一个很有代表性的评估方向。

2. 对于多任务或者说多进程的实现,其实是通过fork让进程不断进行裂变。

         标准的输入输出本质上是2个特殊的文件。

Shell环境可以提供顺序执行以及并行两种多任务处理的方式。

1. Shell基本上是一个永不退出的循环,随时在准备应答相关的命令请求。

2. trap的产生大部分是硬件的异常。

3. UNIX最初的设计目的其实是为了改善自己所需要的计算机环境,这种以自我需求为驱动的设计的确是非常有趣的一个动力。在TED演讲中,linus也讲过自己设计linux以及git的最初驱动,其实也只是为了给自己设计一个需要的工具。看起来,很多伟大的作品都有着类似的形成原因。

         UNIX的很多技术是继承于其他地方的,之前看Ken的一些故事的时候就知道文件管理等理念很多其实来自于火星计划项目的产物。纵然那个项目有点失败,但是中间的优秀成果总归还是得到传承了。另外,这篇文章中一直在讲的fork,其实也是继承于这个有点失败的项目。

1. 这一页给出了当时写这篇文章时候的UNIX中的一些程序资料等统计信息,看得出来当时的这个UNIX版本的确是一个非常小巧的系统。

2. 从使用的频次以及CPU占用来看,当时的这个系统看起来是程序员专属的工作平台。

3. 纵观整篇文章,可以感受得到当时的计算机CPU设计并不够优秀,并且经常掉链子。而在这样的背景下,作者所用的UNIX系统竟然也做到了全年98%的时间提供服务,可以看得出来这个系统设计的优秀与稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux操作系统之线程同步

文章目录一、线程的实现:用户级、内核级、组合二、线程的同步(通讯):信号量,互斥锁,条件变量,读写锁1)信号量2)互斥锁操作:加锁,解锁。3&#xff…

浮躁的当下或许我们更加需要一颗平常心

科技的迅速发展,已经融入我们的生活;曾经的慢生活慢节奏早已离我们远去,取而代之的是伴随科技齿轮快速运转的生活,快节奏更是科技时代下人们普遍生活的真实写照。 然而,科技虽然带给了我们生活的极大的便利&#xff0…

php伪协议

目录 一、伪协议介绍 1、php://协议 2、php://filter伪协议 3.php://input(读取POST数据) 4、file伪协议 5、phar://伪协议(读取压缩包文件内容) 6、压缩文件伪协议 6.1.zip://[压缩文件绝对路径]%23压缩文件内的子文件名 6.2.compress.bzip2://…

Mybatis 的输出结果封装小细节

resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。我们在前面的 CRUD 案例中已经对此属性进行过应用了。需要注意的是,它和 parameterType 一样,如果注册过类型别名的,可以直接使用别名。没有注册过的必须使用全…

Markdown基础语法

文章目录Markdown基础语法一、标题使用:2、二级标题3、一次类推二、字体三、引用四、分割线五、插入图片六、超链接七、列表1、有序列表2、无序列表八、表格九、代码十、添加目录九、代码十、添加目录Markdown基础语法 一、标题使用: 格式:…

智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》

智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》 目录 智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》 1. 前…

[Vulnhub] DC-4

下载链接&#xff1a;https://download.vulnhub.com/dc/DC-4.zip 同DC-3 这个靶机也是只有一个flag。 全面信息搜集hydra爆破登录和ssh密码teehee命令(写入文件内容)提权/etc/passwd & /etc/sudoers 文件利用 目录 <1> 信息搜集 <2> hydra爆破登录密码 <…

怎么解除pdf的加密,建议收藏这几种方法

我们在下载资料的时候经常能遇到PDF文档&#xff0c;有时候这些文档还会被设置需要输入密码才能打开。有些朋友找不到密码就只能放弃这份资料&#xff0c;其实还可以再争取一下&#xff0c;解除PDF的加密不是没有可能的。将PDF的密码破除后我们就不再需要密码就能阅读使用该文档…

SpringBoot利用AOP线程池异步设置缓存

文章目录设置缓存1、定义注解2、AOP3、测试设置缓存 1、定义注解 注解定义四个属性&#xff0c;分别是&#xff1a; value&#xff0c;key的别名key : redis的key,如果key不设置&#xff0c;则会用方法名加参数列表作为keyexpire&#xff1a;失效时间&#xff0c;默认为 1天…

Dockerfile创建镜像并上传到Docker Hub

Dockerfile创建镜像并上传到Docker Hub1. Dockerfile1.1 准备文件1.2 构建镜像2. 上传docker hub参考1. Dockerfile 通过Dockerfile构建镜像 1.1 准备文件 在某个空文件夹&#xff08;假设名为test&#xff09;下编写Dockerfile文件 # 声明使用哪个基础镜像 FROM ubuntu:20.0…

Spring Cloud微服务网关Gateway组件学习笔记

目录 网关简介 1. 什么是Spring Cloud Gateway 1.1 核心概念 1.2 工作原理 2. Spring Cloud Gateway快速开始 2.1 环境搭建 2.2集成Nacos 3. 路由断言工厂&#xff08;Route Predicate Factories&#xff09;配置 3.1内置断言工厂 3.2自定义 4. 过滤器工厂&#xf…

Android Studio实现志愿者系统

项目目录一、项目概述二、主要技术三、开发环境四、详细设计1、基础Activity2、活动信息3、成员信息4、百度地图5、Widget组件五、运行演示一、项目概述 本系统采用MVC架构设计&#xff0c;SQLite数据表有用户表、成员表和活动表&#xff0c;有十多个Activity页面。打开应用&a…

123、【回溯算法】leetcode ——491. 递增子序列:unordered_set去重和int数组去重(C++版本)

题目描述 原题描述&#xff1a;491. 递增子序列 解题思路 此题也是子集问题&#xff0c;但和 90.子集II &#xff08;子集问题startIndex去重&#xff09; 的区别在于&#xff1a;&#xff08;1&#xff09;存储结果集判定条件&#xff1b;&#xff08;2&#xff09;输入数据…

Python学习笔记十二之十大经典排序算法

Python学习笔记十二之十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;…

zos JESMSGLG 不显示 job steps return codes

zos JESMSGLG 不显示 job steps return codes 在普通学习的时候&#xff0c;SDSF 查看 JCL 结果&#xff0c;可能并不会注意到下面结果有什么差别 但跟公司的大型机出的结果是不同的&#xff0c;就是缺少了 job steps return codes&#xff0c;在 STARTED 和 ENDED 中间应该有…

【Linux】冯诺依曼体系结构和操作系统

目录 一、冯诺依曼体系结构 1.组成 2.各结构特性 二、操作系统 1.概念 2.设计OS的目的 3.如何理解 "管理" 4.系统调用 一、冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依…

浅析故障电弧探测器在电气防火中的作用与应用介绍

安科瑞 李雨轩【摘要】&#xff1a; 分析了重大电气火灾数据。结合目前国内前沿的电气火灾探测技术&#xff0c;重点介绍了故障电弧式电气火灾监控探测器在火灾预警系统中的重要作用&#xff0c;给出了基于多种探测技术的电气火灾监控系统的实现方案。【关键词】&#xff1a;故…

C++模板初阶小笔记

目录 一.泛型编程 二.函数模板 1.函数模板语法梳理&#xff1a; 2.函数模板的实例化&#xff1a; 3.函数模板的显式实例化&#xff1a; 4.函数模板使用时的注意事项 三.类模板 1.类模板的语法梳理 2.类模板中声明和定义分离的成员函数 一.泛型编程 泛型编程&#xff…

【C++】类和对象---什么是类?

目录1.面向过程和面向对象初步认识2.类的引入2.1使用struct定义类3.类的定义3.1类的两种定义方式&#xff1a;3.2成员变量命名规则的建议3.3成员函数与成员变量定义的位置建议4.类的访问限定符及封装4.1访问限定符4.2封装5.类的作用域6.类的实例化7.类对象模型7.1如何计算类对象…

Kali Linux渗透

Kali Linux是基于Debian的Linux发行版&#xff0c; 设计用于数字取证操作系统。每一季度更新一次。 黑盒测试&#xff0c;它是通过测试来检测每个功能是否都能正常使用。在测试中&#xff0c;把程序看作一个不能打开的黑盒子&#xff0c;在完全不考虑程序内部结构和内部特性的情…