进程控制
进程控制一般是有OS内核原语来实现
- 操作系统内核
- 关于:现代操作系统一般将OS划分为若干层次,通常将中断处理程序,各种设备常用的驱动,以及运行频率较高的模块都安排在紧靠硬件的软件层,将他们常驻内存中,即通用的OS内核
- 目的:1.保护软件防止遭受其他应用软件的破坏 2.可以提高OS的效率
- 处理机制分类:
- 用户态
- 系统态
- 支撑功能
- 中断处理(各类型的系统调用,键盘命令的输入,进程调度,设备驱动等,无不依赖于中断)
- 时钟管理(时间片的操作)
- 原语操作(也称原子操作,与一般进程的区别是一个操作中的所有动作,要们一次做完,要么就不做,它是不可分割的基本操作,原子操作不允许被中断)
- 资源管理功能
- 进程管理(实现进程同步与通信)
- 储存管理(地址转换,内存分配,回收功能,对内存的保护)
- 设备管理(缓和cpu与io设备速度不匹配的缓冲管理)
- 进程创建
- 进程的层次结构
- UNIX与windows的区别:
- UNIX允许父进程创建子进程,父进程可以控制子进程,子进程从父进程继承资源,进程不能拒绝子进程的继承权,PCB中设置进程家族关系表项。
- windows中一个进程创建另一个进程获得一个句柄,但是句柄可以传递给其他进程,有了句柄的进程可以对该进程进行控制,进程间不具有父子关系。
- UNIX与windows的区别:
- 进程图
- 引起创建进程的事件
- 用户登录(在分时系统中,一个终端用户键入登录命令后,若登录成功,系统将为该用户创建一个进程,并把它插入到就绪队列中)
- 作业调度(在多道批处理系统中,当按一定的调度算法调度到某一个作业时,便将它装入内存,为它创建进程,并把它插入就绪队列中)
- 提供服务(打印服务)
- 应用请求(以上都是由内核为用户创建进程,这类是用户进程为自己创建进程,如打字的时候,键盘输入进程,和屏幕输出进程)
- 进程的创建
- 申请空白的PCB为进程申请唯一的数字标识符,从PCB集合中索引一个空白PCB
- 为进程分配运行时所需资源
- 初始化PCB(标识信息,处理机状态信息,处理机控制信息,优先级)
- 如果进程就绪队列能够接纳新进程,便将新进程送入到队列中
- 进程的层次结构
- 进程的终止
- 引起进程终止的事件
- 正常结束(进程任务完成,准备退出运行)
- 异常结束(越界错,保护错,非法指令错,特权指令错,运行超时错,等待超时错,算术运算错,IO故障错)
- 外界干预(操作员或操作系统干预,父进程请求,父进程终止,)
- 进程的终止过程
- 根据被终止的进程标识符,从PCB集合中检索出该进程,从中读取进程状态
- 若被终止的进程处于执行状态,应立即终止该进程,并置调度表示为真,用于指示该进程被终止后应重新进行调度
- 若有子孙进程,还应将子孙进程终止,防止其变成不可控的进程
- 被终止的进程所有的资源归还于父进程或系统
- 将终止进程从所在的队列中移出,等待其他程序搜索信息
- 引起进程终止的事件
- 进程的阻塞和唤醒
- 引起进程阻塞和唤醒的事件
- 向系统请求共享资源失败
- 等待某种操作的完成
- 新数据尚未到达
- 等待新任务的到达
- 进程阻塞过程
- 进程使用阻塞原语block将自己阻塞,立即停止执行,将PCB的状态,由执行变为阻塞,并将PCB插入阻塞队列
- 进程唤醒过程
- 被阻塞的进程所期待的事件发生了。有相关进程调用唤醒语句wakeup,将等待该事件的进程唤醒。wakeup的执行过程:首先将被阻塞的进程从等待队列中移出,将PCB的状态由阻塞改为就绪,在将该PCB插入到就绪队列,注意:block和wakeup是一对作用相反的原语操作,要合作使用,否则阻塞的进程不会被唤醒永远处于阻塞状态,无机会再执行。
- 引起进程阻塞和唤醒的事件
- 进程的挂起与激活
- 进程的挂起
- 执行原语supend,将指定进程或处于阻塞状态的进程挂起。suspend执行过程:检查被挂起进程的状态,处于活动就绪态,改为静止就绪态,处于活动阻塞态,改为静止阻塞态;为了方便用户或父进程考查该进程的运行情况,而把该进程的PCB复制到指定的内存区域,最后,若被挂起的进程正在执行,则转向调度程序重新调度。
- 进程的激活过程
- 执行原语active,将指定进程激活。active执行过程:将进程从外存调入内存,检查进程的现行情况,处于静止就绪态,改为活动就绪态,处于静止阻塞态,改为活动阻塞态。加入采用抢占调度策略,按照优先级进行。
- 进程的挂起
标签:控制,队列,阻塞,PCB,进程,就绪,终止 来源: https://www.cnblogs.com/naturals/p/12499962.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。