备案时暂时关闭网站,教室在线设计网站,网站建设需要自备什么,网站推广被封域名如何做跳转这里写目录标题 1.冯诺依曼体系2.CPU是怎么构成的3.指令表4.CPU执行代码的方式5.CPU小结#xff1a;6.编程语言和操作系统7. 进程/任务#xff08;Process/Task#xff09;8.进程在系统中是如何管理的9. CPU分配 -- 进程调度10.内存分配 -- 内存管理11.进程间通信 1.冯诺依曼… 这里写目录标题 1.冯诺依曼体系2.CPU是怎么构成的3.指令表4.CPU执行代码的方式5.CPU小结6.编程语言和操作系统7. 进程/任务Process/Task8.进程在系统中是如何管理的9. CPU分配 -- 进程调度10.内存分配 -- 内存管理11.进程间通信 1.冯诺依曼体系
CPU中央处理器进行算术运算和逻辑判断。存储器分为外存和内存用于存储数据二进制存储输入设备用户给计算机发送指令的设备输出设备计算机给用户汇报结果的设备 针对存储空间访问速度硬盘内存CPU 针对数据访问速度CPU内存硬盘
2.CPU是怎么构成的
门电路 半加速 全加速 加法器 ALU运算器(ALU是计算机中进行算数逻辑运算的核心部件是计算机的数学大脑)。 CPU以及其他的内存、硬盘等重要的设备都是由 门电路构成的。
3.指令表
指令(instruction) | 功能说明4位opcode | 操作的地址或者寄存器LOAD_A 从RAM 的指定地址将数据加载到A 寄存器。0010 4 位RAM 地址LOAD_B 从RAM 的指定地址将数据加载到B 寄存器0001 4 位RAM 地址STORE_A将数据从A 寄存器写入RAM 的指定地址0100 4 位RAM 地址ADD计算两个指定寄存器的数据的和并将结果放入第二个寄存器 1000 2 位的寄存器ID2 位的寄存器ID
寄存器是CPU上存储数据的单元。CPU上能直接存的数据比较少这些寄存器主要是为了支持CPU完成一些计算保存中间结果的。
4.CPU执行代码的方式 上面一段指令其实就是内存中的一段数据写好的代码最终要运行的话都需要让操作系统先把写好并编译好的指令加载到内存中然后CPU才能执行。 假如从0号地址开始执行程序CPU就会从0号地址读取数据到CPU寄存器里并且对这个指令进行解析即查指令表看指令的具体操作。 前4位0010是opcode参数即查指令表LOAD A从内存中读取数据到A寄存器中。后4位1110是内存地址十进制的14。 CPU 接着从内存中读取指令并解析
0001LOAD B1111就是15号内存地址。
CPU接着从3地址读取指令1000为add01为B00为AA寄存器的编号是00B的编号是01而这些都是指令表里提前约定好的。把**这两个寄存器的内容进行相加结果保存到第二个操作数A的寄存器中 CPU接着读取3号地址的指令** 0100STORE A110113地址;把A寄存器中的值写入到13这个地址上。**
5.CPU小结
CPU要执行的指令是在内存中的冯诺依曼结构的基本设定让执行单元和存储单元进行了 解耦合** CPU想要执行指令必须先读取指令再解析指令然后才能执行指令**取指令需要从内存中读取指令到CPU的寄存器中上面CPU读取解析和执行指令没有体现出存储指令的寄存器只体现了AB用来计算数据的寄存器因为读取内存操作相对于CPU执行计算开销大很多所以读取指令的操作是非常耗时的因此CPU通过缓存流水线等技术来优化这里的效率。CPU解析指令的时候需要用到指令表而不同架构的CPU支持的指令表不同x86和arm等是不同的指令表细节已经写死到CPU中了CPU是可以很容易识别的指令在执行过程中可能会带有一些操作数不同的指令操作数的个数含义都有所不同CPU重要的参数主频表示的含义就可以近似看成一秒中之内CPU能够执行的指令个数
6.编程语言和操作系统
编程语言高级语言经过编译、链接 》汇编语言 经过汇编 》机器语言。
高级语言的一条语句往往对应多条指令才能完成。
操作系统是一组做计算机资源管理的软件的统称。计算机系统的分层视图 7. 进程/任务Process/Task
进程就是操作系统提供的一种“软件资源”比如我们电脑正在运行的程序就可以称为是”任务“也叫进程而我们现在所用的系统都属于多任务操作系统即同一时刻可以运行多个任务。而单任务操作系统同一时刻只能运行一个程序比如以前的山寨机单任务系统就是没有后台运行要执行另一个程序就需要先退出前一个程序。每个任务在执行过程中都需要消耗一定的硬件资源计算机中的每个进程在运行的时候都需要给他分配一定的系统资源进程是系统分配资源的基本单位。
8.进程在系统中是如何管理的
操作系统的进程管理
先描述即使用类/结构体这样的方式把实体属性给列出来表进程信息的结构体PCB进程控制块Process Control BlockPCB是操作系统中的通用概念比如Windows上表进程的结构和Linux也都可以称为PCB。再组织即使用一定的数据结构把这些结构体/对象串到一起。在Linux中使用链表这样的数据结构来把若干个task_struct串起来。
PCB中的一些核心属性
pid进程的身份标识。此处通过一个简单的不重复的整数来进行区分的系统会保证同一个机器上同一个时刻每个进程pid都是唯一的。内存指针描述了进程使用内存资源的详细情况。进程运行过程中需要消耗一些系统资源的其中内存就是一种重要的资源。而整个系统中内存这么多并不是可以随意使用的只有先从系统这里申请系统给你分配一块才能使用。每个内存都必须使用自己申请到的内存。列如双击一个exe就会运行进程这个过程中就是系统先把exe这个文件的内容包含了指令和数据先加载到内存中然后再创建进程让进程开始执行。文件描述符表描述了这个进程所涉及的硬盘相关的资源。存储器 内存外存硬盘、软盘、光盘、U盘。。操作系统不管什么盘都是按照”文件“的方式来进行操作的。一个进程想要操作文件需要先打开文件即让进程在文件描述符表中分配一个表项构造一个结构体表示这个文件的相关信息。
注意进程是系统分配资源的基本单位。 一个进程消耗CPU资源就好比CPU是个大舞台进程要执行的指令就是演员一个CPU可能有一个核心也可能有多个核心每个核心都是舞台演员进行表演登上舞台才能表演同一时刻一个舞台只能有一个演员让多个演员轮流登台即引出分时复用。即某电脑的CPU有16个逻辑核心系统上的进程不止16个其他进程分不到CPU资源通过分时复用并发。
分时复用当CPU核心只有一个先执行进程1的代码执行一会后让进程1下来执行进程2的代码以此类推。并发多核CPU下四个不同的进程在各自舞台上执行同时执行称为并行执行。每个核心仍要分时复发。当代的计算机执行过程中往往是并行并发同时存在。而两个进程是并发执行还是并行执行要看系统的调度。
9. CPU分配 – 进程调度
PCB中就需要提供一些属性来支持系统完成对这些进程的调度。
状态描述进程的是否能够去CPU上执行 。有时候某个进程不方便比如通过Scanner等待用户输入内容。 1.就绪状态随时准备好去CPU上执行。2阻塞状态这个进程不方便去CPU上执行调度不了该进程如进程等待IO来自控制台等设备的输入输出。优先级多个进程等待系统调度调度的先后不一样。如电脑运行了游戏和qq此时游戏的优先级大于qq。记账信息针对每个进程占据了多少CPU的时间进行一个统计会根据这个统计结果来进一步的调整调度的策略。因此需要在下一轮的调度下进行调整确保每个进程都不至于出现完全捞不着CPU的情况。上下文支撑进程调度的重要属性相当于游戏里面的存档和读档。每个进程在运行过程中就会有很多的中间结果在CPU的寄存器中。1.存档因此就需要在进程调度出CPU之前把当前寄存器中的这些信息给单独保存到一个地方。2.存档在该进程下次去CPU执行的时候再把这些寄存器里的信息给恢复回来。所谓的保存上下文就是把CPU的关键寄存器中的数据保存到内存中PCB的上下文属性中。恢复上下文把内存中的关键寄存器中的数据加载到CPU的对应寄存器。
10.内存分配 – 内存管理
每个进程的内存是彼此独立的互不干扰的。
通常情况下进程A不能直接访问进程B的内存为了系统的稳定性如果某个进程代码出bug出错的只是影响到自己这个进程不会影响到其他进程这种情况也称为进程的独立性。而如果系统上的一个进程崩溃会影响了其他进程那将非常恐怖。
11.进程间通信
虽然有进程的独立性但是有时候也需要多个进程相互配合完成某个工作。
进程间通信和进程的‘独立性’ 并不冲突系统提供一些 公共的空间多个进程可以访问到的让两个进程借助这个公共空间来交互数据。进程通信的方式
管道共享内存文件网络信号量信号 其中在Java中主要使用的进程通信方式文件和网络。网络是可以支持同一个主机的不同进程也能支持不同主机的不同进程适用性更高。