文章目录
- 1.进程状态变迁
- 2.进程控制块
- 3.进程创建
- 4.进程撤销
- 5.进程终止的5种方法
1.进程状态变迁
- 就绪
除了CPU资源未满足,其它资源全都满足了; - 等待
不仅CPU资源不满足,其它资源也不满足(比如外设,等待别人将外设让出来使用); - 运行
所有资源都满足了,且投入到计算机中运行了; - 解释
(1)进程因创建而产生处于就绪状态。
(2)进程因调用而运行,运行中的进程可能发生等待事件,比如访问的设备资源未满足,所以进程处于等待状态。
等待状态的进程因等待结束,进程就会处于就绪态。
(3)另外,运行中的进程可能被剥夺处于就绪态,需要让出CPU时间片(可能操作:给进程分配CPU的时间片用完了或者被更高优先级的进程抢占)
(4)另外,运行中的进程可能因为程序代码执行完毕而处于撤销状态 - 进程状态变迁
(1)运行状态TASK_RUNNING
(2)可中断睡眠状态TASK_INTERRUPTIBLE
(3)不可中断睡眠状态TASK_UNINTERRUPTIBLE
(4)暂停状态TASK_STOPPED
(5)僵尸状态TASK_ZOMBIE - 进程状态变迁图
(1)可运行状态(running状态)分为:用户运行态,内核运行态(图中的就绪态不是正真的运行状态)
(2)等待状态分为:可中断睡眠状态,不可中断睡眠状态
(3)可中断睡眠状态:系统允许进程被信号中断,而被重新唤醒
(4)不可中断睡眠状态:系统不允许进程被信号中断,eg:执行磁盘操作时,就不允许信号中断,磁盘操作结束,会通知系统磁盘操作结束
(5)就绪态分(了解)为:在内存空间就绪,在交换空间就绪
2.进程控制块
- 进程描述信息
进程标识符用于唯一的标识一个进程 - 进程控制信息
(1)进程当前状态:就绪,等待,运行
(2)进程优先级:高优先级的进程可以抢占
(3)进程开始位置
(4)各种计时信息
(5)通信信息 - 资源信息
(1)占用内存大小及管理用数据结构指针
(2)交换区相关信息
(3)I/O设备号、缓冲、设备相关的数据结构
(4)文件系统相关指针 - 现场保护信息:进程之间的切换需要保存一些现场信息
(1)寄存器:CPU通用寄存器
(2)PC指针
(3)程序状态字PSW
(4)栈指针:堆栈的指针信息 - 0号进程和1号进程
(1)0号进程是内核进程,0号进程也称之为空闲进程,作用:交换功能:将内存中的数据交换到交换空间,或者将交换空间的数据交换到内存
(2)1号进程是0号进程创建的,init进程是用户进程,他是磁盘上的一个程序,位置:/sbin/init(which init)
(3)创建的进程数目:
- 进程标识
(1)每个进程都会分配一个独一无二的数字编号。我们称之为进程标识process identifier,或者就直接叫它PID
(2)是一个正整数,取值范围从2到32768
(3) 当一个进程被启动时,他会顺序挑选下一个未使用的编号数字作为自己的PID
(4)数字1一般为特殊进程init保留的
3.进程创建
- 不同的操作系统所提供的进程创建原语的名称和格式不尽相同,但执行创建进程原语后,操作系统所做的工作却大致相同,都包括以下几点:
(1)给新创建的进程分配一个内部标识PID,在内核中建立进程结构PCB
(2)复制父进程的环境
(3)为进程分配资源,包括进程映像所需要的所有元素(程序、数据、用户栈等)
(4)复制父进程地址空间的内容到该进程地址空间中
(5)置该进程的状态为就绪,插入就绪队列
4.进程撤销
- 进程终止时操作系统做以下的工作
(1)关闭软中断:因为进程即将终止而不再处理任何软中断信号
(2)回收资源:释放进程分配的所有资源,如关闭所有已打开文件,释放进程相应的数据结构等
(3)写记账信息:将进程在运行过程中所产生的记账数据(其中包括进程运行时的各种统计信息(CPU时间等))记录到一个全局记账文件中
(4)置该进程为僵死状态:向父进程发送子进程死的软中断信号,将终止信息status送到指定的存储单元中;
(5)转进程调度:因为此时CPU已经被释放,需要由进程调度进行CPU的再分配
5.进程终止的5种方法
- 从main函数返回:return 0,因代码执行完毕而撤销
- 调用exit
- 调用_exit
- 调用abort:产生SIGABRT信号,异常终止
- 由信号终止:ctrl + C:向当前运行的前台进程发送SIGINT信号,终止前台进程