打开任务管理器在里面就可以看到进程,那什么是进程呢?简单来说进程就是系统正在运行的应用程序。(一个没有运行的应用程序就是一个在硬盘上的.exe的静态文件)
从任务管理器可以看出,进程运行时需要一些系统分配一些硬件资源(CPU,内存,硬盘,网络),进程又是操作系统进行资源分配的基本单位。
为了管理进程,通过都需要将其抽象成⼀组有关联的、互为⼀体的数据。在 Java 语言中,我们可以通过类/对象来描述这一个进程,这个类称为'PCB',这个类包含了进程所需的属性。然后通过数据结构把这些'PCB'组织起来。每⼀个 PCB 对象,就代表着⼀个实实在在运行着的程序,也就是进程。
进程调度是指操作系统在多道程序环境下,决定哪些进程优先执行、哪些进程暂时停止或等待、以及何时执行这些操作的过程,简单来说就是CPU的分配。
在PCB中 (1.进程状态2.进程优先级3.进程上下文4.进程的记账信息)这四个属性共同决定了进程的调度。
1.进程的状态
进程有两种常见的状态一个是就绪状态,是可以随时被调度到CPU上执行指令的。一个是阻塞状态,是不能被调度到CPU上执行指令。
2.进程的优先级
这个属性顾名思义就是决定了哪些进程先执行,哪些进程后执行。进程的优先级是可以自行调节的。
3.进程的上下文
在单核系统中,由于一个核心只能运行一个进程,当我们运行多个进程后,CPU有会根据进程的状态,进程的优先级等先运行一个进程1,一段时间后再运行另一个进程2,再一会后再去运行其他进程3,由于CUP的这种工作情况,就需要记录进程的上下文,当再次运行进程1时,才知道刚刚运行到哪里,进程的运行才能持续。
4.进程的记账信息
由于进程的优先级,使得有些资源分配到的资源越来越少,操作系统会根据每个进程在CPU上的运行时间来调整策略。
上述的这4中属性都是用来支持并发执行,为了进程的调度。
在计算机上同时存在着许多进程,CPU负责执行这些进程,一个CPU核心执行一个进程,在单核的计算机中这么多进程如何同时执行? --'分时复用'
什么是分时复用
简单来说就是这个时刻CPU运行进程1,过一会执行进程2,再过一会运行进程3,由于CPU的运算速度很快,在进程间的切换也很快,所以在我们看来这些进程都是'同时执行'的,这就叫做并发执行。
如今的计算机有了多核的CPU能真正意义上让进程同时执行,这叫做并行执行。