进程调度 - Sna1lGo

Sna1lGo 2021-08-21 原文


进程调度


概念:在合适的时候以一定策略选择一个就绪进程运行

 

原则:

  1.响应速度尽可能快

  2,进程处理时间尽可能短

  3,系统吞吐量尽可能大

  4.资源利用率尽可能高

  5.对所有进程要公平

  6.避免饥饿

  7.避免死锁

  //以上原则之间存在矛盾

 

进程调度目标:

  1.周转时间/平均周转周期:

    周转时间:进程提交给计算机到最后完成所花费的时间:

    t = tc-ts  //意义说明进程在系统中停留时间的长短

    平均周转时间:

    t = (t1+t2+t3+….tn)/n   

    意义:平均周转时间越短,意味着这些进程在系统内停留的时间越短,因此系统吞吐量就越大,资源利用率也就越高,

  2.带权周转时间/平均带权周转时间:

     

 

 

典型调度算法:

  1.先来先到服务:

    算法:按照作业进入系统的时间先来后到挑选作业,先进入系统的作业优先被运行

    特点:1.容易实现但是效率不高

       2.只考虑作业的等候时间,而没考虑运行时间的长短。因此一个晚来但是作业短的作业可能需要等待很长时间才能运行,不利于短作业。

  2.短作业优先调度算法:

    算法:参考运行时间,选取运行时间最短的作业投入运行。

    特点:易于实现,效率不高

       忽视了作业等待时间,容易出现资源饥饿现象。

  3.响应比高者优先调度算法:

    响应比定义:

      作业的相应时间和与运行时间的比值。

    响应比 = 响应时间/运行时间

        = (等待时间+运行时间)/运行时间

        = 1 + 等待时间/.运行时间

    算法:计算每个作业的响应比,选择响应比最高的作业优先投入运行

    如果作业等待时间相同,则运行时间短的先,

    如果运行时间相同,等待时间长的先

    如果运行世界长的可以随着等待时间增加而增加

  4.优先数调度算法

    算法: 

      根据进程优先数,把CPU分配给最高的进程

      进程优先数 = 静态优先数 + 动态优先数

    静态优先数:

      进程创建时确定,在整个进程运行期间不再改变

    动态优先数:

      动态优先数在进程运行期间可以改变

    静态优先数的确定:

      基于进程所需的资源多少

      基于进程运行时间的长短

      基于进程的类型(IO/CPU,前台/后台,核心/用户)

    动态优先数:

      当使用CPU超过一定时长时

      在进行I/O操作后

      当进程等待超过一定时长时

  5.循环轮转调度算法(Round-Robin)

    概念:把所有就绪进程按先进先出的原则排成队列。新来进程加到队列末尾。进程以时间片q为单位轮流使用CPU,刚刚运行一个时间片的进程排到队列末尾,等待下一轮运行。

    优点:

      公平性:每个就绪进程都有平等机会获得CPU

      交互性:每个进程等待(N-1)*q的时间就可以重新获得CPU

    时间片q的大小:

      q太大:交互性差

          甚至于退化成FCFS调度算法

      q太小:进程切换频繁,系统开销增加。

    改进:

      时间片的大小可变。

      组织多个就绪队列,

  6.可变时间片轮转调度法

  7.多重时间片循环调度法

 

posted on
2020-04-15 22:21 
Sna1lGo 
阅读(191
评论(0
编辑 
收藏 
举报

 

版权声明:本文为Sna1lGo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Sna1lGo/p/12708976.html

进程调度 - Sna1lGo的更多相关文章

  1. 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能(path2)

    接着上一篇来继续。 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7c […]...

  2. Apple开发者账号续费问题 – 黑鲤鱼与绿鲤鱼与驴

    Apple开发者账号续费问题 一、登录开发者网站        https://developer.apple […]...

  3. Linux netstat命令详解 – 王大王

    Linux netstat命令详解 简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接 […]...

  4. Mac : 强大的截图

    Mac截图 来源:http://irising.me/2011/11/12135/ Mac的截图功能扩展功能很 […]...

  5. 台式电脑Bios界面设置U盘启动 – 快乐糖果屋

    台式电脑Bios界面设置U盘启动        ...

  6. 同时开多个电脑版微信 – 森大科技

    同时开多个电脑版微信 GPS平台、网站建设、软件开发、系统运维,找森大网络科技!http://cnsendne […]...

  7. linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用   ————————————————————————————————————————————————————————————————————————— LINUX查看进程的4种方法 进程是在 CPU 及内存中运行的程序代码,而每个进程可以创建一个或多个进程(父子进程)。 **查看进程方法:** 第一种: ps aux   ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删

    https://www.cnblogs.com/bonelee/p/7735479.html https:// […]...

  8. android

    android – 多屏幕适配相关 作者: 曲天日期: 2011/10/27 1、基本概念 屏幕大小(scre […]...

随机推荐

  1. Android系统中的6种模式

    Android系统中的6种模式 1:一般启动模式(normal mode):    功能是正常启动手机,方法为 […]...

  2. 数据挖掘_requests模块的get方法

    关于requests模块 之前在跟大家讲通过字典列表批量获取数据的时候用过这个模块 安装过程就不再讲解了 re […]...

  3. [Linux]Ubuntu下如何将普通用户提升到root权限

      转至:http://jingyan.baidu.com/album/6181c3e0780131152ef […]...

  4. 求图像的信息熵

      1948年,香农(Claude E. Shannon)提出了信息熵的概念,解决了对信息的量化度量问题。香农 […]...

  5. 理解zookeeper选举机制

    原文转自:https://www.cnblogs.com/ASPNET2008/p/6421571.html […]...

  6. 使用BotFlow快速开发拉勾薪资爬虫

    Botflow是我开源的一个python项目,用于创建数据pipeline.也可以用于开发高性能的异步协程爬虫 […]...

  7. vue中的父组件传递数据给子组件、子组件传递数据给父组件

    vue中的父组件传递数据给子组件、子组件传递数据给父组件 1、父组件传递数据给子组件 中心思想:父组件向子组件 […]...

  8. activiti学习笔记

    activiti入门 activiti官网 pom.xml文件xml <!-- activiti --& […]...

展开目录

目录导航