Tema 3 Sistemas operativos PDF
Document Details
Uploaded by EagerSatyr
UAM - Universidad Autónoma de Madrid
Alexandra Vlad
Tags
Summary
This document is a study guide or lecture notes on operating systems, covering topics like introduction to operating systems, organization of computer systems, operating system structures, and operations on operating systems. The author is Alexandra Vlad and the date of creation is June 2021.
Full Transcript
Temas Generales para la preparación de la Oposición al Cuerpo Superior de Sistemas y Tecnologías de la Información de la Administración del Estado. Cuerpo Superior de Estadísticos del Estado Especialidad de Estadística-Ciencia de Datos. Almac...
Temas Generales para la preparación de la Oposición al Cuerpo Superior de Sistemas y Tecnologías de la Información de la Administración del Estado. Cuerpo Superior de Estadísticos del Estado Especialidad de Estadística-Ciencia de Datos. Almacenamiento y modelos de datos Tema 3. Sistemas operativos AUTOR: Alexandra Vlad Creación: Junio 2021 1 Tema 3. Sistemas Operativos ÍNDICE ÍNDICE 1 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS............. 3 2 QUÉ HACEN LOS SISTEMAS OPERATIVOS....................... 4 3 ORGANIZACIÓN DE SISTEMAS DE COMPUTACIÓN.......... 6 4 ARQUITECTURA DE SISTEMAS DE COMPUTACIÓN......... 8 5 ESTRUCTURA DE SISTEMAS OPERATIVOS...................... 11 6 OPERACIONES EN SISTEMAS OPERATIVOS..................... 13 7 GESTIÓN DE PROCESOS..................................................... 14 8 GESTIÓN DE MEMORIA........................................................ 18 9 GESTIÓN DE ALMACENAMIENTO (SISTEMA DE ARCHIVOS)................................................................................................ 26 10 PROTECCIÓN Y SEGURIDAD............................................... 30 11 SISTEMAS DISTRIBUIDOS. ENTORNOS DE COMPUTACIÓN................................................................................................ 34 12 RESUMEN ESQUEMÁTICO................................................... 36 13 BIBLIOGRAFÍA BÁSICA........................................................ 38 2 Tema 3. Sistemas Operativos ÍNDICE 1 Introducción a los sistemas operativos El hardware de un ordenador es, en potencia, una máquina capaz de llevar a acabo multitud de tareas útiles, pero por si sola no resulta de gran ayuda, si no se cuenta con algún mecanismo que permita indicarle cómo llevar a cabo las acciones que deseamos realice. Es, por tanto, el software del ordenador el que convierte al hardware en algo realmente útil. El software más importante es el sistema operativo, cuya misión es la de controlar todo el ordenador. El control de todos los aspectos hardware de un ordenador resulta muy complicado, piénsese en la escritura de un dato en un disco, y la enorme complejidad que conlleva una operación tan simple. Si el programador tuviera que tener en cuenta todos los aspectos relacionados con el control del hardware, es muy probable que su trabajo resultara imposible. Por ello, la primera función del sistema operativo es la de crear una máquina virtual, de manera que el programador tenga una visión simplificada del computador, en la cual las particularidades hardware le sean transparentes. Cualquier sistema informático se organiza en capas, de forma tal que en la capa más profunda se sitúa el hardware y en la capa superior el usuario. Esta estructura se puede observar en la siguiente figura. Juegos Hoja de cálculo Base de datos Compiladores Intérprete de comandos SISTEMA OPERATIVO Lenguaje máquina Microprogramación Dispositivos físicos Sobre la máquina física se sitúa la microprogramación. Un microprograma es un software muy primitivo que constituye un intérprete entre el hardware y el lenguaje máquina. Así, el microprograma es el encargado de ejecutar instrucciones de código máquina, tales como ADD (suma de dos operandos), o JUMP (salto en el flujo secuencial del programa). Por ejemplo, si se ha de llevar a cabo una orden MULT (multiplicación de dos operandos), el microprograma determina donde están almacenados los factores, programa la Unidad Aritmético Lógica (ALU) para que realice la operación y guarda el resultado. El conjunto de instrucciones que puede interpretar el microprograma constituye el código máquina del procesador. El lenguaje máquina está constituido por algunos cientos de instrucciones, que realizan operaciones elementales aritméticas, lógicas, de movimiento de la información y de control de flujo de ejecución. En este nivel se puede empezar a hablar de programación de los dispositivos físicos, mediante la carga de valores en registros de dispositivos especiales. Por ejemplo, para ordenar a un disco que realice una lectura hay que almacenar en sus registros los parámetros necesarios para llevar a cabo la operación. Estas tres primeras capas constituyen el hardware del ordenador. La primera misión del sistema operativo es la de ocultar toda esta complejidad al usuario. Sobre el sistema operativo se sitúan los programas típicos del sistema, como son compiladores, editores, intérpretes de órdenes, etc. Estas utilidades son programas del sistema, pero no constituyen parte del sistema operativo. La diferencia fundamental entre estos programas y el sistema operativo, es que este último se ejecuta en modo central, modo supervisor o modo núcleo, y está protegido mediante hardware contra la alteración por parte de los usuarios. Esta diferencia es sutil, pero muy importante, un usuario puede escribir su propio interprete de comandos, pero no puede modificar el controlador de disco. En la capa más superior se sitúan los programas de aplicación que dan servicio al usuario no programador. 3 Tema 3. Sistemas Operativos ÍNDICE 2 Qué hacen los sistemas operativos Como hemos visto anteriormente, un sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un sistema operativo es lograr que el sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. Un sistema Operativo (SO) es en sí mismo un programa de computadora. Sin embargo, es un programa muy especial, quizá el más complejo e importante en una computadora. El SO despierta a la computadora y hace que reconozca a la CPU, la memoria, el teclado, el sistema de vídeo y las unidades de disco. Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación. Cuando enciendes una computadora, lo primero que ésta hace es llevar a cabo un autodiagnóstico llamado auto prueba de encendido (Power On Self Test, POST). Durante la POST, la computadora identifica su memoria, sus discos, su teclado, su sistema de vídeo y cualquier otro dispositivo conectado a ella. Lo siguiente que la computadora hace es buscar un SO para arrancar (boot). Una vez que la computadora ha puesto en marcha su SO, mantiene al menos parte de éste en su memoria en todo momento. Mientras la computadora esté encendida, el SO tiene 4 tareas principales: Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario, para que este último se pueda comunicar con la computadora. Interfaz de línea de comando: tú introduces palabras y símbolos desde el teclado de la computadora, ejemplo, el MS-DOS. Interfaz gráfica del Usuario (GUI), seleccionas las acciones mediante el uso de un Mouse para pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús. Administrar los dispositivos de hardware en la computadora. Cuando corren los programas, necesitan utilizar la memoria, el monitor, las unidades de disco, los puertos de Entrada/Salida (impresoras, módems, etc.). El SO sirve de intermediario entre los programas y el hardware. Administrar y mantener los sistemas de archivo de disco. Los SO agrupan la información dentro de compartimientos lógicos para almacenarlos en el disco. Estos grupos de información son llamados archivos. Los archivos pueden contener instrucciones de programas o información creada por el usuario. El SO mantiene una lista de los archivos en un disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos. Apoyar a otros programas. Otra de las funciones importantes del SO es proporcionar servicios a otros programas. Estos servicios son similares a aquellos que el SO proporciona directamente a los usuarios. Por ejemplo, listar los archivos, grabarlos a disco, eliminar archivos, revisar espacio disponible, etc. Cuando los programadores escriben programas de computadora, incluyen en sus programas instrucciones que solicitan los servicios del SO. Estas instrucciones son conocidas como "llamadas del sistema" Un sistema operativo es el programa que oculta la verdad del hardware al programador y presenta una vista simple y agradable de los archivos nominados que pueden leerse y escribirse. El sistema operativo resguarda al programador del hardware del disco y presenta una interfaz simple orientada al archivo, también disimula mucho del trabajo concerniente a interrupciones, relojes o cronómetros, manejo de memoria y otras características de bajo nivel. La función del sistema operativo es la de presentar al usuario con el equivalente de una máquina ampliada o máquina virtual que sea más fácil de programar que el hardware implícito. Un sistema operativo es una parte importante de casi cualquier sistema de computación. Un sistema de computación puede dividirse en cuatro componentes: el hardware, el sistema operativo, los programas de aplicación y los usuarios. El hardware (unidad central de procesamiento (UCP), memoria y dispositivos de entrada y salida (E/S)) proporciona los recursos de computación básicos. Los programas de aplicación (compiladores, 4 Tema 3. Sistemas Operativos ÍNDICE sistemas de bases de datos, juegos de video y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemas de computación de los usuarios. Puede haber distintos usuarios (personas, máquinas, otros computadores) que intentan resolver problemas diferentes; por lo tanto, es posible que haya diferentes programas de aplicación. El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicación de los distintos usuarios. Podemos ver al sistema operativo como un asignador de recursos. Un sistema de computación tiene muchos recursos (hardware y software) que pueden requerirse para resolver un problema: tiempo de la UCP, espacio de memoria, espacio de almacenamiento de archivos, dispositivos de E/S, etc. El sistema operativo actúa como el administrador de estos recursos y los asigna a usuarios y programas concretos según los necesiten las tareas de los usuarios. Puesto que pueden surgir conflictos en las solicitudes de recursos, el sistema operativo debe decidir a qué solicitudes se les asignaran para que el sistema de computación pueda funcionar de manera eficiente y justa. En términos generales no hay una definición de sistema operativo completamente adecuada. Los sistemas operativos existen porque son una manera razonable de solucionar el problema de crear un sistema de computación utilizable. El objetivo fundamental de los sistemas de computación es ejecutar los programas de los usuarios y facilitar la resolución de sus problemas. El hardware se construye con este fin, pero como este no es fácil de utilizar, se desarrollan programas de aplicación que requieren ciertas operaciones comunes, como el control de dispositivos de E/S. las funciones comunes de control y de asignación de recursos se integran para formar un solo fragmento de software: el sistema operativo. 5 Tema 3. Sistemas Operativos ÍNDICE 3 Organización de sistemas de computación Aunque la organización de los sistemas operativos varía mucho entre los diferentes sistemas existen una serie de componentes, más o menos estándar, que son comunes. La magnitud del sistema operativo hace que la forma más usual de diseñarlo sea mediante la creación de módulos. Estos módulos son independientes entre sí, en la medida de lo posible, y se encargan de gestionar cada una de las funciones del sistema operativo. A continuación, vamos a describir esta estructura de módulos. Administrador de procesos El elemento constitutivo fundamental de cualquier sistema informático es el proceso. Un proceso es fundamentalmente un programa en ejecución. Un sistema se puede considerar como un conjunto de procesos ejecutando de forma concurrente, algunos de estos procesos son procesos de usuario y otros son procesos del mismo sistema operativo. La gestión de la ejecución concurrente es quizás el problema más importante al que se enfrenta el sistema operativo. Las actividades que ha de desarrollar el administrador de procesos incluyen todas aquellas necesarias para el control de todos los programas en ejecución dentro del sistema. Las más importantes son: Crear y eliminar los procesos de usuario y del sistema. Mantener las estructuras necesarias para la caracterización de los procesos. En especial, el mantenimiento de la tabla de procesos, donde se almacena la información referente a todos los procesos que hay en el sistema. Suspender, apropiar y reanudar los procesos. Proporcionar los mecanismos necesarios para la sincronización de procesos y definir la política de reparto del tiempo de ejecución. Proporcionar los mecanismos para la comunicación entre los procesos. Proporcionar los mecanismos para evitar, o manejar, los bloqueos mutuos. Administrador de la memoria principal La ejecución concurrente de procesos origina la necesidad de repartir la memoria entre ellos. La forma más usual es la de crear un espacio de direcciones virtuales en el cual la memoria es mucho mayor que la capacidad física real. Este espacio de direcciones virtuales lo ha de controlar el sistema operativo teniendo en cuenta el tamaño real de la memoria. La administración ha de incluir también una política de reparto. En cualquier caso, la gestión de la memoria principal siempre necesitará apoyo del hardware para llevarse a cabo. Las actividades de control de almacenamiento más importantes que hay que realizar son las siguientes: Controlar la relación entre el espacio de direcciones virtuales y el almacenamiento real. Controlar que zonas de memoria se están usando y que proceso las usa, así como proteger las zonas de memoria de cada proceso de posibles accesos de otros procesos. Decidir que procesos serán cargados en memoria cuando quede espacio disponible. Asignar espacio para satisfacer los requerimientos de las aplicaciones y recuperar el espacio que quede libre tras la terminación de un proceso o mediante la apropiación. Administrador del almacenamiento secundario El enorme flujo de información que ha de gestionar un sistema operativo moderno hace que la gestión del almacenamiento secundario sea fundamental para el rendimiento del sistema. La mayoría de las aplicaciones y datos han de permanecer en almacenamiento secundario hasta que su presencia sea requerida en el almacenamiento principal. Este módulo se encarga de la administración física del almacenamiento, dejando la mayoría de los aspectos de administración lógica al administrador de archivos. Las tareas fundamentales que se han de cumplir son: 6 Tema 3. Sistemas Operativos ÍNDICE Administración del espacio libre, y de la asignación de espacio que será requerida por los procesos. Administración de las operaciones sobre disco, como la secuenciación de las peticiones de acceso, para optimizar el tiempo de respuesta. Administrador del sistema de E/S El administrador de E/S hace referencia a la creación de una máquina extendida. La misión de este módulo es la de ocultar todo lo relacionado con las particularidades hardware de la E/S. Sus funciones fundamentales son: Gestión de un sistema de memoria temporal intermedia, que cree un sistema de cache con los dispositivos de E/S. Creación de un interfaz general con los controladores de dispositivos, para un acceso uniforme. Creación de los controladores específicos para cada periférico. La idea fundamental es la de que únicamente cada manejador de dispositivo conozca las particularidades del dispositivo que controla. Administrador de archivos Este es uno de los componentes más visibles del sistema operativo. Este módulo se ocupa de la gestión de almacenamiento a nivel lógico. El sistema operativo proporciona una visión lógica uniforme de almacenamiento, el archivo, que ignora todos los aspectos físicos del almacenamiento. El usuario ignora cómo y dónde se almacena un archivo que para él es una secuencia de bytes que mantienen información relacionada. Además, el sistema operativo presenta una estructura de directorios en forma de árbol para facilitar la organización del almacenamiento al usuario. La forma en que se organiza lógicamente el almacenamiento es muy importante, de ella dependen dos aspectos fundamentales: el aprovechamiento satisfactorio del espacio disponible y la rapidez en el acceso a la información. Las funciones principales que ha de realizar el administrador de archivos son: Creación y eliminación de archivos Creación y eliminación de directorios. Proporcionar las operaciones primitivas necesarias para la manipulación de archivos y directorios. Relación entre la organización lógica y la organización física de los dispositivos de almacenamiento. Gestión del espacio libre. Gestión de la seguridad del sistema de archivos, y de la protección tanto frente a otros usuarios como a fallos del sistema. Sistema de protección La protección de todos los recursos de un proceso (memoria, archivos, cpu, etc.), hace referencia a dos aspectos. Primero ha de proteger los recursos asignados a un proceso, evitando accesos a sus segmentos de memoria, o escrituras en zonas del disco que él tenga en uso. Además ha de evitar que los errores en un subsistema que está funcionando de forma incorrecta afecten al resto del sistema. Administrador de redes Los equipos modernos rara vez realizan su trabajo en solitario. La mayoría funcionan dentro de redes locales, que a su vez se comunican con redes globales de información. Es necesario que el sistema operativo proporcione los mecanismos necesarios para que los procesos puedan comunicarse entre sí. En el caso límite, el sistema distribuido, el propio sistema operativo se encuentra dentro de la red. La misión fundamental de este módulo es el control de flujo de información dentro de la red en lo que afecta al propio sistema. 7 Tema 3. Sistemas Operativos ÍNDICE 4 Arquitectura de sistemas de computación Actualmente, los sistemas operativos se organizan en capas. Si se tiene en cuenta las funciones que un sistema operativo puede realizar tenemos lo siguiente: Control y ejecución de programas. Control, gestión y administración de periféricos. Control, gestión y administración de usuarios. Control de procesos. Control de errores de sistema y de aplicaciones. Control y gestión de seguridad frente a intrusos o virus. Etcétera. Un sistema operativo se estructura, básicamente, en cinco niveles o capas. Cada uno de estos niveles se comunica con el nivel inmediatamente inferior y superior de tal forma que todos ellos están coordinados y consiguen el objetivo del sistema operativo. El sistema operativo está compuesto por un conjunto de paquetes de software que pueden utilizarse para gestionar las interacciones con el hardware. Estos elementos se incluyen por lo general en este conjunto de software: El núcleo, que representa las funciones básicas del sistema operativo, como, por ejemplo, la gestión de la memoria, de los procesos, de los archivos, de las entradas/salidas principales y de las funciones de comunicación. El intérprete de comandos, que posibilita la comunicación con el sistema operativo a través de un lenguaje de control, permitiendo al usuario controlas los periféricos sin conocer las características del hardware utilizado, la gestión de las direcciones físicas, etcétera. El sistema de archivos, que permite que los archivos se registren en una estructura arbórea. 8 Tema 3. Sistemas Operativos ÍNDICE Otra posible clasificación de los niveles del SO es la siguiente: Nivel Descripción 3 Usuario. Se encarga de controlar los procesos a nivel usuario, es decir, muestra al usuario el proceso que está ejecutándose o el que desea ejecutar. 2 Supervisor. Se encarga de realizar la comunicación de cada proceso entre el sistema y el usuario, controla y coordina la gestión de entrada y salida de los diferentes procesos hacia los periféricos y los dispositivos de almacenamiento externo. 9 Tema 3. Sistemas Operativos ÍNDICE 1 Ejecutivo. Se encarga de administrar la memoria, almacenar los procesos en páginas (segmentación, paginación, almacenamiento en búfer, etc.), tanto en memoria principal como en disco. 0 Núcleo. Se encarga de controlar la CPU, de gestionar que procesos llegan a la CPU para ser ejecutados (planificación de procesos), de realizar tareas básicas de sistema, de la comunicación con el hardware, etc. En la actualidad la mayoría de los sistemas operativos son multiusuario y multitarea, es decir, pueden ejecutar varios procesos a la vez. Para ello, el núcleo de estos sistemas operativos gestiona las denominadas máquinas virtuales. Una máquina virtual es un archivo, o conjunto de archivos que es una copia exacta del hardware real que gestiona el propio sistema operativo. Dispone de los niveles de núcleo, ejecutivo, supervisor y usuario, como si fueran independientes, para cada usuario que utilice el sistema. Este tipo de gestión, que realizan la mayoría de los sistemas operativos multiusuario y multitarea, confiere gran estabilidad al sistema, ya que ante eventuales errores de la aplicación, el hardware no se bloquea; la aplicación del usuario y su correspondiente copia del hardware, es la que deja de ejecutarse. Por tanto, el resto de usuarios podrán seguir ejecutando sus programas sin más problemas. Es decir, el bloqueo de un proceso que puede estar ejecutando un usuario no afecta al resto de procesos, ya que cada uno de ellos, incluso para el mismo usuario, se ejecuta en una máquina virtual diferente, por lo que el hardware de la máquina no se ve afectado. Una vez que el usuario termina de ejecutar su aplicación, se produce la interacción real con el hardware. El sistema operativo termina de ejecutar correctamente la aplicación, el resto de usuarios siguen trabajando con sus máquinas virtuales y, evidentemente, el hardware funciona sin problemas. Se descarga el contenido de los archivos que forman la máquina virtual al hardware, momento en que se produce la operación real de entrada y salida sobre el periférico o dispositivo de almacenamiento. 10 Tema 3. Sistemas Operativos ÍNDICE 5 Estructura de sistemas operativos A continuación, se describen algunas de las posibles estructuras de los SO. Hay que señalar que algunas de éstas son producto de desarrollo de los SO a lo largo de la historia y que, si bien no deberían seguir usándose debido a sus muchas carencias, se siguen manteniendo por compatibilidad con sistemas ya existentes. Una posible clasificación de los sistemas operativos podría ser por estructura. De esta forma tendríamos sistemas monolíticos, sistema en capas, sistema operativo como máquina virtual y modelo cliente-servidor (o sistema operativo tipo microkernel). Sistemas monolíticos Este tipo de organización, aunque es la peor, es la más extendida. La estructura consiste en la total ausencia de estructura. El código se organiza como una serie de procedimientos que resuelven tareas específicas. Los procedimientos se llaman unos a otros, dando lugar a lo que se conoce como código espagueti. No existe ocultación de la información, cada procedimiento es visible para todos los que forman el sistema operativo. Las desventajas de este tipo de diseño son obvias: dificultad para la depuración y el mantenimiento, gran cantidad de errores, dificultad de actualización y todas las relacionadas con cualquier tipo de programa no estructurado. Aunque no existe una estructuración global definida, el sistema operativo monolítico se suele organizar en tres niveles, más o menos diferenciados: Un programa principal que atiende las llamadas de los programas de usuario e invoca el procedimiento de servicio del SO solicitado. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. Existe un procedimiento de servicio para cada llamada al sistema. Un conjunto de procedimientos de más bajo nivel, que ayudan a la ejecución de los procedimientos de servicio. Estos procedimientos son invocados por diferentes rutinas de servicio. Sistemas en capas (jerárquica) El primer SO construido con esta filosofía fue THE (Technische Hogeschool Eindhoven) que constaba de 6 capas: Capa 0. Se ocupa de la asignación de procesos y del intercambio de procesos cada vez que los temporizadores lo indican. Esta capa contiene todo lo referente a la multiprogramación, de forma tal que el resto de capas no tienen que ocuparse de todo lo referente al hecho de que hay varios procesos ejecutándose a la vez. Capa1. Gestiona todo lo referente a la asignación de memoria. Es la encargada de proporcionar la memoria necesaria a cada proceso y de realizar los intercambios que sean necesarios con la memoria secundaria. Las capas superiores no deben de preocuparse de donde se encuentra su memoria, ni de gestionar la asignación. Capa 2. Comunica cada proceso con la consola del operador. Por encima de esta capa cada proceso tiene su propia consola de operador. Capa 3. Controla los dispositivos de entrada/salida (E/S) y se encarga de todas las peculiaridades de su programación, así como mantener el flujo de información con ellos, mediante áreas de memoria temporal de intercambio. Las capas superiores ven a los dispositivos de E/S como entes abstractos, aislándose de sus problemas físicos específicos. Capa 4. Programas de usuario. Estos se ven aislados de los problemas de multiprogramación, gestión de memoria, de la consola y de la E/S. Capa 5. En la parte superior de la pirámide se sitúa el proceso operador del sistema. Máquina Virtual El sistema de máquina virtual proporciona la multiprogramación, pero eliminando la creación de una máquina extendida. Para ello, crea un monitor de la máquina virtual que se ejecuta directamente sobre 11 Tema 3. Sistemas Operativos ÍNDICE el HW. Este monitor posibilita la multiprogramación mediante la creación de máquinas virtuales que reproducen el HW del ordenador. Sobre cada una de estas máquinas virtuales cada usuario puede ejecutar su propio SO. Cuando un usuario realiza una llamada al SO, ésta es capturada por su propio SO. El monitor de la máquina virtual proporciona a ese SO las instrucciones normales del manejo del sistema y, finalmente, es el monitor el que lleva a cabo las acciones sobre la maquina real.De esta forma, cada usuario gana en flexibilidad. Modelo cliente-servidor (o microkernel) La tendencia en los SO actuales es eliminar todo el código del SO que sea posible trasladándolo al usuario, manteniendo un núcleo mínimo (microkernel). Así la mayoría de las funciones se trasladan a procesos en modo usuario, ejecutándose el SO solo cuando es necesario. La estructura es la siguiente: cuando un proceso necesita un servicio (proceso cliente) envía la solicitud a un proceso servidor que realiza el trabajo por él y devuelve la respuesta. En este esquema el SO solo se encarga de la comunicación entre el cliente y el servidor. Como se han aislado las diferentes facetas del SO, el fallo en uno de los módulos servidores no implica fallo total del sistema. Sin embargo, existen acciones que no pueden llevarse a cabo por un proceso en modo usuario, por ello es necesario arbitrar algún mecanismo para que los servidores puedan llevar a cabo estas acciones. Para ello existen varias políticas: Una idea es la de hacer que aquellos servidores críticos, por ejemplo, acceso a los dispositivos de E/S, se ejecuten en modo núcleo. Otra solución es la de crear una serie de mecanismos dentro del núcleo que lleven a cabo las tareas más críticas. 12 Tema 3. Sistemas Operativos ÍNDICE 6 Operaciones en sistemas operativos A continuación, se enumeran las funciones de los sistemas operativos: Aceptar todos los trabajos y conservarlos hasta su finalización. Interpretación de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador. Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el Mouse. Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas. Manejo de errores: Gestiona los errores de hardware y la pérdida de datos. Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien después). Protección: Evitar que las acciones de un usuario afecten el trabajo que está realizando otro usuario. Multiacceso: Un usuario se puede conectar a otra máquina sin tener que estar cerca de ella. Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos. Características de los sistemas operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes características: Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible. Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a través del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera. Organizar datos para acceso rápido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras. Procesamiento por bytes de flujo a través del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. 13 Tema 3. Sistemas Operativos ÍNDICE 7 Gestión de procesos Uno de los conceptos más importantes que gira entorno a un sistema operativo es el de proceso. Un proceso es un programa en ejecución junto con el entorno asociado (registros, variables, etc.). El corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creándolos, terminándolos y respondiendo a cualquier petición de servicio por parte de los mismos. Planificación del Procesador (Scheduler) La planificación del procesador se refiere a la manera o técnicas que se usan para decidir cuánto tiempo de ejecución y cuando se le asignan a cada proceso del sistema. Obviamente, si el sistema es monousuario y monotarea no hay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema. Características a considerar de los Procesos No todos los equipos de cómputo procesan el mismo tipo de trabajos, y un algoritmo de planificación que en un sistema funciona excelente puede dar un rendimiento pésimo en otro cuyos procesos tienen características diferentes. Estas características pueden ser: Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de operaciones de entrada y salida (aplicaciones de bases de datos, por ejemplo). Cantidad de Uso de CPU: Existen procesos que no realizan muchas operaciones de entrada y salida, sino que usan intensivamente la unidad central de procesamiento. Por ejemplo, operaciones con matrices. Procesos de Lote o Interactivos: Un proceso de lote es más eficiente en cuanto a la lectura de datos, ya que generalmente lo hace de archivos, mientras que un programa interactivo espera mucho tiempo (no es lo mismo el tiempo de lectura de un archivo que la velocidad en que una persona teclea datos) por las respuestas de los usuarios. Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se requiere que tengan prioridad para los turnos de ejecución. Longevidad de los Procesos: Existen procesos que típicamente requerirán varias horas para finalizar su labor, mientras que existen otros que solo necesitan algunos segundos. Un proceso es una actividad que se apoya en datos, recursos, un estado en cada momento y un programa. El Bloque de Control de Procesos (PCB). Un proceso se representa desde el punto de vista del sistema operativo, por un conjunto de datos donde se incluyen el estado en cada momento, recursos utilizados, registros, etc., denominado Bloque de Control de Procesos (PCB). Los objetivos del bloque de control de procesos son los siguientes: Localización de la información sobre el proceso por parte del sistema operativo. Mantener registrados los datos del proceso en caso de tener que suspender temporalmente su ejecución o reanudarla. La información contenida en el bloque de control es la siguiente: Estado del proceso. Información relativa al contenido del controlador del programa (Program Counter, PC), estado de procesador en cuanto a prioridad del proceso, modo de ejecución, etc., y por último el estado de los registros internos de la computadora. Estadísticas de tiempo y ocupación de recursos para la gestión de la planificación del procesador. Ocupación de memoria interna y externa para el intercambio (swapping). Recursos en uso (normalmente unidades de entrada/salida). Archivos en uso. Privilegios. 14 Tema 3. Sistemas Operativos ÍNDICE Estas informaciones se encuentran en memoria principal en disco y se accede a ellas en los momentos en que se hace necesaria su actualización o consulta. Los datos relativos al estado del proceso siempre se encuentran en memoria principal. Existe un Bloque de Control de Sistema (SCB) con objetivos similares al anterior y entre los que se encuentra el enlazado de los bloques de control de procesos existentes en el sistema. El cambio de contexto se producirá en caso de ejecución de una instrucción privilegiada, una llamada al sistema operativo o una interrupción, es decir, siempre que se requiera la atención de algún servicio del sistema operativo. Estado de los Procesos. Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario. Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos. Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en: o Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso. o Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.). o Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida). Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio. Son de dos tipos: o Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo. o Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado. Operaciones sobre procesos. Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulación de los procesos. Las operaciones que se pueden hacer sobre un proceso son las siguientes: Crear el proceso. Se produce con la orden de ejecución del programa y suele necesitar varios argumentos, como el nombre y la prioridad del proceso. Aparece en este momento el PCB, que será insertado en la cola de procesos preparados. La creación de un proceso puede ser de dos tipos: o Jerárquica. En ella, cada proceso que se crea es hijo del proceso creador y hereda el entorno de ejecución de su padre. El primer proceso que ejecuta un usuario será hijo del intérprete de comandos con el que interactúa. o No jerárquica. Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un entorno diferente. Es un tipo de creación que no suele darse en los sistemas operativos actuales. Destruir un proceso. Se trata de la orden de eliminación del proceso con la cual el sistema operativo destruye su PCB. Suspender un proceso. Es un proceso de alta prioridad que paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del sistema. Reanudar un proceso. Trata de activar un proceso que a sido previamente suspendido. Cambiar la prioridad de un proceso. 15 Tema 3. Sistemas Operativos ÍNDICE Temporizar la ejecución de un proceso. Hace que un determinado proceso se ejecute cada cierto tiempo (segundos, minutos, horas...) por etapas de una sola vez, pero transcurrido un periodo de tiempo fijo. Despertar un proceso. Es una forma de desbloquear un proceso que habrá sido bloqueado previamente por temporización o cualquier otra causa. Prioridades Todo proceso por sus características e importancia lleva aparejadas unas determinadas necesidades de ejecución en cuanto a urgencia y asignación de recursos. Las prioridades según los sistemas operativos se pueden clasificar del siguiente modo: Asignadas por el sistema operativo. Se trata de prioridades que son asignadas a un proceso en el momento de comenzar su ejecución y dependen fundamentalmente de los privilegios de su propietario y del modo de ejecución. Asignadas por el propietario. Estáticas. Dinámicas. El Núcleo del Sistema Operativo Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). El núcleo normalmente representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan. Los núcleos se diseñan para realizar “el mínimo” posible de procesamiento en cada interrupción y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita para atender otras interrupciones. El núcleo de un sistema operativo normalmente contiene el código necesario para realizar las siguientes funciones: Manejo de interrupciones. Creación y destrucción de procesos. Cambio de estado de los procesos. Despacho. Suspensión y reanudación de procesos. Sincronización de procesos. Comunicación entre procesos. Manipulación de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignación y liberación de memoria. Apoyo para el sistema de archivos. Apoyo para el mecanismo de llamada y retorno de un procedimiento. Apoyo para ciertas funciones de contabilidad del sistema. Núcleo o Kernel y niveles de un Sistema Operativo El Kernel consiste en la parte principal del código del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas: Nivel 1. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la gestión de memoria secundaria necesaria para la ejecución de procesos. 16 Tema 3. Sistemas Operativos ÍNDICE Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas. Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos. Nivel 4. Información o Aplicación o Interprete de Lenguajes: Facilita la comunicación con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulación de archivos con nombre, va asignando espacio y acceso de datos en memoria. El núcleo y los procesos El núcleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalación. Toda esta gestión la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. 17 Tema 3. Sistemas Operativos 8 Gestión de memoria La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no. El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accedan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución. Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el sistema. A continuación, se observarán los puntos correspondientes a la administración de la memoria. Memoria real La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor. Memoria virtual El termino memoria virtual se asocia a dos conceptos que normalmente a parecen unidos: 1. El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener más memoria RAM de la que realmente hay en el sistema. Esta ilusión existe tanto a nivel del sistema, es decir, teniendo en ejecución más aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicación individual pueda usar más memoria de la que realmente hay o incluso de forma más general, ofreciendo a cada aplicación más memoria de la que existe físicamente en la máquina. 2. Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que, por lo tanto, pueden usar el espacio de direcciones completo. Esta técnica facilita enormemente la generación de código, puesto que el compilador no tiene por qué preocuparse sobre dónde residirá la aplicación cuando se ejecute. Espacio De Direcciones Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos: Direcciones físicas: son aquellas que referencian alguna posición en la memoria física. Direcciones lógicas: son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas. Direcciones lineales: direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado una transformación dependiente de la arquitectura. Los programas de usuario siempre tratan con direcciones virtuales, nunca ven las direcciones físicas reales. 18 Tema 3. Sistemas Operativos Unidad de Manejo de Memoria La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son: Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas. Comprobar que la conversión se puede realizar. La dirección lógica podría no tener una dirección física asociada. Por ejemplo, la página correspondiente a una dirección se puede haber trasladado a una zona de almacenamiento secundario temporalmente. Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para ello. La MMU se inicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso. En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en modo privilegiado del procesador. La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos. Intercambio El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las que pueden residir simultáneamente en la memoria del sistema: Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar más memoria RAM de la que realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecución. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de memoria de todos los usuarios. Asignación Contigua La memoria principal normalmente se divide en dos particiones: Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupción. Procesos de usuario en la parte alta. Asignación de partición simple: Puede utilizarse un esquema de registro de relocalización y límite para proteger un proceso de usuario de otro y de cambios del código y datos del sistema operativo. El registro de relocalización contiene la dirección contiene la dirección física más pequeña; el registro limite contiene el rango de las direcciones lógicas cada dirección lógica debe ser menor al registro limite Asignación de particiones múltiples: Bloques de distintos tamaños están distribuidos en memoria, cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle. El sistema operativo debe tener información sobre: Particiones asignadas Particiones libres (huecos) Asignación de partición dinámica El proceso de compactación es una instancia particular del problema de asignación de memoria dinámica, el cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. 19 Tema 3. Sistemas Operativos Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. Las estrategias más comunes para asignar algún hueco de la tabla son: Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde terminó la última búsqueda. La búsqueda termina al encontrar un hueco lo suficientemente grande. Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. La búsqueda se debe de realizar en toda la tabla, a menos que la tabla esté ordenada por tamaño. Esta estrategia produce el menor desperdicio de memoria posible. Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de huecos a menos que esté organizada por tamaño. Esta estrategia produce los huecos de sobra más grandes, los cuales pudieran ser de más uso si llegan procesos de tamaño mediano que quepan en ellos. Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar tanto el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en términos de uso de espacio, pero por lo general el primer ajuste es más rápido. Problema: La fragmentación. Fragmentación La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria que se vieron en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentación externa. La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera. La fragmentación puede ser: Fragmentación Externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua. Fragmentación Interna: la memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la partición, pero no se utiliza. La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero esta solo es posible si la relocalización es dinámica y se hace en tiempo de ejecución. Paginación Es una técnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones físicas de igual tamaño, denominadas marcos de página. Los programas se dividen en unidades lógicas, denominadas páginas, que tienen el mismo tamaño que los marcos de páginas. De esta forma, se puede cargar una página de información en cualquier marco de página. Las páginas sirven como unidad de almacenamiento de información y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la dirección de marco, que está en la posición física de la primera palabra en el marco de página. Las páginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginación permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Cada página consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n paginas (0,1,2,3…n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos 20 Tema 3. Sistemas Operativos de páginas (0,z,2z,…,(m-1)z)(m*z posiciones). Una dirección virtual a es equivalente a una dirección dada como una dupla (p, d), en la cual p es el número de la página y del número de la palabra dentro de la página, de acuerdo con la relación: a=p*z+d (0