内存管理

.首先先说明内存的基础知识,就是内存是按照什么分址的,两类,字节和字分址,从而得到内存地址,然后说明进程的运行的基本原理,从我们的程序文件,编译成了几个拥有逻辑地址的块,内部都装有指令,然后将这些块链接起来,成为整体的逻辑地址,分三种方式进行链接,而逻辑地址转成物理地址,需要装入步骤,也是三种方式装入,装入后就霸占一个内存地址(物理地址),我们就可以通过地址访问具体的指令的数据。

 

 

二.紧接着说明内存管理的四大功能,分

1)内存空间的分配与回收

2)内存空间的扩充

3)地址转换

4)存储保护

这边重点讲了地址转换和内存保护,地址转换就是根据整体逻辑块,根据三种方式装入内存从而变成物理地址,而内存保护作用是保证各进程能只在自己的内存空间内运行,不会越界访问,有两种方式进行存储保护

 

 

第三步就开始讲内存空间的扩充,这边只讲覆盖和交换技术,虚拟存储后面具体讲解,主要是用请求分页存储方法进行扩充。

覆盖是单个进程技术,将程序分为多个段,常用的段常驻内存,不常用的按照需要调入内存。并且把内存分为固定区和覆盖区,固定区是用来存储经常访问的程序段,就不覆盖,而覆盖区的程序段根据需要进行覆盖,一个覆盖区可以被不能同时被访问的程序段共用。但是覆盖结构需要程序员自己声明,所以对用户不透明,增加了编程负担。

而交换技术将磁盘分为文件区(离散)和对换区(连续),当内存吃紧时,将某些优先级低的进程或者阻塞的进程换出到磁盘,变成挂起状态,然后从磁盘调入需要用的进程,如果某些调出进程之后还需调入则放入对换区,便于再次调入。所以交换技术就是进程在内存和磁盘的动态调度,用于多进程。

 

 

 

 

五.紧接着说明连续分配方式,为啥会说是连续分配,是因为将内存分为一个个分区,每个分区只装入一个进程,且是该进程的全部(不能的话用覆盖)。连续分配管理方式有三种,单一就是说一个内存只能有一个分区,固定就是固定大小的分区,可平均大小也可不是平均大小,这两种都不会产生外部碎片,而动态分区是根据需要分配分区大小,会产生外部碎片,可以有不同的分区方法。首次适应,最佳适应,最坏适应,邻近适应。

 

 

数据结构

 

 

 

 

算法

 

 

 

.非连续分配管理方式就是说一个分区可以不装人一个进程的全部,且进程的各个部分可以放在非连续的各个分区中。

 

 

 

 

 

 

 

 

加入了快表之后的变化

 

 

 

 

 

 

 

 

 

 

 

 

 

基于基本分页管理的多级分页(以2级为例)

 

 

 

 

 

 

 

 

 

 

 

基本分段内存管理

原理:将程序段根据逻辑分段,内存不需要分页,既不需要有页框,使用其全部。逻辑地址变为,段号+段内地址,段表的数据结构变成 段号(隐含)+段长+基址,与基本分页的最有特点不同就是需要两次比较是否越界,第一次是段号与段表长度比较,第二次是段内地址和段长比较。

 

 

 

 

 

 

 

 

 

 

段页式管理

原理:段页式管理其实就是先将程序分段,然后把各段又分成页面,而内存分为和页面相同大小的页框。段页式的逻辑地址变成段号,页号,页内地址,段号是为了获取页表,页号是为了获取内存块号。

 

 

 

 

 

 

 

 

 

 

 请求分页管理

原理:在基本分页的基础上,其页表加多了几个项,分别为状态位,访问字段,修改位,外存地址。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-06-02 00:11  鹏达君  阅读(453)  评论(0编辑  收藏  举报