Tema 4: Funciones de los Sistemas Operativos 1. Estructura del Sistema Operativo Un sistema operativo (SO) es un conjunto de programas que gestiona los recursos del hardware y ofrece servicios a las aplicaciones del usuario. Se divide en dos partes: 1. Kernel: Es el núcleo del SO que se encarga de la gestión del hardware de la máquina y ofrece servicios a las aplicaciones que funcionan sobre él. El kernel es la estructura más interna del SO y se encarga de la relación con el hardware, permitiendo su control por parte de las aplicaciones que funcionan sobre el SO. Las funciones del kernel incluyen la gestión de procesos, gestión de memoria, gestión de archivos y gestión de entrada y salida. 2. Escritorio: Sobre el núcleo funcionan una serie de aplicaciones básicas en todos los SO, que funcionan como aplicaciones de usuario (explorador de archivos, navegador de Internet, etc.). Estas aplicaciones se conocen en Linux como “Entorno de escritorio”, y varían de unas distribuciones a otras. 2. Gestión de Procesos Un proceso es un elemento en ejecución que gestiona la CPU en memoria, generado cuando un conjunto de archivos de un programa se ejecuta. Cada proceso pertenece a un solo programa. Los procesos pueden iniciarse al arrancar el sistema operativo, por petición de un usuario, o cuando un proceso hace una llamada al sistema para crear un nuevo proceso. Un proceso puede terminar cuando completa su tarea, sufre un error, por petición de un usuario, o cuando un proceso hace una llamada al sistema para terminar otro proceso. La información de cada proceso se almacena en un Bloque de Control de Procesos (PCB), que incluye el identificador del proceso (PID), estado, prioridad, tiempo usado de CPU, tiempo en espera y tiempo restante de CPU. Los PCBs de los procesos en ejecución se guardan en la tabla de procesos, donde el kernel controla el estado de cada uno. La multiprogramación es la capacidad de un sistema para ejecutar varios procesos o programas. Existen dos tipos: programación paralela o concurrente, y programación en tiempo compartido. La CPU hace pasar a los procesos por tres posibles estados: preparado, en ejecución o bloqueado. Estados de los procesos: 1. 2. 3. 4. 5. 6. Proceso creado: Nuevo Listo. Asignando CPU: Listo Ejecutando. Interrumpido (acaba tiempo): Ejecutando Listo. Solicitud de E/S: Ejecutando Bloqueado. E/S resuelta: Bloqueado Listo. Salida: Ejecutando Finalizado. Los hilos son miniprocesos concurrentes generados por acciones independientes que pueden avanzar por separado. Cada hilo es manejado por una CPU (core o núcleo del microprocesador). Si un hilo se bloquea, los demás pueden continuar. En un sistema multitarea, donde muchos procesos compiten por utilizar el procesador, el SO (kernel) se encarga de planificar la ejecución eligiendo cual se debe ejecutar en cada momento. Existen varios algoritmos de planificación que se usan en la planificación de procesos, como FCFS (First Come First Served), SJF (Shortest Job First), SRTF (Shortest Remaining Time First), Round-Robin y por prioridades. Los procesos pueden estar en primer o segundo plano. Los procesos en primer plano interactúan con los usuarios y siempre están asociados a un usuario. Los procesos en segundo plano, conocidos como servicios del sistema o demonios, no suelen interactuar con el usuario y son creados por el SO o por aplicaciones lanzadas por usuarios. Varios servicios suelen asociarse a un único PID. 3. Gestión de Memoria La gestión de memoria en multitarea es una función del sistema operativo (SO) que asigna espacios de direcciones a los nuevos procesos y libera direcciones de los que han terminado. La memoria virtual es un mecanismo que permite ejecutar más procesos de los que caben en memoria, utilizando la memoria secundaria (disco duro) como ampliación de memoria. Para lograr esto, la memoria utilizada por el programa se divide en segmentos y los segmentos en páginas (un proceso conocido como segmentación y paginación). Los segmentos son de tamaño variable y pueden contener varias páginas, mientras que las páginas son de tamaño fijo (4 KB). Cuando un proceso necesita una posición de memoria que no está en la memoria física, se produce un fallo de página. Este se resuelve intercambiando la página menos utilizada de la memoria física por la que se necesita, que se encuentra en la memoria secundaria. Este proceso se conoce como swapping o intercambio. En Linux, el área de intercambio se conoce como área de intercambio de memoria o Swap, y se ubica en una partición independiente del disco duro, cuyo tamaño suele ser el doble de la memoria RAM del equipo. En Windows, el área de intercambio se ubica en un único archivo oculto de sistema llamado pagefile.sys, ubicado en la partición raíz de la instalación (C:/). 4. Gestión de Archivos El sistema de archivos es una estructura que sostiene la información en los dispositivos de almacenamiento, solucionando las limitaciones de la memoria que maneja el sistema operativo (SO), como su tamaño y la volatilidad de los datos. En un volumen o unidad formateada con un determinado sistema de archivos, la información se almacena mediante archivos o ficheros. Un archivo se define como un conjunto de datos almacenados en un soporte secundario, asociados a un nombre y a una serie de características ajenas al usuario. Estas características pueden ser generales para todos los archivos (como permisos y atributos) o dependientes del tipo de archivo (como datos de la imagen o del documento). Cada SO usa su propio sistema de archivos, que puede ser exclusivo del SO si su código no es libre. Por ejemplo, los sistemas de archivos FAT32 y NTFS de Windows son visibles desde Linux, pero los sistemas de archivos de Linux (Ext3 y Ext4) no son reconocidos por Windows. 5. Gestión de Entrada y Salida (E/S) Técnicas de gestión de los procesos de E/S: Existen tres formas de coordinar el procesador con los dispositivos de entrada y salida (E/S) que tienen diferentes velocidades. o E/S programada: El procesador ejecuta un programa genérico que atiende las operaciones de E/S, mientras el resto de programas espera1. Es la forma más simple y menos eficiente2. o E/S controlada por interrupciones: El procesador recibe una señal de interrupción desde el dispositivo de E/S, y ejecuta un programa especializado para cada tipo de operación de E/S llamado rutina de manejo de la interrupción.3. Luego, recupera el contexto del programa que estaba ejecutando. Se pueden priorizar las interrupciones para evitar conflictos o deshabilitar las interrupciones cuando se está tratando una. o E/S mediante DMA: Un chip (Southbridge) especializado se encarga de transferir los datos entre el dispositivo de E/S y la memoria, sin ocupar al procesador4. El chip avisa al procesador mediante una interrupción cuando termina. Diferencias de velocidad: Existen dos técnicas para reducir el impacto de la lentitud de los dispositivos de E/S en el rendimiento del procesador. o o Caching: El procesador guarda en la memoria RAM los datos que más usa, para evitar acceder al dispositivo de almacenamiento cada vez5. Spooling: Los datos se almacenan en registros intermedios de memoria llamados buffers, que permiten al procesador y a los dispositivos de E/S trabajar de forma simultánea. Se usa para la impresión o el streaming de video.