[机缘参悟-96] :软件中到处充满了人类社会的气息!

2023-10-30

解读操作系统有感:

CPU

对于CPU内核而言,调度程序是程序,应用程序也是程序,在它眼里是一样的、公平看待的,因此某种愿意上讲,CPU内核本身就是“上天”,就是“道”,道德经中讲“天地不仁,以万物为刍”,就是这个意思,CPU中的算术单元并不区分什么是应用程序、什么是内核程序,什么是病毒程序,在它眼里,都是符合CPU指令系统的二进制代码而已。

进程

那么,如何在一个不区分对待任何软件程序的、公平的CPU硬件内核的基础之上,构建一个需要区别对待不同应用程序的机制呢?

一种思想,就是分布式、自由竞争、物竞天择、自然选择,这是大自然的规则;

另一种思想,就是人类社会的规则,需要构建一个分层的等级社会,不同的程序有不同的等级,于是操作系统就诞生了,操作系统的调度程序就是顶级的“天子”和“皇帝”,它拥有无上的权利,可以支配系统所有的硬件和软件资源,它可以调度所有所有的应用程序、中断程序、驱动程序,于是又有了父进程和子进程,他们还有一定继承关系。为了区别对待不同的程序,于是又有了进程间/线程的优先级,不同优先级的程序,拥有享有不同的使用CPU资源的权利。为了解决不同程序之间的社交和各种互动的需求,于是有了进程/线程间同步和线程间同步。为了解决不同个体之间,因为交流速度不对等造成的沟通障碍,为了帮助那些生产信息的程序与消费信息的应用程序之间的交流,于是构建一个生产者和消费者模型,于是有了充当“市场”作用和桥梁作用的队列、缓冲区、FIFO等机制。就这样,一个不平等的、又看似平等的、公平的、并发的、多任务环境就创建了,每个应用程序自我感觉是“公平的”,殊不知背后的等级制度,并非“上天(CPU)”公平的规则,每个应用程序自我感觉是独自计算机系统、自主地运行程序,殊不知一切都在操作系统调度程序的掌控之中,整个CPU资源被调度程序按照应用程看不见的某种规则集中分配。

内存

内存是计算机除了CPU之外,另一个最重要的资源,为了让应用程序共享有限的社会资源,于是搞了个MMU,还搞出一个逻辑地址和物理地址的映射,让每个应用程序都感觉自己完全拥有、完全自由度的、公平的、3G的地址活动空间,每个应用程序可以在自己的地址活动空间自由驰骋,殊不知,在MMU的控制下,所有的应用程序不过是分时、共享相同的物理内存,而实际的物理空间或许远远不足3G,或许只有几兆而已。不过,没关系,每个应用程序享受着这份虚幻就行,哪在乎背后是不是真实!

外设

外设是出CPU和内存之外的,三大最重要资源中的最后一个,为了让应用程序使用各种纷繁复杂的外设资源,操作系统搞出了一个“树”型结构的文件系统,每个设备被虚拟成了一个个文件系统中的文件,应用程序通过简单的“读”和“写”操作完成与各种外设资源的交互。殊不知,文件系统是一个典型的等级制度系统,从根节点到叶子节点,每个“外设或人”,都是挂接在整个等级系统中的一个环节。为了能够跨越阶层,操作搞出了一个软链接的东西。

网络协议栈

网络协议分层是另一个典型的等级森严社会,下层为上层提供服务,下层只需要实现上层期望的一个个单一的目标和任务,上层利用下层的服务,完成更加复杂的目标和任务,下层并不知道上层的业务目标,上层也不关心下层如何实现目标,上层只关心下层必须完成其职责范围内预定的目标,一旦下层由于某种因素无法达成上层的期望和性能指标,上层就可以无情地把下层替换掉,并美其名曰,上下层解耦。上下层之间不能越级,并美其名曰是接口清晰,层次分明。

谁说“程序”没有“感情”、没有“人文”?没有“思想”?软件中到处充满了人类社会的气息!

ChatGPT

ChatGPT使得“无情感、无思维、无人文、无生命的”的机器与“活生生的人”差距又缩小了一个等级。未来的通用人工智能,不仅仅会让机器拥有超过人类的智慧,还会让机器拥有类人类的情感,甚至拥有所谓的“硅基”生命。

补充:

操作系统的本质就是创建一个并发的应用程序执行的环境,使得各种应用程序可以动态、共享相同的计算机物理硬件资源,计算机的三大物理资源包括:

  • CPU

  • 内存

  • 外设

应用程序(管理应用程序):以进程和现成的方式组织,所有的应用程序被抽象成了一个个的进程与现成;然后,有了进程间同步、互斥与通信、进程的优先级调度等概念。

所有的外设(管理外设资源):以统一的文件来组织,所有的应用程序通过文件的方式访问所有的外设,操作系统通过把文件映射成设备的驱动程序访问外设硬件。并以中断的手段提供异步抢占的方式临时占用计算机的资源。

所有的内存(管理内存资源)一虚拟地址的方式来组织,每个应用程序拥有0G~3G的用户地址空间和3G~4G的内核专有空间,于是了内存管理、MMU和地址映射等等概念。

内核调度程序(管理CPU资源):如何管理上述资源呢?于是就有了操作系统的调度程序!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[机缘参悟-96] :软件中到处充满了人类社会的气息! 的相关文章

  • 设备管理过程

    复杂度2 5 机密度2 5 最后更新2021 04 19 AIX中对设备会有如下五个操作 define aix下能看到设备的定义 但驱动程序并没有加载或初始化 该设备不可用 lsdev看到设备时defined 很多逻辑设备 vg lv等 只
  • chatgpt赋能python:Python写一个抽奖程序:从随机数生成到实现

    Python写一个抽奖程序 从随机数生成到实现 Python是当今最热门的编程语言之一 无论是开发网站 进行数据分析 实现机器学习 还是进行游戏开发 Python都可以胜任 在本文中 我们将介绍如何使用Python编写一个简单的抽奖程序 程
  • Windows 添加永久静态路由

    route add p 10 10 0 0 mask 255 255 0 0 10 10 6 1 p 参数 p 即 persistent 的意思 p 表示将路由表项永久加入系统注册表
  • win10 Enable developer Mode

    经过漫长的安装过程 win10终于装上了vs2015 rc 写个小程序试试 结果提示 根据提示打开 设置 更新 for developer 据说应该有这么个界面 但是这个界面根本出不来 直接闪退的说 翻 MSDN 终于翻出了解决方法 htt
  • 03LinuxC线程学习之线程共享和非共享

    1 线程共享和非共享 1 1 线程共享资源 1 文件描述符表 由于线程间共享进程间的内容 而文件描述符表在主线程的PCB当中 各个线程可以直接去请求访问 所以线程间通信就不需要像进程那样通过管道这些方式通信 2 每种信号的处理方式 即当某个
  • [架构之路-185]-《软考-系统分析师》-3-操作系统基本原理 - 文件索引表

    目录 一 文件的索引块 二 索引分配表 三 索引表的链接方案 四 多层索引 五 混合索引分配 一 文件的索引块 存放在目录中的文件 并非是文件的真实内容 目录中记录了文件的索引块是几号磁盘块 文件对应的索引表是存放在指定的磁盘块中的 二 索
  • chatgpt赋能python:Python金额计算

    Python金额计算 Python是一种高级编程语言 因其易于阅读 简单 灵活和易于学习而广受欢迎 它还具有强大的数学和计算功能 因此 它是一种非常流行的用于金额计算的工具 在本文中 将介绍如何使用Python进行金额计算 包括不同的货币格
  • 计算机网络4--Internet结构

    本页内容 1 基本结构 2 结构图解 3 层次结构图解 1 基本结构 a 端系统通过接入ISP access ISPs 连接到Internet b 接入ISP必须进一步互连 保证任意两个主机可以互相发送分组 c 构成复杂的网络互连的网络 2
  • Java基础之随机生成数字和字母

    原文地址 http blog csdn net yaodong y article details 8115250 字母与数字的ASCII码 目 前计算机中用得最广泛的 字符集及其编码 是由美国国家标准局 ANSI 制定的ASCII码 Am
  • 【操作系统】王道考研 p42 段页式管理方式

    段页式管理方式 知识总览 分段 分页管理方式中最大的优缺点 关于段式管理会产生外部碎片 ps 分段管理中产生的外部碎片也可以用 紧凑 来解决 只是需要付出较大的时间代价 分段 分页 段页式管理 示意图 先分段 后分页 段页式管理的逻辑地址结
  • java IO、NIO、AIO详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 IO流 同步 阻塞 二 NIO 同步 非阻塞 三 NIO2 异步 非阻塞 正文 回到顶部 概述 在我们学习Java的IO流之前 我们都要了解几个关键词 同步与异步 sy
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • chatgpt赋能python:Python打包发布完整指南:从基础知识到实践操作

    Python打包发布完整指南 从基础知识到实践操作 作为一名有着十年python编程经验的工程师 我清楚地知道打包发布Python应用程序是非常重要的 它能帮助我们方便地分享和分发程序 并且能够让其他人通过使用我们的程序来提高自己的工作效率
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • 使用ShellJS提升你的开发效率(一)

    Shelljs Unix shell commands for Node js Shelljs是Node js下的脚本语言解析器 具有丰富且强大的底层操作 Windows Linux OS X 权限 Shelljs本质就是基于node的一层
  • I/O设备模型

    I O设备模型 绝大部分的嵌入式系统都包括一些I O Input Outut 输入 输出 设备 例如仪器上的数据显示屏 工业设备上的串口通信 数据采集设备上用于保存数据的Flash或SD卡 以及网络设备的以太网接口等 I O设备模型框架 R
  • 干货 | Sqlmap常用手册(收藏)

    sqlmap常用手册 目录 sqlmap常用手册 一 sqlmap介绍 二 常用命令 二 进阶命令 technique BEUST prefix与 suffix level 三 注入https网站
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位

随机推荐

  • antd tree树形控件 onCheck单选并准确获取父子节点

    antd 的tree树形控件为什么没有单选属性 还是我眼瞎没找到 需求 一个只能单选的tree树形控件 并且点击选中一个节点返回当前节点信息和父节点信息 看上去很普通的需求 但是实现起来真的麻烦 就因为tree的onCheck没有单选的问题
  • EDA软件_Cadence_OrCAD Capture DRC 警告分析

    大多数DRC warning甚至某些error可以忽略不计 不影响生成网表 但是要想成为一名成熟的电子工程师 你可以忽略某些错误 但是必须懂得为什么会产生这些错误 如何消除掉这些错误 这样才能控制这些错误的作用范围 不致影响系统整体的设计
  • django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but setting

    django core exceptions ImproperlyConfigured Requested setting DEFAULT INDEX TABLESPACE but settings are not configured Y
  • 微信小程序 富文本编辑器 editor

    完整微信小程序 Java后端 技术贴目录清单页面 必看 富文本编辑器 可以对图片 文字进行编辑 编辑器导出内容支持带标签的 html和纯文本的 text 编辑器内部采用 delta 格式进行存储 通过setContents接口设置内容时 解
  • React Native Hook浅析——state处理

    前言 前提知识 函数式组件在每次props state变动时 都会重新执行整个函数 重新渲染页面 在使用React的class组件时 我们可以使用state this xxx 以及生命周期 componentDidMount compone
  • 常用的免费好用的DNS有哪些?

    阿酷TONY 原创文章 关键词 免费dns 百度dns 阿里dns 114 dns Google DNS 2019 1 24 DNS Domain Name Server 域名服务器 是进行域名 domain name 和与之相对应的IP地
  • 通讯协议057——全网独有的OPC HDA知识一之接口(十二)IOPCHDA_DataCallback

    本文简单介绍OPC HDA规范的IOPCHDA DataCallback 客户端接口 接口方法 更多通信资源请登录网信智汇 wangxinzhihui com 1 HRESULT OnDataChange dwTransactionID h
  • qt应用程序界面控件刷新不及时问题

    可尝试以下方法 1 void showEvent QShowEvent event this gt setAttribute Qt WA Mapped QWidget showEvent event 2 界面控件切换前调用 show qAp
  • 隐私信息检索(PIR)

    隐私信息检索 Private Information Retrieval PIR 技术是由Chor B等提出解决保护用户查询隐私的方案 主要目的是 保证查询用户在向服务器上的数据库提交查询请求 在用户查询隐私信息不被泄漏的条件下完成查询 即
  • 数据仓库ETL技术探究

    ETL概述 在构建商业智能系统的时候 如何正确有效地将分散在各个不同数据源中的信息整合到系统中成为了整个系统成败的关键 直接影响到系统的运行效率和最终结果 ETL正是解决这一问题的有力工具 ETL是指把数据从数据源装人数据仓库的过程 即数据
  • three.js 没有投影

    按照demo physics oimo instancing html 敲的 不知道问题出现在哪儿
  • FactoryBean和BeanFactory:Spring IOC容器的两个重要角色简介

    目录 一 简介 二 BeanFactory 三 FactoryBean 四 区别 五 使用场景 总结 一 简介 在Spring框架中 IOC Inversion of Control 容器是一个核心组件 它负责管理和配置Java对象及其依赖
  • 自定义数据类型使用QVariant转换的方法

    QVariant类型的放入和取出必须是相对应的 你放入一个int就必须按int取出 不能用toString Qt不会帮你自动转换 数据核心无非就是一个 union 和一个标记类型的type 传递的是整数 123 那么它union存储整数12
  • STM32定时器的编码器接口模式

    MCU为STM32L431 通用定时器框图 编码器接口模式一共有三种 通过TIMx SMCR寄存器的SMS 3 0 位来选择 模式1计数器仅在TI1FP1的边沿根据TI2FP2的电平来判断向上 下计数 模式2计数器仅在TI2FP2的边沿根据
  • DevTools 无法加载 SourceMap:XXXX.map 的内容:HTTP 错误: 状态代码 404,net::ERR_UNKNOWN_URL_SCHEM

    写在前面 又想骂人了 百度了一圈 各种不同的网站 对于该问题的解决办法的前几句都是 确切来说也不是个问题 对我项目本身没有什么实质性的影响 但看着就是不爽 请教了一下前端的同学 这个 sourceMap 是方便调试的东西 从打包后的代码映射
  • 好看的悬疑电影,最好是高智商的

    穆赫兰道 公认史上最难懂的电影 据说40 的人从电影一开始就理解错误 还有50 的人从头到尾都不知道电影在说什么 看懂这部电影 请先熟读弗洛伊德 梦的解析 死亡幻觉 此片思维难度很大 涉及的知识一般人难以理解 第一遍据说没人看得懂 理解这部
  • OSS设置CORS规则以后还是报No ‘Access-Control-Allow-Origin‘解决方法

    在OSS控制台设置了CORS规则以后 通过JS程序去调用的时候报No Access Control Allow Origin header is present on the requested resource 可以通过下面的思路来进行下
  • Open3D 计算点云凸包

    目录 一 实现依据 二 代码实现 三 结果展示 1 原始点云 2 凸包可视化 3 凸包顶点 一 实现依据 点云的凸包是包含所有点的最小凸集 open3d实现了计算凸包的方法 compute convex hull 这个接口的实现基于Qhul
  • 数据建模中利用3σ剔除异常值进行数据清洗

    方法原理 3 准则又称为拉依达准则 它是先假设一组检测数据只含有随机误差 对其进行计算处理得到标准偏差 按一定概率确定一个区间 认为凡超过这个区间的误差 就不属于随机误差而是粗大误差 含有该误差的数据应予以剔除 在正态分布中 代表标准差 代
  • [机缘参悟-96] :软件中到处充满了人类社会的气息!

    解读操作系统有感 CPU 对于CPU内核而言 调度程序是程序 应用程序也是程序 在它眼里是一样的 公平看待的 因此某种愿意上讲 CPU内核本身就是 上天 就是 道 道德经中讲 天地不仁 以万物为刍 就是这个意思 CPU中的算术单元并不区分什