zoukankan      html  css  js  c++  java
  • 内存管理

    1.内存管理

    虚拟内存

    虚拟内存时一种计算机系统内存管理的技术,目的是为了防止不同的进程同一时刻对物理内存的抢夺。这种技术让每个进程认为它拥有连续可用的内存(一个连续完整的地址空间),互相不会干扰到对方。实际上,它通常被分隔成多个物理内存碎片,还有部分暂存在外部磁盘存储器上,需要时进行数据交换。这种技术使得大型程序的编写更容易,对真正的物理内存使用也更有效率。
    对虚拟内存的定义是基于对地址空间的重定义,把地址空间定义为连续的虚拟内存地址,借以欺骗程序,让它认为自己正在使用一大块连续的地址。

    虚拟内存管理

    1、分页式存储管理:现代操作系统中,虚拟内存和物理内存都是按照页来进行管理的,一个内存页式一段固定大小的连续内存地址的总称,因此内存地址可以通过页号和页内偏移来进行表示。
    在这种系统中,允许进程去把每一页离散的存储在内存的任一物理块中,为了在内存中找到每个页面的物理块,系统给进程建立一个一张页表,用来记录进程逻辑页面和内存物理页面之间的对应关系。
    页表就是为了实现从页号到物理块号的映射。地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列。

    2、分段式存储管理
    段时按照程序的自然分界划分的长度可以动态改变的区域。通常程序员把子程序、操作数、常数等不同类型的数据划分到不同的段中,每个程序可以有多个相同类型的段,将用户程序地址空间分成若干个大小不同的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。

    在段式虚拟存储系统中,虚拟地址由段号和段内地址组成,每个表项至少包括三个字段:有效位(指明该段是否已经调入主存)、段起址(该段在实存中的首地址)和段长(记录该段的实际长度)

    3、段页式存储管理
    段页式存储组织是分段式和分页式结合的存储组织方法,这样可充分利用分段管理和分页管理的优点。

    • 用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。
    • 用分页方法来分配和管理实存。即把整个主存分成与上述页大小相等的存储块,可装入作业的任何一页。程序对内存的调入或调出是按页进行的。但它又可按段实现共享和保护。

    2.分页调度算法

    • 1.最近最久未使用算法(LRU) Recently ,选择过去一段时间内最久没有使用的页面。
    • 2.最不经常访问算法(LFU) Frequently,每个数据块有一个引用计数,相同的按时间排序,淘汰末尾的,使用最少的页面。
    • 3.先进先出算法(FIFO) 置换最先调入的页面,先进入内存的页先推出。建立一个FIFO队列,收容所有在内存中的页,被置换页面总是在队列头,当一个页面放入内存时,就插在队尾。

    3.虚拟内存实现。

    为了让物理内存扩充成更大的逻辑内存,让程序获得更多的可用内存。
    为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

    4.进程调度算法

    • 先来先服务:这是最简单,最基本的算法,它的思想非常简单,就是按照进程到来的时间顺序,逐个分配 CPU 资源
    • 短作业优先 从后备队列中选择运行时间最短的进程进行服务。
      缺点:
      【1】必须知道作业的运行时间,在采用这种算法时,要先知道每个作业运行时间。即使是程序员也很难估计作业的运行时间,如果估计过低,系统就可能按照估计的时间终止作业的运行,但此时作业并没有完成,故一般都会偏长估计。
      【2】对长作业非常不利,长作业的周转时间会明显的增长。
      【3】该调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能够得到及时处理。
    • 优先级调度:按照进程的优先级选择调度顺序
    • 时间片轮转算法:为CPU的执行设定一个时间片大小,每个进程轮询分配时间片,时间片借宿后暂停运行加入等待队列
    • 多级反馈队列调度算法:将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
      -高响应比优先调度算法 根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。
  • 相关阅读:
    mac os x 查看网络端口情况
    mac 启动php-fpm报错 failed to open configuration file '/private/etc/php-fpm.conf': No such file or direc
    视频播放—— H5同层播放器接入规范
    [转]webpack中require和import的区别
    职场方法论系列—怎样做项目
    一幅图帮你搞懂订单的拆分与合并
    如何用数据去驱动决策?
    分库分表的 9种分布式主键ID 生成方案,挺全乎的
    快手基于 Apache Flink 的优化实践
    SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别
  • 原文地址:https://www.cnblogs.com/EvansPudding/p/12701895.html
Copyright © 2011-2022 走看看