Optimización de Recursos en Sistemas Operativos: Bibliotecas Compartidas y Gestión de Fallos de Página
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 3,74 KB
Bibliotecas Compartidas: Montaje Estático y Dinámico
En el ámbito de los sistemas operativos (SO), existen diferentes enfoques para la gestión de bibliotecas de código. Algunos SO solo permiten el montaje estático, un mecanismo mediante el cual las bibliotecas de lenguaje del sistema se tratan como cualquier otro módulo objeto y son integradas por el cargador directamente en la imagen binaria del programa. Esta funcionalidad se emplea comúnmente con las bibliotecas del sistema. Utilizando este mecanismo, cada programa debe incluir una copia de su biblioteca dentro de la imagen ejecutable, lo que puede incrementar el tamaño de los binarios y el consumo de memoria.
Por otro lado, con el montaje dinámico, se incluye un stub (un pequeño fragmento de código) dentro de la imagen binaria para cada referencia a una rutina de biblioteca. Cuando se ejecuta el stub, este comprueba si la rutina necesaria ya se encuentra en memoria. Si no es así, el programa carga la rutina en memoria. En ambos casos, el stub se sustituye a sí mismo por la dirección de la rutina y la ejecuta. Así, la siguiente vez que se ejecute ese segmento de código, se ejecutará directamente la rutina de biblioteca, sin necesidad de realizar el montaje dinámico de nuevo, lo que optimiza el rendimiento.
Esta funcionalidad del montaje dinámico puede ampliarse a las actualizaciones de las bibliotecas de código. Es posible sustituir una biblioteca por una nueva versión, y todos los programas que hagan referencia a ella emplearán automáticamente la versión más reciente. Sin el montaje dinámico, sería necesario volver a compilar y montar todos esos programas para poder acceder a la nueva biblioteca. Este sistema es fundamental y se conoce como mecanismo de bibliotecas compartidas, ofreciendo flexibilidad y eficiencia en la gestión de software.
Operaciones en un Fallo de Página: Proceso Detallado
Un fallo de página es un evento crucial en la gestión de memoria de un sistema operativo. Cuando ocurre, se desencadena una serie de operaciones esenciales para cargar la página requerida desde el almacenamiento secundario a la memoria principal. A continuación, se detalla el proceso:
- Interrupción al Sistema Operativo (SO).
- Guardar los registros de usuario y el estado del proceso actual.
- Determinar que la interrupción se debe a un fallo de página.
- Comprobar que la referencia de página era legal y determinar la ubicación de la página en el disco.
- Ordenar una lectura desde el disco para cargar la página en un marco libre:
- Esperar en la cola correspondiente a este dispositivo hasta que se dé servicio a la solicitud de lectura.
- Esperar el tiempo de búsqueda y/o latencia del dispositivo.
- Comenzar la transferencia de la página hacia un marco libre.
- Mientras se espera la operación de E/S, asignar la CPU a otro usuario o proceso (opcional).
- Recibir una interrupción del subsistema de E/S de disco, indicando la finalización de la lectura.
- Guardar los registros y el estado del proceso para el otro usuario (si se ejecutó el paso 6).
- Determinar que la interrupción corresponde al disco y a la operación de carga de página.
- Corregir la tabla de páginas y otras tablas del sistema para mostrar que la página deseada se encuentra ahora en memoria principal.
- Esperar a que se vuelva a asignar la CPU a este proceso original.
- Restaurar los registros de usuario, el estado del proceso y la nueva tabla de páginas, y reanudar la ejecución de la instrucción interrumpida que causó el fallo de página.