【linux】冯诺依曼体系与操作系统的理解

本篇文章是进程的预备知识,但也不仅仅是进程的预备知识,
也可以更好地帮助我们理解整个计算机体系。

目录

  • 冯诺依曼体系结构:
  • 进一步理解操作系统:

冯诺依曼体系结构:

在这里插入图片描述
关于这张图先进行一下必要的解释:

  1. 输入设备:包括键盘, 鼠标,扫描仪, 写板等
  2. 中央处理器(CPU):含有运算器和控制器等
  3. 输出设备:显示器,打印机等
  4. 对于存储器,计算机中很多硬件设备都有存储功能,但这里的存储器指的是内存

我们现在只谈数据层面的信号,我们发现所有的数据都是经过内存的,为什么呢?

如果没有内存的话
在这里插入图片描述
这就是我们没有内存的情况,由于输入设备与输出设备的速度是很慢的,根据木桶原理在这里插入图片描述
计算机的速度就慢下来了,这也就是内存为什么存在的原因。

他是作为一个巨大的缓存,是一个中转站,或许有人会说,他多经过一个路径,多拷贝了一次,速度岂不是更慢了,
答案是,就算CPU的计算速度再快,但是也需要计算时间,我们在CPU计算的时间内,由输入设备像内存中先存一大段数据,CPU直接从中拿取就会加快一个量级。

那我们知道这个有什么作用呢?
我们在学习C语言时大概率听到过一句话,我们写好的程序都是会先加载到内存中,再由CPU计算程序的数据。这就是冯诺依曼体系规定这么做的。


那么从你登录上qq开始和某位朋友聊天,从你打开窗口,给他发消息,到他的到消息之后的数据流动过程是怎样的呢?

首先我们要想到两台电脑就是两个冯诺依曼体系结构。
在这里插入图片描述

进一步理解操作系统:

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

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

给操作系统下一个笼统的定义的话:就是一款管理硬件与软件的软件。

既然可以管理硬件,那我们可以得到如下示意图(不完整):
在这里插入图片描述

那么重点来了,是如何进行管理的呢?

就像一个学校的校长要管理学生,肯定不是每天一个一个的管理学生,毕竟那么多人。
于是肯定就会有一个管理系统,管理系统中有学生详细的数据,于是校长直接管理数据就好了。
到这里我们就会发觉教务系统与我们曾经实现的通讯录是很像的。我们先描述一个对象

struct stu
{
	char name[20];
	char telephone[15];
	int age;
	....
}

在将每一个对象进行连接,也就是组织起来,即多加一个指针,类似链表的感觉。

struct stu
{
	char name[20];
	char telephone[15];
	int age;
	....
	struct stu* next;
}

于是我们可以得到一个结论:

管理事物总是先描述,再组织

那么我们对于管理硬件同样的道理。
先描述再组织在这里插入图片描述
操作系统即是硬件的管理者,并不是直接对硬件进行管理,而是对硬件的链表进行增删查改


再来看一下完整的操作系统示意图:
在这里插入图片描述
我们管理硬件的目的是为了给用户提供好的体验,但是,用户可以直接对操作系统中的各种硬件数据进行修改吗?

答案是否定的,因为你可能改成不符合规定的数据最终造成崩溃,所以不能直接访问。
但是用户要如何使用操作系统呢?
操作系统给我们提供了一系列的系统调用接口在这里插入图片描述
我们也就可以进行一系列的操作了,但是这个是建立在对操作系统有一定理解的程序员才可以很好的使用,不了解的寸步难行,针对这种情况,于是又进行一层封装在这里插入图片描述
让我们更方便的进行使用。我们也经常在使用这些被封装过的接口,也就是各种各样的库。

系统调用和库函数概念

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

注意:
有了库,就算在不同的操作系统下编写代码,由于封装的库是一样的,比如我们在linux下printf,在windows下也是printf(即是他们的系统调用接口不同),于是就有了跨平台性!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DIY可视化整合MQTT生成UniApp源码

DIY可视化整合MQTT生成UniApp源码 MQTT协议是什么? MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的通信协议,专门设计用于在低带宽、不稳定的网络环境下进行物联网设备之间的通信。具有以下特点&…

一篇论文回顾 Sora 文生视频技术的背景、技术和应用。

一篇论文回顾 Sora 文生视频技术的背景、技术和应用。 追赶 Sora,成为了很多科技公司当下阶段的新目标。研究者们好奇的是:Sora 是如何被 OpenAI 发掘出来的?未来又有哪些演进和应用方向? Sora 的技术报告披露了一些技术细节&…

【yolov8和yolov5】用命令快速着手训练

文章目录 1.yolov81.1.创建conda环境1.2.下载代码和环境1.3.YOLOv8训练、自测和预测的代码及解释1.3.1. YOLOv8 训练代码:1.3.2.yolov8 自测代码:1.3.3.yolov8 推理代码:1.3.4.注意: 2.yolov52.1.创建conda环境2.2.下载代码和环境…

小白必看,靠这几步写一份简单的产品说明书!

我们都知道,无论是新产品发布,还是老产品的推广,产品说明书都扮演着至关重要的角色。产品说明书可以帮助用户正确、高效地使用产品,也是传递企业发展理念、展示企业形象的有效途径。但作为一个小白,怎样才能写一份简单…

C语言数据结构之堆排序

青衿之志 履践致远 堆排序(Heapsort) 是指利用 堆 这种数据结构所设计的一种排序算法,它是 选择排序 的一种。它是通过堆来进行选择数据。需要注意的是排升序要建大堆,排降序建小堆。 🎥二叉堆 🎥二叉树 🔥期待小伙伴们…

K 个一组翻转链表

题目: struct ListNode{int val;ListNode* next;ListNode(): val(0), next(nullptr) {}ListNode(int _val): val(_val), next(nullptr) {}ListNode(int _val, ListNode* _next): val(_val), next(_next) {} };class Solution { public:ListNode* reverseKGroup(Li…

代码随想录训练营Day21:● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

530.二叉搜索树的最小绝对差 题目链接 https://leetcode.cn/problems/minimum-absolute-difference-in-bst/description/ 题目描述 思路 遇到在二叉搜索树上求什么最值,求差值之类的,都要思考一下二叉搜索树可是有序的,要利用好这一特点。…

第五十六回 徐宁教使钩镰枪 宋江大破连环马-飞桨图像分类套件PaddleClas初探

宋江等人学会了钩镰枪,大胜呼延灼。呼延灼损失了很多人马,不敢回京,一个人去青州找慕容知府。一天在路上住店,马被桃花山的人偷走了,于是到了青州,带领官兵去打莲花山。 莲花山的周通打不过呼延灼&#xf…

linux设置systemctl启动

linux设置nginx systemctl启动 生成nginx.pid文件 #验证nginx的配置,并生成nginx.pid文件 /usr/local/nginx/sbin/nginx -t #pid文件目录在 /usr/local/nginx/run/nginx.pid 设置systemctl启动nginx #添加之前需要先关闭启动状态的nginx,让nginx是未…

PXI8540高速数据采集卡

XI高速数据采集卡,PXI8540卡是一种基于PXI总线的模块化仪器,可使用PXI系统,在一个机箱内实现一个综合的测试系统,构成实验室、产品质量检测中心等各种领域的数据采集、波形分析和处理系统。也可构成工业生产过程监控系统。它的主要…

EPDM和钉钉集成审批工作—移动端直接处理审批节点,高效协同!

我们发现很多我们工业界的用户,也是有很多是使用钉钉作为日常办公的。于是他们在使用EPDM时,尤其是在日常处理很多审批工作时,希望能和移动端设备和APP一起协同处理。 原文链接:https://www.ict.com.cn/article/20/993.html 钉钉目…

LeetCode刷题---即时食物配送 II

LeetCode题解 解题思路: 1.首先先求出每个用户首次订单表,将其命名为表t (select customer_id,min(order_date) as order_datefrom Deliverygroup by customer_id)as t2.与原表连接,求出在用户首次订单表中即时订单的数量的总和…

离线强化学习Offline Reinforcement Learning

离线强化学习(Offline Reinforcement Learning,简称Offline RL)是深度强化学习的一个子领域,它不需要与模拟环境进行交互,而是直接从已有的数据中学习一套策略来完成相关任务。这种方法被认为是强化学习落地的重要技术…

论文阅读:Editing Large Language Models: Problems, Methods, and Opportunities

Editing Large Language Models: Problems, Methods, and Opportunities 论文链接 代码链接 摘要 由于大语言模型(LLM)中可能存在一些过时的、不适当的和错误的信息,所以有必要纠正模型中的相关信息。如何高效地修改模型中的相关信息而不影…

BUGKU-WEB cookies

题目描述 题目截图如下: 进入场景看看: 解题思路 看源码看F12:看请求链接看提示:cookies欺骗 相关工具 插件:ModHeader或者hackbarbase64解密 解题步骤 看源码 就是rfrgrggggggoaihegfdiofi48ty598whrefeoia…

【算法面试题】-06

智能成绩表 题目描述 小明来到学校当老师&#xff0c;需要将学生按考试总分或单科分数进行排名&#xff0c;你能帮帮他吗&#xff1f; 输入描述 第 1 行输入两个整数&#xff0c;学生人数 n 和科目数量 m。 0 < n < 100 0 < m < 10 第 2 行输入 m 个科目名称&…

java学习(Arrays类和System类)

目录 目录 一.Arrays类 二.System常见方法 三、Biglnteger和BigDecimal&#xff08;高精度&#xff09; 1.Biglnter的常用方法 2.BigDecimal常见方法 3.日期类 1)第一代日期类 2&#xff09;第二代日期类 3)第三代日期类 一.Arrays类 Arrays包含了一系 列静态方法&am…

Nodejs安装

下载下来直接安装 windowr cmd 会自动安装npm命令 node -v npm -v 设置淘宝最新镜像 npm config set registry https://registry.npmmirror.com 查看镜像 npm config get registry 卸载脚手架命令 npm uninstall vue-cli -g 重新安装 npm install vue/cli -g vue --…

力扣98、530、501-java刷题笔记

一、98. 验证二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 1.1题目 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点…

【嵌入式】嵌入式系统稳定性建设:最后的防线

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…