Linux进程概念(一):冯诺依曼体系结构和操作系统的基本概念

目录

冯诺依曼体系结构

操作系统

理解操作系统的“管理”

操作系统的六层结构


冯诺依曼体系结构

  • 输入设备:键盘、鼠标、摄像头、话筒、磁盘、网卡
  • 输出设备:显示器、声卡、磁盘、网卡、显示器等......
  • CPU:运算器、控制器
  • 存储器:内存

注意事项:

  1. 数据在计算机的体系结构中是流动的,流动过程中,数据会被加工和处理
  2. 数据从一个设备流动到另一个设备的本质是拷贝
  3. 数据在设备间的拷贝的效率决定了计算机整机的基本效率
  4. 设备之间是互相链接的
  5. 外部设备有数据时会通知控制器要进行数据读取
  6. 所有冯体系的硬件设备只能直接和内存打交道

问题1:为什么要有存储器?直接将输入设备中的数据传递给CPU不行吗?

答:输入设备读取数据的效率远远低于CPU处理数据的效率,浪费资源

补充知识: 

  1. CPU内部具有多种寄存器和缓存设备,寄存器也可以存储只不过很小
  2. 距离CPU越近效率越高,但是成本也越高

在硬件数据流动角度,在数据层面:

  1. 不考虑缓存的情况,CPU不和外设直接打交道,CPU只和内存打交道
  2. 外设(输入输出)的数据,不是直接给CPU的,而是要先放入内存中

问题2:程序运行前,为什么要加载到内存?(冯诺依曼体系结构规定了)

答:程序 = 代码 + 数据,程序“数据”都要被CPU访问,且CPU只会从内存中读取程序“数据”

程序“数据”:代码 + 数据

问题3:程序没有被加载到内存的时候,在哪里?

答:磁盘(外设)上的二进制文件,需要执行该程序时再将外设中的内容加载到内存中去

结论:冯的体系结构中的硬件设备和计算机软件之间的协调与配合大部分由操作系统来管理和控制

操作系统

基本概念:操作系统是一款进行软硬件资源管理的软件

广义:操作系统的内核 + 操作系统的外壳程序

  • 内核:进程管理、内存管理、文件管理、驱动管理等
  • 外壳程序:给用户提供使用操作系统的工具,比如图形化界面、命令行等

狭义:操作系统的内核

设计操作系统的原因:(学校保安、食堂阿姨为学生管理好校园安全和食堂,学生可以好好读书)

  1. (保安对下级,校门,栅栏)对软硬件资源进行管理(手段)
  2. (保安对上级,学生,领导)为用户提供一个稳定的、安全的、高效的运行环境(目的)

理解操作系统的“管理”

基本概念:管理的本质不是对被管理对象的直接管理,而是对被管理者的数据做管理

情景一:日常生活中我们总是在决策和执行,对于学校校长而言他所做的大多数都是决策,学生是被管理者,校长是管理者,校长管理好学生不需要与学生进行接触

结论一:管理者不需要和被管理者直接接触,只需要拿到你的数据

情景二:一个学生有多种信息,但校长只关心与学习相关的或者一些基本的个人信息的数据,随着学生人数的不断增多,校长管理起来很困难,好在校长会写代码且校长想到了虽然这些数据很多,但是一些属性都是一样的只是值不一样,所以校长决定搞一个excel表格让辅导员安排学生进行填写,同时利用自己二把刀的计算机知识将每一个学生设定为一个特定名的结构体类型变量,最后将excel表格中的信息填入每一个学生的结构体中然后将这些结构体串联成一个链表,当某个学生的属性信息需要更改就遍历链表找到该学生后将结构体中的属性信息进行更改: 

结论二:对于任何对象的管理都是先描述后组织

补充:将多个被管理者对象进行描述形成它们各自的数据对象,然后根据这些数据对象选定一种特定的数据结构将这些数据对象组织起来,此时对被管理对象的管理工作就转化成了对特定数据结构的增删查改,这就是一个基本的建模过程:

  1. 通过详细描述每个被管理者对象的属性、关系和特征,可以建立一个全面且准确的信息框架。这些描述可以包括个人资料、工作职责、项目进展等方面
  2. 在设计数据结构时需要考虑如何最好地组织这些信息以满足实际需求。常见的数据结构包括树形结构、图形结构或表格等形式,在此基础上选择适合需求场景的存储方式
  3. 一旦将被管理者对象按照特定数据结构组织起来,就可以利用数据库或软件系统进行增删查改操作。通过添加新成员、删除无效信息、查询所需内容以及更新相关记录等方式来有效地进行管理工作

问题1:为什么要学习数据结构?

答:数据结构讨论的是如何对一个一个对象管理,不同的数据结构决定了管理的策略和效率

问题2:数据结构的本质是?

答:用于组织和存储数据以便有效地访问和修改

问题3:容器(STL等)的本质是什么?

答:数据结构,可以容纳多个元素,并提供对这些元素进行添加、删除、查找等操作的方法

问题4:C++中封装的作用是什么?

答:描述对象

问题5:对于C++而言万物皆什么?在C++写代码前大多数情况都是干什么?

答:对象,对要管理的对象进行描述然后再进行组织

结论三:操作系统对下方层级内容管理的核心思想就是先描述后组织,将特定对象的管理变成对特定数据结构的增删查改(因此操作系统中有大量的数据结构大量的算法,各种队列之类的)

操作系统的六层结构

  • 硬件层:冯诺依曼体系结构相关内容
  • 驱动层:连接操作系统与硬件设备,为操作系统访问硬件提供接口
  • 操作系统层:内存管理、进程管理等
  • 系统调用层:存放操作系统为用户提供的接口,用户传参,操作系统操作,并将运行结果返回
  • 用户操作接口层:多种标准库,其中放了系统调用接口,库中的函数又会对应相应的调用接口
  • 用户层:进行开发,调用各种标准库库

注意事项:

1、驱动层的软件程序是由硬件厂商定义的

2、没有驱动层,在更换同种但不同版本的硬件设备时,新设备不能被操作系统正确识别和使用,有了驱动层,操作系统就不用直接管理硬件只用去调用相应的硬件接口,更换同种不同版本的硬件产生的差异会交给该类硬件对应的驱动程序去解决

3、用户必须使用系统调用的方式间接获取操作系统中的数据

4、操作系统不相信任何用户(害怕用户改数据)但是必须提供获取用户想要的数据的相关服务

5、系统调用层就可以有效避免用户直接访问并修改操作系统中数据而导致系统崩溃的问题(提供访问操作系统时的受管控的接口,你把钱从窗口给银行工作人员,工作人员进行操作,操作完之后工作人员会给告诉你结果,类似于类中的成员函数)

6、printf等想要使用硬件的函数一定是通过操作系统实现的

7、用户操作接口就相当于银行的大堂经理,帮助客户解决不知道该干啥的问题(一些大爷大妈去银行都不知道要干嘛,需要大堂经理进行引导先干什么后干什么)

8、不同操作系统提供的系统调用接口不同(返回值、函数名等),如果用户不用标准库,直接用操作系统提供的系统调用接口,那么Linux中写的代码在windows中就不能运行了,即不具备跨平台性,而使用标准库,标准库会根据不同的操作系统对某一函数可以调用的系统调用接口进行修改,用户只需要正常使用标准库即可,不用关心其它内容(在Linux中使用的C/C++标准库就是Linux版本的库,windows中用的就是windows版本的库)

9、操作系统层 + 系统调用接口层才是真正意义上的操作系统

~over~

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

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

相关文章

js表达式

js 数据: 字面量 1 123 变量 a 表达式 12 2*2 a&&b 表达式都会有一个返回结果。表达式仍然是数据,所有可以写字面量,变量的地方都可以写表达式 在JavaScript中,表达式中的运算符具有不同的优先级,这决定…

C++语言学习(二)——⭐缺省参数、函数重载、引用

1.⭐缺省参数 &#xff08;1&#xff09;缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void Func(int a 0) {cout<<a<<endl; } int…

什么是「第一性原理」?

生活中的诸多原则&#xff0c;宛如无形的锁链&#xff0c;束缚着我们的价值观、认知、信仰体系及学习推理的方式。 我们的观点&#xff0c;犹如被锁链牵引的风筝&#xff0c;随风飘摇&#xff0c;却始终无法挣脱这些原则的束缚。 我们的大脑&#xff0c;在思考的瞬间&#xf…

Redis 的主从复制、哨兵

目录 一. Redis 主从复制 1. 介绍 2. 作用 3. 流程 4. 搭建 Redis 主从复制 安装redis 修改 master 的Redis配置文件 修改 slave 的Redis配置文件 验证主从效果 二. Redis 哨兵模式 1. 介绍 2. 原理 3. 哨兵模式的作用 4. 工作流程 4.1 故障转移机制 4.2 主节…

创业成功三要素:定位、追求与舍得

一、引言 在这个充满挑战与机遇的商业世界里&#xff0c;每一位创业者都怀揣着梦想&#xff0c;期望能在商海中开辟一片属于自己的天地。然而&#xff0c;成功的创业并非易事&#xff0c;它需要我们深思熟虑&#xff0c;明确自己的方向&#xff0c;并做出明智的决策。马云&…

学习鸿蒙基础(12)

目录 一、网络json-server配置 &#xff08;1&#xff09;然后输入&#xff1a; &#xff08;2&#xff09;显示下载成功。但是输入json-server -v的时候。报错。 &#xff08;3&#xff09;此时卸载默认的json-server &#xff08;4&#xff09;安装和nodejs匹配版本的js…

加密无忧:SpringBoot中快速搭建安全的API接口

加密无忧&#xff1a;SpringBoot中快速搭建安全的API接口 项目介绍什么是RSA加密加密实战实战准备新建一个springboot项目引入maven依赖启动类Application中添加EnableSecurity注解在application.yml或者application.properties中添加RSA公钥及私钥对Controller 里面的API方法进…

Windows进程监视器Process Monitor

文章目录 Process Monitor操作逻辑 Process Monitor Process Monitor是 Windows 的高级监视工具&#xff0c;是Filemon Regmon的整合增强版本&#xff0c;实时显示文件系统&#xff0c;注册表&#xff0c;网络活动&#xff0c;进程或线程活动&#xff0c;资料收集事件&#x…

上位机图像处理和嵌入式模块部署(qmacvisual并发执行)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 类似于qmacvisual这样的软件&#xff0c;其实价格并不便宜。比如大家熟知的halcon、vision pro、vision master这样的软件&#xff0c;最便宜的版本…

【精品方案】智慧金融大数据分析平台总体架构方案

以下是部分PPT内容&#xff0c;请您参阅。如需下载完整PPTX文件&#xff0c;请前往星球获取&#xff1a; 1.实现数据共享 通过数据平台实现数据集中&#xff0c;确保金融集团各级部门均可在保证数据隐私和安全的前提下使用数据&#xff0c;充分发挥数据作为企业重要资产的业务价…

海外版 双语言爆点游戏 双语音指挥游戏 去中心化投注游戏 双声道音效游戏 附带安装教程

海外版双语言爆点游戏/纯vue源码版/去中心化投注游戏 系统为纯VUE源码&#xff0c;附带安装教程 前端只有一个爆点游戏能玩&#xff0c;去中心化无后台 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88991298 更多资源下载&#xff1a;关注我。

chromium源码学习-调试日志 LOG

在学习 chromium 源码时&#xff0c;我们经常需要增加调试日志&#xff0c;常见的用法一般是 // TurboNet.mm133134 LOG(INFO) << "TurboNet Engine started.";日志输出效果如下&#xff1a; 其中 INFO 代表当前这条日志的级别&#xff0c;使用的时候就是输…

网易云歌曲评论抓取

网易云歌曲评论爬取 步骤1.找到一首歌曲2.按下F12键打开开发者模式,对其进行抓包3.查找获得评论数据的接口4.对获得评论数据接口进行分析5.构建加密函数方法一方法二运行结果全部代码使用Js文件只使用python新的代码小结与展望这次的任务是获取网易云音乐下面的评论,涉及的知…

AI绘图:Stable Diffusion WEB UI 详细操作介绍:进阶-面部修复和调参

结合两篇文章完成了本地部署和基础操作,现在我们来介绍下进阶内容:面部修复,高清修复和调参区。 一:脸部修复 面部修复的适用在画真人、三次元的场景,特别是在画全身的时候 一般在画全身,由于脸部占比的空间比较小,那么绘制出来的效果就会比较差 1.面部修复 SD 支持…

C++核心编程——4.2(2)对象的初始化和清理

4.2.5 深拷贝与浅拷贝 浅拷贝&#xff1a;编译器提供的简单的赋值拷贝操作 深拷贝&#xff1a;在堆区重新申请空间&#xff0c;进行拷贝操作 示例&#xff1a; class Person { public://无参&#xff08;默认&#xff09;构造函数Person() {cout << "无参构造函数…

【复现】飞鱼星上网行为管理系统RCE漏洞_67

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 飞鱼星企业级智能上网行为管理系统是成都飞鱼星科技开发有限公司开发的一款上网行为管理路由器&#xff0c;专为中小企业、政府机…

Unity之PUN实现多人联机射击游戏的优化(Section 2)

目录 &#x1f3ae;一、准备工作 &#x1f3ae;二、实现手雷投掷动作 &#x1f3ae;三、手雷投掷同步 &#x1f4a4;3.1 photonView.RPC &#x1f3ae;四、同步手雷伤害 这几周都给我布置任务了&#xff0c;最近可忙。现在终于有机会更新了&#xff0c;也谢谢大家的阅读&a…

flink1.18源码编译后standalone模式-master启动

1、编译成功后 2、准备运行环境 • 在项⽬根⽬录下&#xff0c;创建如下两个⽂件夹&#xff1a; • 找到如下⼦模块&#xff0c;并展开如图 • 将上图中conf下的⽂件&#xff0c;拷⻉到项⽬根⽬录下创建的conf下 • 将上图中的lib下的jar包&#xff0c;拷⻉到项⽬根⽬录下…

Android JNI 调用第三方SO

最近一个项目使用了Go 编译了一个so库&#xff0c;但是这个so里面还需要使用第三方so库pdfium, 首先在Android工程把2个so库都放好 在jni中只能使用dlopen方式&#xff0c;其他的使用函数指针的方式来调用&#xff0c;和windows dll类似&#xff0c;不然虽然编译过了但是会崩溃…

STL是什么?如何理解STL?

文章目录 1. 什么是STL2. STL的版本3. STL的六大组件4. 如何学习STL5.STL的缺陷 1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. …