美文网首页
2021-09-12 linux内核理解——系统内存管理功能3

2021-09-12 linux内核理解——系统内存管理功能3

作者: MaggieXie | 来源:发表于2021-09-13 00:28 被阅读0次

    如果一个/多个进程的存储空间超过了内存的总容量
    那么连续分配和非连续分配方式均无法实现
    如何在一片较小的空间内运行较大的进程?就要用到今天所提到的虚拟内存的管理。
    实现方法:让不会同时执行(即不存在调用关系的)的程序模块共享一片存储区。
    1.覆盖技术:一个进程的不同模块
    如下图所示,A模块需要调用B和C,C模块需要调用D和E,B和C不同时调用,D和E也不同时调用。因此在运行时先运行A30K,再用25K的内存运行B,等B运行完后,C覆盖B的25K运行,接着C调用D运行,占据的内存为10K,最后运行E,占用了D运行的30K。


    1.png

    这种方法可以实现小内存大进程的任务,但是需要对进程间的关系进行分析,非常耗费时间。
    2.交换(对换)技术:可以增加正在执行或者需要执行的进程的内存。
    将暂不执行的进程换出内存,将满足执行条件的进程换入内存。
    换出换出的单位是整个进程。
    交换的时机发生在两种时候:第一种是当进程正在执行的时候,发现了内存不足,那么就需要把其他未在执行的进程换出;第二种是当进程将要执行时,发现内存不足将内存中未在执行的进程换出。
    换出的进程一般是处于阻塞状态且优先级最低的进程。
    而换入的进程一般是就绪状态,将其中换出时间最久的进程换入。

    局部性原理
    时间局部性:一条指令的执行或者下一次执行,一个数据的方位或者下一次访问都集中在一个较短的时间内。
    空间局部性:当前执行的指令和临近的几条指令,当前访问的数据和临近的几个数据都集中在一个较小的区域内。
    分支局部性:一条跳转指令的两次执行,很有可能跳到相同的位置。

    注:开这个帖子的目的是为了记录一下自己负基础的生信学习过程,本次笔记的视频来自于操作系统【内存管理】_哔哩哔哩_bilibili,若是有记录的不妥之处,欢迎各位指正。

    相关文章

      网友评论

          本文标题:2021-09-12 linux内核理解——系统内存管理功能3

          本文链接:https://www.haomeiwen.com/subject/qoyowltx.html