Linux 进程前篇(冯诺依曼体系结构和操作系统)

目录

一.冯诺依曼体系结构

1.概念

 2.硬件层面的数据流

 3.总结加补充

二.操作系统 (Operating System)

1.概念

2.设计OS的目的 

3.定位 

 4.操作系统的管理

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


在我们认识进程之前,我们先了解什么是冯诺依曼体系结构

一.冯诺依曼体系结构

1.概念

冯 • 诺伊曼结构,是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。

冯·诺伊曼理论的要点是:计算机的数制采用二进制逻辑;计算机应该按照程序顺序执行。人们把冯·诺伊曼的这个理论称为冯·诺伊曼体系结构。

这是数学家冯·诺伊曼于 1946 年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 

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

我们用的电脑基本都是一个个硬件组成起来的

输入设备: 键盘、鼠标、扫描仪、写板、磁盘等。

输出设备:显示器,打印机等。

由运算器和控制器组成的CPU:运算器完成加、减、乘、除等算术运算以及与、或、非、异或等逻辑运算以及移位、补位等运算。 控制器从内存中取指令、翻译指令、分析指令,然后根据指令的内存向有关部件发送控制命令,控制相关部件执行指令所包含的操作。

存储器:存储程序和各种数据,但都要以二进制文件形式存储

冯诺依曼体系结构的计算机该如何工作呢?

输入设备输入数据时,先将数据放到存储器里储存,因为存储器自己是没有计算能力的,所以CPU读取存储器里的数据进行运算和逻辑操作,并通过一些方式写回到存储器中,最后输出设备从存储器中读取数据

为什么不直接将数据放入CPU运算输出,而是先放入存储器中,通过CPU的运算再输出呢? 

从效率层面上说

CPU寄存器 >  L1~L3Cache > 内存 > 外设(磁盘)> 光盘磁带

CPU读取速度最快效率更高,而输入设备和输出设备又非常的慢,如果没有存储器(也就是内存),那么整体的效率是非常慢的。

所以我们要先把数据放到存储器中,再让 CPU 一级一级的去访问,而且 CPU 在运算的同时,输入/输出设备还可以继续将数据写入内存或从内存中读出,这样就可以将 IO 的时间和运算的时间重合,从而提升效率。 

 2.硬件层面的数据流

通过了解冯诺依曼体系结构,通过对在QQ上发送信息就行描述数据的流动过程

在 QQ 上发送消息,数据的流动过程:

        电脑联网后,我用键盘敲下要发送的消息:“在吗?”,此时输入设备是键盘,键盘将该消息写入到内存中,CPU 间接从内存中读取到消息。对其进行运算处理后,再写回内存,此时输出设备网卡从内存中读取消息,并经过网络发送到对方的网卡,同时输出设备显示器从内存中读取消息并刷新出来,显示在我的电脑上。

        我朋友的电脑的输入设备是网卡,接收到消息后,网卡将该消息写入到内存中,CPU 间接从内存中读取到消息,对其进行运算处理后,再写回内存,此时输出设备显示器从内存中读取消息并刷新出来,显示在我朋友的电脑上。

所以硬件层面的数据流:

 键盘(输入设备)→内存→CPU→内存→网卡→网卡经过网络到对方网卡→内存→CPU→内存→显示器(输出设备)

 

 3.总结加补充

关于冯诺依曼,必须强调几点:
  • 这里的存储器指的是内存。
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  • 一句话,所有设备都只能直接和内存打交道。

二.操作系统 (Operating System)

1.概念

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

2.设计OS的目的 

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

3.定位 

在整个计算机软硬件架构中,操作系统的定位是: 一款纯正的“搞管理”的软件

 4.操作系统的管理

操作系统是纯正的"搞管理"的软件,那该如何管理呢?

其实是六个大字:先描述,后组织

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件 

我们在学校里面很少见到校长,说明管理者和被管理者可以不见面和直接打交道(就像公司里的员工和董事长平时并不见面和直接打交道)。

既不见面又不直接打交道,那么校长如何对学生进行管理呢?校方又是如何知道你是该学校的学生呢?

因为你的个人信息在学校的系统中,所以你是该学校的学生。

 举个例子:

比如 23 级计科专业有 50 名学生,我们想要给其中特定的一名学生发奖学金,那是否需要校长跑到该专业学生的宿舍里面挨个询问同学们的各科成绩和学分绩点是多少呢?显然不是的,当他想要做发奖学金这个决策时,他只需要通过学校的教务系统,拉取 23 级计科专业 50 名学生的名单,按照学分绩点来进行排名,在排名后再根据其它的一些要求,综合一批数据来做出一个决策:给张三同学发奖学金。当校长做完决策后,通知计科专业的辅导员过来,让他开个表彰大会奖励下张三同学。辅导员说:“好的,校长。”,此时辅导员就开始做执行。

以上就完成了一个管理过程。

既然是管理数据,就一定先要把学生的个人信息抽取出来,而抽取要管理的数据的这个过程,就可以称之为:描述学生。


C 语言用什么来描述学生呢?

C 语言用 struct 结构体来描述学生。如果要管理 1w 个学生,那就有 1w 个结构体变量,每个结构体变量里面保存着每一个学生的所有信息。

// 描述学生
struct student
{char name[10];  //名字char sex;       //性别int age;        //年龄double score;   //分数char addr[100]; //家庭住址// ...
};

 

如果我们想找出成绩最好的同学,只需要将其每个同学的成绩拿出来进行比较即可。但如果每个结构体变量之间没有任何关联的话,是不方便进行管理的,也很难快速找到成绩最好的同学。

这个时候就需要将这些结构体变量组织起来,比如在 struct 中包含一些指针信息,将所有的结构体变量链接起来,此时就形成了一个双链表。

校长要管理学生,只要有双链表的头指针就行。如果校长想要开除某位学生,只需要遍历双链表,再将该学生所属的节点从双链表中删除即可;如果有新生报到,只需要将该学生所属节点插入到双链表中即可。所以校长并不是单独对一个人进行管理的,而是将学生的个人信息组织起来,对数据结构进行管理。

经过上面的过程,最终我们就将对学生的管理工作转化成对双链表的增删查改操作。

结论:

所有管理的工作,本质上就是对数据的管理。

管理的本质:先描述,再组织。

 

我们在实际生活中的管理变成了对某种数据结构下的结构体变量的管理,这是操作系统管理的本质。

  1. 描述起来,用 struct 结构体。
  2. 组织起来,用链表或其他高效的数据结构(不同的数据结构决定了不同的增删查改的特征和效率,也决定了不同的组织方式)。

在计算机中,校长通常指的是操作系统,辅导员可以称为驱动,学生可以称为软硬件。 

 

操作系统不会直接和硬件(比如磁盘,网卡,鼠标)打交道,而是通过驱动程序和硬件打交道,那操作系统怎么去管理硬件呢?

先描述,再组织。所以操作系统要描述各种各样的硬件,然后形成特定的数据结构,对硬件的管理,最后变成了对数据结构的管理。

举例:操作系统要管理磁盘,那得要有一个描述硬盘的 struct 结构体,而描述一个事物,通常用的是事物的属性,比如磁盘的大小、磁盘的型号等等;操作系统卸载一个硬件,并不是要把这个硬件从电脑中拆卸走,而是把这个硬件对应的描述信息给删除掉。

所以操作系统为了管理好被管理对象,在系统内部维护了大量的数据结构。

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

硬件部分 

遵循冯诺依曼体系结构

驱动程序

操作系统中默认会有一部分驱动。如果有新外设,就需要单独安装驱动程序,该驱动程序会通过某种方式将该硬件的信息上报给操作系统,告诉操作系统,多了这个硬件。(驱动程序更多是一种执行者的角色)

操作系统 

操作系统最重要的四个功能:进程管理、内存管理、文件管理、驱动管理。

系统调用接口

  • 操作系统是不相信任何用户的,操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口。来获取系统内部的数据。但即使这样,系统调用接口用起来也不是特别方便。所以一般我们会在系统调用接口上再封装一层(比如:shell 外壳,系统库,部分指令,这些的底层一般都是封装的系统调用接口)
  • 不断的封装,也是为了让用户用起来更简单。比如:安装 C/C++ 环境时,系统会默认带上 C/C++ 标准库,这些库提供给用户的接口是一样的,但是底层可能不一样,在 Windows 中调用的就是 Windows 的系统接口,在 Linux 中调用的就是 Linux 的系统接口。

 用户调用接口

底层大都是封装的系统调用接口。

 6.库函数和系统调用的概念

  •  在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
  • 库函数:语言或者第三方库给我们提供的接口。(实际上我们使用的函数,底层一般就两种情况,要么调用了系统接口,比如 printf;要么没有调用系统接口,比如自己写的 add 函数,自己写的循环等)。
  • 系统调用:操作系统提供的接口。

 

 

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

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

相关文章

Redis 3.2.1在Win10系统上的安装教程

诸神缄默不语-个人CSDN博文目录 这个文件可以跟我要,也可以从官网下载:https://github.com/MicrosoftArchive/redis/releases 这个是微软以前维护的Windows版Redis安装包,如果想要比较新的版本可以从别人维护的项目里下(https://…

Unity-Mirror网络框架-从入门到精通之RigidbodyPhysics示例

文章目录 前言示例一、球体的基础配置二、三个球体的设置差异三、示例意图LatencySimulation前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开…

JAVA实现五子棋小游戏(附源码)

文章目录 一、设计来源捡金币闯关小游戏讲解1.1 主界面1.2 黑棋胜利界面1.3 白棋胜利界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载更多优质源码分享 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/145161039 JA…

深度学习图像算法中的网络架构:Backbone、Neck 和 Head 详解

深度学习已经成为图像识别领域的核心技术,特别是在目标检测、图像分割等任务中,深度神经网络的应用取得了显著进展。在这些任务的网络架构中,通常可以分为三个主要部分:Backbone、Neck 和 Head。这些部分在整个网络中扮演着至关重…

Jmeter如何进行多服务器远程测试

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。 我们一般都会用JMeter在本地进行测试,但是受到单…

摄像头模块在狩猎相机中的应用

摄像头模块是狩猎相机的核心组件,在狩猎相机中发挥着关键作用,以下是其主要应用: 图像与视频拍摄 高清成像:高像素的摄像头模块可确保狩猎相机拍摄出清晰的图像和视频,能够捕捉到动物的毛发纹理、行为细节及周围环境的…

[操作系统] 深入理解操作系统的概念及定位

概念 任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。 其核心功能如图片所示,包括: 内核 (Kernel): 内核是操作系统的核心部分,被认为是狭义上的操作系统,直接与硬件打交道。负责进程管理、内…

Jmeter 简单使用、生成测试报告(一)

一、下载Jmter 去官网下载,我下载的是apache-jmeter-5.6.3.zip,解压后就能用。 二、安装java环境 JMeter是基于Java开发的,运行JMeter需要Java环境。 1.下载JDK、安装Jdk 2.配置java环境变量 3.验证安装是否成功(java -versio…

postgresql分区表相关问题处理

1.使用pg_cron按日创建分区表,会出现所在数据库对应用户权限不足的问题。 原因是pg_cron运行在postgres数据库中,是用superuser进行执行的,对应的分区表的owner为postgres,所以需要单独授权对表的所有操作权限。不知道直接改变ow…

Agent一键安装,快速上手Zabbix监控!

目录 一、Linux操作系统部署Agent环境配置1、防火墙配置2、永久关闭selinux yum方式安装1、配置zabbix仓库2、安装agent3、配置 Zabbix-Agent 指向 Zabbix-Server4、启动agent服务 二进制包安装1、下载二进制包2、创建用户和目录及更改属主(组)3、解压二…

内存与缓存:保姆级图文详解

文章目录 前言1、计算机存储设备1.1、硬盘、内存、缓存1.2、金字塔结构1.3、数据流通过程 2、数据结构内存效率3、数据结构缓存效率 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的…

【大数据】机器学习-----模型的评估方法

一、评估方法 留出法(Holdout Method): 将数据集划分为训练集和测试集两部分,通常按照一定比例(如 70% 训练集,30% 测试集)。训练集用于训练模型,测试集用于评估模型性能。优点&…

人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)

Softmax回归听名字,依然好像是做回归任务的算法,但其实它是去做多分类任务的算法。 篮球比赛胜负是二分类,足球比赛胜平负就是多分类 识别手写数字0和1是二分类,识别手写数字0-9就是多分类 Softmax回归算法是一种用于多分类问题…

[系统安全] 六十一.恶意软件分析 (12)LLM赋能Lark工具提取XLM代码的抽象语法树(初探)

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…

一文掌握Docker

目录 1.快速入门 1.1.部署MySQL 1.2.命令解读 2.Docker基础 2.1.常见命令 2.1.1.命令介绍 2.1.2.演示 2.1.3.命令别名 2.2.数据卷 2.2.1.什么是数据卷 2.2.2.数据卷命令 2.2.3.挂载本地目录或文件 2.3.镜像 2.3.1.镜像结构 2.3.2.Dockerfile构建镜像 2.3.3.构建…

【网络编程】基础知识

目录 网络发展史 局域网和广域网 局域网(LAN) 广域网(Wan) 光猫 路由器 网线 设备通信的要素 IP地址 基本概念 地址划分 特殊地址(后续编程使用) IP地址转换 字节序 网络模型 网络的体系结…

细说STM32F407单片机窗口看门狗WWDG的原理及使用方法

目录 一、窗口看门狗的工作原理 1、递减计数器 2、窗口值和比较器 3、看门狗的启动 4、提前唤醒中断 二、窗口看门狗的HAL驱动程序 1、窗口看门狗初始化 2.窗口看门狗刷新 3.EWI中断及其处理 三、不开启EWI的WWDG示例 1、示例功能 2、项目设置 (1&…

Windows 蓝牙驱动开发-蓝牙设备栈

蓝牙设备栈 蓝牙驱动程序堆栈包含 Microsoft 为蓝牙协议提供支持的核心部分。 有了这个堆栈,已启用蓝牙的设备可以彼此定位并建立连接。 在此类连接中,设备可以通过各种应用程序交换数据并彼此交互。 下图显示了蓝牙驱动程序堆栈中的模块,以…

港科夜闻 | 香港科大与微软亚洲研究院签署战略合作备忘录,推动医学健康教育及科研协作...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与微软亚洲研究院签署战略合作备忘录,推动医学健康教育及科研协作。根据备忘录,双方将结合各自于科研领域的优势,携手推动医学健康领域的交流与合作。合作方向将涵盖人才培训、…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处:动态切换算法或行为场景:实现同一功能用到不同的算法时和简单工厂对比:简单工厂是通过参数创建对象,调用同一个方法(实现细节不同);策略模式是上下文切换对象,调用…