进程调度- 长期、中期与短期调度

进程调度机制
一个操作系统会管理大量的进程,数量远远超过计算机的CPU核心数量,他们使用的内存也可能超过可用的内存总量。为了协调多个进程对CPU和内存的使用,操作系统使用的进程调度机制。进程调度机制可分为长期、中期、短期调度,从而对CPU、内存、I/O资源的使用进行管理。

长期、中期与短期调度

1.长期调度

思考:当一个程序尝试运行时,操作系统是否应该立即为其创建对应的进程,并将进程设置为就绪状态呢?设想一下,大量的进程在短时间内被创建出来,会造成调度决策(即短期调度)需要考虑的进程数量剧增、调度开销变大的问题。因此,即使用户已经向操作系统提交了执行某个程序的请求,系统可能也不会立即处理该请求。这一决策是由操作系统的长期调度负责的。
长期调度就行一个阀门,用于限制系统中真正被短期调度的进程数量,避免短期调度的开销过大。当长期调度为某个程序创建了进程并将其状态设置为就绪状态后,会由短期调度进一步管理该进程。因此,长期调度决定了当前真正可被调度的进程的数量。
长期调度可以根据当前系统中的CPU、I/O利用率情况,选取合适的计算密集型或I/O密集型进程,交由短期调度管理。如此,可以有效地控制系统中的资源利用情况,避免出现激烈的资源竞争或某项资源的利用率过低的情况。

2.短期调度

短期调度主要进程在就绪状态、运行状态、阻塞状态间的转换。在短期调度决定执行一个进程时,会将该进程从就绪状态设置为运行状态。短期调度使用适当地调度策略,尽可能地满足系统的调度指标。处于就绪状态的进程需要被短期调度允许才能运行,而处于运行状态的进程可能会被短期调度打断,避免占用CPU时间过长,影响调度的公平性。
如果运行状态的进程发起I/O请求、等待用户输入或睡眠,则会主动进入阻塞状态,当I/O事件完成后再重新进入就绪状态。在操作系统中一般触发短期调度的事件包括:进程的创建、执行结束、硬件中断、系统调用等。

3.中期调度

长期调度和短期调度一般会从CPU、I/O资源的角度做出调度决策。然而,操作系统中的内存资源还没被考虑到。虽然长期调度已经限制了被短期调度管理的进程数量,但是他们的内存使用量在运行时仍然有可能超出系统中的内存总量。此时,操作系统需要将内存使用情况也纳入考量,避免内存使用过多,这是由中期调度来负责的。
中期调度实际上是换页机制的一部分。如果当前系统中的进程已经占用了大量内存,中期调度会挂起系统中被短期调度管理的进程,进而降低进程占用的内存总量。具体而言,中期调度会根据某些策略选择将要被官气的进程(频繁触发缺页异常的进程、长时间未响应的进程等),该进程会被设置为对应的挂起状态,标志着它不会再被调度执行。同时,换页机制会倾向于选择被挂起的进程所使用的内存页替换入磁盘。中期调度也会监控当前内存使用情况,并在适当地时机激活此前挂起的进程,使其可被重新调度。
基于进程调度的进程状态转换在这里插入图片描述
上图为基于进程调度的进程状态转换,与常规进程间状态转换相比多了两个额外的状态:挂起就绪状态和挂起阻塞状态。处于这两种状态的进程无法被短期调度执行。当中期调度将就绪状态或阻塞状态的进程挂起后,会对应地将进程设置为挂起就绪状态或挂起阻塞装填。
一般处于阻塞状态的进程是在等待I/O请求、用户输入或睡眠,需要等到一定事件被触发后才能重新被设置为就绪状态。类似地,处于挂起阻塞状态的进程也无法被调度,不过其状态仍然可以在对应事件被触发时被设置为挂起就绪状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值