Conceptos Clave de Sistemas Operativos: Memoria, Paginación y Shell Scripting
Clasificado en Informática
Escrito el en español con un tamaño de 4,56 KB
Algoritmos de Reemplazo de Página
- Algoritmo Óptimo: Se reemplaza la página que va a tardar más tiempo en usarse. No es implementable en la práctica, ya que requiere conocer el futuro.
- LRU (Last Recently Used): Sustituye la página menos usada recientemente.
- FIFO (First-In, First-Out): Se reemplaza la página que lleva más tiempo cargada.
- FIFO con Segunda Oportunidad: Variante de FIFO que ofrece una segunda oportunidad a las páginas referenciadas.
- NFU (Not Frequently Used): Se reemplaza la página que se ha usado con menos frecuencia.
Jerarquía de Memoria y Gestión de Memoria
La jerarquía de memoria típica es la siguiente: CPU -> Caché -> RAM -> Disco Duro -> Backups.
El espacio de direcciones accedido por un programa en cualquier momento tiende a ser pequeño, agrupando referencias según espacio y tiempo.
- Memoria Caché: Formada por un directorio caché, un bloque de memoria caché y una unidad de control.
- Unidad de Gestión de Memoria (MMU): Es el hardware encargado de la traducción de direcciones virtuales a direcciones físicas en la memoria principal.
- Segmentación: La memoria principal se divide en bloques de tamaño variable (segmento y desplazamiento).
- Paginación: La memoria principal se divide en bloques de tamaño fijo (página + desplazamiento).
- Paginador: Mueve páginas entre el disco y la memoria principal.
- Paginador por Sustitución Directa: Cada bloque de memoria principal tiene un único lugar asignado en la caché.
- Paginador por Sustitución Asociativa: Cada bloque de memoria principal se puede mapear con cualquier posición de la memoria caché.
- Paginación Paginada: Se añade una estructura de índice que apunta a tablas más pequeñas.
- Segmentación Paginada: La memoria se divide en segmentos, y cada segmento se divide en páginas.
Comandos y Operadores en Shell Scripting
En el shell scripting, se utilizan comillas simples para tratar el texto como literal. Los símbolos de dólar ($) que preceden a las variables deben ser escapados si van entre comillas dobles, por ejemplo, \$variable
, o se pueden usar comillas simples.
- Redirección de Errores:
2>/dev/null
- Operadores Lógicos:
||
(OR),&&
(AND) - Redirección de Salida:
>
(sobrescribir),>>
(añadir) - Operaciones Aritméticas: Se guardan entre doble paréntesis, por ejemplo,
$((operación))
- Comprobaciones:
-s
: Comprueba si un archivo no está vacío.-f
: Comprueba si es un archivo regular.-d
: Comprueba si es un directorio.-rwx
: Comprueba si es legible, editable y ejecutable, respectivamente.-e
: Comprueba si un archivo o directorio existe.
- Longitud de una Cadena:
longitud=${#cadena:inicio:fin}
Cálculo de Direcciones Virtuales y Reales
Si el espacio de direccionamiento físico es de 64 KB (216 bytes) y el virtual es de 16 MB (224 bytes), podemos determinar lo siguiente:
- Cada dígito hexadecimal representa 4 bits, no 8.
- Formato de una dirección virtual:
- Campo de página: bits necesarios para direccionar todas las páginas virtuales.
- Desplazamiento: bits necesarios para direccionar cualquier byte dentro de una página.
- Formato de una dirección real:
- Campo de marco: bits necesarios para direccionar todos los marcos de página en la memoria principal.
- Desplazamiento: igual que en la dirección virtual.
- Número máximo de páginas: 2(campo de página)
- Tamaño de página y tamaño de marco: 2(desplazamiento)
- Capacidad de la memoria principal: 2(tamaño de la dirección de memoria)
- Páginas por tarea: Tamaño de la tarea / Tamaño de página