操作系统之页面分配策略(驻留集、工作集、置换策略、抖动)

2023-11-05 19:51

本文主要是介绍操作系统之页面分配策略(驻留集、工作集、置换策略、抖动),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:https://www.bilibili.com/video/BV1YE411D7nH

在这里插入图片描述

驻留集

概念:请求分页存储管理中给进程分配的内存块的集合(由于采用了虚拟存储技术,驻留集的大小一般小于进程的大小)。若驻留集太小,会导致频繁缺页;太大,则会导致多道程序并发度降低,资源利用率下降。


要知道固定分配局部置换、可变分配全部置换、可变分配局部置换的意思,首先需要知道以下几个概念:

1、 固定分配:操作系统为每个进程分配一组固定数目大小的物理块。在程序运行过程中,不允许改变!即驻留集大小固定不变。

2、可变分配:先为每个进程分配一定大小的物理块,在程序运行过程中,可以动态改变物理块的大小。即,驻留集大小可变

3、局部置换:进程发生缺页时,只能选择当前进程中的物理块进行置换

4、全局置换:可以将操作系统进程中保留的空闲物理块分配给缺页进程,还可以将别的进程持有的物理块置换到外存,再将这个物理块分配给缺页的进程

固定分配局部置换

概念:系统为每个进程分配一定数量的内存块(物理块),在整个运行期都不改变。若进程在运行过程中发生了缺页,则只能在本进程的内存页面中选出一个进行换出,然后再调用需要的页面。

缺点:很难确定一个进程到底应该分配多大的实际内存才合理

可变分配全局置换

概念:系统为每个进程分配一定数量的内存块(物理块)。操作系统还会保持一个空闲物理块的队列。若某进程发生缺页,可以从空闲物理块中取出一块分配给该进程。如果空闲物理块没有了,那么会选择一个未锁定(不是那么重要)的页面换出到外存,再将物理块分配给缺页的进程。

缺点:在空闲物理块没有的情况下,如果将其他进程的页面调出到外存,那么这个进程就会拥有较小的驻留集,如此会导致该进程的缺页率上升

可变分配局部置换

概念:刚开始会为每个进程分配一定数量的物理块。当进程发生缺页时,只允许当前进程的物理块中选出一个换出外存。如果当前进程在运行的时候频繁缺页,系统会为该进程动态增加一些物理块,直到该进程缺页率趋于适中程度;如果说一个进程在运行过程中缺页率很低或者不缺页,则可以适当减少该进程分配的物理块。通过这些操作可以保持多道程序的并发度较高。

可变分配全局置换和可变分配局部置换的区别

可变分配全局置换:只要发生缺页,就会分配新的物理块

可变分配局部置换:根据缺页率动态增加或者减少物理块的数量

页面调入的时机

  1. 预调页策略:基于局部性原理,一次调入若干个相邻页面可能比一次调入一个页面更高效。

    缺点:如果调入的若干页面是不会被马上访问的,那么这样效率又会很低。

  2. 请求调页策略:只有在进程处于运行期,且发生缺页的时候才被调入内存。

    缺点:缺页时每次只会调入一页,每次从外存到内存的调入都会进行I/O操作,因此I/O开销较大。

从何处调入页面

​ 外存(磁盘)一般分为对换区文件区,对换区的读写速度较快,且采用连续分配方式;文件区读写速度较慢,采用离散分配方式

​ 1、在系统拥有足够大的对换区空间时,页面的调入、调出都在内存对换区中进行。注:在进程运行前,需要将进程相关的数据从文件区复制到对换区。

​ 2、当对换区空间不够大时:凡是不会在运行过程中不会被修改的数据就直接从文件区调入(不会被修改,那么到时候就不会再次被写入到磁盘);对于可能会被修改的数据,交换时需要写回对换区,下次从对换区调入。

​ 3、UNIX系统采用的方式:进程有关的数据都存放在文件区。未使用过的页面都会从文件区调入。被使用的页面在进行置换时放到对换区,下次使用时从对换区调入。

页面抖动(颠簸现象)

概念刚刚换出到外存的页面马上要换入内存,刚刚换入的页面马上要调入到外存

产生原因:系统为进程分配的物理块大小不足

导致的问题:系统会花大量时间进行换入、换出操作,而真正用于进程实际运行的时间大大减少

为了解决抖动问题,提出了==工作集==的概念

工作集:在某段时间间隔内,进程实际访问页面的集合(区别于驻留集,驻留集是指请求分页管理存储中给进程分配的物理块大小)

操作系统会根据"窗口尺寸"来算出工作集。如:某进程的页面访问序列是:24,15,18,23,24,12,17,18,14,18,17,若窗口尺寸为3,那么对于18来说,其工作集就是24 15 18,对于12来说,其工作集就是23 24 12。

工作集的大小可能会小于窗口尺寸。比如对于15来说,其工作集大小为24 15。实际应用中,操作系统会统计某个进程的工作集大小根据工作集大小为进程分配物理块。一般来说驻留集的大小不能小于工作集大小,否则会导致频繁缺页

这篇关于操作系统之页面分配策略(驻留集、工作集、置换策略、抖动)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352126

相关文章

C#实现将Excel工作表拆分为多个窗格

《C#实现将Excel工作表拆分为多个窗格》在日常工作中,我们经常需要处理包含大量数据的Excel文件,本文将深入探讨如何在C#中利用强大的Spire.XLSfor.NET自动化实现Excel工作表的... 目录为什么需要拆分 Excel 窗格借助 Spire.XLS for .NET 实现冻结窗格(Fro

Python结合Free Spire.PDF for Python实现PDF页面旋转

《Python结合FreeSpire.PDFforPython实现PDF页面旋转》在日常办公或文档处理中,我们经常会遇到PDF页面方向错误的问题,本文将分享如何用Python结合FreeSpir... 目录基础实现:单页PDF精准旋转完整代码代码解析进阶操作:覆盖多场景旋转需求1. 旋转指定角度(90/27

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

使用Python实现在PDF中添加、导入、复制、移动与删除页面

《使用Python实现在PDF中添加、导入、复制、移动与删除页面》在日常办公和自动化任务中,我们经常需要对PDF文件进行页面级的编辑,使用Python,你可以轻松实现这些操作,而无需依赖AdobeAc... 目录1. 向 PDF 添加空白页2. 从另一个 PDF 导入页面3. 删除 PDF 中的页面4. 在

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

Redis中删除策略的几种实现方式

《Redis中删除策略的几种实现方式》本文详细介绍了Redis的过期键删除策略和内存淘汰策略,过期键删除策略包括定时删除、惰性删除和定期删除,具有一定的参考价值,感兴趣的可以了解一下... 目录前言一、设计背景:为什么需要删除策略?二、第一类:过期键的 3 种核心删除策略1. 定时删除(Timed Dele

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同