操作系统学习笔记(四)——存储器管理概念及分区分配

计算机的多级存储结构:CPU寄存器、主存、辅存。

CPU寄存器包括:寄存器和高速缓存

主存包括:主存储器和磁盘缓存

辅存包括:固定磁盘和可移动存储介质

寄存器和主存又称为可执行存储器。

主存储器

定义:是由存储单元(字节或字)组成的一维连续的地址空间,简称内存或主存。

作用:用来存放当前正在运行程序的代码和数据。

 

内存可以分为:      

系统区:用于存放操作系统常驻内存部分    

用户区:用于装入并存放用户程序和数据

内存空间:

内存是由若干个存储单元组成的,每个存储单元有一个编号,这种编号可以唯一标识一个存储单元,称为内存地址。

也称为绝对地址。

内存中存储单元的选址,可直接选址。

 逻辑空间:

源程序经过汇编或编译之后,形成若干个目标程序,每个目标程序都是以0为基址顺序进行编址的。

这样生成的目标程序占据一定的地址空间,称为作业的逻辑地址空间,简称逻辑空间。

在逻辑空间中,每条指令的地址和指令要访问的操作数地址统称为逻辑地址。

注意:!!不能用逻辑地址在内存中读取信息。

当我们把用户作业装入到内存中时,会存在两个问题: 

(1)作业中的逻辑地址常常与分配到的主存空间的绝对地址不一致。

(2)每个逻辑地址没有一个固定的绝对地址与其对应。

解决方案为:地址映射(地址重定位,地址变换)

定义:为了保证CPU执行指令时可以正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址。

程序的装入和链接:

将用户源程序变为可在内存中运行的程序,一般要经过以下几步:编译——链接——装入

编译:编译器对源程序进行编译,形成若干个目标模块

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

装入:由装入程序将装入模块装入内存。

有三种装入方式:绝对装入方式、可重定位装入方式、动态运行时的装入方式

有三种链接方式:静态连接方式、装入时动态链接方式、运行时动态链接方式

连续分配存储管理方式包括四种:

  1. 单一连续分配
  2. 固定分区分配
  3. 动态分区分配
  4. 动态可重定位分区分配算法

分区式分配方式可能会产生多个不可利用的内存零头,即碎片

固定分区分配出现最早,可用于多道程序系统,但由于每个分区的大小固定,必然会造成存储空间的浪费,因此现在很少使用。

动态分区分配:

思想:根据进程的实际需要,动态地为之分配内存空间。

动态分区分配中使用的数据结构:空闲分区表和空闲分区链

动态分区分配算法:按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。

两种算法:顺序是搜索算法,索引式搜索算法。

分区分配操作:(1)分配内存(2)回收内存

 

基于顺序搜索的动态分配分区算法:

1、首次适应算法(FF算法)

2、循环首次适应算法(NF算法)

3、最佳适应算法(BF算法)

4、最坏适应算法(WF)

基于索引搜索的动态分区分配算法:

1、快速适应算法

2、伙伴系统

3、哈希算法

 

动态可重定位分区分配:动态地址重定位是在程序执行期间进行的。 

 

 

你可能感兴趣的:(操作系统)