① 操作系统的物理地址怎么计算
其实第一条回答是正确的,我在这里为网友们追加一个解释:
按照书上定义,在页式存储系统中,
绝对地址 = 块号 x块长 +业内偏移地址。
相对地址 由一段内存的高bit位作为页号,低bit位作为页内偏移地址
那重要的一点是,如果找出这三个变量。且看该题:
每页1KB,说明了,业内偏移地址的范围是0~1023byte 换句话说,页内偏移地址占16bit中的 0-9bit, 那按照相对地址的概念,那10-15 bit就该为页号地址了。
那么, 0x0A5C <=> 0000 1010 0101 1100
则前面 0000 10 这6个bit 表示页号,换算成十进制为 2,也即是页号为2,再按照页表推算,即物理块号就为4, 而4再换算成16进制,即是0001 00;而后面 10 0101 1100 这10个bit位,理所当然的为页内偏移地址了。 则物理地址就该为0001 00 (占据10-15bit)+ 10 0101 1100 (占据0-9bit) = 0001 0010 0101 1100
他的所谓凭接,其实就是让0001 00 占用bit 10-15.
② 已知当前段的寄存器的基址怎样找物理地址末地址与首地址
段寄存器的内容左移4位(我说的是二进制),就是这个段的首地址了,在这个基础上加上0ffffh,就是这个段的末地址。因为物理地址=段基地址左移4位+段内偏移地址,其中段内偏移地址是16位。
③ 页储存管理中,已知一个逻辑地址长度为16位,页面大小为4096B,地址为2F6AH,怎么知道这个地址的页号啊
例3 若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。
页号
物理块号
0
2
1
3
2
1
3
6
【分析】 页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示。若给定逻辑地址A,页面的大小为L,则页号p和页内地址d可按照下式求得:
p=int [A/L] d=A mod L
其中,int是取整函数(取数值的整数部分),mod是取余函数(取数值的余数部分)。
下图显示了页式管理系统的地址转换机构。
页表的作用是实现从页号到物理块号的地址映射。以逻辑地址的页号检索页表,得到该页的物理块号;同时将页内地址d直接送入物理地址寄存器的块内地址字段中。这样物理块号和块内地址拼接成了实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。
所以物理地址的计算公式为:
物理地址=块的大小(即页的大小L)*块号f+页内地址d
解 本题中,为了描述方便,设页号为p,页内位移为d,则:
(1)对于逻辑地址1011,p=int(1011/1024)=0,d=1011 mod 1024=1011。查页表第0页在第2块,所以物理地址为1024*2+1011=3059。
(2)对于逻辑地址2148,p=int(2148/1024)=2,d=2148 mod 1024=100。查页表第2页在第1块,所以物理地址为1024+100=1124。
(3)对于逻辑地址4000,p=int(4000/1024)=3,d=4000 mod 1024=928。查页表第3页在第6块,所以物理地址为1024*6+928=7072。
(4)对于逻辑地址5012,p=int(5012/1024)=4,d=5012 mod 1024=916。因页号超过页表长度,该逻辑地址非法。
④ 求物理地址,拜托详细一点的解答过程,谢谢!
页式存储管理的逻辑地址分为两部分:页号和页内地址。由已知条件“用户编程空间共32个页面”,可知页号部分占5位,由“每页为2KB”,可知页内地址占11位。由“内存为16KB”,可知有8块,块号为3位。逻辑地址1A5C(H)所对应的二进制表示形式是:0001 1(010 0101 1100) ,根据上面的分析,()内的为页内地址,编码“0001 1”为页号,表示该逻辑地址对应的页号为3。查页表,得到物理块号是7(十进制),即物理块地址为:01 11 ,拼接页内地址10 0101 1100,得01 1110 0101 1100,即1E5C(H)