CMSC 412 Spring 2014

Corrections and clarifications for project #4

  • You will need to register the page fault trap handler and enable paging on each core seperately. The function Init_Secondary_VM is provided for this purpose and will be called at the right time in the boot sequence. These should be enabled for core #0 in the routine Init_VM.
  • The APIC and IO-APIC pages will need to be identify mapped into the address space of all processes at locations 0xFEE00000 and 0xFEC00000. These pages should be mapped READ/WRITE but only from ring 0 not ring 3.
  • You need to do an svn update on the supplied files to start the project after 3:0 PM on April 6th, to get an update to syscall.c to provide the implementation of Sys_Open, Sys_Write, and Sys_Close.
  • If you put files into the directory ..../build/user (with a .txt suffix) they will end up on the C drive when geekOS boots.
  • You do not need to implement Copy_User_To_User it is not used in the project.
  • It is ok to leave the user space processes text, data, and stack pages as non-pageable (i.e. allocated by Alloc_Page). This means there is no need to write the functions Find_Space_On_Paging_File, Free_Space_On_Paging_File, Write_To_Paging_File, Read_From_Paging_File). In otherwords, you don't need to implement the TODO items for VIRTUAL_MEMORY_B, jusr VIRTUAL_MEMORY_A and MMAP.