十天掌握操作系统之虚拟内存,内存管理收官之战!!!我不允许你错过今天的学习!!!


       操作系统(OS)这门学科在计算机领域有着很重要的作用,作为计算机硬件和软件的临界者,对计算机发展有着很重要的意义,随着时代的不断发展,越来越多的操作系统进入大众视野,无论是大家耳熟能详的Windows、MAC,抑或是程序员口中经常念叨的Linux。除了电脑操作系统,手机中的鸿蒙、苹果、安卓也是大家关注的热点,因此要想在计算机领域有所造诣,操作系统是必须要了解掌握的一门学科,因此在这里借助平台,跟大家分享一下我学习操作系统的经验和笔记,用十天的时间来和大家梳理和整理这门学科,让我们一起探索其中的奥秘,享受知识带给我们的快乐吧!!!

虚拟内存

一次性:作业必须一次性全部装入内存后才能开始运行。
驻留性:作业被装入内存后会一直驻留在内存中

高速缓冲技术:将近期频繁访问的数据放到更高速的存储器中

虚拟内存特性

  • 多次性:无需再作业运行时一次性全部装入内存,而是允许被分成多次调入内存
  • 对换性:在作业运行时无需常驻内存,允许允许过程中,作业进行换入、换出
  • 虚拟性:从逻辑上扩充了内存的容量

虚拟内存的实现

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

请求分页管理方式

(1)页表机制
请添加图片描述

  • 状态位P,用于指示该页是否己调入内存,供程序访问时参考。
  • 访问字段A,用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间没被访问,供置
  • 换算法换出页面时参考。
  • 修改位M,标识该页在调入内存后是否被修改过。
  • 外存地址,月于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。

(2)缺页中断机构
因为当前执行的指令想要访问的目标页面未调入内存而产生的,因此属于内中断。
一条指令在执行期间,可能产生多次缺页中断

(3)地址变化机构
请添加图片描述

页面置换算法

(1)最佳置换算法(OPT)
选择以后用不使用的页面或者是最长时间内不再被访问的页面淘汰(理想状态,无法实现)
请添加图片描述(2)先进先出置换算法(FIFO)
优先淘汰最早进入页面(驻留时间最久)
请添加图片描述Belady异常:当为进程分配的物理块数增大时,缺页次数不减反增的异常现象

(3)最近最久未使用置换算法(LRU)
选择最近最长时间未被访问过的页面予以淘汰
请添加图片描述
(4)时钟置换算法(CLOCK)
简单CLOCK算法:

  • 每个页面设置一个访问位,将内存中的页面通过链接指针链接成一个循环队列。
  • 当页面被访问时,其访问位置为1。当需要淘汰一个页面时,只需要检查页的访问位,如果是0,则换出。
  • 若第一轮扫描页面都是1,则将这些页面的访问位依次置为0,再进行第二轮扫描。

请添加图片描述改进CLOCK算法:

  • 在其他条件相同时,应优先淘汰没有修改过的页面,避免I/O操作。
  • 修改位=0表示没有被修改过,修改位=1表示页面被修改过,以(访问位,修改位)形式表示各页状态
  • 将所有可能被置换的页面排成一个循环队列
    第一轮:从当前位置开始扫描到第一个(0,0)的帧用于替换。本轮扫描不修改任何标志
    第二轮:若第一轮扫描失败,则重新扫描,查找第一个(0,1)的帧用于替换。本轮将所有扫描过的帧访问位设为0
    第三轮:若第二轮扫描失败,则重新扫描,查找第一个(0,0)的帧用于替换。本轮扫描不修改任何标志位
    第四轮:若第三轮扫描失败,则重新扫描,查找第一个(0,1)的帧用于替换

页面分配策略

驻留集:请求分页存储管理中给进程分配的物理块的集合,大小一般小于进程的总大小。
若驻留集太小会导致缺页频繁,若太大,会导致多道程序并发度下降。

  • 固定分配:操作系统为每个进程分配一组固定数目的物理块,驻留集大小不变
  • 可变分配:先为每个进程分配一定数目的物理块,进程运行过程中根据情况适当增加或减少
  • 局部置换:发生缺页是只能选择自己的物理块进行置换
  • 全局置换:可以将操作系统保留的空闲物理块发分配给缺页进程,也可以将别的进程持有的物理块置换到外存,再分配给缺页进程。
  • 固定分配局部置换:根据进程大小、优先级、或是根据程序员给出的参数来确定为一个进程分配的内存块数
  • 可变分配全局置换:只要某进程发生缺页,都将获得新的物理块
  • 可变分配局部置换:当进程发生缺页时,从自身物理块进行置换,根据缺页频率来动态增加和减少物理块

何时调入页面

  • 预调页策略:主要用于进程首次调入
  • 请求调页策略:在运行期间发现缺页时才将所缺页面调入内存

从何处调入页面

  • 系统有足够的对换区空间:页面的调入、调出都在调换区之间进行
  • 系统缺少足够的对换区空间:凡是不会被修改的数据都直接从文件区调入
  • UNIX方式:运行之前进程有关的数据全部放在文件区,被使用过的页面从对换区调入

抖动(颠簸)现象

刚刚换出的页面马上要换入内存,刚刚换入内存的页面马上要换出内存称为抖动

主要原因:进程频繁访问的页面数据高于可用的物理块数(分配给进程的物理块不够)

工作集:指在某段时间间隔里,进程实际访问页面的集合
工作集取决于窗口尺寸
工作集大小可能小于窗口尺寸
驻留集大小不能小于工作集大小,否则进程运行过程中将频繁缺页


      第八天的学习到这里就结束了,不知道小伙伴们收获如何呢?欢迎评论区交流学习,也恳请各位批评指正!!

      操作系统其实就是计算机中的一个大管家,这个大管家有着很多很厉害的角色(就像谍战片里面的大府中的老管家一样),因此学习操作系统这门课,就像是在欣赏一部谍战片,要想理解角色内涵,你就必须站在其角度去思考,思考其可能会遇到的危险以及应对策略(bug与bug的修复),这样你才能在凶险的代码江湖生存下来,成为一代英雄,留下你的印记,期待与各位在江湖的相遇,也希望大家能给作品一个三连!!


本文参考教材:王道考研——操作系统(配套PDF文件,点赞留言后私信我发你)
教材配套讲解视频:b站链接


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠笙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值