A. Semana 1 y 2 - HazelMartinez/Portafolio- GitHub Wiki

Martes 23 de Agosto del 2019

Se hablo del programa del curso, el profesor explicó algunos detalles sobre las evaluaciones y los objetivos. Se hizo un juego donde se realizaron 4 grupos y cada grupo escribía 5 palabras, el profesor recogió las palabras. Se dividió el grupo a la mitad y pasa al frente un representante de cada grupo. Los compañeros del representante le explican la palabra que el profesor estaba enseñando. Así se repasaron conceptos.

Martes 30 de Agosto del 2019

Se hizo una actividad “La Reja” donde se dividió el grupo en 3 partes, el profesor asigno una lectura sobre temas de gestión de memoria a cada grupo en 15 minutos debíamos extraer lo que nos parecía importante, cambiarnos de grupo y explicarlo a otros compañeros. Una persona de cada grupo pasaba a explicar sobre un tema en especifico, podía ser: Sin abstracción de memoria, Espacios de dirección o Memoria virtual.

Sistema Operativo:

Es software. Un software se situá encima del hardware.

Funciones Principales del Sistema Operativo

Nos provee un API para extraer recursos. Un API es una librería, nos da funcionalidades que podemos utilizar. Extremos recursos, viene de abstraer, es decir algo que no es real pero nos sirve para solucionar el problema.

El API nos permite interactuar con cualquier recurso de la maquina. Maneja todos los recursos de la maquina.

Funciones Principales:

-Gestiona Memoria

-Gestión de archivos y discos

-Gestión input/output

“Lo que importa es como gestiono la memoria”

¿Qué es la gestión de memoria?

Gestionar espacio de la RAM

Diferentes formas de gestionar memoria

Multiprogramacion:

Capacidad de ejecutar más de un proceso a la vez.

Hilos:

Difícilmente se iba a encontrar un manejo paralelo de hilos, debido a que una computadora si no tenia sin abtraccion de memoria menos iba a tener manejo de hilos.

La memoria RAM es un recurso valioso.

Intercambio: Hay un costo debido a que hay un remplazo.

Re-ubicación estática: Se tomaba la dirección base y se la sumo a la dirección que quiero.

Sin Abstracción de memoria: AL estar el sistema operativo en la RAM podía colapsar.

Espacios de dirección

Cuando se tienen varios programas al mismo tiempo. Se asignaba una base y un final a los espacios de memoria del programa.

### Re-ubicación dinámica: Hay un swap y compactacion para que no hayan espacios muertos. El problema es que se ocupaba tener todo el programa cargado en memoria. 

Memoria Virtual

Los programas crecen exponencial mente a la memoria, debido a esto se hace uso de la memoria virtual la cual es una abstracción de la memoria física, esta memoria físicamente no existe, sus software se parte en tamaños físicos llamados paginas. El separado de paginas es de tamaño fijo. El truco está en que los programas no necesitan estar del todo cargados, solo algunas partes.

Marco de página:

Tamaño que ocupa la página.

Bit presente:

Está en memoria física.

Bit ausente:

se representa en x o ceros.

MMU:

Unidad de manejo de memoria, este dispositivo traduce de direcciones virtuales a direcciones físicas. Si no encuentre la direccion lanza un Page Fault

Page Fault:

Referencia a una dirección de memoria que no se encuentra cargada. Va y abre la dirección que se pidió encontrar.

No importa tener una estructura elegante si se desperdicia la memoria.

Tarea Moral: Investigar sobre Heap y Stack

Stack:

Una estructura dinámica de datos que almacena la información sobre las subrutinas activas de un programa en ejecución. Cuando hacemos una llamada a una función, un bloque en el tope de la pila es reservado para guardar las variables locales junto con algunos datos necesarios para garantizar el funcionamiento adecuado de la estructura. Después de retornar, el bloque de la pila que ocupaba el llamado, se libera para poder utilizarse más adelante de ser necesario.

Se llama pila de ejecución porque es una estructura de datos que funciona bajo el concepto de LIFO (last in first out). Esto hace que sea más sencillo mantener el control de los bloques que deben ser liberados, puesto que será aquel que esté en el tope de la pila.

Pueden existir múltiples pilas de ejecución en un programa cuando este es multihilo; cada hilo tiene su propia pila con la que mantendrá el control de sus llamadas a funciones.

Heap:

Es una estructura dinámica de datos utilizada para almacenar datos en ejecución. A diferencia de la pila de ejecución que solamente almacena las variables declaradas en los bloques previo a su ejecución, el heap permite reservar memoria dinámicamente, es decir, es el encargado de que la “magia” de la memoria dinámica ocurra. Las variables globales y estáticas también son almacenadas en él.

Como esta estructura de datos no sigue ninguna metodología, es un poco complicado mantener el control de los bloques de memoria reservados puesto que se pueden ocupar y liberar espacios en cualquier momento.