清华OS学习——进程的控制结构,生命周期,状态变化模型

进程控制结构

创建进程时生成一个PCB,进程终止时回收PCB

PCB包含的信息:

清华OS学习——进程的控制结构,生命周期,状态变化模型

  1. 标识:PCB的id,识别进程代表哪个程序,或知道该程序执行了几次

  2. CPU中的寄存器,很多数据都存在寄存器里,保存执行状态,执行过程…

  3. 进程控制信息(如图)清华OS学习——进程的控制结构,生命周期,状态变化模型

【进程链(父子)】

PCB组织方式

清华OS学习——进程的控制结构,生命周期,状态变化模型

因为进程执行过程是动态过程,要对进程进行各种操作,用链表更易完成操作,当然,若操作并不多,也可以用索引……

进程的生命期管理

1.生命期:创建,运行,等待,唤醒,结束

创建:在OS初始化时创建(NIT进程)or用户请求创建or正在运行的进程要求创建

(完成一系列初始化工作)

运行:选择一个可执行进程执行,OS选择调度

等待
清华OS学习——进程的控制结构,生命周期,状态变化模型

由OS将其变为等待状态

只有进程本身知道在等什么

唤醒
清华OS学习——进程的控制结构,生命周期,状态变化模型
只能被其他进程或OS唤醒,自己本身无法唤醒,因为自身已没有占用CPU执行

结束
清华OS学习——进程的控制结构,生命周期,状态变化模型

致命:由OS or其他进程杀死

进程状态变化模型

运行态:进程正在处理机上运行

就绪态:进程已具有除了处理机之外的所需要的所有资源,一旦得到处理机就可运行

等待态:进程等待某事件发生二而暂停运行,如等待某资源,等待输入/输出完成。

创建态:正在创建,还未转变为就绪态

结束态:正在从系统中消失,PCB还未消失

状态切换

清华OS学习——进程的控制结构,生命周期,状态变化模型

为什么有由running转为ready?

OS为每一个进程都分配了时间片,期望让每一个进程都能公平的享有运行机会,所以一旦某一进程的时间片完,就从running转为ready。

完整过程

NULL——>New:一个新进程产生

New——>ready:进程得到所需全部资源,一切就绪准备运行(过程很快,完成PCB的初始化)

Ready——>running:处于就绪态的程序被进程调度程序选中,分配到处理及上运行

Running——>exit:进程正常退出或出错,由OS进行结束处理

Running——>ready:时间片执行完了,由OS进行中断,再选择一个就绪态进程运行(OS管理时钟)

Running——>blocked(阻塞态):等待

Blocked——>ready:OS完成