操作系统基础-进程控制(4)

2018-12-19 15:17:47 george518 ...

一、内核

核心态和用户态

为了防止用户应用程序访问或更改重要的操作系统数据,Windows 2000、UNIX使用两种处理器访问模式:核心态和用户态(又称管态和目态)。
操作系统代码在核心态下运行,即在x86处理器Ring0运行,它有着最高的特权。
而用户应用程序代码在用户态下运行,即在x86处理器Ring3中运行。
用户应用程序(在Windows 2000中以用户线程方式出现)运行用户程序一般代码时,它是在用户态下执行。但当程序要调用系统服务,例如要调用操作系统中负责从磁盘文件中读取数据的NT执行体例程时,它就要通过一条专门的指令(自陷指令/访管指令)来完成从用户态切换到核心态,操作系统根据该指令及有关参数,执行用户的请求服务。在服务完成后将处理器模式切换回用户态,并将控制返回用户线程。因此用户线程有时在核心态下执行,在核心态下执行的是调用操作系统有关功能模块的代码。

原语

原语是一种特殊的广义指令,它的功能是由系统通过一段不可分割的指令操作来完成,它又称原子操作,原语在核心态下完成。进程控制操作(创建、撤消、阻塞……)大都为原语操作,原语的执行可以通过关中断实现。

内核功能

内核是计算机硬件上的第一层扩充软件,它是OS中关键部分,它是管理控制中心。内核在核心态下运行,常驻内存,内核通过执行各种原语操作来实现各种控制和管理功能。

二、进程管理软件

概念级的进程管理软件包括:

  • 系统调用/中断/异常处理程序
  • 队列管理模块
  • 进程控制程序
  • 进程调度程序(独立进程居多)
  • 进程通信程序(多个程序包)
  • 终端登录与作业控制程序、性能监控程序、审计程序等外围程序

三、进程实现的队列模块

队列管理模块是操作系统实现进程管理的核心模块
操作系统建立多个进程队列,包括就绪队列和等待队列
按需组织为先进先出队列与优先队列
队列中的进程可以通过PCB中的队列指引元采用单/双指引元或索引连接
出队和入队操作
进程与资源调度围绕进程队列展开

四、进程的控制与管理

进程创建:

进程表加一项,申请PCB并初始化,生成标识,建立映像,分配资源,移入就绪队列

进程撤销:

从队列中移除,归还资源,撤销标识,回收PCB,移除进程表项

进程阻塞:

保存现场信息,修改PCB,移入等待队列,调度其他进程执行

进程唤醒:

等待队列中移出,修改PCB,移入就绪队列(该进程优先级高于运行进程触发抢占)

进程挂起:

修改状态并出入相关队列,收回内存等资源送至对换区

进程激活:

分配内存,修改状态并出入相关队列

其他:

如修改进程特权

五、进程状态的细化

“挂起”、 “激活”操作的引入

系统管理员有时需要暂停某个进程,以便排除系统故障或暂时减轻系统负荷,用户有时也希望暂停自己的进程以便检查自己作业的中间结果。这就希望系统提供“挂起”操作,暂停进程运行,同是也要提供“激活”的操作,恢复被挂起的进程。由于被挂起前进程的状态有三种,挂起后的进程就分为二种状态:静止就绪态和静止阻塞态(有的称挂起就绪态和挂起阻塞态)。挂起前的进程就绪态和阻塞态也改为活动就绪态和活动阻塞态。

当进程处于运行态和活动就绪态时,执行挂起操作,进程状态转换为静止就绪态。当进程处于活动阻塞态时,执行挂起操作,进程状态转换为静止阻塞态。对被挂起的进程施加“激活”操作,则处于静止就绪的进程转换为活动就绪态,处于静止阻塞态的进程转换为活动阻塞态。被挂起的处于静止阻塞态的进程当它等待的事件发生后,它就由静止阻塞态转换为静止就绪态。


参考:https://blog.csdn.net/xiaokang123456kao/article/details/73773474

相似文章