计算机操作系统线程讲解,计算机操作系统进程(线程)调度

进程是并发机制的实体和基础,调度则是实现并发机制的手段。

在此需要说明的是:最初,调度的对象是进程,由于现在操作系统都引入了线程这个概念,从而使进程蜕变为资源分配和管理的对象,而线程就成了调度的对象。尽管对象发生了变化,但在调度的策略和方法方面并没有发生实质性的变化,加之一些小型操作系统根本就没有线程的概念,因此下面有关调度问题的讨论都是以进程为对象的。

所谓进程调度,是指在系统中所有的就绪进程里,按照某种策略确定一个合适的进程并让处理器运行它。

从使进程获取处理器使用权的方式来看,有两类调度方式:第一类叫做可剥夺方式;第二类叫做不可剥夺方式。

在可剥夺调度方式下,当一个进程正在被处理器所运行时,其他就绪进程可以按照事先规定的规则,强行剥夺正在运行进程的处理器使用权,而使自己获得处理器使用权并得以运行。

常用的规则是把系统中的所有进程都赋以一个优先级别,这个优先级别就表示了一个进程使用处理器权力大小,并规定在系统运行时,高优先级别的进程可以剥夺低优先级别的进程的处理器使用权。

在不可剥夺调度方式下,一旦某个进程获得了处理器的使用权,则该进程就不再让出处理器,其他就绪进程只有等到该进程结束,或因某个事件不能继续运行自愿让出处理器时,才有机会获得处理器使用权。

在操作系统中,负责调度工作的是一个叫做调度器或者分派器的程序模块。它是操作系统最为核心的部分之一,工作十分繁忙。所以,调度器所使用调度策略的优劣直接影响到整个系统的性能,因此,这个模块的代码要求精心设计,并常驻内存工作。

从代码来看,调度器或分派器一般由两部分组成:调度部分和进程切换部分。在调度部分中,调度器要在所有就绪进程中按既定策略确定出比当前正在运行进程更有资格获得处理器的进程。如果存在比当前正在运行进程更有资格获得处理器的进程,那么在进程切换部分中,调度器要使当前正在运行的进程中止,以让出处理器来运行调度部分确定出来的那个进程。

具体来说,在调度器的调度部分中,应负责完成两项任务:一是把当前进程的状态信息记录在进程的控制块中;二是按某种策略确定应获得处理器使用杈的就绪进程。在调度器的进程切换部分中,也要负责完成两项任务:首先要从正在运行的进程收回处理器;然后再把处理器让给已经确定可以使用处理器的就绪进程来占用。

进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。

这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器的寄存器中的中间数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用。那么被中止运行进程的中问数据存在何处好呢?当然这个地方应该是进程的私有堆栈。

让进程来占用处理器,实质上是把某个进程存放在私有堆栈中寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中去,并把待运行进程的断点送入处理器的程序指针PC,于是待运行进程就开始被处理器运行了,也就是这个进程已经占有处理器的使用权了。

这就像多个同学要分时使用同一张课桌一样9说是要收回正在使用课桌同学的课桌使用权,实质上就是让他把属于他的东西拿走;而赋予某个同学课桌使用权,只不过就是让他把他的东西放到课桌上罢了。

在切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程的上下文,所以进程的 切换实质上就是被中止运行进程与待运行进程上下文的切换。在进程未占用处理器时,进程 的上下文是存储在进程的私有堆栈中的。

从上面的叙述可知,调度器进程切换的代码应有如下功能:

●保存处理器PC寄存器的值到被中止进程的私有堆栈;

●保存处理器PSW寄存器的值到被中止进程的私有堆栈;

●保存处理器SP寄存器的值到被中止进程的进程控制块;

●保存处理器其他寄存器的值到被中止进程的私有堆栈;

●自待运行进程的进程控制块取SP值并存入处理器的寄存器SP;

●自待运行进程的私有堆栈恢复处理器各寄存器的值;

●自待运行进程的私有堆栈中弹出PSW值并送入处理器的PSW;

●自待运行进程的私有堆栈中弹出PC值并送入处理器的PC。

显然,进程的切换可以用中断技术来实现,即当调度器获得了待运行进程的控制块之后,应立即用软中断指令来中止当前进程的运行,并保存当前进程的PC值和PSW值。其后,使 用压栈指令把处理器其他寄存器的值压入进程私有堆栈。接下来,就从待运行进程的进程控 制块中取出私有堆栈指针的值并存入处理器的寄存器SP,至此SP就指向了待运行进程的私 有堆栈,于是下面就自待运行进程的私有堆栈中弹出上下文进人处理器。最后,利用中断返回指令来实现自待运行进程的私有堆栈中弹出PSW值和自待运行进程的私有堆栈中弹出PC值的功能。

这是一个完整的软中断处理过程,只不过在保护现场和恢复现场工作中,保护的是被中止 运行进程的现场,恢复的是待运行进程的现场,这一切都依赖于堆栈指针的切换。

进程切换时,被中止进程保护断点和待运行进程保护断点的示意图如图所示。

23128187_1.gif

图 调度器进行进程切换的动作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值