Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEMAS OPERATIVOS.
Fecha: 14/12/2022.
MEMORIA.
Para lograr un buen resultado no deberíamos depender de un tipo de componente o tecnología. Existe
una jerarquía de memoria que nos permite hacer una categoría de velocidad de acceso, capacidad y
costo.
A medida que bajamos de nivel de jerarquía, vamos obteniendo menos costo por bit, más capacidad
y más tiempo de acceso.
Un punto sumamente importante es la frecuencia de acceso a la memoria por parte del procesador.
Para entenderlo, consideremos que a la información mantenida en el primer nivel (registros) el acceso
es inmediato. Si está en el segundo nivel (caché), primero debe pasar al primer nivel y luego acceder
al procesador.
Ilustración 1. Jerarquía de memorias
Una caché (del inglés cache, antememoria), puede acelerar los accesos a todas las formas de
dispositivos de almacenamiento, incluyendo a las unidades de cinta, alas de disco, memoria principal,
servidores en una red (por ejemplo, los servidores web son un tipo de dispositivo de almacenamiento)
o incluso otras cachés. Funcionan sobre el principio de localidad de referencia, la tendencia de las
aplicaciones a referenciar una pequeña cantidad predecible de datos dentro de una ventana de
tiempo dada.
2. Modelo de memoria de un proceso.
El sistema operativo gestiona el mapa de memoria de un proceso durante la vida de este mismo.
Una biblioteca es una colección de objetos tales como subrutinas (o clases en la Programación
Orientada a Objetos), normalmente relacionados entre sí y se usa para desarrollar software.
La manera de generar el ejecutable comentado hasta ahora consiste en compilar los módulos
fuente de la aplicación y enlazar los módulos objeto resultantes junto con los extraídos de las
bibliotecas correspondientes. De esta forma, se podría decir que el ejecutable es autocontenido:
incluye todo el código que necesita el programa para poder ejecutarse y es lo que se conoce
como enlazarlo de manera estática. Existe, sin embargo, una alternativa que presenta numerosas
ventajas: las bibliotecas dinámicas.
La forma habitual de usar las bibliotecas dinámicas consiste en especificar al momento de enlace
(link rime) que bibliotecas se deben usar, pero la carga y el enlace se pospone hasta el momento
de ejecución (run time). Sin embargo, también es posible especificar al momento de ejecución
qué biblioteca dinámica se necesita y solicitar explícitamente su enlace y carga (asta técnica se
la suele amar carga explicita de bibliotecas dinámicas).
• Código.
• Datos con valor inicial.
• Datos sin valor inicial.
2.2.1. El formato COFF.
Es la especificación del formato para archivos objeto, ejecutables bibliotecas compartidas
que se usó en sistemas UNIX a partir de System V Release 3, agregando la capacidad de
contener varias secciones, característica que faltaba en el formato a.out original de UNIX.
se le puede agregar información para depurar el programa, es decir, nombres simbólicos a
funciones y variables, información del número de línea que son útiles para establecer puntos
de detección de la ejecución o para ver la traza de ejecución del proceso. Al generar un
archivo COFF no se establece en qué parte de la memoria será cargado.
2.2.2. El formato ELF.
Es el formato de archivos objeto, ejecutables, bibliotecas compartidas y volcados de
memoria. Es muy flexible y extensible y no está limitado a un procesador o arquitectura en
particular. Ha reemplazado a los formatos a.out y COFF y se utiliza en todos los sistemas
operativos tipo UNIX modernos, en particular en Linux. También es utilizado en las consolas
de juegos PSP, PS2, PS3 y Wii.
Los sistemas operativos modernos ofrecen un modelo de memoria dinámico, en el que el mapa
de un proceso está formado por un número variable de regiones que pueden añadirse o
eliminarse durante la ejecución de este. Además de las regiones iniciales ya analizadas, durante
la ejecución del proceso pueden crearse nuevas regiones relacionadas con otros aspectos, tales
como los siguientes:
• Montículo.
• Archivos proyectados.
• Memoria compartida.
• Pilas de threads.
Ilustración 7. Mapa de memoria de un proceso hipotético.