javaEE--计算机是如何工作的-1
目录
一.计算机的组成:
各组件的功能:
衡量cpu好坏的标准:
二.指令(instruction)
三.操作系统Operating System
四.进程/任务process/tesk
五.进程在系统中如何管理
1.进程在系统中的管理,从两个角度来分类:
2.进程控制块PCB(Process Control Block))
3.PCB的属性
(1).pid:进程的身份标识
(2).内存指针:进程持有的内存资源
(3).文件描述符表:进程持有的硬件资源
六.进程调度
1.单任务操作系统
2.分时复用
3.并发
4.并行
七.PCB中的属性
1.进程的状态
2.进程的优先级
3.进程的上下文
4.进程的记账信息
八.内存分配(内存管理)(Memory Manege)
九.进程间通信(Inter process communication)
一.计算机的组成:
cup 存储器 输入设备 输出设备
现代的计算机,⼤多遵守冯诺依曼体系结构
各组件的功能:
能和cpu相提并论的:氢弹...
针对存储空间:硬盘>内存>>CPU
针对存储速度:cpu>内存>硬盘
衡量cpu好坏的标准:
1.主频:可以理解成1秒钟,cpu可以执行多少条指令(19亿条).
现在的主频都在时时刻刻变化着,根据当前的负载程度,动态变化着
2.核心数:一个能完成完整计算机的整体,有很多的计算单元构成
最开始的cpu都是单核的,随着集成度的提高,cpu速度的提高,发现越来越难,
之后就出现了多核cpu:1核,2核,4核,8核....128核...
二.指令(instruction)
所谓指令,即指导CPU进⾏⼯作的命令,主要有操作码+被操作数组成。
cpu上能够执行任务的最小单元
指令表:
一个cpu在设计的时候,就会提供一些可以进行的操作(一些指令)
(你给cpu发布一个任务,就需要把每一步的细节都告诉他,他才能去执行)
三.操作系统Operating System
操作系统是⼀组做计算机资源管理的软件的统称。
⽬前常⻅的操作系统有:Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等
这些操作系统,本质上都是一些软件,功能是用来管理的:对下管理所有的硬件设备,对上给软件提供稳定的运行环境
操作系统的定位:
对硬件的管理:
对软件的管理:
一个操作系统包含内核和配套的应用程序,内核是操作系统最核心的功能,硬件的驱动程序,都是在系统内核中执行的,内核需要给很多应用程序提供支持
四.进程/任务process/tesk
操作系统内核中涉及到很多核心的概念,进程就是其中的一个
一个已经跑起来的程序,就叫进程
这些都是进程:
每个进程都是系统资源分配的基本单位。(就好比疫情期间的社会就好比系统资源,每个家庭就是一个进程,社会以家庭为单位分配食物,就是系统为每个进程分配资源)
五.进程在系统中如何管理
提到管理,只有某个东西很多,内容很复杂,才需要管理.
(就好比一个公司,规模小时,只有几个人,就不需要管理,当达到一定的规模时,就需要将每个员工,需要完成的工作...,管理起来)
1.进程在系统中的管理,从两个角度来分类:
1.描述:使用类/结构体,将要管理的对象 的各个属性都表示出来
2.组织:使用数据结构,把这些表示出来的对象 都串联起来(便于后面的增删查改)
2.进程控制块PCB(Process Control Block))
系统中有一个专门的结构体,用来描述进程的属性,这个结构体就称为"进程控制块"PCB.
使用PCB来描述进程的属性,一个进程可以用一个或多个PCB来表示.
创建新进程就是把PCB插入到链表中;
删除进程,就是把PCB从链表中删除并释放;
展示进程列表,就是遍历链表的每个节点。
3.PCB的属性
要想更详细的了解进程,就要熟悉PCB里面的属性
(1).pid:进程的身份标识
每个进程都会有一个pid,同一时刻,不同进程之间的pid不同
(2).内存指针:进程持有的内存资源
每个进程在运行的时候,都会分配一定的内存空间,这个进程的内存空间在哪里,是怎么分配的,具体执行什么任务,都是用一组内存指针来进行分配的
要执行的指令:用C语言写的一些代码=>exe文件(包含一些二进制指令)
(3).文件描述符表:进程持有的硬件资源
有很多元素,和文件有关,类似于数据结构中的顺序表这样的结构,和硬盘有关
一个进程也需要涉及到硬盘相关的操作,需要按照文件的方式来操作,当前进程涉及到哪些文件,需要操作哪些文件,就是通过文件描述符表来管理的.
六.进程调度
进程持有的cpu资源是如何体现的?就是通过进程调度
1.单任务操作系统
早期的操作系统,是"单任务操作系统":同一时刻,只有一个进程能运行,要想运行别的进程,只有先退出该进程,才能运行下一个进程.
单任务操作系统就好比演员上台表演,cpu就是舞台,进程就是演员.只有一个舞台,别的演员要想表演,正在舞台上表演的演员要要下台才行
2.分时复用
每个进程轮流进行操作.
3.并发
指系统能够同时处理多个任务的能力。它是一种逻辑上的概念,表示在一段时间内,多个任务都在执行,但并不一定是同时进行的。在并发中,任务按照某种调度策略交替执行,通过时间片轮转或事件驱动等方式来实现任务的切换。并发的目的是提高系统的吞吐量和响应性,以更好地处理多个任务。
4.并行
并行是指系统中同时执行多个任务的能力。它是一种物理上的概念,表示多个任务可以在不同的处理器、核心或计算资源上同时执行。在并行中,任务可以并行地执行,相互之间无需等待。并行的目的是通过同时执行多个任务来加速处理速度,提高系统的计算能力和效率。
平时使用"并发"来代替"并行"和"并发"
七.PCB中的属性
这些属性用来完成进程的调度
1.进程的状态
就绪状态:进程随时准备好,等着去cpu上执行,分为两种情况:
1.进程正在cpu上执行
2.进程未在cpu上执行,但时刻准备着去cpu上执行
阻塞状态:某个进程不具备随时上cpu上执行的条件,就是阻塞状态
进程还有很多状态....
2.进程的优先级
多个进程等待cpu的调用,每个进程被调用的机率并不是均等的,
先调度谁,调度多长时间,都是可以调配的,这就是进程的优先级(可以通过系统的api设置)
3.进程的上下文
进程上下文实际上是进程执行活动全过程的静态描述。
进程从cpu离开之前,会把当前cpu寄存器中的状态,值等,记录到内存中,等下次进程再回到cpu上执行时,把保存的寄存器的信息再恢复回去,这样就会沿着上次执行的位置,继续往后执行。支持进程调度的重要属性,相当于游戏中的存档和读档。
存档:在进程调度出cpu之前,把当前寄存器中的信息单独保存到一个地方
读档:在该进程下次去cpu上执行的时候,把这些寄存器上的信息再恢复回来
把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文,把正在执行的指令和数据在寄存器和堆栈中的内容称为正文,把待执行的指令和数据在寄存器与堆栈中的内容称为下文。
具体的说,进程上下文包括计算机系统中与执行该进程有关的各种寄存器(例如通用寄存器,程序计数器PC,程序状态字寄存器PS等)的值,程序段在经过编译过后形成的机器指令代码集,数据集及各种堆栈值PCB结构。
4.进程的记账信息
针对每个进程,占用了多长时间的cpu,会进行一个统计,根据统计,进一步调整下一步cpu的调度策略.
八.内存分配(内存管理)(Memory Manege)
这里涉及到的内存分配是非常复杂的,简单的说,就是每个进程的内存.是相互独立,互不干扰的.
通常情况下,进程A是不能直接访问进程B的内存的.
这称为进程间的"独立性".
九.进程间通信(Inter process communication)
虽然进程之间是相互独立的,但有的时候也需要几个进程相互合作,共同完成某个任务,此时就涉及到进程间通信.
进程间的独立性和进程间通信并不冲突,系统会提供一些公共空间,(多个进程都可以访问这些公共空间),让多个进程通过公共空间来交换数据.
进程间通信有很多种方法: