当前位置: 首页 > article >正文

抖动(Thrashing)

在操作系统中,抖动(Thrashing)是一种严重影响系统性能的现象,通常发生在多道程序设计环境中,当同时运行的进程数过多,且它们频繁访问的页面数高于可用的物理块数时,进程会频繁缺页,导致页面在内存与外存之间频繁调度,系统效率急剧下降,甚至导致系统崩溃。

抖动的产生原因主要有以下几点:

  1. 多道程序度过高:当同时运行的进程数过多时,每个进程都需要访问自己的页面,而物理内存有限,无法满足所有进程的需求,导致频繁缺页和页面置换。
  2. 进程频繁访问的页面数高于可用的物理块数:每个进程都有自己的工作集,即它在运行过程中频繁访问的页面集合。如果工作集的大小超过了可用的物理块数,那么进程在运行过程中就会频繁缺页。
  3. 页面置换算法不佳:一些页面置换算法(如FIFO)可能无法有效地利用内存,导致进程频繁缺页和页面置换,从而加剧抖动现象。

为了防止抖动,可以采取以下措施:

  1. 采用局部置换策略:局部置换策略可以限制抖动的影响范围,将抖动影响局限在单个进程内,防止其扩散到整个系统。
  2. 引入工作集算法:工作集是进程在一段时间内频繁访问的页面集合。通过监视每个进程的工作集变化情况,并为其分配足够的物理块,可以确保进程在运行过程中不会因为缺页而频繁中断。
  3. 调整并发程序度:当多道程序度偏高,已影响到处理机的利用率时,为了防止发生抖动,系统必须减少多道程序的数目。可以通过挂起一些低优先级的进程来腾出内存空间。
  4. 利用“L=S”准则调节缺页率:L是缺页之间的平均时间,S是处理一次缺页的时间。通过调整并发程序度,使得L与S接近,可以达到最佳的磁盘和处理机利用率,从而防止抖动。
  5. 选择合适的页面置换算法:一些高效的页面置换算法(如LRU、CLOCK等)可以更好地利用内存,减少缺页次数和页面置换次数,从而减轻抖动现象。


http://www.kler.cn/news/367683.html

相关文章:

  • ELK日志收集
  • Linux复习-C++
  • 基于Spring Boot的装饰工程管理系统源码(springboot)
  • Qt Essential Classes
  • JSON.stringify用法
  • 读《认知觉醒》:浅谈费曼技巧
  • 数据挖掘(三)
  • 【OSlab】qemu和AbstractMachine的使用
  • 504 Gateway Time-outopenresty
  • 【译】图数据库
  • JVM 加载 class 文件的原理机制
  • 在vue中 如何实现跨域
  • STM32实现毫秒级时间同步
  • 【解惑】如何用python输出“1024“
  • SQL CHECK 约束:确保数据完整性的关键
  • 【LeetCode】修炼之路-0008- String to Integer (atoi)【python】
  • 世优科技AI数字人180+面部控制参数,雕琢智能体精准表达
  • C++面向对象-继承,多态,重载
  • Pytest+Allure+飞书机器人
  • Video-XL:面向小时级视频理解的超长视觉语言模型
  • STL-常用容器-list
  • Go通过gorm连接sqlserver报错TLS Handshake failed
  • LSP的建立
  • flask服务通过gunicorn启动,supervised管理服务
  • Flutter仿京东商城APP实战 用户中心基础布局
  • Go中的指针指向指针(双指针)