【Java八股-第二十二期】内存分配 - 操作系统

提纲:

🔥操作系统内存分配

  • 连续内存分配

    • 单一连续分配

    • 固定分区分配

    • 动态分区分配

  • 非连续分配管理

    • 连续分配方式

    • 基本概念

    • 基本原理

    • 页面置换算法

    • 抖动

    • 分段存储

一、操作系统内存分配

1. 连续内存分配

  • 1、单一连续分配:将内存分为系统内存和用户内存,系统内存仅供系统使用,一般位于内存低地址区,只能用于单系统单进程

  • 2、固定分区分配:将用户内存分为多个固定大小的分区,每个分区只装入一个进程,分区大小过小会造成大任务无法放入,过大会造成大量内存碎片,内存利用率极低

  • 3、动态分区分配:根据进程大小动态分配分区大小与数量

    • 首次适应算法:维护一个空闲分区地址链,进程需要放入时,从低地址端开始查找,直到找到能放入的分区,在分区中划出一块内存放入进程缺点:每次从低地址端进行遍历,效率低,并且分区划分会产生大量内存碎片

    • 循环首次适应算法:在首次适应算法基础上,不再每次从低地址遍历,而是从上一次遍历的指针位置开始查找,从而减小了遍历的开销缺点:高地址部分的分区被多次划分,导致内存中的大的可用分区太少

    • 最佳适应算法:寻找第一个能放下进程且最小的分区缺点:这种方式产生的划出的剩余空间最小,意味着有大量无法利用的内存碎片,且每次划分后需要对分区链表进行重排序

    • 最差适应算法:刚好相反,每次都选择最大的分区放进程,通常划分后剩下的分区仍能装下新的进程缺点:内存中缺少大的分区的缺点更加明显

2.非连续分配管理

  • 连续分配方式:内存连续分配通常会产生大量内存碎片,不能很好的利用内存空间,并且通常开销较大

  • 基本概念:通过将用户进程需要的内存分散,将其装入不同的分区中,从而有效的利用内存,甚至可以让逻辑内存超过物理内存

  • 基本原理:

    • 1、每个用户进程都有一个需要的内存的地址空间,将这个地址空间划分为多个小块,每一个小块就是一个页,用户进程实际拥有的是一块连续的虚拟内存空间(vma),在物理内存中维护一个页表提供虚拟内存到物理内存的映射

    • 2、程序运行时不需要在物理内存中加载所有页,在程序引用到某页的内存地址时,由 cpu 的 MMU(内存管

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

代码鹿のJAVA八股面试题总结 文章被收录于专栏

【📫专栏目录在最底部📫】 - 本专栏适合于JAVA已经入门的学生或人士,有一定的编程基础。 - 本专栏特点: 本专刊囊括了JAVA、Spring、计算机网路、操作系统、计算机网络、MySQL、算法与数据结构、中间件等一系列知识点,总结出了高频面试考点(附有答案),事半功倍,为大家春秋招助力。 - 本专栏内容分为五章

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务