关于冯诺依曼体系结构 和 操作系统(Operator System)的概念讲解(冯诺依曼体系结构,操作系统的作用等)

news/2024/5/19 19:14:08

目录

一、冯诺依曼体系结构

二、操作系统

1. 概念

2. 设计操作系统的目的

3.系统调用和库函数概念

4.总结

三、完结撒❀

 


一、冯诺依曼体系结构

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

截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

输入设备:包括键盘, 鼠标,扫描仪, 写板等

中央处理器(CPU):含有运算器和控制器等

输出设备:显示器,打印机等

数据主要是在计算机结构中进行流动的,流动过程中进行数据的加工处理,而数据从一个设备到另一个设备本质上是一种拷贝

我们来谈谈存储器,我们为什么要有存储器呢?

按照上面所说,既然数据在内存中流动本质上是一种拷贝,那么设备间拷贝的效率即决定了计算机中整体的效率,可能有人会感到疑惑,既然如此那么直接从输入设备经过中央处理器(CPU)的运算到输出设备输出,这样减少了拷贝次数其效率不是应该更快吗?

实际并非如此,因为CUP的运算速度过快,而输入设备和输出设备进行数据处理的速度根本赶不上CUP的速度,这导致在处理一段数据的过程中CUP大部分时间并不是在处理数据,而是在等待数据的传输,这导致数据的处理效率由输入输出设备的效率所决定。

所以为了提高计算机的整体效率,我们加入了存储器,下图为存储金字塔模型图:

越靠上越接近CUP,处理数据的效率越快,造价也越昂贵。

加入了存储器我们就可以让输入设备提前往存储器中进行数据的输入储存供CUP处理,而输出设备也会接连不断的处理数据,大大提高了运行效率。

关于冯诺依曼,必须强调几点:

这里的存储器指的是内存

不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

一句话,所有设备都只能直接和内存打交道。

对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上。
请解释下面问题:
从你登录上 qq 打开窗口给他发消息开始,到他收到消息之后的数据流动过程。如果是在qq上发送文件呢?

假设发送一个“你好”的消息数据流动过程如下:

网络并不是这里讲的重点,这里就不过多进行阐述。

二、操作系统

上面所谈的冯诺依曼体系为硬件方面的知识,操作系统属于软件方面的知识,之所以先讲一下硬件方面的知识是因为操作系统设计的目的之一是进行软硬件交互,管理所有的软硬件资源的一款软件

1. 概念

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

任何计算机系统都包含一个基本的程序集合,称为操作系统 (OS) 。笼统的理解,操作系统包括:
● 内核(进程管理,内存管理,文件管理,驱动管理)
● 其他程序(例如函数库, shell 程序等等)

2. 设计操作系统的目的

● 与硬件交互,管理所有的软硬件资源
● 为用户程序(应用程序,各种文件夹)提供一个良好(稳定,安全,高效)的执行环境

那么操作系统是如何对硬件进行交互的呢?

正如上图所示,操作系统与底层硬件之间还夹有一层驱动程序,该驱动程序是由生产厂商进行配置的,其目的就是实现操作系统与硬件之间的交互,并且每一个硬件都有对应的一个驱动程序,那么操作系统又是如何管理这么多驱动程序的呢?
在操作系统中一般是定义结构体,先对每一个驱动程序进行描述(类型,厂商,状态等等),再使用链表进行连接,那么对每一个硬件驱动的管理就变成了对每一个链表的增删查改操作。

所以,对于C++这种面向对象的开发模式,对于其对象的管控精髓就是:先描述,再组织

操作系统在管理好底层硬件的同时,也要向上层提供良好(稳定,高效,安全)的运行环境

用户是不能直接对底层硬件或者驱动程序进行操作的,必须通过操作系统进行访问,但是对于操作系统中的数据,用户是不能直接进行访问的,所以操作系统对于用户提供了许多系统调用接口,所以作为用户,我们都是要调用操作系统所设置的系统调用接口通过操作系统进行对外设的操作。

而这些设置的系统调用接口一般都会封装在函数库当中,比如:C,C++标准库,在C语言中我们平常所用的printf或者scanf函数,是来自stdio.h头文件当中,一个是向显示器上打印数据(外设),另一个是向显示器上输入数据,两个都对外设进行了使用,所以用户直接调用函数库中的函数接口,就可以完成对外设的访问。

3.系统调用和库函数概念

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

4.总结

操作系统管理硬件
1. 先描述,用 struct 结构体
2. 再组织,用链表或其他高效的数据结构

三、完结撒❀

如果以上内容对你有帮助不妨点赞支持一下,以后还会分享更多编程知识,我们一起进步。
最后我想讲的是,据说点赞的都能找到漂亮女朋友❤


http://www.mrgr.cn/p/00030801

相关文章

【一起深度学习——NIN】

NIN神经网络 原理图:代码实现:输出结果: 原理图: 代码实现: import torch from torch import nn from d2l import torch as d2ldef nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.…

worldclim 当前时期的生物气候变量数据存在的问题

bio2,3,4,6,7,9,12,13,14, 15,16,17,18,19 在格陵兰岛存在显著问题如下: 有明显的分割线。

cmake进阶:文件操作

一. 简介 前面几篇文章学习了 cmake的文件操作,写文件,读文件。文章如下: cmake进阶:文件操作之写文件-CSDN博客 cmake进阶:文件操作之读文件-CSDN博客 本文继续学习文件操作。主要学习 文件重命名,删…

商城系统推荐,如何找到一款可靠的商城系统?

如今,电商系统成为商家必不可少的营销工具,其系统在金融、外贸、零售等行业领域应用广泛。那么,作为初试水的企业又没有挑选电商系统的经验,如何找到拥有全功能、全渠道、可靠的网上商城系统呢? 我们可以先按电商系统…

MySQL技能树学习

在MySQL中,DDL(数据定义语言)用于定义数据库对象(如表、索引、视图等),DML(数据操纵语言)用于操作数据库中的数据(如插入、更新、删除数据),DQL&a…

读天才与算法:人脑与AI的数学思维笔记20_数学图灵测试

读天才与算法:人脑与AI的数学思维笔记20_数学图灵测试1. 数学图灵测试 1.1. 能不能将这种计算机证明语言翻译成易于与人交流的方式呢? 1.1.1. 剑桥大学的两位数学家蒂莫西高尔斯(Timothy Gowers)和莫汉加内萨林加姆(Mohan Ganesalingam)开展了此项研究 1.1.1.1. 他们决定…

百度语音识别开发笔记

目录 简述 开发环境 1、按照官方文档步骤开通短语音识别-普通话 2、创建应用 3、下载SDK 4、SDK集成 5、相关接口简单说明 5.1权限和key 5.2初始化 5.3注册回调消息 5.4开始转换 5.5停止转换 6、问题 简述 最近想做一些语音识别的应用,对比了几个大厂…

Fluent 区域交界面的热边界条件

多个实体域公共交界面的壁面,Fluent 会分拆为 wall 和 wall-shadow 的两个壁面,两者为配对关系,分别从属于一个实体域。 配对面可使用热通量、温度、耦合三类热边界条件,前两者统称为非耦合热边界条件。 耦合为配对面默认的热边界…

人工智能的发展将如何重塑网络安全

微信搜索关注公众号网络研究观,获取更多信息。 人们很容易认为人工智能 (AI) 真正出现是在 2019 年,当时 OpenAI 推出了 ChatGPT 的前身 GPT-2。 但现实却有些不同。人工智能的基础可以追溯到 1950 年,当时数学家艾伦图灵发表了题为“计算机…

【算法】滑动窗口——无重复字符的最长子串

本篇博客是一篇滑动窗口算法练习题——无重复字符的最长子串的思路详解,从最开始的暴力解法,优化以及怎么想到滑动窗口这种算法的一个详细思路过程,有需要借鉴即可。 目录 1.题目解读2.暴力求解3.暴力求解的优化4.题解代码示例 1.题目解读 题…

软考中级-软件设计师(九)数据库技术基础 考点最精简

一、基本概念 1.1数据库与数据库系统 数据:是数据库中存储的基本对象,是描述事物的符号记录 数据库(DataBase,DB):是长期存储在计算机内、有组织、可共享的大量数据集合 数据库系统(DataBas…

Angular基础-搭建Angular运行环境

这篇文章介绍了在Angular项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Angular CLI工具、安装angular-router、创建Angular项目等步骤。这篇文章为读者提供了清晰的指南,帮助他们快速搭建Angular开发环境,为后续的项目开发奠定基础。 …

EPYC 9B14(最强 Zen4 EPYC 2.6GHz 96c)简要上手感受

[CPU] EPYC 9B14(最强 Zen4 EPYC 2.6GHz 96c)简要上手感受 [复制链接] zlcrxp电梯直达 1# 发表于 2024-1-31 08:43 | 只看该作者 |只看大图 本帖最后由 zlcrxp 于 2024-1-31 16:47 编辑近期看到海鲜市场有EPYC 9B14,于是入手了一颗,由于入手时间比较短,目前先提供一些基本…

音视频开发4 FFmpeg windows 环境搭建,QT 安装,动态库的搜索路径

FFmpeg 为了让所有平台的开发者都能够学习到音视频开发的通用技术,本教程主要讲解跨平台的音视频开发库FFmpeg。其实只要你掌握了FFmpeg,也可以很快上手其他音视频开发库,因为底层原理都是一样的,你最终操作的都是一样的数据&…

opencv图片的平移-------c++

图片平移 cv::Mat opencvTool::translateImage(const cv::Mat& img, int dx, int dy) {// 获取图像尺寸int rows img.rows;int cols img.cols;// 定义仿射变换矩阵cv::Mat M (cv::Mat_<float>(2, 3) << 1, 0, dx, 0, 1, dy);// 进行仿射变换cv::Mat dst;cv…

HTTP协议相关文档

HTTP The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. bing.com 翻译: 超文本传输协议 (HTTP) 是用于分布式的、协作的、超媒体信息系统的 应用程序级协议。IETF Internet Engi…

YPay源支付Mini Pro免授权使用版v1.0

YPay源支付Mini Pro免授权使用版v1.0 &#xff0c;修改host屏蔽Pro授权站&#xff0c;可有效防止因用户操作不当导致免授权程序无法执行时 执行授权官方的盗版入库代码&#xff0c;尽可能保证网站安全 1.安装SG14组件 注&#xff1a;仅防止二次开发添加授权 2.”/etc/host”文…

ArthasGC日志GCeasy详解

Arthas详解 Arthas是阿里巴巴在2018年9月开源的Java诊断工具,支持JDK6,采用命令行交互模式,可以方便定位和诊断线上程序运行问题.Arthas官方文档十分详细.详见:官方文档 Arthas使用场景 Arthas使用 # github下载arthas wget https://alibaba.github.io/arthas/arthas-boot.j…

Elasticsearch:探索 11 种流行的机器学习算法

作者&#xff1a;来自 Elastic Elastic Platform Team 过去几年中&#xff0c;机器学习&#xff08;ML&#xff09;已经悄然成为我们日常生活中不可或缺的一部分。它影响着从购物网站和流媒体网站上的个性化推荐&#xff0c;到保护我们的收件箱免受我们每天收到的大量垃圾邮件的…

用户中心(下)

文章目录 计划登录逻辑接口简单说明cookie和session写代码流程后端逻辑层控制层测试用户管理接口 前端简化代码对接后端代理 计划 开发完成后端登录功能 &#xff08;单机登录 > 后续改造为分布式 / 第三方登录&#xff09;✔开发后端用户的管理接口 &#xff08;用户的查询…