内功修炼之操作系统学习(处理器管理)

发表于:2012-6-26 10:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ithzhang    来源:51Testing软件测试网采编

  Windows2003陷阱调度。陷阱调度设施是用来处理意外事件的硬件机制,当中断或异常发生时硬件或软件可以捕获它们,暂停当前线程的执行,让处理器从用户态切换到核心态,并将控制权交给内核陷阱调度程序,陷阱调度程序将检测中断和异常的类型并进行调度,将控制权交给相应的代码。陷阱调度程序本身可以处理一些异常,但大多数情况下只判断和确定所发生的情况,并把控制权转交给内核的其他部分或执行体。如果是设备中断事件,将把控制权转交给设备驱动程序的中断服务例程。如果是系统调用服务事件,将把控制权转交给执行体中的系统服务代码。其他异常事件由内核自身的异常调度器发送并由相应的处理程序进行处理。

  异常是由运行程序的执行产生的,它是由内核的异常调度器提供服务,其任务是找到能够处理此异常的异常处理程序,内核所定义的异常有:主存访问越界,被0除,整数溢出,浮点异常和调试程序断点。Win32引入异常处理工具,允许应用程序在发生异常时能够得到控制,应用程序可将这个状态固定并返回至异常发生的地方展开堆栈,也可以向系统声明不识别此异常。

  内核俘获和处理对应用程序透明的某些异常,如程序调试断点异常,此时内核将调用调试程序来处理此异常。对于主存越界或算术溢出等异常,内核会原封不动的返回用户态程序来处理。操作系统建立基于栈帧的异常处理器来处理异常。当过程被调用时代表此过程激活的堆栈帧会被推入堆栈。堆栈帧可以有一个或多个与其相关的异常处理程序,每个处理程序都保存在源程序的一个特定代码块内。当异常发生时,内核将查找与当前堆栈帧相关的异常处理程序。如果不存在,内核将继续查找与前一个堆栈帧相关的异常处理程序,如此往复,如果还找不到,内核将调用系统默认的异常处理程序。

  陷阱调度可以调用系统服务,执行INT 2E指令引起一个系统陷阱,从用户态切换到核心态,进入系统服务调度器,被传递的参数指明被请求的系统服务号。内核将根据参数在系统调用服务调度表中查找响应的系统服务程序。

  进程

  所有多道程序设计都是建立在进程的基础上的。进程是为了刻画系统内部的动态状况、描述运行程序的活动规律而引进的概念。从理论角度看,进程是对当前运行程序的活动规律的抽象。从实现角度看,进程是一种数据结构,用来刻画系统动态变化的内在规律,有效地管理和调度在计算机系统运行的程序。

  进程是程序在数据集合上的一次执行过程。它由创建而产生,由调度而执行,由事件而等待,由撤销而消亡。

  进程由程序块、数据块、进程核心栈和进程控制块组成。由三种状态:运行态,占用处理器运行的状态。就绪态:具备运行条件,等待系统分配处理器。等待态:又称阻塞态,是指进程不具备运行条件,正在等待某个事件完成。

  处于运行态的进程个数不能大于处理器个数。而处于就绪态和等待态的进程可以有多个。通常在创建后就处于就绪态。Cpu调度程序永远在就绪队列选取进程,所以所有进程只能从就绪态转到运行态,而不能从等待态转到运行态。

  在很多系统中增加了新建态和终止态。新建态对应于进程被创建的状态,尚未进入就绪队列。终止态,指进程完成任务,到达正常结束点。

  主存资源是有限的,有时主存资源不能满足进程运行的要求,此时必须把某些进程挂起,置于磁盘对换区中,释放其占用的某些资源,暂时不参加低级调度。用户在调试程序时,可以请求挂起某进程,以便进行某种检查或修改。为此又添加两个状态:挂起就绪态,表明具备运行条件,但目前在辅存中。挂起等待态,表明进程正在等待某一事件发生且进程在辅助存储器中。

  挂起进程等同于不在主存的进程,不会参与低级调度。不能立即执行,可能会等待某个事件发生。

  程序和数据描述进程的静态特征,进程控制块刻画进程的动态特征。进程控制块用于存储进程的标识信息、现场信息和控制信息。它与进程一一对应。是操作系统掌握进程的唯一资料和管理进程的主要依据。

  进程控制块保存进程的标识信息,如进程号、保存cpu现场,用于恢复运行时恢复处理器现场。同时还保存用于管理和调度进程的控制信息,包括:一进程调度信息,如进程状态、等待时间和等待原因、进程优先级、队列指针等。二进程组成信息,如正文段指针,数据段指针,指向父子进程的信息。三进程间通信信息,如消息队列指针、所使用的信号量和锁。四cpu占用和使用信息,如时间片剩余、已占用时间。五资源清单,如进程所需的全部资源、已经分得的资源,如主存、设备、打开文件表等。六进程特权信息,如主存访问权限和处理器特权。

  进程映像还包括进程核心栈,用于当进程在核心态工作(系统调用等)时使用,用来保存中断/异常现场,保存函数调用的参数和返回地址等。

  Pcb(process control block)是操作系统最重要的数据结构,包含管理进程所需要的全部信息,只有内核可以修改pcb。操作系统根据pcb对并发执行的进程进行管理,进程借助于pcb才能被调度执行。

  进程队列:把处于同一状态的所有进程的pcb连接在一起的数据结构。如运行队列,就绪队列和等待队列。组织方式有:线性方式,连接方式和索引方式。运行队列中通常只有一个进程,就绪队列中可按照优先级或FIFO原则排队,也可以按照进程优先级的高低分成多个就绪队列。等待队列通常有多个,对应不同的等待队列。

  当发生某个事件使进程的状态发生转换时,进程就要退出所在队列而排入另一个队列。处理器调度中负责进程入队和岀对的功能模块成为队列管理模块。

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号