大连密封材料 发表于 5 天前

【JavaEE】盘算机的工作原理

盘算机体系的组成

一台完整的盘算机包含硬件和软件两部分,另外另有一部分固化的软件称为固件(兼具软件和硬件的特性),硬件和软件联合才能使盘算机正常运行并发挥作用,以是对盘算机的明白应该把它看作一个包含软件体系和硬件体系的完整体系。
1.盘算机硬件体系

冯诺依曼的核心思想就是提出采用二进制存储程序和程序控制;存储程序就是将解题的步骤编制成程序,然后将程序和运行程序所需要的数据以二进制的形式存放到存储器中,方便实验;程序控制则是指盘算机中的控制器逐条去除存储器中的指令并按次序实验,控制各功能部件进行相应的操纵,完成数据的加工处置惩罚。
盘算机的硬件体系包含运算器、控制器、存储器、输入设备、输出设备五大部件。运算器和控制器合称位CPU(又称中心处置惩罚器);CPU和存储器通常称为主机;输入设备和输出设备统称为输入输出设备,又因为它们位于主机外部,以是有时也称为外部设备。下面这张图就是冯诺依曼体系结构。
https://i-blog.csdnimg.cn/direct/a35685dda9e540198cbaa429b7191fcc.png


[*] 存储器(内存+外存)
存储器主要功能就是存放程序和数据,程序是盘算机操纵的依据,数据是盘算机操纵的对象,它们在存储器中都是以二进制存储的(它们统称为信息),为了实现自动盘算,这些信息必须要预先放在主存储器中才能被CPU读取。外存就是硬盘、软盘、U盘等


[*] 运算器
运算器是一种用于信息加工处置惩罚的部件,他对数据进行算术运算和逻辑运算。算术运算是算术规则进行的加减乘除等运算,逻辑运算就非算术运算,像比较、移位、逻辑加、逻辑乘、逻辑取反等。运算器通常由算术逻辑单位(ALU)和一系列寄存器组成。ALU是具体完成算术与逻辑运算的部件,寄存器用于存放运算操纵数。


[*] 控制器
控制器是整个盘算机的指挥中心,它可使盘算机各部件协调的工作,控制器工作的实质就是解释程序,它每次从存储器读取一条指令,经过分析译码产生一串操纵命令,再发给各功能不见控制各部件动作,是整个呆板连续地、有条不紊的运行,以实现指令和程序的功能。
盘算机中有两股信息在流动:一股是控制流信息,即操纵命令,它分散流向各个功能部件;另一股是数据流信息,它受控制流信息的控制,从一个部件流向另一个部件,在流动的过程中被相应的部件加工处置惩罚。


[*] 输入设备
输入设备就是将信息输入盘算机的外部设备,它将人们熟悉的信息形式转成盘算机能接受并是别的信息形式。


[*] 输出设备
输出设备就是将盘算机运算效果转成人们和其他设备能吸收和识别的信息形式的设备。
  指令

指令:引导CPU进行工作的命令,由操纵码和被操纵码组成。其中操纵码用来表示要做什么动作,被操纵数是本条指令要操纵的数据,大概是内存所在也大概是寄存器编号等。
指令表
https://i-blog.csdnimg.cn/direct/f92a8fe3d59a48789d56f333bd504a1d.png
下面是演示指令运行的一个周期:
https://i-blog.csdnimg.cn/direct/64691a55eab04e92bc4ac7f31cac477e.png 总结:
1.CPU要实验的指令是在内存中(存储器中),冯诺依曼体系结构基本设定让实验单位和存储单位解耦合;
2.CPU要想实验指令,就需要先取指令,然后才能实验;
3.取指令需要从内存中读取指令到CPU的寄存器中,取指令的操纵非常耗时(读取内存、CPU盘算等);
4.CPU解析指令的时间,需要用到“指令表”,不同架构的CPU指令表不同,但是指令表细节已经写死在CPU中,CPU可以快速识别;
5.指令在实验的过程中,大概会带一些操纵数,不同的指令操纵个数寄义不同;
6.CPU紧张的参数:主频,主频表示的寄义近似看成一秒钟内CPU实验的个数;
2.盘算机软件体系

 盘算机软件将解决问题的思想、方法和过程进行描述,以是程序是软件的核心组成部分。盘算机软件按其功能分成应用软件和体系软件两大类。应用软件是用户为解决某种应用问题而编制的一些程序;体系软件用于对盘算机体系进行管理、调度、监督和服务等,其目的是方便用户、提高盘算机使用效率、扩充体系的功能。通常体系软件分:操纵体系、程序计划语言及语言处置惩罚程序、数据库管理体系。接下来我们具体将操纵体系:
核心数:多个核心的运算本领,也可以说是并发编程;
主频(基准频率、睿频):单个核心运算本领;
操纵体系

操纵体系是管理盘算机中各种资源、自动调度用户作业、处置惩罚各种中断的软件。操纵体系管理的资源通常有硬件、软件、数据信息。常见操纵体系有Windows、Linux、Mac、Android、iOS等。操纵体系的核心概念就是历程,每个跑起来的程序都称为历程。
1.历程

历程就是操纵体系提供的一种“软件资源”,比如:多任务操纵体系(多个背景同时实验),单任务操纵体系(没有背景实验的任务)。可以把历程看作程序的一次运行过程;同时,在操纵体系内部,历程是操纵体系进行资源分配的基本单位。
2.操纵体系的历程管理



[*]1.先描述(使用类/结构体这样的方式,把实体属性给列出来)
操纵体系一般是用c/c++实现的(没有Java写的操纵体系),因此就可以使用结构体表示历程信息的结构体PCB(历程控制块);


[*] 2.再组织(使用一定的数据结构,把这些结构体/对象串在一起)在Linux中,使用链表这样的数据结构把若干个task_struct串起来
当我们看到任务管理其中的这些历程时,意味着体系内部在遍历链表和打印每个节点的相干信息;假如运行一个新的程序,体系就会多一个历程,多的这个历程就要构出一个新的PCB,并添加到链表中;假如运行程序退出了,就需要把对应的PCB从链表中删除并烧毁对应的PCB资源。
2.1 PCB紧张属性



[*]1. PID(历程的标识符)
通过一个简单的不重复的整数来进行区分,体系包管PID唯一;比如,选中某个历程而且点击结束任务,任务管理器获取到选中的PID,然后调用体系API,把PID作为参数传进去从而完成杀死历程的操纵。
https://i-blog.csdnimg.cn/direct/9676afccf6c349d19a58f81ab33d1747.png


[*] 2.内存指针(描述了历程使用内存的具体情况)
历程运行过程中需要消耗一些体系资源,内存就是一种紧张的资源。内存指针就是用来描述这个历程可以使用哪些内存。一个历程跑起来的时间,需要指令也需要数据(都是要加载到内存中的),以是历程必须要知道哪里存放的位置是指针、哪里存放的位置是数据。


[*]3. 文件描述符表(描述了历程所涉及的硬盘相干资源)
由于历程常常要访问硬盘,操纵体系对硬盘遮掩的硬件设备进行封装,封装成文件。操纵体系都是按照“文件”的方式来操纵的,一个历程想要操纵文件就需要“打开文件”。
    1.分时复用(并发实验)
        CPU核心只有一个,先实验历程1,实验一会后,历程1下来,历程2实验,再实验一会,历程2下来,历程3实验……就是并发实验(只要速度充足快,我们就感知不到切换,以是肉眼看来就是“同时进行的”);
 2.并行实验
        多核CPU有多个不同的历程,这几个历程也是同时实验的,就是并行实验;
这两种实验肉眼是观察不到的。并行实验+并发实验统称为“并发”,这个就是我们称为的并发编程。
https://i-blog.csdnimg.cn/direct/a965408bc7994ef4819adb781e82b79b.png
2.2CPU分配--历程调度 



[*]1.状态 

[*] 就绪状态:随时预备好去CPU实验,操纵体系一打招呼就上
[*] 阻塞状态:这个历程当前不方便去CPU实验,不应该调度它(像历程期待IO,来自控制台的输入输出等)


[*]2.优先级
多个历程期待体系调度,多个历程之间调度的先后关系不是那么平均时


[*] 3.记账信息
记录当进步程持有CPU的情况(比如CPU实验多久),作为操纵体系的调度参考依据


[*]4.上下文 (存档和读档)
支撑历程调度的紧张性。每个历程在实验运行的过程中,就会有许多的中间效果,在CPU的寄存器中(像前面的指令例题3+14),操纵体系调度历程可以认为时“随机”的任何一个历程,代码实验到任何一条指令的时间都大概被调度出CPU;
保存上下文(存档):在历程中调度出CPU之前,把当前寄存器中的信息单独存放到一个地方
加载上下文(读档):在该历程下次再去CPU上实验的时间,再把这些寄存器的信息规复回来
2.3内存分配--内存管理(“历程独立性”)

每个历程的内存时彼此独立的、互不干扰的,通常情况下,历程A不能直接访问历程B的内存(为了体系的稳定性)
2.4历程间通信

虽然历程具有独立性,但是有时间也需要多个历程之间相互共同完成某个工作,历程间通信和历程的独立性并不冲突,体系提供一些公共的空间(多个历程都能访问到),让两个历程借助这种公共空间来交互数据。通信方式有文件、网络。
以上就是操纵体系历程的所有知识点, 欢迎小伙伴们访问我的博客呀~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【JavaEE】盘算机的工作原理