Linux:深入理解冯诺依曼结构与操作系统

news2024/11/15 23:55:10

目录

1. 冯诺依曼体系结构

1.1 结构分析

1.2 存储结构分布图

2. 操作系统

2.1 概念

2.2 如何管理

2.3 什么是系统调用和库函数


1. 冯诺依曼体系结构

1.1 结构分析

不管是何种计算机,如个人笔记本电脑,服务器,都是遵循冯诺依曼结构。

 计算机中都是又一个个硬件组件组成。

  • 输入单元:包括键盘、鼠标、扫描仪
  • 中央处理器(CPU):含有运算器和控制器等
  • 输出单元:显示器、打印机等

不过需要注意的是:

  • 这里的存储器指的是内存。
  • 外设一般指的是输入设备和输出设备。
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设。
  • 外设要输入或者输出数据,也只能写入内存或者从内存中读取。

也就是说,所有设备都只能直接和内存进行写入写出操作

1.2 存储结构分布图

由最高层到最底层的存储设备,容量越大,读写速度越慢,成本更低

  • Register:寄存器。
  • L1/L2/L3 Cache:一级/二级/三级/高速缓冲存储器。
  • Memory:内存。
  • SSD:固态硬盘。
  • HDD:机械硬盘。
  • 还有一些远程网络服务器上的存储。

冯·诺依曼体系结构无疑是一个划时代的伟大发明。尽管高级存储器,如寄存器和缓存,拥有极其迅速的数据读写能力,但它们的容量有限,且成本高昂。若将它们作为电脑的主要存储介质,其昂贵的造价无疑超出了普通消费者的承受范围。另一方面,固态硬盘和机械硬盘虽然提供了较大的存储空间且价格亲民,但其相对较慢的数据读写速度却难以满足高性能计算的需求。

内存,作为一种折中的解决方案,其容量相较于高级存储器更大,而访问速度又远超硬盘。因此,内存扮演了至关重要的角色,它如同桥梁一般,将高速的高级存储器与读写速度较慢的外设连接起来。这样的设计不仅平衡了数据读写速度,还将成本控制在了一个大众能够接受的范围内。这一创新使得个人电脑得以普及,推动了计算机行业的飞速发展。

2. 操作系统

2.1 概念

操作系统Operating System,简称OS)是管理计算机硬件与软件资源系统软件。它与硬件交互,执行管理任务。常见的操作系统有Windows、macOS、Linux、Harmony OS和Android。

笼统的讲,操作系统包含:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

2.2 如何管理

那操作系统是如何进行管理的呢?我们来做一个类比。

在一家公司中,当员工数量较少时,可以直接对每位员工进行监督和管理。然而,随着公司规模的扩大,员工数量达到数百甚至上千,直接管理每位员工变得不再可行。此时,公司通常会采用分层管理的策略。

公司将根据业务需求划分为不同的部门,并为每个部门指派一位经理。在部门内部,经理会将员工分成若干个工作小组,每个小组由一名组长领导。如此一来,公司的高层只需管理几位部门经理,而每位经理则负责监督几个小组组长。小组组长则负责管理和协调组内成员的具体工作。通过这种层级化的管理结构,公司能够确保组织的高效运转和目标的达成。

 在下面的操作系统调用示例图中,用户发出任何指令,操作系统进行辨别,再调用硬件运行程序。这就类似我们上面的例子。

若作为公司高层,我们想查看新员工实际情况,不可能找新员工一个个询问。可以给每个员工做一份档案,里面包含姓名、年龄、工号、工种、学历和面试表现等。再让每个经理去采集各自员工的信息,从而建立员工档案。但是员工太多,我们看不完员工档案内容。

此时,假设我们作为程序员,我们只关心员工的属性,那么可以将员工抽象为一个结构体类型或者类,里面包含姓名、年龄、工号等属性。

 如下,在C语言中,使用结构体表示员工数据结构,里面包含许多员工属性。每增加一个员工,就要创建一个Employee类对象。仅仅这样的话,每个对象都是独立的不好管理,那么可以在结构体中加上指向下个对象的指针,这就构成了一个单链表。

如果公司需要接受某个项目,需要有相关技能的员工,就可以遍历整个链表,找出符合要求的员工,再指派其对应的经理安排工作。未来高层对员工的管理,变成对一个单链表进行增删查改操作。我们完成了一个对于公司员工管理工作的计算机层面的建模工作

 

那么操作系统是如何管理硬件的呢?

  • 虽然硬件有许多种,如硬盘和网卡,但是这些设备的属性都是相同的,有设备名,设备状态和设备编号等。我们可以创建一个device结构体类型,并使用链表数据结构(或者其他数据结构)组织起来许多device类对象。
  • 操作系统接收到用户的指令,通过数据结构管理,发送给驱动程序,驱动硬件运行。
  • 这种管理方法是先描述,再组织,即先将管理对象构建成一个类,再使用某个数据结构进行组织。任何计算机对象,管理的思路都遵守该原则

再引申出一个问题,为什么现在所有主流的面向对象语言,都要提供面向对象和标准库?其中包括C++的STL库

  • 因为在面向对象语言中,一切被管理的食物皆为对象,面向对象就提供描述的能力。标准库就提供数据结构组织该对象。

2.3 什么是系统调用和库函数

在上图中展示的系统中,硬件资源的调度是通过驱动程序来实现的。操作系统扮演着中介的角色,接收用户的指令,并通过调用相应设备的类对象来激活驱动程序。用户无法直接与操作系统交互,而是需要通过用户操作接口和系统调用(system call)来传达其请求。系统调用充当了用户与操作系统之间的桥梁。那么,为什么不允许用户直接调用操作系统呢?我们做个类比。

银行不仅仅拥有设备、桌椅板凳和仓库等硬件资源,更重要的是,它还需要工作人员进行管理和维护人员进行定期检修。银行的日常运营包括提供存取款和贷款服务,从这个角度来看,银行可以被视作一套完整的系统

假设小明来到银行,想要存入几百元现金。如果他直接将现金放入仓库,并自行在设备上登记存款信息,这显然是银行行长不可接受的。尽管大部分客户都是诚信的,但银行不能排除有人可能不遵守规则,从而对银行财产造成损失。因此,银行会设立对外开放的窗口,专门提供存取款服务。

那么我们可以将操作系统类比于银行,因为用户可能做些损害操作系统的操作,操作系统也不相信用户。

  • 因此,在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分有操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库。有了库,就很有利于更上层用户或者开发者进行二次开发。


创作充满挑战,但若我的文章能为你带来一丝启发或帮助,那便是我最大的荣幸。如果你喜欢这篇文章,请不吝点赞、评论和分享,你的支持是我继续创作的最大动力!

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

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

相关文章

小论树形dp

文章目录 树形dp 概述树形dp 路径问题 树的最长路径 思路代码树的中心 换根DP思路代码数字转换 思路代码树形dp 有依赖的背包 二叉苹果树 思路代码树形dp 状态机 没有上司的舞会 思路代码战略游戏 思路代码皇宫看守 思路代码总结 概述 树形 DP,即在树上进行的 …

通信工程学习:什么是DQDB分布式队列双总线

DQDB:分布式队列双总线 DQDB(Distributed Queue Dual Bus),即分布式队列双总线,是美国电气电子工程师学会(IEEE)802.6标准中定义的一种城域网(MAN)数据链路层通信协议。该协议主要用于城域网的数据、语音和视频传输&am…

Python 中的 os 模块

Python 中的 os 模块 在Python中,os 模块是一个内置的标准库,提供了许多与操作系统交互的功能。它允许你执行一系列操作,如文件和目录操作、环境变量管理等。要在Python脚本中使用os模块,你需要首先导入它。 一些常见的用法&…

如何在 Android 中用 Kotlin 将 dp 转换为 px

我们在开发 Android 应用时,经常需要将 dp(密度无关像素)转换为 px(像素)。这是因为不同设备有不同的屏幕密度,使用 dp 可以保持在不同设备上的一致性。📱 但究竟如何将 dp 转换为 px 呢&#x…

鸿蒙网络管理模块02——Socket

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。 1、概述 Socket 连接主要是通过 Socket 进行数据传输,支持 TCP/UDP/Mul…

Redis篇(面试题 - 连环16炮)(持续更新迭代)

目录 (第一炮)一、Redis?常用数据结构? 1. 项目里面到了Redis,为什么选用Redis? 2. Redis 是什么? 3. Redis和关系型数据库的本质区别有哪些? 4. Redis 的线程模型了解吗&#x…

探索未来:掌握python-can库,开启AI通信新纪元

文章目录 **探索未来:掌握python-can库,开启AI通信新纪元**背景介绍**python-can**库简介安装指南函数使用示例应用场景常见问题及解决方案总结 探索未来:掌握python-can库,开启AI通信新纪元 背景介绍 在人工智能和物联网的飞速…

[Go语言快速上手]函数和包

目录 一、Go中的函数 函数声明 多个返回值 可变参数 匿名函数 值传递和地址传递 函数执行顺序(init函数) 二、Go中的包 基本语法 主要包(main package) 导入其他包 包的作用域 包的使用 包名别名 小结 一、Go中的函…

重生之我们在ES顶端相遇第 18 章 - Script 使用(进阶)

文章目录 0. 前言1. 基本使用2. 读请求中访问文档字段2.1 遍历 List2.2 判断对象存不存在2.3 判断值是否为空2.4 总结 3. 写请求中访问文档字段3.1 数字相加3.2 字符串相加3.3 将字符串转为数组 0. 前言 在前面部分,我们介绍了 ES 的基本使用和要掌握的基础性读写原…

TypeScript 算法手册【快速排序】

文章目录 1. 快速排序简介1.1 快速排序定义1.2 快速排序特点 2. 快速排序步骤过程拆解2.1 选择基准元素2.2 划分数组2.3 递归排序 3. 快速排序的优化3.1 三数取中法选择基准3.2 插入排序与快速排序结合案例代码和动态图 4. 快速排序的优点5. 快速排序的缺点总结 【 已更新完 Ty…

二分查找算法专题(1)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 优选算法专题 目录 二分查找算法的介绍 704. 二分查找 34. 在排序数组中查找元素的第一个和 最后一个位置 35. 搜索插入位置 69. x的平…

10-指针和多维数组

多维数组,本质上是数组的数组: 一、多维数组: int B[2][3] int(*P)[3] B;Print B //400 Print *B; //400 Print B[0] //400 Print &B[0][0] // 400B[i][j] *(B[i]j) *(*(Bi)j); int C[3][2][2] int(*p)[2][2] C; Print C //800 Prin…

大数据开发--1.1大数据概论

目录 一.大数据的概念 什么是大数据? 二. 大数据的特点 三. 大数据应用场景 四. 大数据分析业务步骤 大数据分析的业务流程: 五.大数据职业规划 职业方向 岗位技术要求 六. 大数据学习路线 一.大数据的概念 什么是大数据? 数据 世界…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第十六章 Linux 第一个程序 HelloWorld

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

LC记录二:丑数专题,一文秒解丑数3题

文章目录 263.丑数1264.丑数21201.丑数3 263.丑数1 https://leetcode.cn/problems/ugly-number/description/ 简单题,丑数只包含质因子2、3、5。所以直接使用 n 循环 除 2 3 5最后判断结果是否等于1即可。 代码: class Solution {public boolean isUg…

01_SQLite

文章目录 ** SQLite 存储各类和数据类型 **** SQLite 五种亲缘类型** SQLite 创建数据表删除数据表插入数据信息从数据表中获取数据,以结果表的形式返回数据(结果集)updatedistinctorder bygroup byhaving触发器删除一个触发器(tr…

计网问答大题(期末复习)

计网总结笔记 概述 互联网的 2 个重要基本特点:连通性,资源共享 从互联网的工作方式上看,可以划分为两大块: •边缘部分: 由所有连接在互联网上的主机组成,由用户直接使用,用来进行通信&…

并查集【数据结构与算法】【C语言版-笔记】

目录 一、需求分析二、并查集三、代码实现3.1 Find函数3.2 Union函数3.3 优化13.4 终极优化2---压缩策略 一、需求分析 假设有n个互不相交的集合 ◼问题1:给定某个集合中的一个元素,查找该元素属于哪个集合? ◼问题2:如何合并两个…

建筑业挂靠行为的防范建议

在建筑行业中,挂靠行为的普遍存在给许多企业带来了法律风险和信誉风险。为了防范这些风险,企业需要采取一系列有效的措施。 一、加强资质管理 企业应当通过合法途径获取和提升自身的资质等级,避免因资质不足而产生挂靠的需求。加强资质管理是…

【半导体物理基础】第1章 半导体中的电子状态和能带,晶格结构,有效质量

目录 1.1 半导体晶格结构和结合性质 固体的种类 典型晶体 元素半导体 几种晶胞结构 晶向指数与晶面 半导体的晶体结构 金刚石结构 金刚石结构的结晶学原胞 硅、锗相关参数 硅、锗相关参数计算 闪锌矿结构 纤锌矿结构 氯化钠型结构 1.2 半导体中的电子状态和能带…