清华OS学习——进程的控制结构,生命周期,状态变化模型
进程控制结构
创建进程时生成一个PCB,进程终止时回收PCB
PCB包含的信息:
-
标识:PCB的id,识别进程代表哪个程序,或知道该程序执行了几次
-
CPU中的寄存器,很多数据都存在寄存器里,保存执行状态,执行过程…
-
进程控制信息(如图)
【进程链(父子)】
PCB组织方式
因为进程执行过程是动态过程,要对进程进行各种操作,用链表更易完成操作,当然,若操作并不多,也可以用索引……
进程的生命期管理
1.生命期:创建,运行,等待,唤醒,结束
创建:在OS初始化时创建(NIT进程)or用户请求创建or正在运行的进程要求创建
(完成一系列初始化工作)
运行:选择一个可执行进程执行,OS选择调度
等待:
由OS将其变为等待状态
只有进程本身知道在等什么
唤醒:
只能被其他进程或OS唤醒,自己本身无法唤醒,因为自身已没有占用CPU执行
结束:
致命:由OS or其他进程杀死
进程状态变化模型
运行态:进程正在处理机上运行
就绪态:进程已具有除了处理机之外的所需要的所有资源,一旦得到处理机就可运行
等待态:进程等待某事件发生二而暂停运行,如等待某资源,等待输入/输出完成。
创建态:正在创建,还未转变为就绪态
结束态:正在从系统中消失,PCB还未消失
状态切换:
为什么有由running转为ready?
OS为每一个进程都分配了时间片,期望让每一个进程都能公平的享有运行机会,所以一旦某一进程的时间片完,就从running转为ready。
完整过程:
NULL——>New:一个新进程产生
New——>ready:进程得到所需全部资源,一切就绪准备运行(过程很快,完成PCB的初始化)
Ready——>running:处于就绪态的程序被进程调度程序选中,分配到处理及上运行
Running——>exit:进程正常退出或出错,由OS进行结束处理
Running——>ready:时间片执行完了,由OS进行中断,再选择一个就绪态进程运行(OS管理时钟)
Running——>blocked(阻塞态):等待
Blocked——>ready:OS完成