操作系统:进程状态
进程的创建
允许一个进程创建另一个进程,此时创建者称为父进程,被创建的进程称为子进程。子进程可以继承父进程所拥有的资源。当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程。此外,在撤销父进程时,必须同时撤销其所有的子进程。
进程创建完成后会进入就绪队列。
设备分配是通过在系统中设置相应的数据结构实现的,不需要创建进程,这是操作系统中I/O核心子系统的内容。
注意是,先对其所占有的资源执行回收操作,然后再撤销PCB。
进程阻塞是进程自身的一种主动行为(挂起是被动的),也因此只有处于核心态的进程(拥有CPU),才可能将其转为阻塞态。阻塞原语(Block原语)和唤醒原语(Wakeup原语)是一对作用恰好相反的原语,必须成对使用。
注意,进程切换与处理机模式切换是不同的。处理机模式切换时,处理机逻辑上可能还在同一进程中运行。若进程因中断或异常进入核心态运行,执行完后又回到用户态刚被中断的程序运行,则操作系统只需恢复进程进入内核时所保存的CPU现场,而无须改变当前进程的环境信息。但若要切换进程,当前运行进程改变了,则当前进程的环境信息也需要改变。
运行环境信息称为进程的上下文;处理机状态信息称为处理机的上下文。
无论哪个进程控制原语,要做的无非三类事情:
①更新PCB中的信息(修改进程状态,保存/恢复运行环境)
②将PCB插入合适的队列
③分配/回收资源
进程切换
对于通常的进程而言,其创建、撤销及要求由系统设备完成的I/O操作,都是利用系统调用而进入内核,再由内核中的相应处理程序予以完成的。进程切换同样是在内核的支持下实现的,因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。进程切换是指处理机从一个进程的运行转到另一个进程上运行。
进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位。它由以下三部分组成,其中最核心的是进程控制块(PCB)。
进程控制块
进程创建时,操作系统为它新建一个PCB,该结构之后常驻内存,任意时刻都可以存取,并在进程结束时删除。PCB是进程实体的一部分,也是进程存在的唯一标志。
进程执行时,系统通过其PCB了解进程的现行状态信息,以便对其进行控制和管理;进程结束时,系统收回其PCB,该进程随之消亡。操作系统通过PCB表来管理和控制进程。
在进程的整个生命期中,系统总是通过PCB对进程进行控制的,亦即系统唯有通过进程的PCB才能感知到该进程的存在。
程序段
程序段就是能被进程调度程序调度到CPU执行的程序代码段。注意:程序可被多个进程共享,即多个进程可以运行同一个程序。
数据段
一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果。