计算机操作系统:内存篇

关于内存部分的个人总结

虚拟技术:把物理实体转换成多个虚拟实体。2种虚拟技术:时分复用(多线程/进程的时间片,实现并发),空分复用(虚拟内存)。
虚拟内存作用:OS为每个进程分配一套虚拟内存地址,使得每个进程分配一套独立的虚拟内存地址,使得每个进程独立,最后再映射回物理内存。且虚拟内存使用交换技术可以使用更大的内存空间,当发生缺页中断时,若内存无空闲页面,就会根据页面置换算法选择一个页面交换出去。所以在4g物理内存机器上申请8g内存:首先申请的都是虚拟内存,在32位上总共4G虚拟内存,内核区占1G,进程最多申请3G虚拟内存,会失败;64位内核和用户都有128T虚拟内存,进程理论上可以申请128T虚拟内存,所以申请8G内存理论上没问题。
如何管理虚拟地址和物理地址之间的关系:分段(用段表记录)、分页(页表)、段页结合。
页面置换算法:5大算法:
最佳页面置换:计算内存中每个页面下一次的访问时间,置换未来最长时间不访问的页面。但无法实现,一般作为一个参考依据。
先进先出FIFO:置换在内存时间最长的页面。
LRU
:置换最长时间没被访问的,即假设他未来很长时间也不会被访问。哈希链表实现,开销大(每次访问页面都要调整链表)。
时钟页面置换:兼顾lru和FIFO,把所有页面保存在类似钟面的环形链表,表针指向时间最长的页面,每个页面都有一个访问位(加载进内存设为0表示页面尚未被访问,为1表示被访问过),需要置换时,检查表针指向的页面,若访问位为0就置换它,把新页面插入到该位置,表针前移一个页面,若是1就改为0,继续前移直到找到访问位为0的页面。
最不常用算法LFU:置换访问次数最少的页面。只考虑效率没考虑时间,很容易误伤最近频繁访问的。

linux虚拟地址空间就是内核区+我们平时说的内存分区(用户态)
在这里插入图片描述
与我们说的内存分区(5个)相比,这个更细,数据段:已初始化的静态/全局变量,还有常量(只读数据段);BSS:未初始化的静态/全局变量;文件映射段:包括动态库,共享内存等
内存满了会发生什么:先后台异步回收内存,若跟不上进程申请速度,就直接回收(同步,会阻塞进程)。若直接回收后还不够,触发OOM机制根据算法选择一个杀死,直到内存足够。哪些内存可以被回收:内核缓存的数据、不常用的先置换出去,然后回收内存。
空闲空间管理策略:空闲表记录、空闲链表连起来、位图:2进制的每一位表示一个盘块是否使用。
操作系统进行内存管理要做什么:内存的分配、回收、逻辑扩充、地址转换、内存保护
内存分配方式:连续分配、非连续分配。连续分配有单一连续分配(一道程序占整个用户空间)、多分区分配、动态分区分配(不预先划分分区)。非连续分配:分页(等大分区,常见的页面置换,会有内部碎片)、分段(按需分配,会有外部碎片)、段页结合。
内存动态分区分配算法:也是连续分配。4大算法:
首次适应:空闲分区按地址递增的顺序排列,每次顺序查找找到第一个满足大小的分区,最简单,综合性能最好
最佳适应
:空闲分区按容量递增的顺序排列,每次顺序查找找到第一个满足的分区,这种可以保留大分区,但会产生很多小的内部碎片,且回收分区空闲链表重新排序。
最坏适应:按递减排序,先用最大的,他会把大内存用完,也有缺点。
邻近适应:每次从上次查找结束的位置开找,拍成循环队列,他也会使大分区被用掉。

地址转换过程:当分配虚拟内存后,会把他和物理内存映射到页表上。就是计算:每页为1KB。假定用户程序的页表如下所示。请计算逻辑地址0A5CH所对应的物理地址。
页内地址位数:1kb=2^10,即10位
逻辑地址= 页号 页内地址(就是拼接),即0000 10 10 0110 1100,得到页号,查页表,若越界触发缺点中断,查表得到内存块号,物理地址= 块号 页内地址,再化为16进制。
快表:之前进行地址转换差的的内存的页表也叫慢表,快表是速度比内存快很多的寄存器,存放最近使用过的页表项,以加速地址转换。所以若有快表,先查快表,命中就结束,未命中就查页表,然后把页表项拷贝到快表。
内部碎片:分配给进程的内存有一部分没用上
外部碎片:某些空闲区很小难以利用。
如何消除外部碎片:紧凑技术,对内存整理;或者内存交换。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值