C语言程序存储管理问题分析.pdfVIP

  • 0
  • 0
  • 约3.72千字
  • 约 4页
  • 2026-09-15 发布于北京
  • 举报

1.在如下一段C语言程序的for循环中,

voidcycle(double*a){

inti;

doubleb[65536];

for(i=0;i3;i++){

memcpy(a,b,sizeof(b));

}

}

程序memcpy函数执行过程中可能发生哪些例外,各多少次。

答:

【说明:此题中试图问的是与页处理相关的例外(忽略实际系统中可能发生的中断),以MIPS

体系结构为例,包括三类共四种例外:

(1)TLBrefill例外;

(2)TLBinvalidLoad例外/TLBinvalidStore例外;

(3)TLBmodify例外。

其中(2)和(3)两类例外仅与程序对于页的需求相关,因此回答次数时需要假设操作系统

中页的大小;而(1)还与处理器中TLB的容量相关,因此还需要假设处理器中TLB的项数和TLB

的替换策略】。

下面给出一种常用假设条件下的回答:

假设操作系统页大小为4KB,同时系统的内存足够大,即页表分配的内存在程序执

行过程中不会被交换到swap区上。并且在后续的分析中忽略代码和局部变量i所在的页的影

响。

a、b两数组大小均为65536×8=512KB。再假设a、b两数组的起始地址恰为一页的起始地址。

那么a、b两数

文档评论(0)

1亿VIP精品文档

相关文档