Lazy Loading
Uno de los requerimientos de la fase 3
bool load(){
. . .
/* Carga de segmentos: vm_flag marca si el lazy la carga. */
if (!load_segment (file, file_page, (void *) mem_page,
read_bytes, zero_bytes, writable, vm_flag))
goto done;
. . .
}
bool load_segment ( . . . ){
. . .
if (!get_file_page(file, ofs, page_read_bytes, page_zero_bytes, writable, EXECUTABLE, upage))
return false;
. . .
}struct spage_entry *page = lookup_page(cur, pg_round_down(fault_addr));
if (page != NULL && !page->loaded)
{
switch (page->type)
{
case MMFILE:
case EXECUTABLE:
load_file_page(page);
return;
case PAGE:
load_page(page);
break;
}
}Last updated