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)来传达其请求。系统调用充当了用户与操作系统之间的桥梁。那么,为什么不允许用户直接调用操作系统呢?我们做个类比。

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

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

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

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


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

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

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

相关文章

可视化图表与源代码显示配置项及页面的动态调整功能分析

可视化图表与源代码显示配置项及页面的动态调整功能分析 文章目录 可视化图表与源代码显示配置项及页面的动态调整功能分析1.分析图表源代码2.分析源代码显示功能**完整代码参考:** 3.分析源代码显示及动态调整**完整代码参考:** 4.分析代码编辑器及运行…

华为云LTS日志上报至观测云最佳实践

华为云LTS简介 华为云云日志服务(Log Tank Service,简称 LTS),用于收集来自主机和云服务的日志数据,通过海量日志数据的分析与处理,可以将云服务和应用程序的可用性和性能最大化,为您提供实时、…

基于SSM的爱心慈善公益网站的设计与实现

文未可获取一份本项目的java源码和数据库参考。 选题意义 随着经济的不断进步,发展各种进行公益事业的渠道不断的出现,作为一个礼仪之邦,中华民族一直秉承先人的团结与友善精神,对社会和他人给予帮助关怀。但中国的公益事业相对…

【AIGC】2022-CVPR-利用潜在扩散模型进行高分辨率图像合成

2022-CVPR-High-Resolution Image Synthesis with Latent Diffusion Models 利用潜在扩散模型进行高分辨率图像合成摘要1. 引言2. 相关工作3. 方法3.1. 感知图像压缩3.2. 潜在扩散模型3.3. 调节机制 4. 实验4.1. 关于感知压缩权衡4.2. 利用潜在扩散生成图像4.3. 条件潜在扩散4.…

防sql注入的网站登录系统设计与实现

课程名称 网络安全 大作业名称 防sql注入的网站登录系统设计与实现 姓名 学号 班级 大 作 业 要 求 结合mysql数据库设计一个web登录页面密码需密文存放(可以采用hash方式,建议用sha1或md5加盐)采用服务器端的验证码&#…

基于Hive和Hadoop的招聘分析系统

本项目是一个基于大数据技术的招聘分析系统,旨在为用户提供全面的招聘信息和深入的职位市场分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark 为核…

英集芯IP5911:集成锂电池充电管理和检测唤醒功能的低功耗8位MCU芯片

英集芯IP5911是一款集成锂电池充电管理、咪头检测唤醒、负载电阻插拔和阻值检测等功能的8bit MCU芯片。其封装采用QFN16,应用时仅需极少的外围器件,就能够有效减小整体方案的尺寸,降低BOM成本,为小型电子设备提供高集成度的解决方…

【常读常悟】《大数据之路-阿里巴巴大数据实践》一书读书摘要

【常读常悟】《大数据之路-阿里巴巴大数据实践》一书读书摘要 1、背景2、目录结构3、数据加工链路4、章节摘要4.1 第2章 日志采集4.1.1 日志采集方案4.1.2 采集指标 4.2 第3章 数据同步4.2.1 数据的特点4.2.2 数据同步的三种方式4.2.3 数据同步的最佳实践 4.3 第4章 离线数据开…

以太网交换安全:端口安全

一、端口安全介绍 端口安全是一种网络设备防护措施,通过将接口学习到的动态MAC地址转换为安全MAC地址(包括安全动态MAC和Sticky MAC),阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信,从而增强设备的安全性。以…

基于muduo库函数实现protobuf协议的通信

文章目录 先定义具体的业务请求类型2. 实现服务端提供的服务protobuf_server.cppprotobuf_client.cpp 建议先去了解muduo库和protobuf协议: Protobuf库的使用Muduo库介绍及使用 先定义具体的业务请求类型 先使用protobuf库创建我们所要完成的业务请求类型&#xf…

YOLOv11改进 | 主干篇 | YOLOv11引入MobileNetV4

1. MobileNetV4介绍 1.1 摘要: 我们推出了最新一代的 MobileNet,称为 MobileNetV4 (MNv4),具有适用于移动设备的通用高效架构设计。 在其核心,我们引入了通用倒瓶颈(UIB)搜索块,这是一种统一且…

【MAUI】CommunityToolkit社区工具包介绍

一、为什么需要声明式开发 .NET的MVVM,始于WPF,很古典,它甚至可能是现代前端框架“声明式开发”的鼻祖。声明式开发,之所以出现,是因为命令式开发在UI层和代码层上无法解耦的问题。如下图所示: 1、命令式开发:后台代码需要调用UI层的控件(label.Text),如果更新UI层…

CEPH的写入流程

1、客户端程序发起对文件的读写请求,ceph前端接口(RADOS Gateway)将文件切分成多个固定大小的对象(默认大小为4MB) 2、计算文件到对象的映射 (1) 计算OID为每个对象分配一个唯一的OID(Object ID&#xff09…

【微服务】初识(day1)

基础概念 集群 集群是将一个系统完整的部署到多个服务器,每个服务器提供系统的所有服务,多个服务器可以通过负载均衡完成任务,每个服务器都可以称为集群的节点。 分布式 分布式是将一个系统拆分为多个子系统,多个子系统部署在…

免费录屏软件工具:助力高效屏幕录制

录屏已经成为了一项非常实用且广泛应用的技术。无论是制作教学视频、记录游戏精彩瞬间,还是进行软件操作演示等,我们都常常需要一款可靠的录屏软件。今天,就让我们一起来探索那些功能强大录屏软件免费版,看看它们是如何满足我们多…

Leecode刷题之路第六天之Z字形变换

题目出处 06-Z字形变换 题目描述 个人解法 思路: todo 代码示例:(Java) todo复杂度分析 todo 官方解法 06-Z字形变换官方解法 方法1:利用二维矩阵模拟 思路: 代码示例:(Java&am…

蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC

蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC 第一节 硬件解读第二节 CubeMX配置第三节 代码编写 第一节 硬件解读 STM32的ADC是12位,通过硬件过采样扩展到16位,模数转换器嵌入到STM32L071xx器件中。有16个外部通道和2个内部通道&#xf…

MongoDB微服务部署

一、安装MongoDB 1.在linux中拉去MongoDB镜像文件 docker pull mongo:4.4.18 2. 2.创建数据挂载目录 linux命令创建 命令创建目录: mkdir -p /usr/local/docker/mongodb/data 可以在sshclient工具查看是否创建成功。 进入moogodb目录,给data赋予权限777 cd …

后台管理系统脚手架

后台管理系统脚手架 介绍 在快速迭代的软件开发世界里,时间就是生产力,效率决定成败。对于构建复杂而庞大的后台系统而言,一个高效、可定制的后台脚手架(Backend Scaffold)无疑是开发者的得力助手。 脚手架 后台脚…

自动驾驶系列—自动驾驶发展史介绍

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…