页面分配策略

前言

  本文是内存的最后一篇内容,主要介绍页面的分配策略。
本文内容

1 页面分配、置换策略

  1.1 驻留集

  驻留集:指请求分页存储管理中给进程分配的物理内存块的集合。
  在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。

考虑以下两种极端情况,若某进程共有100个页面,则该进程的驻留集为100时,进程可以全部放入内存,运行期间不可能再发生缺页。若驻留集的大小为1,则进程在运行期间必定会极频繁的缺页。

  所以,如果驻留集太小,会导致缺页频繁,系统要花大量的时间来处理缺页,实际用于进程推进的时间很少。若驻留集太大,又会导致多道程序并发度下降,资源利用率降低。所以应该选择一个合适的驻留集大小。

  1.2 两种分配方式

  根据操作系统为进程分配的内存块是否固定可以分为:固定分配可变分配两种。

(1) 固定分配:操作系统为每个进程分配一组固定数组的物理块,在进程运行期间不再改变。即驻留集大小不变。
(2) 可变分配:先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。即驻留集大小可变。

  1.3 两种置换方式

  根据缺页置换时是否只从自己的页面中选择页面置换可以将置换分为:局部置换全局置换

(1) 局部置换:发生缺页时只能选进程自己的物理块进行置换。
(2) 全局置换:可以将操作系统保留的空闲物理块分配给缺页的进程,也可以将别的进程保持有的物理块置换到外存,再分配给缺页进程。

   1.4 分配置换策略

  所以,组合以上两种策略,可以得到以下三种策略:固定分配局部置换、可变分配局部置换、可变分配全局置换。

注:没有固定分配全局置换这种策略,因为全局置换就意味着一个进程拥有的物理块数必然可以改变,因此不可能是固定分配。

     1.4.1 固定分配局部置换

  固定分配局部置换:系统为每个进程分配一定数量的物理块,在整个运行期间都不改变。若进程在运行过程中发生缺页,则只能从该进程在内存中的页面中选出一页换出,然后再调入需要的页面。
  这种策略的缺点:很难在刚开始就确定应该为每个进程分配多少个物理块才算合理。(采用这种策略的系统可以根据进程大小、优先级、或是根据程序员给出的参数确定为一个进程分配的内存块数)

     1.4.2 可变分配全局置换

  可变分配全局置换:刚开始会为每个进程分配一定数量的物理块。操作系统会保持一个空闲物理块队列。当某个进程发生缺页时,从空闲的物理块中取出一块分配给该进程;若已无空闲物理块,则可选择一个未锁定(系统会锁定一些页面,这些页面中的内容不能置换出外存,如重要的内核数据)的页面换出外存,再将该物理块分配给缺页的进程。采用这种策略时,只要某进程发生缺页,都将获得新的物理块,仅当空闲块用完时,系统才选择一个未锁定的页面调出。被选择调出的页可能是系统中任何一个进程中的页,因此这个被选中的进程拥有的物理块会减少,缺页率会增加。

     1.4.3 可变分配局部置换

  可变分配局部置换:刚开始会为每个进程分配一定数量的物理块。当某进程发生缺页时,只允许从该进程自己的物理块中选出一个进行换出外存。如果进程中运行中频繁缺页,系统会为该进程多分配几个物理块,直至该进程缺页率趋势适当程度;反之,如果进程在运行中缺页率特别低,则可适当减少分配给该进程的物理块。

  可变分配局部置换 vs 可变分配全局置换

可变分配全局置换:只要缺页就给分配新的物理块
可变分配局部置换:要根据缺页的频率来动态地增加或减少进程物理块。

2 何时调入页面

  根据页面调入的时机可以分为:预调页策略请求调页策略
  预调页策略:根据局部性原理,一次调入若干个相邻的页面可能比一次调入一个页面更高效。但如果提前调入的页面中大多数都没有被访问过,则又是低效的。因此可以预测不久之后可能访问到的页面,将他们预先调入内存,但目前预测的成功率只有50&左右。
  故这种策略主要用于进程的首次调入,由程序员指出应该先调入哪些部分。
  
  请求调页策略:进程在运行期间缺页时才将所缺页面调入内存。由这种策略调入的页面一定会被访问到,但是由于每次只能调入一个页,而每次调页都要磁盘I/O操作,因此I/O开销大。

3 从何处调入页面

  之前在内存管理一文中的交换技术中提到磁盘被分为文件区和对换区两种。

  3.1 对换区空间充足

  当系统拥足够的对换区空间:在进程运行前,需将进程相关的数据从文件区复制到对换区。页面的调入、调出都是在内存与对换区之间进行,这样可以保证页面的调入、调出的速度很快。

  3.2 对换区空间不足

  当系统缺少足够的对换区空间:凡是不会被修改的数据都直接从文件区调入,由于这些页面不会被修改,因此换出时不必写回磁盘,下次需要时再从文件区调入即可。对于可能被修改的部分,换出时需要写回磁盘对换区,下次需要时再从对换区调入。

  3.3 UNIX的调入方式

  运行前将进程有关的数据全部放在文件区,故未使用的过的页面都可以从文件区调入。若被使用过的页面需要换出,则写回对换区,下次需要时从对换区调入。


4 抖动现象

  抖动(颠簸):指刚刚换出的页面马上又要被换入内存,刚刚换入的页面马上又要换出外存,这种频繁的页面调度行为。
  原因:进程频繁访问的页面数大于可用的物理块数,即分配给进程物理块不够。

5 工作集(了解)

  为进程分配的物理块太少,会使进程发生抖动现象。为进程分配物理块太多,又会降低系统整体的并发度,降低某些资源的利用。
  为了研究为每个进程分配多少个物理块,提出了工作集的概念。

  驻留集:指请求分页存储管理中给进程分配的内存块的集合。
  工作集:指在某段时间间隔里,进程实际访问页面的集合

  操作系统会根据“窗口尺寸”来计算工作集。例如,某进程的页面访问序列如下,窗口尺寸为4,下面两个时刻的工作集如下图所示


如上图中,如果某时刻访问的是23号页,那么此时刻的页面和23号页再向前3个页面共4个页面(窗口尺寸大小)这4个页面不重复的页面数就是工作集。同理,当访问到的是17号页时,工作集18,24,17三个页面。

  工作集大小可能小于窗口尺寸,实际应用中,操作系统可以统计进程的工作集大小,根据工作集大小给进程分配若干个内存块。如,窗口尺寸为5,经过一段时间监测发现某进程的工作集最大为3,那么说明该进程有很好的局部性,可以这个继承分配3个以上的内存块即可以满足进程的运行需要。
  一般来说,驻留集的大小不能小于工作集的大小,否则进程运行过程中将频繁缺页。

6 小结

  至此内存管理的全部内容已经结束,下面放一张内存管理的结构图。


  本文完

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容

  • 1 驻留集大小 对于分页式的虚拟内存,只需将部分页读取到主存,操作系统必须决定读取多少页(给特定进程分配多大主存空...
    saviochen阅读 1,409评论 0 4
  • 1. 虚拟存储器的基本概念 分析常规存储器管理不足的原因: 1)常规存储器管理方式的特征 一次性:作业在运行前一...
    Whocare_2f87阅读 1,081评论 0 0
  • 1. 虚拟存储器的基本概念 分析常规存储器管理不足的原因: 1)常规存储器管理方式的特征 一次性:作业在运行前一...
    盆栽木只阅读 1,313评论 0 0
  • 1.虚拟存储器的基本概念 1)常规存储器管理不足的原因: 常规存储器管理方式的特征: 一次性:作业在运行前一次性地...
    Pakho柏豪阅读 568评论 0 0
  • 8.1虚拟存储的需求背景 虚拟内存是非连续内存分配的一个延续,非连续内存分配在存储空间内可以连续也可以不连续。虚拟...
    龟龟51阅读 5,848评论 2 6