【Linux】冯诺依曼体系结构和操作系统

news2024/11/13 16:16:29

目录

一、冯诺依曼体系结构

1.组成

2.各结构特性

二、操作系统

1.概念

2.设计OS的目的

3.如何理解 "管理"

4.系统调用


一、冯诺依曼体系结构

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

1.组成

截至目前,我们所认识的计算机,都是有一个个的硬件组件组成
  • 输入单元:包括键盘, 鼠标,扫描仪, 写板等
  • 中央处理器(CPU):含有运算器和控制器等
  • 输出单元:显示器,打印机等

注意:

  1. 上图所说的存储器是内存,内存里的数据掉电易失去。
  2. 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  3. 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。这里的外设是相对于内存和CPU而言的。有些输入设备也是输出设备,例如:磁盘。
  4. 一句话,所有设备都只能直接和内存打交道

2.各结构特性

结构作用速度
CPU计算非常快
存储器(内存)临时存储
外设永久存储较慢

CPU其实很笨,只能被动的接受别人的指令、数据,所以CPU必须先认识别人的指令,CPU有自己的指令集(精简指令集和复杂指令集),我们写代码、编译的本质就是生成二进制可执行文件来让CPU来识别指令。

为什么会有内存这个东西呢?直接让外设和CPU打交道不好吗?

这是因为CPU和外设的处理速度差太多了,就像我们熟知的短板效应, 如果直接让外设和CPU打交道,那就太浪费CPU的资源了。所以我们能够知道,在数据层面CPU只和内存打交道,目的是为了提高整机效率。

程序要运行必须要加载到内存中!CPU要读取我的代码我的数据,只能从内存中读取!这是由体系结构规定的。

外设中的数据在内存中输入输出的过程,叫做IO的过程。

那么谁来帮我们处理内存中的数据呢?操作系统!


二、操作系统

1.概念

操作系统是一个进行软硬件资源管理的软件。

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

2.设计OS的目的

与硬件交互,管理所有的软硬件资源(手段) ,为用户程序(应用程序)提供一个良好的执行环境(目的)。
   

3.如何理解 "管理"

以学校为例,校长需要管理全校所有的学生,但是校长并不需要直接和学生见面来管理学生,学生所有的数据,早就已经被校方拿到了手里,而且一直在更新,学校管理学生的本质其实是管理学生的数据。而校长只需要对重大事情做决策即可。做完决策之后,各班主任就会按照学生的数据来进行相应的管理并反馈给校长。

管理学生的数据,分为两步:

  1. 先描述
  2. 再组织

学生虽然不同,但是信息种类都是一样的,例如:都有姓名、性别、种族、身高、体重等等。我们通过描述出一个学生结构体,再通过合适的数据结构知识将学生信息组织起来。

同样的,操作系统管理硬件,是不需要直接和硬件打交道的。,每个硬件会有对应的描述结构体,驱动程序拿到对应硬件的数据传递给操作系统,操作系统通过管理对应的描述结构体来组织管理这些硬件。

总结:

  1. 管理的本质:对数据做管理
  2. 管理的方法:先描述,再组织。

  

4.系统调用

如果任何人都可以随意操作系统中的数据,那么操作系统很容易被破坏。然而操作系统还需要为我们提供一系列的服务。为了解决这个问题,操作系统提供了很多接口供我们使用,这种调用操作系统接口的方式叫做系统调用

我们通过指令操作、编程操作和使用界面实际上都是通过不同的方式去调用系统接口来实现我们的目的。

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

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

相关文章

浅析故障电弧探测器在电气防火中的作用与应用介绍

安科瑞 李雨轩【摘要】: 分析了重大电气火灾数据。结合目前国内前沿的电气火灾探测技术,重点介绍了故障电弧式电气火灾监控探测器在火灾预警系统中的重要作用,给出了基于多种探测技术的电气火灾监控系统的实现方案。【关键词】:故…

C++模板初阶小笔记

目录 一.泛型编程 二.函数模板 1.函数模板语法梳理: 2.函数模板的实例化: 3.函数模板的显式实例化: 4.函数模板使用时的注意事项 三.类模板 1.类模板的语法梳理 2.类模板中声明和定义分离的成员函数 一.泛型编程 泛型编程&#xff…

【C++】类和对象---什么是类?

目录1.面向过程和面向对象初步认识2.类的引入2.1使用struct定义类3.类的定义3.1类的两种定义方式:3.2成员变量命名规则的建议3.3成员函数与成员变量定义的位置建议4.类的访问限定符及封装4.1访问限定符4.2封装5.类的作用域6.类的实例化7.类对象模型7.1如何计算类对象…

Kali Linux渗透

Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。 黑盒测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情…

从C语言的使用转换到C++(上篇)——刷题、竞赛篇

文章目录 一、C的基础语法详解 1、1 输入、输出流 1、2 C中头文件的使用 1、3 C中变量的声明 1、4 C中的string类 1、5 C中的引用& 二、C中常见函数使用详解 2、1 排序sort函数详解 2、2 cctype头文件中的函数 三、总结 标题:从C语言的使用转换到C(上…

④【Spring】IOC - 基于注解方式 管理bean

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 注解管理Bean一、注解的功能二、四个典型注解三…

day24|491.递增子序列、46.全排列、47.全排列 II

491.递增子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况…

源码深度解析Spring Bean的创建,手把手的一步一步带你看源码

在源码深度解析Spring Bean的加载 中对Bean的加载源码进行了梳理,在本文将对bean的创建进行梳理 在doGetBean()方法中createBean()方法准备创建bean,调用源码如下: createBean() 方法的源码如下: 从代码中可以得出,createBean() 方法涉及4个步骤: 步骤一: 根据设置的class属…

[论文笔记]A ConvNet for the 2020s

目录 Abstract Modernizing a ConvNet: a Roadmap 2.1.Training Techniques 2.2. Macro Design 2.3. ResNeXt-ify 2.4. Inverted Bottleneck 2.5. Large Kernel Sizes 2.6. Micro Design 论文:https://arxiv.org/abs/2201.03545 代码:GitHub - f…

扩散模型(Diffusion model)代码详细解读

扩散模型代码详细解读 代码地址:denoising-diffusion-pytorch/denoising_diffusion_pytorch.py at main lucidrains/denoising-diffusion-pytorch (github.com) 前向过程和后向过程的代码都在GaussianDiffusion​这个类中。​ 常见问题解决 Why self-condition…

盒相关样式-----diaplay:block、inline

盒的基本类型 CSS中的盒分为block类型与inline类型,例如, div元素与p元素属于block类型, span元素与a元素属于inline类型。 block类型的盒对应的是html中的块级元素,inline类型的盒对应了html中的行内元素。 行内元素与块级元素…

JavaScript 练手小技巧:键盘事件

键盘事件应该是鼠标事件之外,使用频率最高的 JS 事件了吧? 一般用于全局或者表单。 键盘事件由用户击打键盘触发,主要有keydown、keypress、keyup三个事件。 keydown:按下键盘时触发。Ctrl、Shift、Alt 等和其它按键组合时&…

BCNF与3NF

今天学了一下午这个BCNFBCNFBCNF与3NF3NF3NF,有感而发,特来总结。好像好久不打键盘了,这手好像刚长出来的一样。本文浅显的分析一下两种范式的关系与不同以及判断方法和分解算法,以做总结。 BCNFBCNFBCNF范式的定义如下: 设属性集…

linux 常用指令大全

目录一、基本指令指令基本格式1、ls1.1 ls相关选项2、pwd3、cd4、mkdir4.1、mkdir相关选项5、touch6、cp6.1 cp相关选项7、mv8、rm8.1、rm相关选项9、输出重定向10、cat11、df11.1、df 相关选项12、free12.1、free 相关选项13、head13.1、head相关选项14、tail14.1 tail相关选项…

day13 二叉树 | 144、二叉树的前序遍历 145、二叉树的后序遍历 54、二叉树的中序遍历

二叉树基础 二叉搜索树 二叉搜索树是一个有序树。 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树 下面这两棵…

零食商城|基于springboot的零食商城

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

GuLi商城-简介-项目介绍、分布式基础概念、微服务架构图

一、项目简介 1 、项目背景 1 )、电商模式 市面上有 5 种常见的电商模式 B2B、B2C、C2B、C2C、O2O; 1 、 B2B 模式 B2B (Business to Business), 是指商家与商家建立的商业关系。 如:阿里巴巴 2 、 B2C 模式 B2C (Business…

Win7安装高版本的NodeJS方法,亲测可用

Win7安装高版本的NodeJS方法 正常情况下,Win7所能支持的Node.js最高版本为:V13.14,在开发过程中,git下来的项目由于node版本比较高的原因,好多package都不能还原或出现诸多警告 网络大神分享的安装高版本的方法: 1、…

Express 通过 CORS 或 JSONP 解决跨域问题

文章目录参考描述同源策略同源同源策略示例CSRF 攻击解决跨域问题CORSCORS 响应头部Access-Control-Allow-Origin简单请求预检请求预检请求包含的两次请求解决CORS 中间件使用 CORS 中间件处理跨域请求JSONP通过原生 JS 向服务器端发起 JSONP 请求通过 jQuery 向客户端发起 JSO…

mysql:如何在windows环境下配置并随意切换两种mysql版本

系列文章目录 文章目录系列文章目录前言一、去官网下载zip安装包二、配置创建my.ini文件2.环境变量3、使用管理员身份打开dos命令窗口4、安装mysql8的服务和初始化data5、启动6 错误解决:修改mysql8服务的注册表最后前言 之前安装过5.7的版本 后来由于需要 就安装了…