1、为什么需要进程?
一句话总结,解决多程序环境下,程序并发问题,提高了系统运行效率
一个程序中通常包含CPU操作和IO操作
当单个程序在执行IO操作时,CPU处于空闲状态,所以顺序执行程序利用率不高,为了提高效率,那就就多道程序并发进行执行,在程序IO操作时,CPU可以对其他程序进行操作,提高CPU利用率,但是多道程序并发执行会破坏程序本身的特性,比如可再现性(一个程序在相同环境下,无论执行多少次结果不会变),那么这时候就需要一个新的概念来使得程序能够并发执行,此时就引入了进程概念。
2、进程的组成
进程是计算机操作系统中资源分配和独立运行的基本单位,主要由PCB与程序段,数据段组成
PCB(Process Control Block)进程控制块(它与进程是一对一关系通过PCB来反馈进程的具体信息)对于计算机操作系统而言,只能感受到PCB的存在,PCB就是进程
进程在系统内存中的数据映像,text包含程序代码,stack处理函数局部变量,data包含全局变量等一些全局性的数据,heap动态申请的内存
3、进程基本状态
new 进程刚刚创建,数据还没准备好
ready 进程的一切都准备好,只等待cpu
running 进程在执行代码
waiting 有可能在和其他进程竞争等待资源,有可能在与其他进程通信等待回复等等
terminated 进程结束
4、进程的管理
系统中存在许多进程,需要有一种组织管理方法,如下图所示
主要包含多个队列,包含就绪队列、阻塞队列、作业队列等
通过将PCB不断的在多个队列之间控制进程的状态,本质进程的管理就是PCB在多个队列之间的调度
5、进程上下文切换
如图,当CPU需要从P0转换到P1中进行操作时,保留P0现场,以便P1->P0时能够恢复现场,而这个现场的保存,是可以存入PCB中的,当CPU在切换时只需要对PCB中的数据进行读取和存储就可以,上下文的切换是纯副作用,越少越好