三、内存管理-连续内存分配


计算机系统当中除了处理能力之外还有存储能力,存储能力相当于我们有一系列基本的存储介质,我们要在这些介质当中来存我们的代码和数据。

■计算机体系结构/内存层次

■计算机体系结构

对于计算机系统来讲,它的体系结构当中就约定了我哪些地方可以来存数据,然后在存数据的这些地方,既包括CPU里的寄存器也包括内存和外存,这几种不同的存储介质,它的容量速度价格都是不一样的,为了组织一个合理的系统,我们把计算机系统当中的存储组织成了一个层次结构,针对这种层次结构下的存储单元,操作系统需要对它进行管理。
操作系统当中的存储管理实际上就是用来管理这些存储介质的。
最基本的管理要求是说,我们一个进程需要使用存储单元的时候,需要从操作系统分一块给它,等它不用的时候还给操作系统,这是它最基本的分配和释放的管理要求
针对这种内存管理的要求,我们来看系统结构当中有哪些因素对它有影响?
计算机系统包括CPU,内存和I/O设备,CPU在加电的时候,我们关心各个寄存器的初始状态。讲存储的时候会更多关注与存储相关的内容。
比如说在CPU里头,我们可以往寄存器存内容,寄存器可以存数据,但是寄存器它的容量是非常小的,通常是32位64位的寄存器,能存几十到几百字节。

在这里插入图片描述

内存是更多的存数据的地方,它的最小访问单位是字节也就是8bit,而通常我们所说的计算机系统是32位的总线,那所谓32位总线也就相当于我一次读写,可以从内存当中读或者写32位,也就是4字节,这样一来我们读写的速度就会快了,你在由于一次读写32位的有地址对齐的事,所以在访问的时候就不能从任意地方开始一个4字节,有可能这个读写就会被分成两次。
还有一个是说我们在CPU里头你还会看到高速缓存,在你进行读写指令或者指令执行过程中访问数据都需要从内存里读数据,这个时候如果说我有大量数据要读写而且我会重复利用的话,我在CPU里加上高速缓存,那这样的话它的读写速度会更快,这个时候整个读写效率会提高,所以在CPU里加了高速缓存。
这几个部分都对我们存储管理有至关重要的影响

■内存层次

在CPU里头有两级缓存,这两级缓存,我们如果说你在读写数据或者指令的时候,在缓存里已经有相应的内容,事先已经读过,那这个时候我就直接可以从缓存里拿到
然后说如果在这里头缓存不命中,那这个时候你就必须上内存里去读,写程序的时候你是感觉不到L1 L2 cash的存在的,原因在于这部分完全是由硬件在做控制,你写的程序不能显示的使用到它们。而内存的访问就需要使用到操作系统的控制
在内存里访问的时候仍然找不到,还有可能去外存里找,外存的读取就需要使用到操作系统的控制
从CPU内部一直到硬盘外部

■操作系统的内存管理方式

对操作系统来说我们存储管理最后想达到什么效果?
首先系统当中的存储,内存是以字节为单位进行访问,每一个字节有自己的一个地址,这个地址是物理地址,如果数据存到外存里,比如磁盘,磁盘的访问有扇区编号,每一个扇区是512个字节最小单位。
那这是你能够读写存储的最基本的内容,而写程序的时候我们希望看到的情况是什么?
是有若干个进程,每一个进程,它们都有共同的一部分的地址空间是操作系统的内核,然后每一个应用程序自己又是不一样的,它们各自有各自的内容,我希望在各自写这些内容的时候,它们的地址是可以重叠的,相互之间是不干扰的。
把内存访问的状态转变成程序执行的逻辑的理想状态,在两者之间加了一层存储管理单元。
存储管理单元就把逻辑地址空间转变成物理地址空间。这个时候说我实际操作系统代码存在哪呢?通常情况下是在内存里头的
而进程的地址空间,随着它们运行的转换,有些是在内存里头,有些是在外存里头。这个转换的过程由中间的存储管理单元来完成。
如果说我们能做到这样一步,实际就相当于存储管理要达到效果是抽象

  • 把线性的物理地址编号转变成抽象的逻辑地址空间;
  • 然后我需要在这里头对地址空间进行保护,每一个进程只能访问自己的空间,尽管说在内存里它们是相邻存放的;
  • 与此同时我们还要方便共享,比如说在我们这里头大家可以看到的,操作系统的内核的代码是各个进程都是一样的或者说绝大部分是样的,这种一致如果说每个进程地址空间是相互保护的不能访问,这段你就得存多份,这个效率是低的。我们希望能够很好地把保护和共享统一起来,这个目标是有一些矛盾的。
  • 与此同时我们还希望它实现更好的虚拟化,这说的是我们每个进程的地址空间编号都是一样的,但实际上每个进程都有一段自己的用户地址空间,到这里实际上物理地址空间存的位置是不一样的,但是给每个进程看到的都是一个区域一致的一个地址空间,甚至于说我们在逻辑地址空间里看到的可以存数据的地方,它的大小是大于你的物理内存的总量的

我们看到实际上要想实现存储管理的抽象,保护,共享和虚拟化是很有挑战的,那操作系统可能采用一些什么样办法呢?

■重定位

我们第一个办法就是重定位

■地址空间&地址生成

■连续内存分配

■伙伴系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值