1、读或写32位长的字需要10ns的时间,紧缩128MB大概需要多长时间?为了简 单起见,假设空闲区中含有字 0,内存中最高地址处含有有效数据。 32bit=4Byte= 每字节 10/4=2.5 ns 128MB=1282A20=2A27Byte 对每个字节既要读又要写,22.5*2A27=671ms4.在一个交换系统中,按内存地址排列的空闲区大小是 10MB, 4MB, 20MB,18MB, 7MB, 9MB, 1 2 M B ,和1 5 M B 。对于连续的段请求:(a)12MB(b)10MB(c)9MB 使用首次适配算法, 将找出哪个空闲区?使用最佳适配、 最差适配、 下次适配算 法呢?A
2、: 首次适配算法: 20MB ,10MB ,18MB ; 最佳适配算法: 12MB ,10MB ,9MB; 最差适配算法: 20MB ;18MB ;15MB ; 下次适配算法: 9MB;5.物理地址和虚拟地址有什么区别?实际内存使用物理地址。这些是存储器芯片在总线上反应的数字。虚拟地址是指一个进程的地址空间的逻辑地址。因此,具有 32 位字的机器可以生成高达4GB 的虚拟地址,而不管机器的内存是否多于或少于 4GB。6.对下面的每个十进制虚拟地址,分別使用 4KB页面和8KB页面计算虚拟页号和偏移量: 20000 , 32768, 60000 。 转换为二进制分别为: 010011100010
3、0000 虚拟地址应该是 16 位 1000000000000000 1110101001100000 4KB 页面偏移量范围 0 4027,需要 12位来存储偏移量,剩下4位作为页号;同理8KB页面需要13位来存储偏移 量,剩下 3 位作为页号; 所以, 4KB | 8KB 页号 | 偏移量 | 页号 | 偏移量 20000 | 0100 111000100000 | 010 0111000100000 32768 | 1000 000000000000 | 100 0000000000000 60000 | 1110 101001100000 | 111 01010011000007.使用
4、图 3-9 的页表,给出下面每个虚拟地址对应的物理地址:(a)20(b)4100(c)8300 (a)20+40962=8212 (b) 4100=4096+ (4100-4096 ) =4100 (c)8300=64096+ (8300-4096*2 )=246848.Inlel 8086 处理器不支持虚拟内存,然而一些公司曾经设计过包含未作任何改 动的 8086 CPU 的分页系统。猜想一下,他们是如何做到这一点的。 (提示:考 虑 MMU 的逻辑位置。)他们制作了 MMU,并连接在CPU与地址总线之间,这样从处理器进入 MMU 的地址全部被视为虚拟地址, 并被转换为物理地址, 然后被送到
5、地址总线, 映射 到内存中。9.为了让分页虚拟内存工作,需要怎样的硬件支持?需要一个 MMU 能够将虚拟页面重新映射到物理页面。 此外,当缺页中断时, 需要对操作系统设置陷阱,以便可以获取页面。10.写时复制是使用在服务器系统上的好方法,它能否在手机上起作用。 “写时复制 “技术,也就是只有进程空间的各段的内容要发生变化时, 才会将 父进程的内容复制一份给子进程。 如果智能手机支持多重编程, iPhone 、 Android 和 Windows 手机都支持多重编程,那么支持多个进程。如果进程发出fork() 系统调用和页面在父进程和子进程之间共享,则复制对写是有意义的。智能手机比服务器小,但从
6、逻辑上讲,它并没有什么不同11.考虑下面的 C 程序:int XN;int step = M; /M 是某个预定义的常量for (int i = 0; i N; i += step) Xi = Xi + 1;a)如果这个程序运行在一个页面大小为 4KB且有64个TLB表项的机器上时,M 和 N 取什么值会使得内层循环的每次执行都会引起 TLB 失效 ?b)如果循环重复很多遍,结果会和 a)的答案相同吗?请解释。 a)M必须至少为1024,以确保对X元素的每一次访问都有一个 TLB缺失。因 为 N 只影响 X 访问多少次, N 取大于 M 的任何值都可以。 b)M 应该至少是 1024,以确保对
7、X元素的每次访问都遗漏 TLB。但是现在N应该大于64K,以 便处理TLB,也就是说,X应该超过256KB。12.存储页面必须可用的磁盘空间和下列因素有关: 最大进程数 n ,虚拟地址空间的字节数v,RAM的字节数r,给出最坏情况下磁盘空间需求的表达式。这个数 量的真实性如何?所有进程的整个虚拟地址空间为 nv,这就是页面存储所需的。不过,可以在 RAM中存储量为r,因此需要的磁盘存储量仅为 nv-r。该量比实际所需的要大 得多,因为极少有 n 个进程实际运行, 而且这些进程也极少需要其最大允许的虚拟内存13.如果一条指令执行1ns,缺页中断执行额外的Nns,且每条k指令产生一个缺页,请给出一
8、个公式,计算有效指令时间。 (1*(k-1)+(1+N)/k = 1+N/k ns14.一个机器有 32 位地址空间和 8KB 页面,页表完全用硬件实现,页表的每一 表项为一个 32 位字。进程启动时,以每个字 100ns 的速度将页表从内存复制到 硬件中。如果每个进程运行100ms (包含装入页表的时间)用来装人页表的CPU 时间的比例是多少? 32 位地址空间构成 4GB 内存空间, 4GB/8KB=512 个页面,页表项 512 项,页表大小512 32=2X4 bit复制页表的时间=2A14/2A5*10ns = 5120 ns, 时间 比例 5120ns/100ms=5120 -10
9、)A( 100 -3)0=51.2% 8KB 页面大小,需要13 位偏移量,故页号有 19 位,页面有 2A19 个,页表项也是 2A19 个,每项 32位字。 2A19 100ns/100ms=52.4288%15.假设一个机器有 48 位的虚拟地址和 32 位的物理地址。a)假设页面大小是4KB,如果只有一级页表,那么在页表里有多少页表项? 请解释。b)假设同一系统有32个TLB表项,并且假设一个程序的指令正好能放入一个页,并且该程序顺序地从有数千个页的数组中读取长整型元素。 在这种情况下TLB的 效果如何?a)页面大小4KB,偏移量有12位,则页号有36位,有2A36项页表项;b)TLB
10、 访问的命中率达 100%。在指令访问下一个页面之前读取数据的命中率是 100%,一个 4KB 大小的页面包含 1024 个长整型数据, 每访问 1024 个数据就会 有一次 TLB 失效。16.给定一个虚拟内存系统的如下数据:(a)TLB有1024项,可以在1个时钟周期(1ns)内访问。(b)页表项可以在100时钟周期(100ns)内访问。(c)平均页面替换时间是6ms。如果TLB处理的页面访问占99%并且0.01%勺页面访问会发生缺页中断,那么 有效地址转换时间是多少? 99% 1 ns+1% 99.99% 100ns+1% 0.01% 6ms=7.9999 1ns+0.99% 100ns
11、+0 .01% 6ms601.98ns17.假设一个机器有 38 位的虚拟地址和 32 位的物理地址。a)与一级页表比较,多级页表的主要优点是什么?b)若采用二级页表,页面大小为16KB,每个页表项为4字节,应该对第一级页 表域分配多少位 ,对第二级页表域分配多少位?请解释原因 a)避免把全部页表一直保存在内存中。 b) ” 16KB个页 估计是指这个二 级页表的大小是16KB,故页表项有16KB/4B=4K个,二级页表域需要12位, 四字节表项说明页面大小是12页面大小16KB,则偏移量需要14位,每个条目4 字节18.在 3.3.4 节的陈述中,奔腾 Pro 将多级页表中的每个页表项扩展到
12、 64 位,但 仍只能对 4GB 的内存进行寻址。请解释页表项为 64 位时,为何这个陈述正确。虽然页表项扩展了,但是虚拟内存地址依然只有 32位。19.个 32 位地址的计算机使用两级页表。 虚拟地址被分成 9 位的顶级页表域、11 位的二级页表域和一个偏移量,页面大小是多少?在地址空间中一共有多少 个页面?页面大小与偏移量位数有关=2A12Byte=4KB,每个地址对应内存一个字节, 地址空间的页面数量=2八20个。20.一个计算机使用 32 位的虚拟地址, 4KB 大小的页面。 程序和数据都位于最低 的页面(04095 ),栈位于最高的页面。如果使用传统(一级)分页,页表中需 要多少个表
13、项?如果使用两级分页,每部分有 10 位,需要多少个页表项?32 位地址对应 4GB 内存,有 4GB/4KB=2A20 个页面 ,如果使用传统(一级) 分页:需要 2A20 个页表项;如果使用两级分页,顶级页表有 2A10 个页表项, 其中三项指向二级页表 (程序段、 数据段、堆栈段),二级页表每个也有有 2A10 个页表项,总共 2A12 个页表项。21.如下是在页大小为 512 字节的计算机上,一个程序片段的执行轨迹。这个程 序在 1020 地址,其栈指针在 8192(栈向 0 生长)。请给出该程序产生的页面访 问串。每个指令(包括立即常数)占 4 个字节( 1 个字)。指令和数据的访问
14、都要在访问串中计数 将字 6144 载入寄存器 0寄存器 0 压栈调用 5120 处的程序,将返回地址压栈栈指针减去立即数 16比较实参和立即数 4如果相等,跳转到 5152 处程序地址范围10201532。页面访问串:6144-8191 5120 8190 8184 5152. A :每个页面512B , 1020地址属于5121023,即页面1;栈指针 8192 属于 81928704 ,即页面 16,但是栈向 0 生长,故寄存器压 栈到 81918188,属于页面 15;5152 地址属于 51205631,即页面 10. 每 条指令 4 个字节,故第一条指令在地址范围 10201023,属于页面 1;第二条 指令在地址范围 10241027,属于页面 2;第三条指令地址也在页面 2,但是 将数据压栈到页面 15 了。 LOAD 6144,R0 1(I), 12(D) PUSH R0 2(I), 15(D) CALL 5120 2(1), 15(D) JEQ 5152 10(1) 代码(I)指示指令
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1