Linux修炼之路之冯系结构,操作系统

目录

一:冯诺依曼体系结构

 1.五大组件

2.存储器存在的意义

3.几个问题

二:操作系统

接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

一:冯诺依曼体系结构

我们当代的计算机的基本构成都是由冯诺依曼体系结构来进行构成计算机的基本单元,所以计算机就是由一个个的硬件组成的 

 1.五大组件

1.存储器:具体指的是内存

2.输入设备:指鼠标,键盘,摄像头,话筒,磁盘,网卡等

3.输出设备:指显示器,播放器硬件,磁盘,网卡等

4.运算器:对我们的数据进行计算任务(算术运算,逻辑运算)

5.控制器:对我们的计算硬件流程进行一定的控制

输入设备和输出设备共同组成外部设备(外设),控制器和运算器组成cpu

对于五大组件,每个都是一个独立的个体,因此对于计算机来说每个硬件单元都必须用线联系起来

 对于这里的线就是总线,分为系统总线(cpu与内存之间相互交互的线)和IO总线(外设与内存之间相互交互的线)

2.存储器存在的意义

1.对于在冯诺依曼体系结构中的数据的流向

数据先从输入设备加载到存储器中,,然后cpu从存储器中读取数据,经过cpu计算过后,再将数据再次写入存储器中,最后将数据从存储器刷新到输出设备

2.对于上述的过程,可能初识觉得过于复杂了,想直接将数据从输入设备交到cpu中去执行计算,再将计算后的数据直接交到输出设备,我们想如果直接这样的话,岂不会简单很多,省去存储器这一中间介质的转换,但事实上不会这样做的,这是因为外设与cpu的存储速度差距非常大,下面是计算机的存储体系结构

这张图可以看出存储是分级的,而对于cpu的存储速度是纳秒级别的,内存是微秒级别的,外设则是毫秒级别的

所以根据木桶原理,如果cpu直接与外设相连的话,计算机整体的存储效率就会以外设为主,这势必会使计算机整体的存储速度和效率变得低下

所以引入存储器去适配cpu与外设之间的存储速度差,这是计算机整体的存储效率就以存储器为主,比上述过程存储速度和效率会提升很多

但这时我们也会想,有存储器的参与,但相互之间的存储速度和效率差仍然很大,并且是串联的形式,似乎并没有快多少,但其实不然,操作系统会将所有的数据先缓存到对应的内存中,等cpu执行完上一轮计算后,会直接从内存中读取数据进行计算,在cpu读取计算数据的过程中,操作系统会再次预先加载其他的数据,这样计算机整体的存储速度和效率是有很大提升的

3.几个问题

1.对于一个程序在执行执行之前,必须要先加载到内存当中运行,这是为什么?

这是因为在程序中会有大量的数据要在cpu中进行计算,而cpu只会从内存中读取数据,所以程序必须先加载到内存当中,这也是冯诺依曼体系结构所规定的

2.对于前面写的进度条,默认显示的数据,是可能会缓存起来的,那么在哪缓存呢?

当没有强制刷新或者'\n'时,这是数据就会缓存到存储器当中,所以存储器就是一个硬件级别的缓存空间,并且在冯诺依曼体系结构中是处于核心地位的

对于现实中的每一台设备都可以看作是一个冯诺依曼体系结构

二:操作系统

1.操作系统是一款做管理的软件,管理的是相应的硬件和软件

2.概念:任何计算机系统都包含一个基本的程序集合,称为操作系统,广义的操作系统是包括内核(进程管理,内存管理,文件管理,驱动管理)和其他程序(例如函数库,shell外壳等),侠义上的操作系统主要指内核

3.设计操作系统的目的

操作系统会帮助用户管理好下面的软硬件资源,并且为用户提供一个良好(安全,稳定,高效)的运行环境,总结起来就是操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的运行环境(目的)

4.计算机的层状体系结构

对于底层硬件是以冯诺依曼体系结构为基础,把 硬件之间互相用总线连接起来的

所有的硬件要被软件访问的话,就得有它所匹配的驱动程序的参与,如果没有的话,则访问不了

用户是不能直接访问硬件的,而是要经过操作系统来完成访问硬件的操作

在操作系统里面会有各种的数据,可是操作系统不相信任何用户,所以用户是不能直接访问操作系统内部的数据的

于是操作系统为了保证自己的数据安全,也为了保证给用户提供服务,操作系统是以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。 对于这里的接口是用c来实现的,由操作系统来提供的自己内部的函数调用

所以所有访问操作系统的行为,都只能通过系统调用来完成

5.关于操作系统是如何做管理的

首先从生活来说管理者和被管理者是不需要见面的,就像员工与老板是不需要见面的,那么在不见面的情况下,管理者是如何做管理的呢?  其实管理者只要得到被管理者的管理信息,就可以在未来进行管理决策---------------管理的本质就是通过对数据的管理,达到对人的管理

那么既然管理者与被管理者是不见面的,那么管理者的管理信息是怎么得到的呢------通过执行者

比如在公司当中员工人数是庞大的,当要管理员工就要对员工的数据进行统计整理,一般的会整理为excel表格,在表格当中填入员工的相关数据(如姓名,年龄,入职时间,工资卡账号,所属部门,工号等),当要查询某个员工的数据时,就得采用一个个遍历的方式来查找

但这样的话对于管理者去管理查询数据的话,仍是很大的工作量,因此可以采用c语言结构的方式,将相关数据用结构体struct描述起来,将每个员工定义为一个struct结构体对象并用自己的数据进行初始化,但每个员工都是一个独立的结构体对象,因此每个结构体对象当中应该还包括struct people* next的结构体指针,将每个结构体对象连接起来,形成一张员工的单链表,这就叫建模组织的过程       ------------这种方法就叫做先描述再组织

因此对于管理者来说,只要管理好这张员工链表就可以,将对于员工的管理工作转换为对这张单链表的增删改查

所以在操作系统中,管理任何对象的操作都可以转化为对某种数据结构的增删改查

 对于在计算机层状体系当中,操作系统和硬件并不直接见面,只需要操作系统能获取到硬件的状态数据就能够进行管理的操作,但操作系统系统是不能直接获取硬件的数据的,而是通过由驱动程序来获取硬件的数据,再从驱动程序交到操作系统当中

详细的来说就是,操作系统要管理不同的设备,包括内存,进程,文件和驱动,如操作系统要对硬件做管理,其实在操作系统内部就需要描述这一个个的硬件设备,对于每个硬件设备都使用同样的struct结构体来描述,不同的设备填上不同的属性值,然后给这个设备构建出相应的结构体对象,把每个构建的结构体对象用一种数据结构管理起来,当操作系统要检测某个设备的状态,做出相应的操作,就转换为在操作系统内部对特定设备所维护的数据结构的增删改查

5.计算机管理硬件

  先用struct结构体描述起来,再用链表或者其他高效的数据结构组织起来

6.系统调用和库函数

在开发角度。操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,就叫做系统调用

系统调用在使用上,功能比较基础,对用户的要求也比较高,所以有些开发者对部分系统调用进行了部分的封装,从而形成了库,有了库,就很有利于更上层用户或开发者进行开发

所以库函数和系统调用属于上下层的调用和被调用的关系

7.总结来说,在操作系统内部对被管理对象进行建模,形成对应的某种数据结构,对对象的管理就转化为对某种数据结构的增删改查

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

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

相关文章

Kubernetes 容器编排

应用程序部署演变 主要有三个演变: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源&…

【开源】多语言大型语言模型的革新:百亿参数模型超越千亿参数性能

大型人工智能模型,尤其是那些拥有千亿参数的模型,因其出色的商业应用表现而受到市场的青睐。但是,直接通过API使用这些模型可能会带来数据泄露的风险,尤其是当模型提供商如OpenAI等可能涉及数据隐私问题时。私有部署虽然是一个解决…

PY32F003+RTL8710(AT) 实现获取天气情况

一、RTL8710主要AT指令 1、ATSR:模块重启 2、ATSE1:开启回显 3、ATPW1:station模式 4、ATPNssid,password,,:连接到AP 5、ATPK1:设置自动接收 6、ATPC0,v1.yiketianqi.com,80:与网站建立TCP连接 7、ATPT125…

关于pytorch加载模型报错问题

load_net[“params”] 报keyerror 加载模型后查看对应参数是什么 model2 torch.load(m1_path "xxx.pth") print(model1.keys())若输出如下: 已经有相应参数不需要执行 load_net[“params”]若输出如下 则需要load_net[“params”]

Linux-命令上

at是一次性的任务,crond是循环的定时任务 如果 cron.allow 文件存在,只有在文件中出现其登录名称的用户可以使用 crontab 命令。root 用户的登录名必须出现在 cron.allow 文件中,如果这个文件存在的话。系统管理员可以明确的停止一个用户&am…

3D 生成重建014-Bidiff使用二维和三维先验的双向扩散

3D 生成重建014-Bidiff使用二维和三维先验的双向扩散 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 大多数三维生成研究集中在将二维基础模型向上投影到三维空间中,要么通过最小化二维评分蒸馏采样(SDS)损失,要么通过对多视图…

判断变量是否为数组的几种方法

1、isArray 方法 isArray() 方法用于判断一个对象是否为数组。如果对象是数组返回 true,否则返回 false。 Array.isArray(arr); // true 1 2、对象原型 通过原型链判断是否具有和数组同一原型链的顶端。 arr.__proto__ Array.prototype; // true 1 3、instanceof…

[数据结构] -- 双向循环链表

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…

一文理清database/sql包的使用场景和宕机查询流程

一文理清database/sql包你可能遇到的问题 那么database/sql包实现了什么功能呢?建立数据库连接检测连接是否能ping通通过连接进行具体的sql查询查询完将连接进行关闭当数据库宕掉重启后再次查询 database/sql包创建的db连接 对于数据库宕掉后重启是否仍然有效&#…

AI绘画工具:创意与技术的完美融合

随着人工智能技术的飞速发展,我们见证了无数领域的革新与变革。其中,AI绘画工具的出现,无疑为艺术界带来了一股清新的风潮。这些工具以其独特的魅力,吸引了无数艺术家和创意人士的目光,成为他们表达自我、探索未知的重…

Compose在xml中使用滑动冲突处理

一、背景 在现有Android项目中使用Compose可能存在滑动冲突问题,例如 SmartRefreshLayoutCoordinatorLayoutComposeView(ComposeView这里又是一个LazyColumn) 二、解决方案 官方介绍:https://developer.android.google.cn/develop/ui/compose/touch-inp…

huggingface 笔记:device_map

1 基本映射方法 设计设备映射时,可以让Accelerate库来处理设备映射的计算通过设置device_map为支持的选项之一("auto"、 "balanced"、 "balanced_low_0"、 "sequential");或者如果想更精…

golang的context和chan 的使用

1. context 作用 context包的context的接口,主要是控制协程执行上下文的时间,以及取消程序的执行,以及上下文中传递数据等作用,golang中耗时或者需要协同的操作都会见到context的身影。 context有几个常用的方法 1.1 context.B…

用爬山算法解决离散的优化问题

爬山算法,也称为梯度上升算法或局部搜索算法,是一种简单有效的优化算法,常用于解决连续或离散的优化问题。爬山算法的基本思想是从一个随机的初始点开始,通过迭代地向局部最优的方向移动,逐步逼近全局最优解。 爬山算…

git管理Codeup云效平台

HTTPS方式实现Git命令 1.进入项目路径,如 cd demo,与此同时,在Codeup平台创建一个空仓库repo,获取空仓库的https协议地址,例如 https://codeup.aliyun.com/xxxx/xxxx/xxx.git。 2.在demo项目下执行 git init命令初始化…

从反向传播(BP)到BPTT:详细数学推导【原理理解】

从反向传播到BPTT:详细推导与问题解析 在本文中,我们将从反向传播算法开始,详细推导出反向传播通过时间(Backpropagation Through Time, BPTT)算法。重点讨论BPTT中的梯度消失和梯度爆炸问题,并解释如何解…

采用LoRA方法微调llama3大语言模型

文章目录 前言一、Llama3模型简介1.下载llama3源码到linux服务器2.安装依赖3.测试预训练模型Meta-Llama-3-8B4.测试指令微调模型Meta-Llama3-8B-Instruct5.小结 二、LoRA微调Llama31.引入库2.编写配置文件3.LoRA训练的产物 三、测试新模型效果1.编写配置文件2.运行配置文件&…

QT教程-一,初识QT

目录 一,QT是什么?能够使用它做什么? 二,Qt 能够使用的语言 三,Qt主要用于什么领域? 四,Qt开发的软件 一,QT是什么?能够使用它做什么? Qt是一个跨平台的 C 开发库,主…

全球最高点赞记录,世界点赞第一名是谁?世界点赞第一人名字的由来

世界点赞第一人名字的由来: 起源与概念提出: 二十一世纪东方伟大的思想家哲学家教育家颜廷利教授,一位在中国21世纪早期便以其非凡才华和创新精神著称的学者,早在互联网尚未普及的20世纪90年代,就已经提出了“点赞”的…

算法提高之最大数

算法提高之最大数 核心思想&#xff1a;线段树 添加数 看作原本的数组有数(0) 现在将他修改成另一个值 询问后l个数的最大值query函数具体实现 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 200010;typed…