Munmap

La hermana de Mmap también hay que prestarle atención.

Un poco de Explicación...

Ya tenemos los archivos mapeados a la memoria del proceso, pero ahora toca el proceso inverso: ¡'unmap'pearlos!

Esto quiere decir que la tarea de System Call se resume a liberar los recursos utilizados por Mmap.

Objetivo

Implementar Munmap para nuestro amado PintOS.

Implementación

Munmap es muy sencillo de implementar, ya que solamente consiste en los siguientes pasos:

  1. Dado el mapid_t, hay que buscar si el proceso tiene mapeado algún archivo cuyo mapid_t coincida.

  2. Buscar todas las páginas y frames que fueron utilizados para este mapeo.

  3. SOLAMENTE debes escribir al File System todas aquellas páginas que fueron modificadas. Si no fueron modificadas, no hagas nada. Tienes que tomar en consideración que una página puede estar cargada a RAM o puede

    estar en el Swap File.

  4. Liberar los frames y borrar los FTEs y SPTEs asociados. Esto implica invalidar las páginas en la Page Table del Proceso.

FAQ

  • ¿Solamente debo liberar los recursos utilizados por Mmap cuando se llama Munmap?

    Sí y cuando el proceso está a punto de morir.

  • ¿Qué pasa si la página se encuentra en el FIle System?

    No haces nada, solo borras el SPTE asociado a esa página y la invalidas en la Page Table.

Make Grade

Con Munmap en nuestro arsenal, logramos pasar las siguientes pruebas:

Functionality

Robustness

Última actualización