目录
1、进程的概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。在一个操作系统中,每个独立执行的程序都可以称为一个进程,也就是一个正在运行的程序。
2、进程的管理
进程主要通过两个角度来进行管理,分别是描述和组织。
2.1 进程的描述
系统中专门有一个结构体描述进程的属性,这个结构体统称为“进程控制块”(PCB),一个进程就可以使用一个或多个PCB来表示。
2.2 PCB的属性
1、pid:进程的身份标识
每个进程都会有一个pid,同一时刻,不同进程之间的pid是不同的。
2、内存指针(一组属性)
每个进程在运行时,都会分配一定的内存空间,这个进程具体在哪里,分配的空间有哪些部分,都是通过一组指针来进行区分。
3、文件描述符表
一个进程也需要涉及到硬盘操作,就需要按照文件的方式来操作。当前进程关联的文件,都是通过文件描述符来描述进程持有的”硬盘资源“。
2.3 进程的组织
在系统中会使用类似于双向链表的数据结构来组织多个PCB。
创建进程,就是创建PCB并且把PCB插入到链表中。
销毁进程,就是把PCB从链表上删除并且释放。
展示进程,就相当于遍历链表的每个节点。
3、进程的调度
多个进程在CPU上执行,CPU会给每个进程分配使用权,这种机制就叫做进程的调度。
3.1 两种执行方式
1、并发执行
在一个CPU核心上,通过快速轮换的方式,执行多个进程,在宏观上是”同时执行“,微观上是”有先有后“,这种情况称为”并发“。
2、并行执行
如果两个进程同时在两个CPU核心上,微观上也是”同时进行“,称为”并行“。
平时使用并发来代指 并行和并发
3.2 实现调度的属性
PCB中引用了一些属性,用来支持操作系统实现进程调度的效果。
分别为 状态、优先级、上下文、记账信息。
3.3 状态
进程的状态分为两种,就绪状态和阻塞状态。
就绪状态
1、进程正在CPU上执行
2、进程时刻准备去CPU上执行
阻塞状态
某个进程的某个条件不具备,就导致进程无法参与CPU的调度执行。
3.4 优先级
操作系统在调度多个进程的时候,并非一视同仁,有些进程会给更高的优先级,优先调度。
3.5 上下文
进程从CPU离开之前,需要保存现场,把当前CPU中各种寄存器的状态,都记录到内存中,等到下次进程回到CPU上执行的时候,此时就可以把保存的这些寄存器的值恢复回去,进程就会沿着上次执行的位置,继续往后执行。
3.6 记账信息
通过优先级机制,对不同的进程分配了不同权重的资源,有可能会出现极端情况,所有的资源都会给某一个进程,其他进程一点也没有。
记账信息,会记录当前进程持有的CPU资源的情况,就可以作为操作系统调度进程的参考依据。