冯诺依曼结构和操作系统的理解

在正式讲解进程之前,需要先铺垫一些基本知识. 

目录

冯诺依曼结构

操作系统


冯诺依曼结构

这个名词相信大家非常熟悉,我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

这张图:

 到现在,我们所知道的计算机,都是由一个个硬件组成的.

输入单元:包括键盘, 鼠标,摄像头,网卡,写字板等

存储器:内存
中央处理器(CPU):
含有运算器控制器

(运算器:算术运算(1+1=2),逻辑运算(if语句...)

控制器:CPU可以相应外部事件,协调外部事件就绪,比如拷贝数据到内存)
输出单元:
显示器,音响,网卡,打印机等

根据图我们还知道:

CPU读取数据(数据+代码) 都是要从内存中读取。站在数据的角度,我们认为CPU不直接和外设交互.
CPU处理数据,必须先将外设的数据加载到内存。站在数据的角度我们认为外设也只直接和内存交互.

总结:所有设备都只能和内存打交道。

所以这个时候相信大家都能理解为什么程序要运行,必须要先加载到内存里.

因为CPU只能直接和内存交互.

我们不仅要了解这张图,更要了解实际过程中是数据如何流向的.

请解释,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。从你打开窗口,开始给他发消息,到他收到消息之后的数据流动过程。

 它们也是严格遵守冯诺依曼结构的.

如果改成发文件呢?

无非是自己这端 输入设备从键盘变成了磁盘,对端的最后 输出设备从显示器变成了磁盘.

操作系统

以上都是从硬件结构讲解的,那么现在该说说软件了.

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

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

 这是一个计算机大致组成,可以看到,

操作系统被设计的目的:

与硬件交互,管理所有的软硬件资源.
为用户 程序(应用程序)提供一个良好的执行环境.

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件.

如何理解"管理"呢?

在大学,我们知道有校长,辅导员与学生之分。我们从管理角度来说,校长就是管理者,我们学生就是被管理者,如果我们挂的科目很多,校长不需要和我们见面,直接看着数据便可以对我们进行决策处置。这说明:拿到被管理者的核心数据,来进行支持管理决策才是最重要的. 当然虽然可以对我们进行决策处置,但总要有一个执行者,来执行校长的命令,那这就是辅导员,充当一个执行者的身份.

对比操作系统中,操作系统就是校长,驱动程序就是辅导员,那些底层硬件就是学生.

总的来说,管理是对被管理数据对象数据的管理.

 

但是如果有很多学生,数据非常多而乱,就算只拿到数据想处理好也不太实际,所以我们可以把它组织起来.

我们可以单独对每个学生定义一个结构体,存放该学生的相关信息。然后假设有5000名学生,实则开一个大小为5000的结构体数组即可.        

然后假设此时想开除3个分数最低的学生,那我们需要找出这个3个分数最低的学生,然后我们设计一个排序算法,找出来之后,然后让它离校就可以了吗?

我们还需要把这3名学生的数据删除,数据库里没这3名学生的信息了,然后辅导员让其离校,这样就算成功开除了.

总结下来:先对被管理对象进行描述,再根据描述类型,定义对象,把对象组织称数组----------------->对学生的管理工作,变成了对数组的增删查改!

对学生做管理,抽象成对数据做管理,但数据量大需要组织起来,又回到了我们刚才所讲的先描述,再组织

描述每个学生.

再组织起来 

 

记住这六字真言!这就是我们管理的核心思路.

我们这样就理解大致的概念.

下面接着以银行管理为例子,进行深入理解操作系统上层和下层.

比如银行中会有一些基础设施,例如桌椅,宿舍,电脑设备等等,然后每个设施会有一个专门的人员来管理它,这些人又受行长管理。比如某个桌子坏了,那个对应负责人便可以报告行长,行长便可以根据这些数据决定是否购买新桌子.

行长便可以类比于这个操作系统.这个和刚才上面说的类型.

 但是我们发现银行很多都是柜台操作的,是封装好的,不能直接让客户直接使用银行里的电脑.而是通过专员操作.所以我们是不能直接把内部暴露给客户的.

上面的专员相当于操作系统向上的提供的系统接口.

 

 由于LINUX是用C语言写的,所以这些系统接口相当于就是C语言提供的函数

还是拿银行为例,这个时候来了一个不识字的人,来到柜台前,由于柜台人员说什么都听不懂意思,所以这个时候变设立了一个服务层,只要你把资料都给我,我就可以帮你把这些事情办了.

这个服务层便相当于是操作系统中的用户接口:例如我们的图形化界面,以及shell外壳,第三方库等等,这些都是更近一步方便我们用户操作的,现在相信很多人都不会用晦涩难懂的系统接口吧.

说到这,其实可以无限套壳,总之肯定越套,会让人使用的更加方便. 

也就是说:

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

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

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

相关文章

从零开始学习自动驾驶决策规划

从零开始学习自动驾驶决策规划 从入门到掌握的一系列讲解,其中涵盖的内容如下: 前言课 第一节-ros工程的创建 第一节-运行环境和工程目录简介第二节-工程运行和小车模型搭建简介 第二节-车辆里程计第三节-整体架构思路 第三节-地图路线构建方法 第三节…

Spring Cache (基础知识+瑞吉外卖项目)

Spring Cache 基本介绍 Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。 Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓…

基于github制作个人学术网站(主页)

模板 首先找到一个学术模板,fork到远程仓库。academicpages,如果不是很清楚具体的步骤,可以参考保姆级教程。在github上对该网站代码修改不是很方便,肯定是在本地进行更新后push到远程仓库。 本地Git 学会下载和安装就行&#…

基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

正则表达式测试(二)

一、中括号的语法 匹配所有的字符,返回一个数组,包含匹配的所有字符内容,按顺序展开; 注意:空格也会被匹配到 匹配所有符合的字符,返回一个数组。 匹配空白字符 匹配非空白字符 匹配 空白字符 非空白字符 如上所示&am…

生成式AI:大语言模型ChatGPT交互的机制

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 与 ChatGPT 有效交互的快速工程 随着生成式人工智能的普及,特别是 ChatGPT,提示已成为人工智能世界中越来越重要的技能。制作提示,与大型语言模型&…

SIP业务之BLF

BLF(Busy Lamp Field)是SIP应用中的一项重要业务,用来监视目标号码的状态,常用于调度、坐席监控等场景。 一、 BLF原理 BLF功能需要IP终端或话机与SIP服务器协同实现的,主要流程如下: IP话机向SIP服务器发…

ByteBuddy学习笔记

ByteBuddy 1.ByteBuddy的用途 ByteBuddy通过修改字节码来新增、修改、删除Java类的现有功能,主要用于分离功能代码和非功能代码,比如 比如非功能代码如下: public double calculatePrice(){double discount getDiscount();double price …

嵌入式软件测试笔记10 | 嵌入式软件测试中如何进行安全性分析?

10 | 嵌入式软件测试中如何进行安全性分析? 1 简介2 故障模型及后果分析(FMEA)2.1 三个步骤2.2 带来的结果优势2.3 FMEA分析过程2.3.1 描述系统及其功能2.3.2 识别潜在的故障模式2.3.3 故障模式对功能的影响2.3.4 风险导致后果的原因2.3.5 风…

Django基础入门⑮:更新书籍信息 删除书籍条目信息 Django静态文件配置

Django基础入门⑮:更新书籍信息 删除书籍条目信息 Django静态文件配置 更新书籍信息删除书籍条目信息Django静态文件配置 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实力新星认证&…

Spring源码系列-第2章-后置工厂处理器和Bean生命周期

第2章-后置工厂处理器和Bean生命周期 后置工厂处理器属于后置处理器,后置处理器是Spring最核心的部分,Spring几乎所有的附加功能全由它完成。 什么是BeanPostProcessor? public interface BeanPostProcessor {/*** Apply this {code BeanPos…

分布式监控系统之zabbix6.0二

分布式监控系统之zabbix6.0二 一、部署 zabbix 代理服务器二、部署 Zabbix 高可用集群三、Zabbix 监控 Windows 系统四、Zabbix 监控 java 应用五、Zabbix 监控 SNMP 一、部署 zabbix 代理服务器 分布式监控的作用: 分担 server 的集中式压力解决多机房之间的网络…