一,什么是进程
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看作程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。注意以上的运行出来的可执行程序,这些程序就是"进程".
二,那么操作系统是如何管理进程的
进程控制块抽象 PCB(Process Control Block):包含进程的唯一标识(pid)、进程关联的程序信息、分配给该资源使用的各个资源、进程调度信息。
1.先描述一个进程(明确一个进程上面的相关的属性);
2.再组织若干个进程(使用一些数据结构,把很多描述进程的信息放在一起,方便进行增删改查):就是使用双向链表来把每个进程的PCB给串起来.
然后是俩个进程的操作:
<创建进程:先创建出PCB,然后把PCB加入到双向链表中;
<销毁进程:找到链表上的PCB,将其从链表上删除;
三,进程调度的基本属性
1.状态:
就绪状态: 随时可以去CPU上运行,或者已经在CPU上运行.
阻塞状态/睡眠状态:暂时不能在CPU上运行.
2.优先级 :
时间分配的优先级别以及多少, 就是先给谁分配时间,后给谁分配时间,以及谁分的多,给谁分的少。
3.记账信息
统计了每个进程,都分别被执行了多久,分别都执行了哪些指令。分别都排队等了多久,目的是给进程调度提供指导依据的。
4.上下文
表示上次进程被调度出CPU时程序的执行状态。
四,进程调度
进程调度又称 CPU 调度,指的是决定哪个线程被优先运行和运行多久。
操作系统创建一个进程后,进程的入口程序被分配到了一个主线程执行,这样看上去操作系统是在调度进程,其实是调度进程中的线程。
当进程从运行状态变化到其他状态,或者从其他状态变化到运行状态时,就会触发一次调度。
五,线程与进程的区别
进程是一个应用程序,而线程则是进程中的执行单位。
可以说 进程 包含 线程,一个 进程中至少有一个 线程,你可以这样理解:如果进程是一家公司,那么线程就是公司里的一名员工.
就拿idea举例子:我们可以那这个监视我们idea代码中的线程情况,那么idea就相当于一个进程
而其中的的线程却有17个在同时进行。
进程与进程之间是互补影响的,但是要是同一进程里的线程与线程之间就会有联系。