【Linux】冯诺依曼体系结构

时间:2022-11-04 07:51:47

????前言

本篇文章进行操作系统中进程的学习!!!


????1、冯诺依曼体系结构

我们常见的计算机,如:笔记本,不常见的计算机,比如:服务器,它们都遵循冯诺依曼体系结构

【Linux】冯诺依曼体系结构


截至目前,我们所认识的计算机,都是有一个个的硬件组件组成:

  • 输入设备:键盘、话筒、鼠标、摄像头、网卡和显卡等等

  • 输出设备:显示器、音响、磁盘、网卡和显卡等等

  • *处理器(CPU):含有运算器和控制器等

  • 存储器:存储器就是一个内存


为什么输入设备和输出设备之间还要一块存储器呢?

木桶原理

  • CPU运算速度 > 寄存器 > L1~L3Cache(高速缓冲存储器) > 内存 >> 外设(磁盘) >> 光盘磁带

  • 外设不和CPU直接交互,而是和内存交换,CPU也是如此,CPU只与内存进行交互

  • 内存在我们看来,就是体系结构的一大缓存,为了解决CPU与外设速度不均的问题!!!

  • 从成本角度:寄存器 > 内存 > 磁盘,成本低,能获得较高的性能,让计算机蔓延全世界


关于冯诺依曼,必须强调几点:

  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取

  • 一句话,所有设备都只能直接和内存打交道

  • 我们编写的代码,要运行,必须加载到内存局部性原理

  • 几乎所有硬件,只能被动的完成某种功能,不能主动的完成某种功能,一般都是要配合软件完成的(OS+CPU)


我们平时在qq跟网友聊天,是怎么实现的呢?(省略网络)

【Linux】冯诺依曼体系结构

聊天时传输文件呢?

【Linux】冯诺依曼体系结构


????2、操作系统(Operator System)

????2.1、概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS),它包含:

  • 内核(进程管理,内存管理,文件管理,驱动管理)

  • 其他程序(例如函数库(API), shell程序等等)

设计OS的目的:

  • 与硬件交互,管理所有的软硬件资源

  • 为用户程序(应用程序)提供一个良好的执行环境

定位:

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

????2.2、如何理解管理

概念:

  • 我们人与人之间的管理是通过管理者发出决策后,然后通过执行者去完成的这个过程

  • 执行者拿到被管理者对象的数据后,将执行的结果反馈给管理者

管理的本质:

  • 对数据进行管理

  • 不是对被管理对象直接进行管理,而是只要拿到被管理者对象所有的相关数据后。管理者对数据的管理,就可以体现出间接的对人管理

管理的核心理念:先描述,再组织

  • 人认识世界的方式:通过属性认识世界的

  • 在面向对象的语言中:我们经常说“”一切皆对象

  • 一切事物都可以通过抽取对象的属性,来达到描述对象的目的

// 比如有一个学生,可以通过它的属性去描述它
class Student
{
// 学生的属性 -- 学号、名字、身高、体重等等...
private:
	string name;	// 名字
	string Id;		// 学号
	int height;		// 身高
	int weight;		// 体重
};

管理理解一:管理的本质其实是对数据的管理

【Linux】冯诺依曼体系结构

管理理解二:

【Linux】冯诺依曼体系结构


总结:

  1. 计算机管理硬件,通过描述属性,用struct结构体

  2. 组织起来,用链表或其他高效的数据结构来进行管理


????3、进程

????3.1、概念

进程的基本概念:

  • 课本概念:程序的一个执行实例,正在执行的程序等

  • 内核观点:担当分配系统资源(CPU时间,内存)的实体

  • 操作系统中有内存管理、进程管理、文件管理和驱动管理,而进程是它们中的一种

描述进程(PCB):

  • 进程信息会被放在一个叫进程控制块的数据结构中,可以理解为进程属性的集合

  • 课本上称之为PCB(process control block),Linux操作系统下的PCB是:task_struct

task_struct是PCB中的一种:

  • 在Linux中描述进程的结构体叫做task_struct

  • task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息

【Linux】冯诺依曼体系结构