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

news2024/11/27 6:27:25

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

目录

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

冯诺依曼体系结构:

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

  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(即是他们的系统调用接口不同),于是就有了跨平台性!!

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

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

相关文章

【清晰易懂】@Mapper注解和BaseMapper爱恨情仇

此问题的提出在于自己没有弄明白一个问题,就是Mapper注解有时候可以不加,有时候又需要加。 先说结论:Mapper注解和BaseMapper类在项目中起着相同的作用,都是为了实现数据库基本简单的CRUD,省去在xml文件中再去写&#…

java八股文复习----java集合,CAS---2024/03/12

1.java常见的集合类 2.List,Set,Map的区别 3.上述三个集合有哪些常用的方法 4.List,Set,Map哪几个是线程安全的? 5.ArrayList和LinkedList的区别 6.ArrayList和Vector的区别 7.ArrayList的扩容机制 8.HashMap集合 8.1数据结构 8.2哈希冲突的解决办法有哪…

Conmi遇到的坑——禅道的PCDN

好家伙,悄悄在后台吃了七十多G流量,我把你当兄弟宣传,你把我当PCDN吸。 还纳闷今天创建个VUE项目怎么提示D盘没空间,明明留了几十G,好家伙,一下子全吸干了。 删了两个,还有一个(已…

吴恩达深度学习笔记:神经网络的编程基础2.5-2.8

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第二周:神经网络的编程基础 (Basics of Neural Network programming)2.5 导数(Derivatives) 第一门课:神经网络和深度学习 (Neural Networks an…

PNG图片合成,带手机外观设置,可自定义金额等

PNG图片合成,带手机外观设置,可自定义金额等 软件界面成品显示免责声明 软件界面 成品显示 免责声明 若因使用代码与官方造成不必要的纠纷,本人盖不负责,存粹技术爱好,若侵犯贵公司的权益,请告知&#xff…

美团2025春招第一次笔试题

第四题 题目描述 塔子哥拿到了一个大小为的数组,她希望删除一个区间后,使得剩余所有元素的乘积未尾至少有k个0。塔子哥想知道,一共有多少种不同的删除方案? 输入描述 第一行输入两个正整数 n,k 第二行输入n个正整数 a_i,代表…

教你用两种方式遍历循环python中的字典

开发中经常会用到对于字典、列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式。 注意: python2和python3中,下面两种方法都是通用的。 1. 只对键的…

电机特性学习

电机特性 电机堵转: 电机堵转的原理 玻璃升降器: 工作电压 升降器在 9V~16V 电压下应运行平稳,不允许有异音和卡滞现象。 工作电流 升降器的工作电流不大于 12A,堵转电流不大于 28A。 堵转 力 升降器 堵转 力应 不小于 212N。 玻璃升降器结构 电动车窗…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的日常场景下的人脸检测系统(附完整资源+PySide6界面+训练代码)

摘要:开发用于日常环境中的人脸识别系统对增强安全监测和提供定制化服务极为关键。本篇文章详细描述了运用深度学习技术开发人脸识别系统的全过程,并附上了完整的代码。该系统搭建在强大的YOLOv8算法之上,并通过与YOLOv7、YOLOv6、YOLOv5的性…

【数据结构】初识二叉搜索树(Binary Search Tree)

文章目录 1. 二叉搜索树的概念2. 二叉搜索树的操作1.1 二叉搜索树的查找1.2 二叉搜索树的插入1.3 二叉搜索树的删除 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树,它可能是一棵空树,也可能是具有以下性质的二叉树: 若它的左子树不为空&am…

Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-3、线条平滑曲面且可通过面观察柱体变化(三)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

掌握Redis,看完这篇文章就够了!

目录 1.Redis介绍 2.Redis服务器与客户端 3.Redis配置文件 4.Redis数据类型操作 4.1使用python连接数据库 4.2 字符串 4.3 哈希 4.4 键对应操作 4.5 列表 4.6 集合 4.7 有序集合 1.Redis介绍 Redis 是一个开源的内存数据库,它提供了一个高性能的 key-val…

【java数据结构】HashMap和HashSet

目录 一.认识哈希表: 1.1什么是哈希表? 1.2哈希表的表示: 1.3常见哈希函数: 二.认识HashMap和HashSet: 2.1关于Map.Entry的说明:,> 2.2Map常用方法说明: 2.3HashMap的使用案例: 2.4Set常见方法…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Slider)

滑动条组件,通常用于快速调节设置值,如音量调节、亮度调节等应用场景。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Slider(options?: SliderOption…

【算法面试题】-06

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

14双体系Java学习之数组

数组 ★小贴士 数组中保存固定数量的值&#xff0c;声明数组时需要制定数组中元素的类型&#xff0c;数组的长度在创建数组时设定。 保存数据的数据结构有很多&#xff0c;Java的标准函数库中就包含了许多复杂的数据结构&#xff0c;比如map、tree和set&#xff0c;以后会讲解的…

数据结构·复杂度

目录 1 时间复杂度 2 大O渐进表示法 举例子&#xff08;计算时间复杂度为多少&#xff09; 3 空间复杂度 前言&#xff1a;复杂度分为时间复杂度和空间复杂度&#xff0c;两者是不同维度的&#xff0c;所以比较不会放在一起比较&#xff0c;但是时间复杂度和空间复杂度是用…

Ubuntu 安装腾讯会议

1.官网下载 进入腾讯会议下载官网下载腾讯会议Linux客户端 选择x86_64格式安装包下载 若不知道自己的系统架构,输入 uname -a 在命令行结果中查看系统架构信息 2.终端命令安装 cd {你的下载路径} sudo dpkg -i TencentMeeting_0300000000_3.19.0.401_x86_64_default.publi…

数据结构·二叉树(一)

1. 树概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;树叶朝下的。 有一个特殊的节点&#xff0c;称为根节点&#…

嵌入式系统工程师错题总结

笔者来介绍一下嵌入式系统工程师考试的一些易错题目 题目介绍  流水线指令计算公式&#xff1a;一条指令总时间max&#xff08;单个指令执行时间&#xff09;*&#xff08;指令数-1&#xff09;  平均故障间隔时间  ICMP协议&#xff1a;传送通信问题相关的消息。 …