> For the complete documentation index, see [llms.txt](https://hernandez-kevin.gitbook.io/pintos-vm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hernandez-kevin.gitbook.io/pintos-vm/master.md).

# Memoria Virtual

El regreso del estrés, desesperación y frustración - Parte 3

{% hint style="danger" %}
***Es necesario que la fase 2 funcione COMPLETAMENTE. No empieces esta fase si aún te falta pruebas por pasar porque todas las pruebas hacen un uso extensivo de los Syscalls de la fase 2.***
{% endhint %}

## Introducción

En esta fase es necesario que domines los siguientes conceptos:

* Modelo de Memoria: Páginas
  * Tabla de Páginas
  * Reemplazo de páginas
    * Políticas de reemplazo (algoritmos)
* Archivo Swap
  * Swap In
  * Swap Out

{% hint style="warning" %}
*Si aún no comprendes algún tema, no es recomendable que empieces esta fase todavía.*

***Se hace un uso extenso de todos estos conceptos a lo largo de esta fase***
{% endhint %}

La dificultad de esta fase es ***elevada***. Debes prepararte para muchos desvelos y muchas frustraciones (es decir, pasarás más tiempo reparando los errores que en la implementación).

Esta guía asume que ya terminaste de leer la documentación y tienes una ligera idea de qué debes de hacer.

## Tiempo Estimado

* Tiempo de Implementación: Un fin de semana dedicado completamente.
* Tiempo de 'Fix the bugs': 3 a 14 días (dependiendo si decides trabajar paulatinamente o dedicarle fines de semanas enteros).

![](https://media.giphy.com/media/lJNoBCvQYp7nq/giphy.gif)

## Orden de Implementación

1. Frame Table
2. Supplementary Page Table
3. Stack Growth
4. Loader
5. Free Resources Parte 1
6. Swap File
7. Paging
   1. Page Eviction
   2. Page Replacement
8. Syscalls
   1. Read & Write
   2. Mmap
   3. Munmap
9. Free Resources Parte 2

{% hint style="danger" %}
***No puedes implementar los Syscalls si no tienes los puntos 1 a 7 funcionando CORRECTAMENTE***
{% endhint %}
