Conceptos Fundamentales de Sistemas Operativos: Memoria, Procesos y Ficheros
Enviado por Carlos y clasificado en Informática
Escrito el en español con un tamaño de 11,9 KB
Conceptos de Paginación y Segmentación en Sistemas Operativos
Paginación
La paginación consiste en dividir un proceso en páginas (bloques de datos de tamaño fijo). El sistema operativo divide la memoria física en bloques de igual tamaño llamados marcos de página. Solo se cargan en memoria las páginas que se van a utilizar. Si la predicción se realiza correctamente y se cargan en memoria solo las páginas que realmente se van a utilizar, el proceso se ejecutará exactamente igual que si se hubieran traído todas las páginas.
Cuando el proceso solicita un dato que se encuentra en una página que no está cargada en memoria, se produce un fallo de página (page fault) y el SO carga la página solicitada. Por esto, a este tipo de paginación se le conoce como paginación a demanda.
Ventajas de la Paginación:
- Eliminación de la fragmentación interna.
- Posibilidad de almacenar las páginas de un proceso de manera no contigua en memoria.
Segmentación
La segmentación es un esquema de gestión de memoria que se basa en particiones variables, conocidas como segmentos. Cada segmento corresponde a una unidad lógica del programa (por ejemplo, código, datos, pila).
Ventajas de la Segmentación:
- Los bloques de un proceso (segmentos) pueden estar situados en áreas de memoria contiguas (datos, pila, código).
- Suministra compactación de memoria.
- Permite protección y uso compartido de segmentos.
La compactación de memoria es un proceso por el cual se elimina la fragmentación externa. El bloque de memoria asignado a un proceso puede reubicarse dinámicamente para aprovechar mejor la memoria.
Diferencias Clave entre Paginación y Segmentación
- Tamaño de Bloque: La paginación utiliza bloques de tamaño fijo (páginas), mientras que la segmentación utiliza bloques de tamaño variable (segmentos).
- Fragmentación: La paginación elimina la fragmentación interna pero puede causar fragmentación externa (aunque menor). La segmentación puede causar fragmentación externa, la cual se resuelve con compactación.
- Contigüidad: En paginación, las páginas de un proceso no necesitan ser contiguas en memoria física. En segmentación, cada segmento es una unidad contigua en memoria.
- Visión del Usuario: La paginación es transparente para el programador (el sistema operativo gestiona las páginas). La segmentación es visible para el programador, quien organiza el programa en segmentos lógicos.
Definición y Clasificación de Sistemas Operativos
¿Qué es un Sistema Operativo (SO)?
Un Sistema Operativo (SO) es un software fundamental que actúa como intermediario entre el usuario y la máquina. Su función principal es realizar la gestión de los recursos del sistema (CPU, memoria, dispositivos de E/S, archivos) y optimizar su uso, proporcionando una interfaz para que los usuarios y las aplicaciones interactúen con el hardware.
Clasificación de Sistemas Operativos Actuales
Sistemas operativos como Windows XP, Linux (Ubuntu) y Windows Server 2008 se encuadran principalmente en las siguientes categorías:
- Multiusuario: Permiten que múltiples usuarios accedan y utilicen el sistema simultáneamente, ya sea de forma local o remota.
- Multitarea: Son capaces de ejecutar múltiples procesos o aplicaciones de forma concurrente, alternando rápidamente entre ellos para dar la impresión de ejecución simultánea.
- Multiproceso: Pueden gestionar y utilizar múltiples procesadores o núcleos de CPU para ejecutar tareas en paralelo, mejorando el rendimiento.
- De Propósito General: Están diseñados para una amplia gama de aplicaciones y usuarios, a diferencia de los sistemas operativos embebidos o de tiempo real.
Gestión de Periféricos por el Sistema Operativo
Función del SO en la Gestión de Periféricos
Una de las funciones principales de un Sistema Operativo (SO) es el control de los periféricos de Entrada/Salida (E/S) del ordenador. El SO se encarga de:
- Enviar órdenes a los dispositivos.
- Determinar qué dispositivo necesita atención por parte del procesador.
- Gestionar y eliminar posibles errores.
- Coordinar el flujo de datos entre la CPU, la memoria y los periféricos.
Clasificación de Periféricos según la Gestión de Información
Los periféricos se clasifican en función de cómo gestionan la información:
- Periféricos de tipo bloque: Son aquellos en los que la información se maneja en bloques de tamaño fijo. Ejemplos incluyen discos duros, unidades SSD y unidades de disquete.
- Periféricos de tipo carácter: Son los que sirven para introducir o mostrar datos en forma de caracteres individuales, sin un orden concreto de bloques. Ejemplos son el teclado, el ratón, el monitor y las impresoras.
Algoritmos de Reemplazo de Páginas en Memoria Virtual
Los algoritmos de reemplazo de páginas son cruciales en la gestión de la memoria virtual, ya que determinan qué página debe ser eliminada de la memoria principal cuando se necesita espacio para una nueva página.
- FIFO (First In First Out): Este algoritmo elige como "víctima" la página que lleva más tiempo en memoria, independientemente de su uso reciente. Es sencillo de implementar, pero puede no ser eficiente si las páginas más antiguas son también las más utilizadas.
- LRU (Least Recently Used): El algoritmo LRU elige como víctima aquella página de entre las que se encuentran en memoria que hace más tiempo que no ha sido referenciada. Se basa en la suposición de que las páginas que no se han utilizado recientemente probablemente no se utilizarán en el futuro cercano. Es más eficiente que FIFO, pero más complejo de implementar.
- Óptimo: Este es un algoritmo teórico que produce la menor tasa de fallos de página posible. Elige como víctima aquella página que no volverá a ser referenciada nunca más o lo hará muy posteriormente en el futuro. Es imposible de implementar en la práctica, ya que exige conocer las futuras referencias a las páginas, pero sirve como punto de referencia para evaluar otros algoritmos.
Técnicas para Manejar el Interbloqueo de Procesos
El interbloqueo (deadlock) es una situación en la que dos o más procesos están esperando indefinidamente por un recurso que está siendo retenido por otro proceso, que a su vez está esperando por un recurso retenido por el primero. Existen varias técnicas principales para manejar esta situación:
- Algoritmo del Avestruz: Esta técnica consiste en ignorar el problema del interbloqueo. Se aplica cuando la probabilidad de que ocurra un interbloqueo es extremadamente baja (por ejemplo, una vez cada varios años) y el costo de implementar mecanismos de detección y recuperación es mayor que el impacto de un interbloqueo ocasional. Ejemplo: Algunos sistemas Unix.
- Evitación de Interbloqueos: Mediante un estudio cuidadoso de la asignación de recursos y el estado del sistema, el sistema operativo puede prevenir que los interbloqueos ocurran. Esto implica que el SO siempre verifica si una asignación de recursos llevaría a un estado inseguro antes de concederla. El Algoritmo del Banquero es un ejemplo de esta técnica.
- Detección y Recuperación: En este enfoque, se permite que los interbloqueos ocurran. El sistema operativo se encarga de detectarlos periódicamente y, una vez identificados, aplica mecanismos para recuperarse de ellos. La recuperación puede implicar la terminación de procesos involucrados o la expropiación de recursos.
Técnicas de Gestión de Bloques de Archivos en Sistemas de Ficheros
En un sistema de ficheros, la forma en que se almacenan y gestionan los bloques de datos de un archivo en el disco es fundamental para el rendimiento y la eficiencia. Existen varias técnicas principales:
1. Asignación Contigua
Esta técnica consiste en almacenar los archivos mediante bloques adyacentes en el disco. De esta forma, en el directorio únicamente se guardará la dirección en la que comienza el primer bloque, ya que los demás se encuentran a continuación de forma secuencial.
Ventajas:
- Fácil implementación: La gestión es sencilla, ya que solo se necesita la dirección de inicio y la longitud.
- Acceso secuencial rápido: La lectura de archivos grandes es muy eficiente debido a la contigüidad.
Desventajas:
- Fragmentación externa: Con el tiempo, se crean pequeños espacios libres dispersos que no pueden ser utilizados por archivos grandes.
- Tamaño fijo: Es necesario conocer con anterioridad el número de bloques que ocupará el fichero, lo cual no siempre es posible.
- Dificultad para crecer: Si un archivo necesita más espacio, puede ser necesario reubicarlo completamente.
2. Asignación Enlazada (o Encadenada)
En esta técnica, los bloques de un archivo pueden estar dispersos por todo el disco. Cada bloque contiene un puntero al siguiente bloque del archivo. El directorio solo almacena la dirección del primer bloque.
Ventajas:
- No hay fragmentación externa: Se utiliza todo el espacio disponible.
- Tamaño dinámico: Los archivos pueden crecer fácilmente sin necesidad de reubicación.
Desventajas:
- Acceso directo lento: Para acceder a un bloque específico, es necesario recorrer la cadena de punteros desde el inicio.
- Fiabilidad: La pérdida de un puntero puede hacer que el resto del archivo sea inaccesible.
- Espacio de punteros: Cada bloque consume una pequeña parte de su espacio para almacenar el puntero.
3. Asignación Indexada
Esta técnica utiliza un bloque índice (o tabla de índices) para cada archivo. Este bloque contiene una lista de punteros a todos los bloques de datos del archivo, que pueden estar dispersos en el disco. El directorio solo almacena la dirección del bloque índice.
Ventajas:
- Acceso directo eficiente: Se puede acceder a cualquier bloque del archivo directamente a través del bloque índice.
- No hay fragmentación externa: Los bloques pueden estar dispersos.
- Tamaño dinámico: Los archivos pueden crecer añadiendo más entradas al bloque índice o utilizando bloques índice multinivel.
Desventajas:
- Overhead del bloque índice: Se requiere un bloque adicional para cada archivo, incluso para los pequeños.
- Tamaño limitado del archivo: El tamaño máximo del archivo está limitado por el número de entradas que puede contener el bloque índice (aunque esto se mitiga con esquemas multinivel).