Linux:深入理解冯诺依曼结构与操作系统
目录
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)来传达其请求。系统调用充当了用户与操作系统之间的桥梁。那么,为什么不允许用户直接调用操作系统呢?我们做个类比。
银行不仅仅拥有设备、桌椅板凳和仓库等硬件资源,更重要的是,它还需要工作人员进行管理和维护人员进行定期检修。银行的日常运营包括提供存取款和贷款服务,从这个角度来看,银行可以被视作一套完整的系统。
假设小明来到银行,想要存入几百元现金。如果他直接将现金放入仓库,并自行在设备上登记存款信息,这显然是银行行长不可接受的。尽管大部分客户都是诚信的,但银行不能排除有人可能不遵守规则,从而对银行财产造成损失。因此,银行会设立对外开放的窗口,专门提供存取款服务。
那么我们可以将操作系统类比于银行,因为用户可能做些损害操作系统的操作,操作系统也不相信用户。
- 因此,在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分有操作系统提供的接口,叫做系统调用。
- 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库。有了库,就很有利于更上层用户或者开发者进行二次开发。
创作充满挑战,但若我的文章能为你带来一丝启发或帮助,那便是我最大的荣幸。如果你喜欢这篇文章,请不吝点赞、评论和分享,你的支持是我继续创作的最大动力!
相关文章:
Linux:深入理解冯诺依曼结构与操作系统
目录 1. 冯诺依曼体系结构 1.1 结构分析 1.2 存储结构分布图 2. 操作系统 2.1 概念 2.2 如何管理 2.3 什么是系统调用和库函数 1. 冯诺依曼体系结构 1.1 结构分析 不管是何种计算机,如个人笔记本电脑,服务器,都是遵循冯诺依曼结构。…...
面试中顺序表常考的十大题目解析
在数据结构与算法的面试中,顺序表是一个常见的考点。它作为一种基础的数据结构,涵盖了多种操作和概念,以下将详细介绍面试中关于顺序表常考的十大题目。 💝💝💝如果你对顺序表的概念与理解还存在疑惑&#…...
测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布
2024年9月29日,MeterSphere开源持续测试工具正式发布v3.3版本。 在这一版本中,接口测试方面,接口导入功能支持导入Postman、JMX、HAR和MeterSphere格式的文件,接口场景的自定义请求步骤支持cURL快捷导入;测试管理方面…...
TypeScript 算法手册 【归并排序】
文章目录 1. 归并排序简介1.1 归并排序定义1.2 归并排序特点 2. 归并排序步骤过程拆解2.1 分割数组2.2 递归排序2.3 合并有序数组 3. 归并排序的优化3.1 原地归并排序3.2 混合插入排序案例代码和动态图 4. 归并排序的优点5. 归并排序的缺点总结 【 已更新完 TypeScript 设计模式…...
生信名词|MOA|基因敲低与基因敲除|DMSO|MODZ|生信基础
生信名词|MOA|基因敲低与基因敲除|DMSO|MODZ|生信基础 MOA(Mechanisms Of Action,作用机理) 过去,在药物投入到临床使用之前,它的生物学机理往往未被研究透彻。如今,随着技术的发展,一种新药物…...
基础岛第3关:浦语提示词工程实践
模型部署 使用下面脚本测试模型 from huggingface_hub import login, snapshot_download import osos.environ[HF_ENDPOINT] https://hf-mirror.comlogin(token“your_access_token")models ["internlm/internlm2-chat-1_8b"]for model in models:try:snapsh…...
vscode中配置python虚拟环境
python虚拟环境作用 Python虚拟环境允许你为每个独立的项目创建一个隔离的环境,这样每个项目都可以拥有自己的一套Python安装包和依赖,不会互相影响。实际使用中,可以在vscode或pycharm中使用虚拟环境。 1.创建虚拟环境的方法: …...
chatGPT对我学术写作的三种帮助
chatGPT对我学术写作的三种帮助 概述提高学术写作水平大模型选择概述上下文以提供精确的指令 提升同行评审优化编辑反馈 概述 从生成式人工智能中获得的价值并非来自于技术本身盲目地输出文本,而是来自于与工具的互动,并利用自身的专业知识来完善它所生…...
【PostgreSQL 】入门篇——支持的各种数据类型介绍,包括整数、浮点数、字符串、日期、JSON、数组等
1. 整数类型 1.1 SMALLINT 描述:用于存储小范围的整数值。大小:2 字节范围:-32,768 到 32,767使用场景:适合存储小型计数器、状态码等。示例: CREATE TABLE status_codes (id SMALLINT PRIMARY KEY,description TEX…...
野火STM32F103VET6指南者开发板入门笔记:【1】点亮RGB
硬件介绍 提示:本文是基于野火STM32F103指南者开发板所写例程,其他开发板请自行移植到自己的工程项目当中即可。 RGB-LEDPin引脚:低电平-点亮,高电平-熄灭REDPB5GREENPB0BLUEPB1 文章目录 硬件介绍软件介绍:结构体方式…...
数据工程师岗位常见面试问题-3(附回答)
数据工程师已成为科技行业最重要的角色之一,是组织构建数据基础设施的骨干。随着企业越来越依赖数据驱动的决策,对成熟数据工程师的需求会不断上升。如果您正在准备数据工程师面试,那么应该掌握常见的数据工程师面试问题:包括工作…...
强大的JVM监控工具
介绍 在生产环境中,经常会遇到各种各样奇葩的性能问题,所以掌握最基本的JVM命令行监控工具还是很有必要的 名称主要作用jps查看正在运行的Java进程jstack打印线程快照jmap导出堆内存映像文件jstat查看jvm统计信息jinfo实时查看和修改jvm配置参数jhat用…...
python 实现点的多项式算法
点的多项式算法介绍 点的多项式算法通常指的是通过一组点(即数据点,通常包括自变量和因变量的值)来拟合一个多项式函数的方法。这种方法在数值分析、统计学、机器学习等领域中非常常见。下面是一些常见的多项式拟合算法: 1. 最小…...
Pikachu-暴力破解-验证码绕过(on client)
访问页面, 从burpsuite 上看到返回的源代码; 验证码生成时通过 createCode 方法生成,在前端页面生成; 同时也是在前端做的校验; 直接验证;F12 -- 网络,随便输入个账号、密码、验证码࿰…...
【Spring】Bean 的生命周期:从实例化到销毁
实例化阶段: Bean的实例化是通过反射创建的。Spring根据Component、Bean或者XML中的<bean>元素配置,来确定要创建的Bean。 属性赋值阶段: 实例化完成后,Spring会进行依赖注入。包括将属性值注入到Bean的字段中,…...
Ubuntu 安装RUST
官方给的是这样如下脚本 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 太慢了 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh -x 执行这个脚本后会给出对应的下载链接 如下图 我直接给出来 大多数应该都是这个 https://static.rust-…...
Android Compose的基本使用
前言: Compose这个东西呢,好处我没发现,坏处就是学习成本和低版本兼容. 不过,看在官方力推的份儿上,有空就学一下吧. 当初的kotlin,很多人说鸡肋(包括我)!现在不也咔咔用纯kotlin做项目吗?哈哈哈哈. 未来的事情,谁说得清呢? 首先创建一个专用的Compose项目 对没错!看到E…...
计算机网络:计算机网络体系结构 —— 专用术语总结
文章目录 专用术语实体协议服务服务访问点 SAP 服务原语 SP 协议数据单元 PDU服务数据单元 SDU 专用术语 实体 实体是指任何可以发送或接收信息的硬件或软件进程 对等实体是指通信双方处于相同层次中的实体,如通信双方应用层的浏览器进程和 Web 服务器进程。 协…...
Rust的前端Tauri编程-基于JS框架的初步探索
上次的项目做完后,有一项遗憾,没有返回结果,而结果是一个html表格,我想用html直接在窗口显示,这时发现R里面包括slint没有很直接的方法,直接弹出浏览器有点太简单没有挑战。这是就被推送了他的竞争对手&…...
【Flume Kafaka实战】Using Kafka with Flume
一 目标 在Cloudera Manager中创建两个Flume的Agent,Agent1从local file中获取内容,写入到kafka的队列中。Agent2以Agent1的sink作为source,将数据从kafka中读取出来,写入到HDFS中。 二 实战 2.1 Kafka Sink 第一步࿰…...
5G NR物理信号
文章目录 NR 物理信号与LTE的区别上行参考信号DMRS (UL)SRSPT-RS(UL) 下行参考信号DMRS(DL)PT-RS(DL)CSI-RSPSSSSS NR 物理信号与LTE的区别 用SSS、CSI-RS和DMRS 取代了CRS信号。下行业务信道采用TM1波束赋形传输模式。基于SSB 或者CSI-RS进行RSRP和SINR测量。基于DMRS 进行共…...
Pikachu-Cross-Site Scripting-存储型xss
存储型xss ,随便输入点内容,都能保存下来;刷新后也不会丢失;输入特殊字符,也能原样返回; 查看代码,也可以看到输出结果直接原路返回,不做处理 构造payload <script>alert(1)…...
媲美GPT-4o mini的小模型,Meta Llama 3.2模型全面解读!
大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…...
【leetcode】 45.跳跃游戏 ||
如果我们「贪心」地进行正向查找,每次找到可到达的最远位置,就可以在线性时间内得到最少的跳跃次数。 例如,对于数组 [2,3,1,2,4,2,3],初始位置是下标 0,从下标 0 出发,最远可到达下标 2。下标 0 可到达的…...
coco(json)、yolo(txt)、voc(xml)标注格式的相互转换
一般都是用labeleme进行标注 标注格式都是json 然后根据不同的格式进行数据标注转换: 1.逐个json转xml: 当我们在使用数据集训练计算机视觉模型时,常常会遇到有的数据集只给了单个的json annotation文件,而模型所需要的annotation是基于每…...
以太网交换安全:端口安全
一、端口安全介绍 端口安全是一种网络设备防护措施,通过将接口学习到的动态MAC地址转换为安全MAC地址(包括安全动态MAC和Sticky MAC),阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信,从而增强设备的安全性。以…...
[题解] Codeforces Round 976 (Div. 2) A ~ E
A. Find Minimum Operations 签到. void solve() {int n, k;cin >> n >> k;if (k 1) {cout << n << endl;return;}int ans 0;while (n) {ans n % k;n / k;}cout << ans << endl; }B. Brightness Begins 打表发现, 翻转完后的序列为: 0…...
【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?
前言: 零实习转行产品经理经验分享01-学习准备篇_哔哩哔哩_bilibili 该篇内容主要是对bilibili这个视频的观后笔记~谢谢美丽滴up主友情分享。 全文摘要:如何在0实习且没有任何产品相关经验下,如何上岸产品经理~ 目录 一、想清楚为什么…...
第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)征稿
第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)由湖南第一师范学院主办,南京师范大学、山东女子学院、爱迩思出版社(ELSP)协办。 大会将专注于机器人、数字化、自动化、人工智能等技术的开发和融合,…...
[数据集][目标检测]电力场景防震锤缺陷检测数据集VOC+YOLO格式705张1类别
重要说明:防震锤缺陷图片太难找,数据集里面存在大量单一场景图片,请仔细查看图片预览谨慎下载,此外数据集均为小目标检测,如果训练map偏低属于正常现象 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径…...
八度 网站建设/怎么去营销自己的产品
Java Runtime Environment(JRE) :运行Java程序所必须的环境的集合。JRE的组成:–包括Java 虚拟机 (JVM)、Java核心类和支持文件。–不包含开发工具 --如编译器、调试器和其它工具。...
北京网站建设分析论文/百度商城
为什么80%的码农都做不了架构师?>>> http://zhanchaojiang.iteye.com/blog/1036454 转载于:https://my.oschina.net/111222233/blog/1510119...
合肥建设网站制作公司/一份完整app运营推广方案
预备知识:分发列表(distribut-list),主要是对路由信息进行过渡,应用在距离矢量路由协议中,如果是应用在OSPF中,要注意:1.IN方向,只对本路由器有用,其它路由器无效;2.OUT方…...
自己做的小网站/百度竞价排名算法
对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就需要对当前类和基类进行搜索以确定方法所在的位置。而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。对…...
溧阳市建设工程质量监督站网站/百度搜索量统计
原文地址:http://yaxin-cn.github.io/Docker/how-to-delete-a-docker-image.html docker中删除images的命令是docker rmi,但有时候执行此命令并不能删除images [yaxinubox ~]$docker images REPOSITORY TAG IMAGE ID …...
怒江北京网站建设/成都seo优化
调节阀流量系数的影响因素及其工程应用 调节阀流量系数的影响车荣杰(中石化石油工程设计有限公司)摘要: 调节阀口径的选择直接影响着工艺生产的正常运行以及质量控制。结合ISA规范,从理论上叙述了调节阀口径的选择原则及流量系数CV的计算过程&#x…...