0 内存
cpu和内存的关系
内存覆盖
内存的覆盖是一种在程序运行时将部分程序和数据分为固定区和覆盖区的技术。这种技术的主要目的是为了解决程序较大,无法一次性装入内存导致无法运行的问题。
具体来说,内存的覆盖技术将用户空间划分为以下两个部分:
-
固定区: 存放程序的经常活跃的部分,这部分内容在程序运行的整个生命周期内都常驻内存中,不发生变化。
-
覆盖区: 将程序的其他部分按照调用关系分段,首先将即将要访问的段放入覆盖区,而其他段则放在外存中。在需要调用未在覆盖区的段之前,系统会将其调入覆盖区,替换覆盖区中原有的段,从而实现对程序和数据的动态调度。
内存覆盖技术的特点:
-
灵活性: 允许程序只在需要时才将特定部分调入内存,而不是一次性装入整个程序。这提高了内存的利用效率。
-
节省内存空间: 由于只有活跃部分才会常驻内存,可以在有限的内存空间中运行较大的程序。
-
实现动态调度: 能够根据程序运行时的调用关系,动态地将程序和数据调入内存,避免了全部加载到内存的限制。
-
需要注意更新的范围: 内存中能够更新的地方主要是覆盖区的段,因为不在覆盖区的段是常驻内存的,不会随着程序的执行而改变。
总体而言,内存的覆盖技术提供了一种灵活的方式,使得较大的程序能够在有限的内存空间中运行,并在需要时动态地调度程序和数据。
内存交换
内存交换是一种操作系统采用的技术,用于在内存紧张时进行动态的进程调度,将部分进程从内存中暂时换出,以便腾出空间供其他进程运行。同时,将一些已具备运行条件的进程从外存(磁盘等)调入内存,实现内存资源的动态调度。
特点:
-
解决内存紧张问题: 内存交换的主要目的是解决内存空间不足的问题。当系统中运行的进程过多,导致内存中的页面频繁发生缺页中断时,系统可以考虑进行内存交换,将部分进程换出到外存,腾出内存空间。
-
动态调度进程: 交换技术允许系统根据进程的运行状态和优先级,动态地在内存和外存之间进行调度。这样,即使内存中无法容纳所有进程,也可以根据需要调入最需要运行的进程。
-
换入和换出: 内存交换包括两个主要阶段,即换入和换出。换入是将准备运行的程序从外存移到内存,而换出是将一些处于等待状态的程序从内存移到外存。这样可以灵活地控制内存中的进程。
-
系统负荷降低时暂停: 内存交换通常在系统负荷较大、内存不足的情况下进行。一旦通过内存交换腾出足够的空间,系统负荷下降,缺页率明显下降,就可以考虑暂停内存交换,避免频繁地进行换入和换出,以提高系统性能。