第一章 内存寻址
内存地址:逻辑地址,线性地址(虚拟地址),物理地址
逻辑地址经过分段单元转换为线性地址,再经分页单元,转为物理地址。32位或36位。
逻辑地址由段和偏移量组成。
分段
逻辑地址转为线性地址。
逻辑地址:段标识符(16位段选择符)+指定段内相对地址的偏移量(32位)。段寄存器只存放段选择符。
段描述符:8字节,存放在全局描述符表GDT或局部描述符表LDT中。
每个进程除了存放在GDT中的段之外如果还需创建附加的段,有自己的LDT.
代码段描述符,数据段描述符,任务状态段描述符,局部描述符表描述符。
所有段都从0x00000000开始,linux下逻辑地址和线性地址一致。
分页
把线性地址转为物理地址。一个关键任务是:把所请求的访问类型与线性地址的访问权限相比较,访问无效,产生一个缺页异常。线性地址被分为以固定长度为单位的组,即页。页内部连续的线性地址被映射到连续的物理地址中。内核可以指定一个页的物理地址和其存取权限,不用指定页所包含的全部线性地址的存取权限。页:一组线性地址,又包含在这组地址中的数据。分页单元把所有RAM分成固定长度的页框(有时也叫物理页),每个页框包含一个页。页框是主存的一部分,也是一个存储区域。页只是一个数据块,可以存放在任何页框或磁盘中。把线性地址映射到物理地址的数据结构称为页表。
32为线性地址被分成3个区域:目录(10位),页表(10),偏移量(12)。
扩展分页:目录(10位),偏移量(22)。
高速缓存
行,一个新的单位。行由几十个连续的字节组成,以脉冲突发模式在慢速DRAM和快速的用来实现高速缓存的片上静态RAM之间传送,用来实现高速缓存。高速缓存单元插在分页单元和主内存之间。高速缓存单元:硬件高速缓存内存(行)和高速缓存控制器(表项数组,每个表项对应高速缓存内存中的一个行)。通写:控制器总是既写RAM也写高速缓存行,为了提高写操作的效率关闭高速缓存。回写:只更新高速缓存行,不该表RAM内容,提供更快得功效。回写结束后,RAM最终必须被更新。
补充练习:
1. 有一个具有两道作业的批处理系统,有如下表所示的作业序列(表中所列作业优先级即为进程优先级,数值越小优先级越高)。分别列出下面两种情况下所有作业进入内存时刻及结束时刻,并计算其平均周转时间。
|
作业名 |
到达时刻 |
估计运行时间(分) |
优先级 |
|
A |
10:00 |
40 |
5 |
|
B |
10:20 |
30 |
3 |
|
C |
10:30 |
50 |
4 |
|
D |
10:40 |
20 |
6 |
假设采用短作业优先的调度算法,进程调度采用优先级为基础的剥夺式算法。(6分)
10:00 A到达,无竞争,A开始运行
10:20 B到达,进入内存,B的优先级高于A,A停止,B运行(1分)
10:30 C到达,不能进入内存(1分)
10:40 D到达,不能进入内存
10:50 B运行结束,C和D竞争进入内存,C进入,A运行(1分)
11:10 A运行结束,D进入内存,C运行(1分)
12:00 C运行结束,D运行
12:20全部结束
T=(70+30+90+100)/4=72.5分钟(2分)
2.在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096字节,现有一逻辑地址为2F6AH,且第0、1、2页依次存放在物理块5、10、11中,问相应的物理地址为多少?(6分)
由题意可知,本页式系统的逻辑地址结构为:(3分)
|
页号P |
页内位移W |
15 12 11 0
逻辑地址2F6AH的二进制表示:0010 111101101010(1分)
页号为2,在第11块中,故物理地址为BF6AH。(2分)
3. 若在一分页存储管理系统中,某作业的页表如下表所示。已知页面大小为1024字节,试将逻辑地址1011、2148、3000、4000转化为相应的物理地址。(4分)
|
页号 |
块号 |
|
0 |
2 |
|
1 |
3 |
|
2 |
1 |
|
3 |
6 |
解题步骤及其评分标准:
设页号为P,页内位移为W,逻辑地址为A,页面大小为L,则:
P=int(A/L) W=A mod L
⑴ 1011有:P=int(1011/1024)=0 W=1011 mod 1024=1011
第0页在第2块,故物理地址:3059( 1024*2+ 1011)
⑵2148有:P=int(2148/1024)=2 W=2148 mod 1024=100
第2页在第1块,故物理地址:1124
⑶3000有:P=int(3000/1024)=2 W=3000 mod 1024=952
第2页在第1块,故物理地址:1976
⑷4000有:P=int(4000/1024)=3 W=4000 mod 1024=928
第3页在第6块,故物理地址:7072