CPU 时间片 分时 轮转调度

时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。

举例

编辑

你同时输入两篇文档:A.txt和B.txt;

你在A中输入一个字之后,再在B中输入一个字,轮流输入,直至完成。总的看来你似乎在同时进行两篇文章的录入,你可以说我一边写A一边写B。但是具体到某个字时,就是沿着时间的前进,AB交替进行了。而你每个字输入所占用的这段时间,我们就可以称之为时间片。

操作系统

编辑

嵌入式操作系统可以分为实时操作系统和分时操作系统两类。

实时

实时操作系统是指具有实时性,能支持实时控制系统工作的操作系统。实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务;其次才着眼于提高计算机系统的使用效率,其重要特点是通过任务调度来满足对于重要事件在规定的时间内做出正确的响应。实时操作系统与分时操作系统有着明显的区别。具体地说,对于分时操作系统,软件的执行在时间上的要求并不严格,时间上的延误或者时序上的错误,一般不会造成灾难性的后果。而对于实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件必须在事件随机发生时,在严格的时限内做出响应(系统的响应时间)。即使是系统处在尖峰负荷下,也应如此,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行的最好和最坏情况做出精确的估计。

分时

分时操作系统是把CPU的时间划分成长短基本相同的时间区间,即"时间片",通过操作系统的管理,把这些时间片依次轮流地分配给各个用户使用.如果某个作业在时间片结束之前,整个任务还没有完成,那么该作业就被暂停下来,放弃CPU,等待下一轮循环再继续做.此时CPU又分配给另一个作业去使用.由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给它的一个时间片到获得下一个CPU时间片,中间有所"停顿";但用户察觉不出来,好像整个系统全由它"独占"似的.

轮转调度

编辑

时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

时间片轮转调度中唯一有趣的一点是时间片的长度。从一个进程切换到另一个进程是需要一定时间的–保存和装入寄存器值及内存映像,更新各种表格和队列等。假如进程切换(process switch) - 有时称为上下文切换(context switch),需要5毫秒,再假设时间片设为20毫秒,则在做完20毫秒有用的工作之后,CPU将花费5毫秒来进行进程切换。CPU时间的20%被浪费在了管理开销上。

为了提高CPU效率,我们可以将时间片设为500毫秒。这时浪费的时间只有1%。但考虑在一个分时系统中,如果有十个交互用户几乎同时按下回车键,将发生什么情况?假设所有其他进程都用足它们的时间片的话,最后一个不幸的进程不得不等待0.5秒钟才获得运行机会。多数用户无法忍受一条简短命令要0.5秒钟才能做出响应。同样的问题在一台支持多道程序的个人计算机上也会发生。

通常状况下,一个系统中所有的进程被分配到的时间片长短并不是相等的,尽管初始时间片基本相等(在Linux系统中,初始时间片也不相等,而是各自父进程的一半),系统通过测量进程处于“睡眠”和“正在运行”状态的时间长短来计算每个进程的交互性,交互性和每个进程预设的静态优先级(Nice值)的叠加即是动态优先级,动态优先级按比例缩放就是要分配给那个进程时间片的长短。一般地,为了获得较快的响应速度,交互性强的进程(即趋向于IO消耗型)被分配到的时间片要长于交互性弱的(趋向于处理器消耗型)进程。

结论可以归结如下:时间片设得太短会导致过多的进程切换,降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。将时间片设为100毫秒通常是一个比较合理的折衷。

【操作系统】CPU 时间片 分时 轮转调度相关推荐

  1. JOS 轮转调度实现

    JOS的轮转调度示意图: JOS的轮转调度思想比较简单,当env[i]进程来调用sched_yield()函数的时候,表示进程i要让出CPU了,此时,系统会从i开始,不停的往下寻找状态为runnabl ...

  2. 计算机操作系统实验之进程调度(一)轮转调度法(C语言)

    计算机操作系统实验之进程调度(一)轮转调度法(C语言) 实验目的 实验内容与基本要求 轮转调度法的基本原理 实现思路及功能分析 算法流程图 全部代码 工程图 ProcessScheduling.h P ...

  3. 操作系统 cpu调度_CPU调度| 操作系统

    操作系统 cpu调度 调度标准 (Scheduling Criteria) There are many criteria which have been suggested for comparin ...

  4. 操作系统 | CPU调度

    CPU调度概述 CPU调度是多任务操作系统的基础,目的是使得CPU尽可能用于执行指令,从而提高CPU效率. 进程之间存在竞争,需要操作系统选择一个进程来进行这种转换. 长程和短程调度 长程调度 又称作 ...

  5. 操作系统——CPU调度

    基本概念 进程执行由CPU区间和I/O区间组成,I/O为主程序里短CPU区间多,CPU为主程序里长CPU区间多. CPU调度程序:抢占调度,非抢占调度 分派程序:切换上下文,切换到用户模式,跳转到用户 ...

  6. 操作系统:进程控制与调度

    目录 3.3 进程控制与调度 3.3.1 进程执行 3.3.2 进程调度 3.3.3 进程调度算法 3.4 作业与进程的关系 3.5 线程引入 3.3 进程控制与调度 3.3.1 进程执行 系统模型: ...

  7. CPU 时间片轮转机制 (RR 调度)

    时间片轮转机制(RR 调度) 时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度.为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列.新来的进程加到就绪队列末尾.每 ...

  8. 操作系统CPU调度策略---07

    操作系统CPU调度策略---07 多进程图像与CPU调度 CPU调度(进程调度)的直观想法 面对诸多场景,如何设计调度算法? 如何做到合理? 需要折中,需要综合- 各种CPU调度算法 First Co ...

  9. 时间片轮转调度 java_操作系统- 实验一  模拟处理机调度的时间片轮转法(Java实现)...

    实验一  模拟处理机调度的时间片轮转法 一.实验目的:用c/c++模拟时间片轮转法 二.实验内容:输入进程的个数,每个进程的名称及每个进程需要工作的时间,本实验中假定对CPU时间片设置为一个时间单位, ...

最新文章

  1. 换个角度看“Q币门”事件
  2. 医疗器械软件安全性级别判定
  3. 易支付系统源码_刷脸支付系统源码,插件源码合作模式有哪些,采购源码需要注意什么...
  4. leetcode —— 523. 连续的子数组和
  5. 95-910-140-源码-FlinkSQL-FlinkSQL简介
  6. error C2065等:******未声明的标识符错误
  7. console_init初始化的研究
  8. 《算法基础》——3.9 总结
  9. 2018年俄罗斯世界杯之Java数据爬虫(二)
  10. The captain题目回顾
  11. 狂神说Vue笔记整理
  12. 雷达信号处理-雷达应用
  13. 进存销管理系统(仓库管理系统)
  14. 抽象工厂模式(三):抽象工厂模式概述
  15. python基础5-模块定义、导入方法、import本质、time和datetime、random、os、sys、shutil、shelve、xml、ConfigParser、hashlib、re
  16. Echarts各个图表data的格式问题
  17. Unity3d 周分享(14期 2019.4.1 )
  18. Font\隶书\“ is not available to the JVM See the Javados for more details
  19. [附源码]计算机毕业设计Python+uniapp基于安卓的校园二手书籍交易APP1yh1y(程序+lw+APP+远程部署)
  20. DataX以及增量同步

热门文章

  1. UG NX与PLC-1500的在环虚拟测试
  2. 安川与欧姆龙Plc通讯设置方法
  3. 本地git代码推送到远程git步骤
  4. 关于PL-2303HX驱动问题
  5. 51单片机 串口通信
  6. 使用AndroidStudio与RN 运行ract-native run-android遇到的那些坑
  7. ## 项目第十五天 ##
  8. 记录学习过程——SIMetrix如何放置光耦
  9. wav文件的采样位数从16位转换到8位的C语言实现
  10. android studio freeline,Android Studio配置freeline遇到的问题