2.2.2 进程调度的时机、调度方式

2.2.2.1 进程调度的时机

  进程调度(低级调度)就是按照某种算法从就绪队列中选择一个进程为其分配处理机。需要进程调度的时机有以下两种情况:当前进程主动放弃处理机,当前进程被动放弃处理机。

  当前进程主动放弃处理机:进程正常终止;运行过程中发生异常而终止;进程主动请求阻塞(如 等待I/O)

当前进程被动放弃处理机:分给进程的时间片用完、有更紧急的事需要处理(如 I/O中断)、有更高优先级的进程进入就绪队列

  禁止进行进程调度和切换的时机有:1. 在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。2. 进程在操作系统内核程序临界区中。3. 在原子操作过程中(原语),因为原子操作不可中断。

需要留意的是进程在操作系统内核程序临界区中时不可以进行进程切换,但是进程在临界区的时候可以进行进程切换。这里解释一下临界区:临界区是用来访问临界资源的代码块,临界资源是在一个时间内仅允许一个进程访问的资源。内核程序临界区是指访问内核程序资源的代码。因为内核程序临界资源一般是比较重要的,如果在这里进行进程切换就可能会导致一些进程迟迟访问不到资源而等待时间过长饿死。

2.2.2.2 进程调度的方式

抢占式:允许调度程序根据某种原则去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。

非抢占式:一旦把处理机分配给某进程后,不管它要运行多长时间,一直让它运行下去,决不会因为时钟中断等原因而抢占正在运行进程的处理机,也不允许其它进程抢占已经分配给它的处理机。直至该进程完成,自愿释放处理机,或发生某事件而被阻塞时,才再把处理机分配给其他进程。

操作系统(十四)进程调度的时机、调度方式相关推荐

  1. 八、进程调度的时机、切换与过程,调度方式

    一.知识总览 二.进程调度的时机 1.进程在操作系统内核程序临界区不能进行调度与切换,但若说成进程处于临界区时不能进行处理机调度是错误的. 2.临界资源:一个时间段内只允许一个进程使用的资源,各进程需 ...

  2. 王道操作系统考研笔记——2.1.7 进程调度的时机、切换与过程、方式

    文章目录 2.1.7 进程调度的时机.切换与过程.方式 2.1.7.1 进程调度的时机 2.1.7.2 进程调度的方式 2.1.7.3 进程的切换和过程 2.1.7.4 小结 2.1.7 进程调度的时 ...

  3. 进程调度的时机切换与过程调度方式

    进程调度的时机 进程调度和切换程序是操作系统内核程序. 请求调度的事件发生后,才可能运行进程调度程序,调度了新的就绪进程后,才会进行进程的切换.理论上这三件事情应该顺序执行,但在实际设计中,操作系统内 ...

  4. 操作系统之进程调度 (十一) --- 进程调度的时机、进程调度的方式、进程调度的狭义与广义...

    文章目录 进程调度 进程调度的时机 对遗留问题的解释 进程调度的方式 进程调度的狭义与广义 总结 感谢 进程调度 进程调度的时机 在上篇中说到,进程调度(低级调度),就是按照某种算法从就绪队列中选择一 ...

  5. OS2.2.2:进程调度的时机、切换过程、调度方式

    文章目录 知识总览 进程调度 进程调度的时机 临界资源与临界区 进程调度的方式 进程的切换与过程 总结 知识总览 进程调度 进程调度的时机 什么时候要进行进程调度与切换的情况? 不能进行进程调度与切换 ...

  6. 你管这叫操作系统源码(十四)

    文章目录 shell程序跑起来了 操作系统启动完毕 总结 shell程序跑起来了 shell只是个标准,具体的是实现有很多,比如Ubuntu18.04上,具体的shell实现是bash: ~$ ech ...

  7. 《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(上一)

    文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 部分缩写熟知 闲聊时刻 实现文件系统的原理 inode构建原理 目录构建原理 超级块构建思路 创建文件系统 编写完的super_block.h ...

  8. 《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(上二)

    文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 闲聊时刻 部分缩写熟知 实现文件描述符的原理 文件描述符的介绍 文件描述符与inode的介绍 文件描述符与PCB的描述符数组的介绍 实现文件操 ...

  9. 《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(总结篇)

    文章目录 专栏博客链接 闲聊时刻 第十四章代码总览 编写完的fs.c(fs/fs.c) 编写完的fs.h(fs/fs.h) 编写完的dir.c(fs/dir.c) 编写完的dir.h(fs/dir.h ...

最新文章

  1. python不能创建新变量_Python之变量的创建过程!
  2. java中服务器瘫痪怎么办,跑的好好的 Java 进程,怎么突然就瘫痪了
  3. JVM调优总结(1):一些概念
  4. Python爬虫教程之Scrapy 框架
  5. Linux 数据处理
  6. HDU - 1054 Strategic Game (二分图匹配模板题)
  7. win10自动休眠解决方法
  8. 唯一被图灵求婚的女人,与他并肩破译纳粹德国 Enigma 密码,拯救千万人生命!| 人物志...
  9. Code Review 效率低?来试试智能语法服务
  10. 五大常用算法:贪心算法
  11. Matlab之字体风格修饰
  12. html使用iframe包含pdf文件,react项目利用iframe显示pdf文件并打印
  13. Android 解决GreenDao:Failed to notify project evaluation listener
  14. 多timer管理实例-八音盒
  15. PostmanCn: Postman中文版
  16. MarkdownPad2 插入数学公式Mathjax
  17. OSM数据分析及图形化显示以及各组员之间的关系Relation的存储
  18. Ambari——大数据平台的搭建利器(一)
  19. 在软件测试面试中,碰到这些「送命题」,大牛教你一招应对
  20. matlab三维绘图注释,Matlab三维绘图与图形处理

热门文章

  1. 网络安全概念是什么?互联网时代它为何如此重要?
  2. ActiveMQ broker 集群, 静态发现和动态发现
  3. 解决redhat的未注册问题
  4. 吴恩达 coursera ML 第五课总结+作业答案
  5. Windows 下安装Pytorch
  6. 信号处理:傅立叶变换的波形分辨率和频率分辨率
  7. Python:安装dlib库
  8. Python:Selenium错误小结
  9. Linux下实用的查看内存和多核CPU状态命令
  10. 在java 里kv 是什么_consul kv使用介绍