linux操作系统——冯诺依曼体系结构

冯诺依曼体系结构 

体系结构有一种是从计算机组成的角度去谈的,还有一种是从芯片架构方面去谈的,下面我们是从我们的计算机组成原理的角度去理解冯诺依曼体系结构的。

        我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

计算机里面的几乎所有的设备都有数据存储的能力!

磁盘外设是永久存储介质。

CPU这个设备,它处理数据的速度是非常快的,然后是内存,然后是各种外设(这里我们以磁盘为代表)。

以CPU为中心,距离CPU越近,存储效率越高,造价越贵。 

那么为什么要进行存储分级呢?

有人说,为什么不直接全部使用高价格,制作出存储效率最高的计算机出来呢?

原因:如果全部用高价格的存储介质,那么必定带来的就是造价成本太贵了,普通老百姓用不起。

那又有人说,为什么不全部使用最低价格的存储介质呢?这样就能解决造价太贵的问题了呀!

原因:如果我们全部用便宜的存储介质,计算机价格便宜,但是由于存储效率太低,基本上用不了。

所以出现了存储分级,使得造出来的计算机成本不太高,效率也不差,自然计算机的价格也不太贵,那么当代的计算机,老百姓们也用的起了,这才得以广泛使用。

与其说是存储分级,不如说是速度分级,或者说是存储分级。

在数据层面上 ,当代的CPU一般是不和外设直接打交道的。       为什么呢?

原因:根据木桶效应,装多少水取决于那块最短的板,也就是说,在数据层面上如果CPU直接和外设打交道,那么计算机的性能最终取决于外设的存储效率,而又因为外设的存储效率太低了,所以会拉低整个计算机的性能。所以在数据层面上,CPU应该优先要和内存打交道,因为内存的存储效率是要比外设高的,如果CPU直接和内存直接打交道,那么根据木桶效应,整个计算机的性能是由内存决定的,这样就使得整个计算机的性能相对于CPU与外设直接打交道的性能要高很多。

内存就是一个硬件级别比较大的缓存。

所以,基于冯诺依曼体系结构的计算机,他的本质:用比较少的成本,做出了效率不错的计算机,也就是说性价比比较高。

对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上

冯诺依曼体系结构案例的理解

 下面我们分析三个案例:

1.先拿我们平常写C语言代码的案例来说,我们应该都听过说:程序在运行之前,都要先把程序加载到内存,为什么呢?

程序=代码+数据,最终都需要CPU来进行处理,而CPU需要先读取到你所写的这些代码和数据,但是CPU只和内存有数据层面(可以理解为二进制层面)的交互,最终形成了一个.exe,本质就是一个文件,只能在磁盘(外设)中保存,所以程序想要运行就得把.exe文件加载到内存才能让CPU来跑。

2.假设今天我在北京,你在西安,我们都登上了qq这个软件,我们都打开了各自的对话框,发了一个“在吗?”。请在硬件层面上解释一下“在吗?”这个信息在设备上的数据流动。

首先,在我的电脑上输入设备肯定是键盘,由于我发过去的信息给你的时候我们通常在QQ对话框上看到的不仅仅是“在吗?”这条消息,还有发消息的时间等等内容,学过网络的小伙伴呢肯定都知道,我们是要将这条消息进行打包封装的,但是我们这里就暂且忽略网络,我们的QQ运行的时候就是被加载到了内存的,所以我们在QQ发送的消息也可以理解为从键盘输入加载到了内存,然后经过CPU处理比如打包封装,通过我们的网卡外设进行输出,然后经过网络传输,传输到你的输入设备同样是网卡,然后加载到内存,通过解析,去除封装把消息输出到你的显示器上,那么你就能看到我发过去的“在吗?”这条消息,那么有时候我们发送的消息有时候自己也能看到自己的消息呢是因为,我们的输出设备不止一个,我们通过网卡的输出发送数据的同时,也可以输出一份数据到显示器当中让我们自己能够看到。

3.那么如果我把文件拖拽到了QQ的对话框,发送文件给你,请描述一下这个过程?

首先呢,我的文件是保存到磁盘里面的,所以输入设备是磁盘,当我们把文件拖拽到QQ对话框的时候,其实本质就是把文件加载到了内存中,然后通过打包封装,通过网卡这个输出设备用网络传输到你的网卡中,也就是你的输入设备中,然后发送过去之后,你看到的并不是文件的内容,而是文件的名字和文件的图标,那是因为你通过接受文件把该文件保存到了你的磁盘当中。

操作系统(Operator System)

1.操作系统是什么?

操作系统是一款进行软硬件资源管理的软件。

操作系统包括:
内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)

2.为什么要有操作系统呢?

操作系统将软硬件资源管理好(这只是操作系统管理的一种手段),更重要的是要给用户提供良好的(易用,稳定,高效,安全)使用环境(这才是目的)。

3.操作系统如何管理?

举个生活中的例子,你呢,是一个大学生,步入了大学生活,我们都知道,我们大学四年跟辅导员打交道是最常见的,但是呢,跟校长打交道甚至有可能大学四年,校长的面都见不到,或者说毕业的时候可能能够见到,但是一般都见不到,这在我们大学生活中是比较常见的现象,但是呢,我们在哪个班,我们的姓名,学号,宿舍寝室,哪天哪节课,在哪上课,哪些学生成绩好,给哪些学生发奖学金却又是被安排的井井有条的,校长一直在管理着我们,管理的这么好,我们确一直没有见过他,这又是为什么呢?我们感觉一直是辅导员管理这我们,其实真正的管理者是这个学校的校长。那我们就好好的来谈谈什么是真真的管理者,我们生活中做的事情从宏观上来看,无非就分为两种,一种是做决策一种是做执行。在学校我们躺在床上的时候是吃饺子呢?还是嗦粉呢?这叫做我们在做决策,后来我起床了,去吃饺子,这叫做执行。在我们生活中呢我们可能既做决策又做执行,但是真正的管理者基本上都是做决策或者少量执行,或者我们不谈执行,就是做决策。

比如说,最近响应学校开运动会的事情,运动会要不要开呢?校长决定开,那校长会不会一个一个下去通知每一个学生说:张三,明天下午两点运动会,记得来参加哦。   校长会这样做吗?答案是:不会。校长应该是找到学院院长或者体育老师通过开会决定开运动会之后,学院院长组织辅导员,辅导员组织学生们参加运动会。但是如果给你来作决策,会不会说,我今天想跑个步,让学校开一场运动会吧,我今天想吃面条,让学校食堂都换成面条,会不会呢?不会,所以呢我们这里谈到的做决策必须是一种正确的决策。那么如何能够做出正确的决策呢?依据是:根据大量的数据做决策,所以想要做出正确的决策我们前提条件得有完善的数据。

假设我是一个公司的领导,手底下有十个程序员,手上有10000块钱的奖金想要发下去,那么可以收集通过总结他们这一年中写了多少代码,出了多少bug,解决了多少bug,解决bug的速度怎么样,跟团队之间的沟通能力怎么样,一结合进行排名,那么就知道奖金如何发放了。

所以说我们一个真正厉害的领导者要想做出正确的决策是需要大量完善详细的数据的。

重新回到上面那个例子,假设就校长,辅导员,学生三个层次,其中校长就是管理者,学生是被管理者

辅导员收集学生的个人信息带到校长办公室给校长,校长通过这些数据信息进行做决策,所以我们可以得出一个结论:管理的本质不是管人,而是管理数据。

通过上述结论可以知道,为什么我们没见过校长,校长却能管理我们,见面只是形式上的,本质上真正被管理的是我们的数据信息。

那么如何管理好这些数据信息呢?

以学校的学生信息为例:学生都有各自的姓名,学号,性别,身高,成绩,紧急联系人,成绩等等信息,我们可以以表格的形式来存放,但是如果我们想让计算机管理起来,在C语言层面上我们就构建一个结构体来进行管理,C++来说就是一个类,我们也可以利用数据结构,比如说链表或者其他高效的数据结构进行管理。所以最后对学生的数据信息管理最后就转变成了对链表的增删查改

类比到我们的操作系统当中就是操作系统通过管理这些数据结构来管理硬件设备。

这是对学生的管理的一个建模的过程。

最后都高度抽象总结成六个字:先描述,再组织。

操作系统管理的核心:

1.进程管理

2.内存管理

3.文件/IO管理

4.驱动管理

操作系统总结

计算机管理硬件
1. 描述起来,用struct结构体
2. 组织起来,用链表或其他高效的数据结构

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

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

相关文章

Java对接腾讯多人音视频房间回调接口示例

在前面我们已经对接好了腾讯多人音视频房间相关内容:Java对接腾讯多人音视频房间示例 为了完善业务逻辑,我们还需要对接它的一些回调接口 官方文档地址 主要就下面这些 这里因为比较简单直接上代码 里面有些工具类和上一章一样这里就没贴,需要…

Seata使用详解

分布式事务介绍分布式事务的优缺点CAP理论介绍Base理论介绍CAP和BASE之间有什么区别Seata介绍Seata支持的事务模式介绍Seata的架构Seata应用场景Seata集群部署Seata集群部署的优缺点Seata在Java中的使用案例Seata在Java中的代码示例Seata与SpringBoot2.x的整合Seata与SpringBoo…

【C++11特性篇】lambda表达式玩法全解

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.lambda解决个性化排序问题[1]设计商品…

表情识别-情感分析-人脸识别(代码+教程)

表情识别是计算机视觉领域中的一个重要研究方向,它的目标是通过分析人脸表情来判断人的情绪状态。表情识别在很多领域都有广泛的应用,如情感分析、人机交互、智能驾驶等。本文将从以下几个方面来阐述表情识别的相关内容。 一、表情识别的基本原理 表情识…

使用Python爬取GooglePlay并从复杂的自定义数据结构中实现解析

文章目录 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布…

在GitHub找开源项目

在 GitHub 的搜索框里: 使用搜索关键词可以在 GitHub 上快速的找你需要的开源项目: 限制搜索范围 通过 in 关键词 (大小写不敏感) 限制搜索范围: 公式搜索范围in:name xxx项目名包含xxxin:description xxx项目描述包含xxxin:readme xxx项目…

【C#】.net core 6.0 通过依赖注入注册和使用上下文服务

给自己一个目标,然后坚持一段时间,总会有收获和感悟! 请求上下文是指在 Web 应用程序中处理请求时,包含有关当前请求的各种信息的对象。这些信息包括请求的头部、身体、查询字符串、路由数据、用户身份验证信息以及其他与请求相关…

本地配置Java支付宝沙箱环境模拟支付并内网穿透远程调试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

【多模态对话】《颠覆性创新:多模态对话与精准区域分割 - VPGTrans NExT-Chat》学习笔记

【OpenMMLab社区开放麦讲座】《颠覆性创新:多模态对话与精准区域分割 - VPGTrans & NExT-Chat》 1 VPGTrans 1.1 研究问题 1.1.1 模态对齐预训练开销很大:训练时间长 解决方案:迁移已有的VPG(比如BLIP-2 OPT 27B上的VPG) 1.2 训练技巧…

C/C++ string.h库中的memcpy()和memmove()

不能把一个数组赋给另一个数组,所以要通过循环把数组中的每个元素赋给另一个数组相应的元素。有一个例外的情况是:使用strcpy()和strncpy()函数来处理字符数组。 memcpy()和memmove()函数提供类似的方法处理任意类型的数组,下面是这两个寒素的…

CVE-2023-46604 Apache ActiveMQ RCE漏洞

一、Apache ActiveMQ简介 Apache ActiveMQ是一个开源的、功能强大的消息代理(Message Broker),由 Apache Software Foundation 所提供。ActiveMQ 支持 Java Message Service(JMS)1.1 和 2.0规范,提供了一个…

最新版Eclipse下载及安装(详细)

Eclipse是JavaWeb开发最常用的工具,下面详细介绍一下如何下载安装最新版Eclipse。 一、Eclipse下载 1.输入网址:https://www.eclipse.org/downloads/ 我们会到官网中找到如下的下载按钮,但默认下载的是Windows操作系统的64位,我…