进程的创建
原因
- 提交一个新的批处理作业
- 新用户注册
- 提供一系列服务(打印)
- 一个进程创建一个新进程
步骤
- 为进程分配一个唯一标识ID:主进程表中增加一个新的表项
- 为进程分配空间:用户地址空间,用户栈空间,PCB空间。若共享已有空间,则建立相应的链接。
- PCB初始化:进程标识,处理机状态信息,进程状态等。
- 建立链接:若调度队列是链表,则将新进程插入到就绪或(就绪,挂起)链表。
- 建立或扩展其他数据结构
进程的中止
正常的结束,超时中止(非timeout),内存不足,越界访问,保护错误(修改read only),计算错,I/O 找不到文件(磁盘损坏等),企图执行不存在的指令,企图执行特权指令,数据类型不符,或未初始化,操作员或OS干预(死锁发生时),父进程中止,父进程要求
原因
- 中止指令
- 用户注销
- 应用程序退出
- 出现了条件错误(溢出,分母0,越界等)
步骤
- 根据被中止进程的标识符ID,找到PCB,读出该进程的状态;
- 若为执行->中止,调度新进程执行;
- 若该进程有子孙进程,则立即中止其所有子孙进程;
- 将该进程的全部资源,或回收还给父进程,或归还给系统
- 将被中止进程PCB从所在的队列移出,等待其他程序来搜集信息