当前位置: 首页 > news >正文

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

解读操作系统有感:

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资源):如何管理上述资源呢?于是就有了操作系统的调度程序!

http://www.lryc.cn/news/15980.html

相关文章:

  • 知识点滴 - 自行车分类
  • 【建议收藏】Jenkins+postman+newman之API全自动化测试
  • MySQL数据库————MVCC
  • 为啥Python多线程爬虫跑的慢?
  • 万字长文解析!复现和使用GPT-3/ChatGPT,你所应该知道的
  • Kaldi语音识别技术(八) ----- 整合HCLG
  • day17_异常
  • vue中把node-sass换成dart-sass方式(解决办法)
  • 深入浅出深度学习Pytroch
  • CCNP350-401学习笔记(451-500题)
  • 3年功能测试经验,面试想拿到15k很难吗?
  • 【7/101】101次面试之测试技术面试题
  • 【蓝桥杯每日一题】前缀和算法
  • 【C#基础】C# 常用数据结构
  • MySql 及MyBatis数据的批量操作
  • 无代码表格数据库——一个企业数字化新物种
  • 第十三届蓝桥杯国赛 C++ C组 F 题、Python B组 E 题——近似GCD(AC)
  • 分享5款小众良心软件,好用到让人惊艳
  • WAF是什么?一篇文章带你全面了解WAF
  • django项目实战八(django+bootstrap实现增删改查)进阶验证码
  • IP 协议
  • 好用的SQL工具盘点:从学习到工作总有一款适合你
  • Memcache介绍
  • PTA:C课程设计(1)
  • 第二十篇 ResNet——模型讲解
  • LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
  • Vue3通透教程【一】Vue3现状—必然趋势?
  • 打破数据孤岛,Apache Doris 助力纵腾集团快速构建流批一体数仓架构|最佳实践
  • 什么是真正的骨传导耳机,骨传导耳机原理
  • [MySQL]基本数据类型及表的基本操作