存储管理: 存储管理的主要任务是完成存储空间的分配和回收。
存储空间的分配方式:
1. 单一连续分配 不分区,适用于单用户,单任务的操作。
2. 固定分区分配 系统将内存分成大小不等的区域,可以同时装入多个程序。但是,内存分完后,区域大小固定不变。这样,使系统缺乏灵活性。例如64k的内存分配了10k,22k,32k的区域,但是,当要执行35k的程序时,却无法完成了。
3. 可变分区分配 程序装入内存时,由四种分配算法决定将它装入哪块儿内存。
最佳适应算法:将程序放到和它大小接近的内存区。
最差适应算法:将程序放到一个最大的内存区。
首次适应法:将程序放到首次发现的合适的内存区。
首次循环适应法:继上次的位置出开始寻找合适的内存区。
存储管理有两种方式:
1. 实存管理 :不能执行超过系统内存大小的程序。实存管理是对内存进行分块儿,将程序放入合适的内存中执行。
2. 虚存管理 :可以执行超过系统内存大小的程序。虚存管理是对内存和程序都进行分块儿。
实存管理比较简单,上面的概念已经基本将实存概述清楚,实存管理主要是将内存分配成不同的区域,然后通过不同的适应算法,将程序装入合适的内存。
实存常见的考题:根据要执行的进程的大小和系统内存分配情况,求系统为进程分配内存采用的是哪种算法。
所以,系统采用的是最差适应算法。
虚存管理相对于实存管理要复杂一些。虚存管理分为页式存储、段式存储、段页式存储
1. 页式存储
将程序分页,将内存分块,内存分页大小应该和程序分配的区域大小一样。
页表包含页号和页内地址,主要记录程序的每页对应内存的哪块儿区域。
习题:确定程序在内存中的物理地址。
( 物理地址 = 页表中页号对应的块号 + 逻辑地址的页内地址.)
(1) 确定页表中页号对应的块号地址。
将逻辑地址8644转换为二进制数10 0001 1100 0100 ,14位。已知页面大小为4k,即12位,所以,页内地址有12位。14位—12位,那么,剩下的两位就是页号的地址了。页号的二进制地址为10,转换成十进制为2,已知页号2对应的页内地址为8,即1000。
第一步完成,求出页表中页号对应的块号地址。1000
(2) 确定逻辑地址的页内地址
已经求出页内地址为0001 1100 0100。
(3) 物理地址=页表中页号对应的块号地址+逻辑地址中的页内地址。
结果为1000 0001 1100 0100即十进制33220
2. 段式存储
从用户角度出发,将程序分成多个段。
和页式存储相比:页式存储中任何一个页的大小相等,其大小由系统决定。
段式存储中段的大小不等,其大小由其完成的功能决定。
段式存储的段长比页式存储的页号要大的多。
物理地址=基址+位移量
3. 段页式存储
段页式存储,先将程序分段,再进行分页。一个程序有一个段表,每个段对应一个页表。
最后为三种存储的优缺点比较。
后面还讲了页面置换算法、局部性原理,这两个概念不太清楚。段页式存储也只是了解了一点点。