操作系统-存储器管理部分

存储器历来都是计算机系统中重要的组成部分。仍然是一种宝贵而又稀缺的资源。

如何对它加以有效的管理,不仅直接影响到存储器的利用效率,而且会影响系统的性能。

存储器的管理的主要对象是内存。在计算机执行时,几乎每一条指令都会涉及到对存储器的访问。

存储器的三个理想条件(这三个条件从现在技术来讲是不可能同时达到的)

1.对存储器的访问速度要跟得上处理机的运行速度。

2.要求存储器要有很大的容量。

3.而且存储器的造价应该很低。

在现代计算机系统当中无一例外的采用了多层结构的存储器系统。

存储器的多层结构

对于通用计算机而言,存储层次至少应具有三级:CPU寄存器,主存,辅存。

在存储层次当中,层次越高,存储介质的访问速度越快,价格越高,其存储容量越小。

寄存器,高速缓存,主存储器,磁盘缓存均属于操作系统中存储管理的管辖范畴。断电后它们所保存的信息将会消失。

固定磁盘,可移动存储介质的管理属于设备管理的范畴,它们存储的信息将被长期保存。

可执行存储器

在计算机系统的存储层次当中,寄存器和主存储器又被称为可执行存储器。

进程可以在很少的时钟时期内使用一条load或store指令对可执行存储器进行访问。而对辅存的访问则需要通过I/O设备来实现,所消耗的时间远大于访问可执行存储器所消耗的时间,一般相差3个数量级或者更多。

操作系统的存储管理负责对可执行存储器的分配,回收以及各存储层次之间的数据交换进行管理。

 

主存储器

主存储器简称内存或者主存,是计算机的主要部件,用于保存进程运行过程中的程序与数据,也称为可执行存储器。通常,处理机都是从主存储器中获取指令和数据的。

由于主存储器访问速度远低于CPU执行指令的速度,为缓解此矛盾,在计算机系统当中引入了寄存器和高速缓存。

寄存器

寄存器具有和处理机相同的速度,故对寄存器的访问速度最快,完全能与CPU协调工作,但价格十分昂贵,于是存储容量不能很大。

在当前的微机系统与大中型机当中,寄存器的位数通常为32与64位,而在小型的嵌入式计算机中,寄存器的位数通常为8位。

高速缓存

高速缓存是现代计算机结构中的一个重要部件,它是介于寄存器与存储器之间的存储器,主要用于备份主存中较常用的数据,以减少处理机对主存储器的访问次数,这样可以大幅度提高程序的运行速度。

高数缓存的容量大于寄存器的容量,访问速度比主存储器快。

在计算机系统中,为了缓解内存与处理机速度之间的矛盾,许多地方都设置了高速缓存。

通常,进程的数据和程序存放在主存储器当中,仅当要被访问时,才被临时复制到高速缓存当中。当CPU访问一组特定信息的时候,首先会检查该信息是否在高速缓存当中,如果在,则直接从高速缓存中取出,不需要去访问主存。否则,需要访问主存来获取信息。

紧靠内存的一级高速缓存的速度最高,容量最小。越远,速度越低,容量越大。

磁盘缓存

由于目前磁盘的I/O速度远低于对主存的访问速度,为了缓解两者速度的矛盾,设置了磁盘缓存,主要用于暂时存放频繁使用的一部分磁盘数据和信息,以减少访问磁盘的次数。

数据必须先存在主存当中,才能输出到辅存当中。

程序的装入和链接

用户程序变成一个可以执行的程序通常要经过以下几个步骤:

1.编译,由编译程序对源程序进行编译,形成若干个目标模块。

2.链接,由链接程序将编译程序形成后的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的装入模块。

3.装入,由装入程序将装入模块装入内存。

在将一个装入模块装入内存时,可以有如下三种装入方式:

1.绝对装入方式

当计算机系统很小,且仅能运行单道程序的时候,完全有可能知道程序将驻留在内存的什么位置。此时可以采用绝对装入方式。

用户程序经过编译后,将产生绝对地址的目标代码。装入模块被装入内存之后,由于程序和数据的逻辑地址与物理地址是相同的,所以不需要改变程序和数据的地址。

可重定位装入方式(在装入内存时完成的,装入完成后全部的地址都是物理地址)

它可以根据内存的具体情况将装入模块装入到内存的合适位置。

在多道程序环境下,编译程序不可能知道经过编译后的目标模块应存放在内存的什么位置。因此,对于用户程序编译所形成的若干个目标模块,它们的起始地址通常都是从0开始,程序中的其他地址都是相对于起始地址计算的。

通常,把装入进程时对目标进程的指令和数据的地址的修改过程叫做重定位。又因地址变换通常是在进程装入时一次完成的,此后不再发生变化,因此叫做静态重定位。

可重定位装入方式可以将装入模块加载到内存的任何允许的位置,可用于多道程序环境。

动态运行时的装入方式

动态运行时的装入程序在把装入模块装入内存后,并不立即把模块的逻辑地址变为物理地址,而是当该程序真正要执行时才进行地址转换,因此装入内存后的所有地址均为逻辑地址。

程序的链接

在对目标模块进行链接时,根据进行链接的时间不同,可把链接分为三种:

1.静态链接方式

在程序运行前,先将目标模块和所需的库函数链接成为一个装入模块,以后不再拆开。我们把这种事先进行链接的方式叫做静态链接方式。

原文地址:https://www.cnblogs.com/Virus-Faker/p/11939325.html

时间: 2024-10-10 07:58:39

操作系统-存储器管理部分的相关文章

操作系统-存储器管理

存储器管理 存储器的层次结构 程序的装入和链接 用户程序要在系统中运行的话,就必须装入内存,然偶后将其转变为一个可执行的程序. 编译 由编译程序对用户源程序进行编译,形成若干个目标文件 链接 由链接程序将编译后形成的一组目标模块以及它们所需要的库函数接在一起,形成一个完整的装入模块 装入 由装入程序将装入模块装入内存 程序的链接 静态链接方式 在程序运行前,就先将各个目标模块以及它们所需要的库函数链接成一个完成的装配模块,之后都不会拆开,这样需要解决两个问题:修改相对地址,变换外部调用符号 装入

操作系统存储器管理知识点

1.多级存储器 1)存储层次可以分为三层:寄存器.主存(内存).辅存(磁盘): 2)不同层次之间还有相应的缓存以减小不同层次间读写速度不匹配程度:简单来说,主存也即寄存器和辅存之间的高速缓存: 3)不同层次的存储器读写效率不一样,读写速度越快,成本越高. 4)寄存器.主存.高速缓存等属于操作系统管理的范畴,断电后数据会丢失:而磁盘属于设备管理的范畴,断电后数据不会丢失. 2.程序装入 1)绝对装入方式:程序编译时即已经知道装入内存后的地址,程序的逻辑地址和实际内存地址完全一致,不需要重定位,这种

【操作系统-存储器管理】简单的clock置换算法的实现

分析:clock置换算法是利用循环队列来实现的.操作系统课本上的讲解时这样的 代码实现: #include<iostream> using namespace std; typedef struct numbernode { int *data; bool *ask;//访问号 }Numnode; typedef struct node { Numnode numnode; int maxsize; int rear; int front; }queue; queue* create(); v

操作系统存储器管理选择题精练

1.在段页式存储管理中,其虚拟地址空间是() A.一维                               B.二维                                C.三维                            D.层次 答案:B 2.采用( )不会产生内部碎片(“内零头”)A.分页式存储管理                                                             B.分段式存储管理 C.固定分区式存储管理 

计算机操作系统 存储器管理

1.连续分配存储管理方式 1.1 单一连续分配 1.2 固定分区分配 1.2.1 分区大小相等 1.2.2 分区大小不相等 1.3 动态分区分配 1.3.1 数据结构 1.3.2 动态分配分区算法 1.3.2.1 基于顺序搜索的动态分区分配算法 1.3.2.1.1 首次适应算法(first fit) 1.3.2.1.2 循环首次适应算法(next fit) 1.3.2.1.3 最佳适应算法(best fit) 1.3.2.1.4 最坏适应算法(worst fit) 1.3.2.2 基于索引搜索的

【操作系统】存储器管理(四)

一.前言 在分析了处理器调度后,接着分析存储器管理,如何对存储器进行有效的管理,直接影响着存储器的利用率和系统性能.下面,开始存储器管理的学习. 二.存储器的层次结构 2.1 主存储器 主存储器是计算机系统中的一个主要部件,用于保存进程运行时的程序和数据,CPU的控制部件只能从主存储器中取得指令和数据,数据能够从主存储器中读取并将他们装入到寄存器中,或者从寄存器存入到主存储器,CPU与外围设备交换的信息一般也依托于主存储器地址空间.但是,主存储器的访问速度远低于CPU执行指令的速度,于是引入了寄

操作系统--内存管理方式

“碎片的内存”描述一个系统中所有不可用的空闲内存.这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用.这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置.由于分 配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色. internal fragmentation:when memory allocated to a process is larger than requested memory, the differe

操作系统内存管理之 内部碎片vs外部碎片

外部碎片:因为行程持续地被载入与置换,使得可用的记忆体空间被分割成许多不连续的区块.虽然记忆体所剩空间总和足够让新行程执行,却因为空间不连续,导致程式无法载入执行. 内部碎片:发生在以固定长度分割区来进行配置的记忆体中当一个程式载入到固定大小的分割区时,假如程式小于分割区,则剩余的空间将无法被使用,称为内部碎片.利用聚集或分页可以消除外部碎片. "碎片的内存"描述一个系统中所有不可用的空闲内存.这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用.这一问题通常都会发

操作系统 内存管理机制

参考和查阅了一下他人的资料,整理下 虚拟内存.物理内存.Swap分区.页面置换机制等基础知识 虚拟地址空间 与 物理地址空间的关系 虚拟地址由操作系统维护,由MMU可以进行转换,扩大了内存空间分页管理. 大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制. 虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页帧(frame),一个在磁盘,一个在内存,页和页桢的大小必须相同.在32位地址的机器,它的虚拟地址范围从0~0xFFFFFFFF(4G),而这