操作系统 内存相关

本文详细探讨了内存覆盖、内存交换、虚拟内存以及它们在内存管理中的作用,包括内存覆盖技术如何提高内存利用效率,内存交换如何处理内存紧张,虚拟内存如何通过分段和分页解决内存碎片问题,以及malloc原理和内存池的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0 内存

cpu和内存的关系

内存覆盖

内存的覆盖是一种在程序运行时将部分程序和数据分为固定区和覆盖区的技术。这种技术的主要目的是为了解决程序较大,无法一次性装入内存导致无法运行的问题。

具体来说,内存的覆盖技术将用户空间划分为以下两个部分:

  1. 固定区: 存放程序的经常活跃的部分,这部分内容在程序运行的整个生命周期内都常驻内存中,不发生变化。

  2. 覆盖区: 将程序的其他部分按照调用关系分段,首先将即将要访问的段放入覆盖区,而其他段则放在外存中。在需要调用未在覆盖区的段之前,系统会将其调入覆盖区,替换覆盖区中原有的段,从而实现对程序和数据的动态调度。

内存覆盖技术的特点:

  • 灵活性: 允许程序只在需要时才将特定部分调入内存,而不是一次性装入整个程序。这提高了内存的利用效率。

  • 节省内存空间: 由于只有活跃部分才会常驻内存,可以在有限的内存空间中运行较大的程序。

  • 实现动态调度: 能够根据程序运行时的调用关系,动态地将程序和数据调入内存,避免了全部加载到内存的限制。

  • 需要注意更新的范围: 内存中能够更新的地方主要是覆盖区的段,因为不在覆盖区的段是常驻内存的,不会随着程序的执行而改变。

总体而言,内存的覆盖技术提供了一种灵活的方式,使得较大的程序能够在有限的内存空间中运行,并在需要时动态地调度程序和数据。

内存交换

内存交换是一种操作系统采用的技术,用于在内存紧张时进行动态的进程调度,将部分进程从内存中暂时换出,以便腾出空间供其他进程运行。同时,将一些已具备运行条件的进程从外存(磁盘等)调入内存,实现内存资源的动态调度。

特点:

  1. 解决内存紧张问题: 内存交换的主要目的是解决内存空间不足的问题。当系统中运行的进程过多,导致内存中的页面频繁发生缺页中断时,系统可以考虑进行内存交换,将部分进程换出到外存,腾出内存空间。

  2. 动态调度进程: 交换技术允许系统根据进程的运行状态和优先级,动态地在内存和外存之间进行调度。这样,即使内存中无法容纳所有进程,也可以根据需要调入最需要运行的进程。

  3. 换入和换出: 内存交换包括两个主要阶段,即换入和换出。换入是将准备运行的程序从外存移到内存,而换出是将一些处于等待状态的程序从内存移到外存。这样可以灵活地控制内存中的进程。

  4. 系统负荷降低时暂停: 内存交换通常在系统负荷较大、内存不足的情况下进行。一旦通过内存交换腾出足够的空间,系统负荷下降,缺页率明显下降,就可以考虑暂停内存交换,避免频繁地进行换入和换出,以提高系统性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值