操作系统学习笔记(调度)

如果只有一个CPU可用, 那么就必须选择下一个要运行的进程。 在操作系统中, 完成选择工作的这一部分称为调度程序 (scheduler)。

进程:

            cpu密集型和IO密集型。

             

            随着CPU变得越来越快, 更多的进程倾向为I/O密集型。基本思想: 如果需要运行I/O密集型进程, 那么就应该让它尽快得到机会, 以便发出磁盘请求并保持磁盘始终忙碌。

 

            何时调度:

                     第一, 在创建一个新进程之后, 需要决定是运行父进程还是运行子进程。

                     第二, 一个进程不再运行时, 从就绪进程集中选择另外某个进程。

                     第三,当一个进程阻塞在I/O和信号量上或由于其他原因阻塞时, 必须选择另一个进程运行。

                     第四, 在一个I/O中断发生时, 必须做出调度决策。

 

            根据如何处理时钟中断, 可以把调度算法分为两类。抢占式和非抢占式。

 

            


            不同的系统:

 

            批处理系统: 吞吐量、 周转时间以及CPU利用率。

            交互系统:最小响应时间、均衡性(与复杂度相匹配的处理时间)

            实时系统: 截止时间。

 

            批处理系统调度算法:

                1. 先来先服务。

                2.最短作业优先。

                3. 最短剩余时间优先。(抢占式调度),每次有新任务来就比较当前任务剩余时间和新到任务的时间。

            

            交互系统的调度算法:(重点掌握)

                1. 轮转调度。(时间片)

                    主要考虑时间片的时间片长度,因为从一个进程切换到另一个进程是需要一定时间进行管理事务处理的,包括

                    保存和装入寄存器值及内存映像、 更新各种表格和列表、 清除和重新调入内存高速缓存等。

                    因此: 时间片短,调度消耗大。时间片设长,调度浪费小。但任务数量多时会产生严重的等待。

 

                2. 优先级调度

              为了防止高优先级进程无休止地运行下去, 调度程序可以在每个时钟滴答(即每个时钟中断) 降低当前进程的优级。

            优先级可以是静态赋予或动态赋予。

               动态优先级策略: 使I/O密集型进程获得较好服务的一种简单算法是, 将其优先级设为1/f, f为该进程在上一时间片中所占的部分。 一个在其50ms的时间片中只使用1ms的进程将获得优先级50, 而在阻塞之前用掉25ms的进程将具有优先级2, 而使用掉全部时间片的进程将得到优先级1。

                        

                3. 多级队列

                     属于最高优先级类的进程运行一个时间片, 属于次高优先级类的进程运行2个时间片, 再次一级运行4个时间片, 以此类推。当一个进程用完分配的时间片后, 它被移到下一类。

 

                4. 最短进程优先

                     这里惟一的问题是如何从当前可运行进程中找出最短的那一个进程。  一种办法是根据进程过去的行为进行推测, 并执行估计运行时间最短的那一个。 这种通过当前测量值和先前估计值进行加权平均而得到下一个估计值的技术称作老化(aging) 。

 

                5. 保证调度

                     若用户工作时有n个用户登录, 则用户将获得CPU处理能力的1/n。

 

                6. 彩票调度

                     其基本思想是向进程提供各种系统资源(如CPU时间) 的彩票。 一旦需要做出一项调度决策时, 就随机抽出一张彩票, 拥有该彩票的进程获得该资源。 如果希望协作进程可以交换它们的彩票。 例如, 有一个客户进程向服务器进程发送消息后就被阻塞, 该客户进程可以把它所有的彩票交给服务器,以便增加该服务器下次运行的机会。在服务器运行完成之后, 该服务器再把彩票还给客户机, 这样客户机又可以运行了。

 

                7. 公平分享调度

                     某些系统在调度处理之前考虑谁拥有进程这一因素。 在这种模式中,每个用户分配到CPU时间的一部分, 而调度程序以一种强制的方式选择进程。 这样, 如果两个用户都得到获得50%CPU时间的保证, 那么无论一个用户有多少进程存在, 每个用户都会得到应有的CPU份额。

 

                实时系统的调度算法:

                     实时系统通常可以分为硬实时(hard real time) 和软实时(soft real time) , 前者的含义是必须满足绝对的截止时间, 后者的含义是虽然不希望偶尔错失截止时间, 但是可以容忍。

 


            线程调度:

                         和进程调度的区别:  取决于所支持的是用户级线程还是内核级线程(或两者都支持)。

                         用户级线程:

                                     由于内核并不知道有线程存在, 所以内核还是和以前一样地操作。

                                    

                         结论:   轮转调度和优先级调度更为常用。 惟一的局限是, 缺乏一个时钟将运行过长的线程加以中断。

 

                        内核级线程:

                         用户级线程和内核级线程之间的差别在于性能。 用户级线程的线程切换需要少量的机器指令, 而内核级线程需要完整的上下文切换,修改内存映像, 使高速缓存失效, 这导致了若干数量级的延迟。另一方面, 在使用内核级线程时, 一旦线程阻塞在I/O上就不需要像在用户级线程中那样将整个进程挂起。

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值