有一个虚存系统,按行存储矩阵的元素。一进程要为矩阵进行清零操作,系统为该进程分配物理主存共3页,系统用其中一页存放程序,且已经调入,其余两页空闲。若按需调入矩阵数据,当进程按如下两种方式进行编程时: var A: array[1..100,1..100] of integer; 程序A: 程序B: { { for i=1 to 100 for j:=1 to 100 for j=1 to 100 for i:=1 to 100 A[i,j]=0 A[i,j]=0; } } (1) 若每页可存放200个整数,问采用程序A和程序B方式时,各个执行过程分别会发生多少次缺页? (2) 若每页只能存放100个整数时,会是什么情况?
时间: 2023-06-20 20:09:06 浏览: 264
假设矩阵中的元素都是int类型,每个int占4个字节,那么矩阵总共需要占用100*100*4 = 40000个字节,即需要占用200页虚存空间。
(1) 若每页可存放200个整数,则每页占用800个字节,可以得知程序A和程序B都需要占用50页虚存空间。其中程序A只有一次缺页,因为程序已经调入物理主存,不需要再次调入;程序B中每次循环都需要访问矩阵中的一个元素,所以每次循环都会有两个缺页,即100*100*4/800 = 5次循环,总共需要10次缺页。
(2) 若每页只能存放100个整数,则每页占用400个字节,可以得知程序A和程序B都需要占用100页虚存空间。其中程序A只有一次缺页,因为程序已经调入物理主存,不需要再次调入;程序B中每次循环都需要访问矩阵中的一个元素,所以每次循环都会有四个缺页,即100*100*4/400 = 100次循环,总共需要400次缺页。
相关问题
1.一个采用请求式存储管理的计算机系统,其主存(实存)容量为256MB,虚存容量(给用户的最大地址空间)为4GB,页面大小为4K字节,试问: (1)主存物理地址应设为多少位? (2)主存中有多少物理块? (3)虚拟地
址应设为多少位? (4)虚拟地址中页号应占多少位? (5)虚拟地址中页内偏移应占多少位?
答案如下:
(1) 主存物理地址应设为28位,即 log2(256MB)。
(2) 主存中有64K个物理块,即 256MB/4KB。
(3) 虚拟地址应设为32位,即 log2(4GB)。
(4) 虚拟地址中页号应占20位,即 log2(4GB/4KB)。
(5) 虚拟地址中页内偏移应占12位,即 log2(4KB)。
)在一个分页虚存系统中,用户编程空间32个页,页长1KB,主存为16KB。如果用户程序有10页长,若己知虚页0、1、2、3,已分配到主存8、7、4、10物理块中,请将虚地址0AC5H转换为对应的物理地址。
根据题目中的信息,我们知道用户程序有10页长,虚页0、1、2、3已分配到主存8、7、4、10物理块中。由于用户编程空间有32个页,因此剩余的页有27个。
根据虚地址0AC5H,我们可以进行如下计算:
1. 首先,将虚地址0AC5H转换为页号和页内偏移量。
页号 = 0AC5H / 1KB = 2AH
页内偏移量 = 0AC5H % 1KB = 0C5H
2. 接下来,判断该虚页是否已经分配到主存中。
虚页2AH未分配到主存中。
3. 由于虚页2AH未分配到主存中,我们需要选择一个未分配的物理块将其调入。
根据最近最少使用算法(LRU),我们选择物理块10进行置换。
4. 将虚页2AH调入物理块10,并更新页表。
更新页表中虚页2AH对应的物理块为10。
5. 计算物理地址。
物理地址 = (物理块号 * 1KB) + 页内偏移量
= (10 * 1KB) + 0C5H
= 0A05H
因此,虚地址0AC5H对应的物理地址为0A05H。
阅读全文