做淘宝网站要多少钱,软文代写自助发稿平台,飞机多少钱一架,建设信源网站文章目录 一、冯诺依曼体系#xff08;Von Neumann Architecture#xff09;1. 概述2. CPU 二、操作系统#xff08;Operating System#xff09;三、进程(process)/任务(task) 一、冯诺依曼体系#xff08;Von Neumann Architecture#xff09;
1. 概述 分类 CPU 中央处… 文章目录 一、冯诺依曼体系Von Neumann Architecture1. 概述2. CPU 二、操作系统Operating System三、进程(process)/任务(task) 一、冯诺依曼体系Von Neumann Architecture
1. 概述 分类 CPU 中央处理器: 进行算术运算和逻辑判断.存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)输入设备: 用户给计算机发号施令的设备.输出设备: 计算机给用户汇报结果的设备. 针对存储空间硬盘 内存 CPU 针对数据访问速度CPU 内存 硬盘
2. CPU
1如何衡量一个CPU的好坏 通过主频/频率CPU的时钟频率数值越大CPU越好
主频CPU执行的每个操作的最小单位称为“指令”写的一个程序往往里面包含很多指令可以简单理解为1Hz 一秒钟能够执行1个指令1.9GHz就是一秒钟能执行19亿条指令有的指令需要消耗好几个Hz但是大部分指令1Hz就够了主频是动态变化的还可以通过给CPU加电压的方式提高主频
2与显卡的区别
显卡的本质和CPU是一样的CPU是“通用计算芯片”GPU是“专用计算芯片”。CPU计算能力比GPU更强能执行复杂的计算但是CPU只有一个显卡有很多个且进行简单运算时很快。显卡是用来显示图形的图形的显示需要大量且简单的计算这种用CPU也能算但是大材小用用GPU算更加合适现在显卡也可以用于AI也需要进行大量且简单的运算
3寄存器(Register)
存储 是个存储数据的单位是CPU的一部分寄存器存储空间更小访问速度更快成本更高掉电后数据会丢失 寄存器的速度和内存速度的差距极大是3-4个数量级内存上现在有16GB服务器上256GB512GB也有寄存器一般就几十个字节或者几百个字节甚至连几kb都达不到 用途辅助CPU完成指令的执行一条指令不仅仅是指令本身还包括操作数操作数通常就是在寄存器中保存的
4缓存 由于寄存器和内存之间速度和空间上的差异太大难以协调工作所以CPU又引入了“缓存”来调和两者之间的速度和空间。比如CPU上要进行一系列运算在运算过程中要反复用到一组内存中的数据这些数据要频繁使用需要频繁访问内存同时这些数据又比较多在寄存器里存不下这时候就可以放到缓存之中 缓存的存储空间介于寄存器和内存空间后由于寄存器和内存之前差距太大CPU又搞了二号缓存、三号缓存…… 二、操作系统Operating System 操作系统是一组做计算机资源管理的软件的统称。对下要管理各种硬件设备对上要给各种软件提供一个稳定的运行环境 目前常见的操作系统有Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。 操作系统把硬件屏蔽起来对软件这里提供出一组API(系统调用)让软件来调用这样每个写软件的人就不需要考虑硬件的差别和兼容性 三、进程(process)/任务(task) 作用满足“并发编程”这样的需求可以在多核心CPU的背景下让应用程序中的代码可以把多个核心充分的利用起来不至于一核有难多核微观 1.概念 正在运行的程序 同一个程序执行多次就可能会产生出多个进程平时所说的程序指的是一些exe的可执行文件是静态的得是把程序运行起来双击此时操作系统会把可执行文件中的数据和指令加载到内存中并且让cpu去执行这里的指令完成一系列相关的工作才能说是“进程”进程能够干活说明进程能够消耗一定的硬件资源。可执行程序只是占用了硬盘空间而进程会消耗CPU资源、内存资源、硬盘、网络带宽 比如下载操作下载的是一个程序是静态的没法执行任何操作但是安装就是真正运行起来成为进程了 进程是系统分配硬件资源的基本单位java的生态不鼓励多进程编程
2.管理 当进程非常多的时候就需要管理进程 1步骤
先描述 会使用一个专门的结构体C语言的结构体操作系统主要都是C/C实现的结构体就是一个低配的类 叫PCB进程控制块这是通用叫法各种系统用来描述进程的部分都可以称为PCB来记录一个进程里面的各个属性 Linux中的PCB在源码中是一个task_struct结构体 再组织 使用一系列的数据结构把多个进程进行一个有效的组织随时方便进行遍历查找汇总数据……LInux通常是使用双向链表把多个PCB结构体串起来来进行组织 当使用双向链表来组织时 查看进程的列表本质就是在遍历这个链表创建一个进程就是创建了一个PCB结构体并且插入到链表上销毁一个进程就是把这个PCB结构体从链表上删除并释放
2PCB里的信息
pid进程的标识 同一个系统上统一时刻中每个进程的pid一定都是不同的。ps.有的时候运行的一个exe文件实际可能会涉及多个进程内存指针表示了该进程对应的内存资源是什么样的 里面最主要存储的就是从exe可执行文件中加载过来的指令和数据还有一些运行过程中的中间结果之类的数据 指令二进制的指令是程序员开发这个程序后最终编译生成的结果也就是代码的逻辑然后进一步的再交给CPU来执行。指令就是一个剧本进程就是演员。数据执行的这些指令会依赖到一些数据 文件描述符表 硬盘是硬件应用程序一般是没法直接接触到“硬件”这一层的于是操作系统抽象了“文件”这样的概念应用程序操作的是文件文件实际上是存储在硬盘上的。而“文件描述符表”就是记录当前这个进程正在使用哪些文件fopen先打开fread 再使用fwritefclose最后关闭操作系统打开一个文件就会产生一个“文件描述符”相当于是文件的身份标识只在进程内部生效会使用文件描述符表类似于数组把文件描述符组织起来
3.进程的调度和多核心CPU
每个进程想要执行里面的指令完成对应的任务都需要在CPU上执行。但是一台机器上只有一个CPU同一时刻的进程却有很多个为了解决这个问题引入了进程的调度以及多核心的CPU
1多核心的CPU 早期的CPU都是单核心的即一个CPU上只有一个场地同一时刻只能让一个进程在里面运行。当单核心的集成程度没法提高时工程师开始增加核心的个数。比如双核CPU一个顶俩。甚至超线程技术让一个CPU的核心一个顶俩即一个CPU核心是一个物理核心相当于两个逻辑核心 CPU只有一个但是给进程提供的舞台不只有一个现在的CPU都是多核心的
2进程的调度
并行同一时刻两个进程同时运行在两个CPU逻辑核心上并发两个进程在同一个舞台上轮着上由于CPU切换进程速度极快微观上这俩进程是串行执行的宏观上看起来这俩进程就是“同时”执行的。操作系统在调度这个进程的时候可能是按照并行来的也可能是按照并发的方式来的在应用程序这一层是感知不到的只有在系统内核中能感知到相当于下属只知道那天要自己当班但是不知道具体是怎么安排的安排的是专门的负责人。也因为宏观感知上都差不多所以会有“并发”代替“并发”“并行”
3PCB中关于进程调度相关的属性 这些属性也描述了进程对应的CPU资源的使用情况 状态 就绪状态一个进程已经随时做好了在CPU上执行的准备阻塞状态/睡眠状态有的时候进程没有准备好被调度到CPU上状态是可以转换的进程在系统中状态还有很多种但是上述两种最关键 优先级 系统给进程进行调度的时候并不是完全公平的会根据优先级的不同来决定时间分配的权衡即把系统资源调配给更重要的进程 上下文 因为进程是轮着上的如果一次运行不完就需要保证下次上CPU运行的时候能够读档即实现存档和读档的效果。对于操作系统来说所记录的上下文就是该进程在执行过程中CPU的寄存器中对应的数据这些寄存器有的是存一些中间结果有的是存一些特定含义的数据比如下一条指令是在哪里当前的函数调用关系等这些寄存器中的数据就需要在进程离开CPU之前都保存好。下次该进程回到CPU执行就可以把PCB中的上下文里的数据恢复到对应的寄存器中这个时候进程就能实现“读档”的操作了 记账信息 相当于是一个统计信息会统计每个进程在CPU上都执行多久了执行了多少指令是对进程的调度工作进行一个“兜底”不让某一个进程排的时间太多或太少
4虚拟地址空间
使用场景每个进程都需要一定的内存资源早期的操作系统就是直接把物理内存分配给进程某块内存给哪个进程但是一旦某个进程内部代码写出bug内存越界访问了就可能会影响到别的进程为了解决这个问题操作系统引入了“虚拟地址空间”这样的概念 这样设定之后每个进程的有效的虚拟地址都是固定范围进程使用该虚拟地址的内存都需要操作系统进行转换成物理地址的过程这个转换过程中就可以针对虚拟地址是否有效作出一个校验 校验系统自动检查看是否出现非法的地址的使用能够及时地通知这个进程甚至直接让进程挂掉避免影响到其他的进程提高了整个系统的稳定性。 在虚拟空间地址的加持下进程具有了“独立性”每个进程有自己的虚拟地址空间一个进程无法直接访问或者修改其他进程虚拟地址空间的内存强化了系统的稳定性
5进程间通信 在进程隔离性的基础上放松一点让进程能够有限制的进行相互影响。本质上是找一个公共的区域多个进程都能访问到的区域借助公共区域来完成数据的交换