本文主要是介绍操作系统:精髓与设计原理 进程描述和控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
操作系统必须交替执行多个进程,在合理的响应时间范围内使处理器的利用率最大
操作系统必须按照特定的策略给进程分配资源,同时避免死锁
操作系统可以支持进程间的通信和用户创建进程,它们对构建应用程序很有帮助
进程
一个正在执行中的程序
一个正在计算机上执行的程序实例
能分配给处理器并由处理器执行的实体
一个具有以下特征的活动单元: 一组指令序列的执行、一个当前状态和相关的系统资源集
进程的基本元素: 程序代码 和 与代码相关的数据集
进程控制块(process control block)由操作系统创建和管理 含有充分的信息包括每个进程具备的元素
唯一标识符 状态 优先级 程序计数器(程序中即将被执行的下一条指令地址) 内存指针(程序代码和进程相关数据的指针) 上下文数据(进程执行时处理器的寄存器中的数据) I/O状态信息(包括显式的) 记账信息
轨迹(trace) 可以通过列出为该进程执行的指令序列描述单个进程的行为 这样的序列称为进程的轨迹
导致进程创建的原因 新的批处理作业 用户交互登录 操作系统提供服务而创建 由现有的进程派生
导致进程终止的原因 正常完成 超过时限 无可用内存 越界访问 保护错误 算术错误 等待时间超出 I/O失败 无效指令 特权指令 数据误用 操作系统干涉 父进程终止 父进程请求
五状态模型 新建态 就绪态 阻塞态 运行态 退出态
运行态 该进程正在执行
就绪态 该进程做好了准备 有机会就开始执行
阻塞态 进程在某些事件发生前不能执行
新建态 进程刚帮被创建 还未加载到操作系统的可执行进程组当中
退出态 从操作系统的可执行进程中删除
交换:把内存中某个进程的一部分或者全部移到磁盘中 (是一个磁盘I/O操作)
操作系统就把阻塞的进程换出到磁盘中的挂起队列中(suspend queue) 当内存中没有处于就绪状态的进程时,从磁盘中换入进程
挂起态 换入 就绪态
阻塞态 换出 挂起态
挂起进程
进程不能立即执行
进程可能是或者不是在等待一个事件(如果是 阻塞条件不依赖于挂起条件 阻塞事件的发生不会使进程立即被执行)
为阻止进程执行,可以通过代理把这个进程置于挂起状态 代理可以是 进程自己 父进程 操作系统
除非代理显式的命令系统进行状态转移 否则进程无法从该状态中转移
导致进程挂起的原因 交换 用户请求 父进程请求 定时 其他原因
操作系统的控制结构
操作系统为了管理进程和资源 必须掌握每个进程和资源当前状态的信息
进程控制块中的信息可以分成三类 进程标识信息 进程状态信息 进程控制信息
进程创建 分配唯一进程标识符 给进程分配空间 初始化进程控制块 保存到操作系统中 扩充其他数据结构
进程切换 某一时刻,正在运行的进程被中断,操作系统指定另一个进程为运行态,控制权交给该进程
进程切换时机 系统时钟中断(进程执行超时) I/O中断 内存失效 陷阱(出现错误)
这篇关于操作系统:精髓与设计原理 进程描述和控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!