E. U. Politécnica Ingeniería Técnica Industrial

FUNDAMENTOS DE INFORMÁTICA

TEMA 4 SISTEMAS OPERATIVOS 1. INTRODUCCIÓN 2. DEFINICIÓN DE SISTEMA OPERATIVO 3. FUNCIONES PRINCIPALES DE UN SISTEMA OPERATIVO 3.1. Gestión de procesos 3.2. Gestión de la memoria principal

3.2.1. La memoria virtual 3.3. Gestión de la entrada/salida (E/S) 3.4. Gestión de ficheros

4. ALGUNOS SISTEMAS OPERATIVOS 4.1. 4.2. 4.3. 4.4.

MS-DOS WINDOWS UNIX LINUX

5. INFORMES PROPUESTOS

1. INTRODUCCIÓN Un sistema informático es un conjunto de software (SW) más hardware (HW) destinado procesar la información de forma rápida y automática. El HW está formado por los elementos tangibles que constituyen el ordenador y el SW son los programas y los datos. Los programas son listas de instrucciones que el ordenador podrá ejecutar sobre los datos. Los elementos que componen el ordenador (procesador, memoria, tarjetas, periféricos,...) se manejan a través de instrucciones formadas por secuencias de 0 y 1. Este conjunto de instrucciones, llamadas instrucciones máquina, forman la interfaz del ordenador. Si los usuarios de un ordenador tuvieran que utilizar el hardware a través de sus instrucciones máquina se escribirían muy pocos programas, y estos no podrían resolver tareas excesivamente complejas, pues el uso de los dispositivos físicos del ordenador mediante estas instrucciones es complejo, tedioso, y está lleno de detalles. La solución que se ha ido adoptando con el tiempo para salvar esta complejidad es la de escribir capas o niveles de software. El software se puede dividir de forma muy general en dos grupos: programas de aplicación que resuelven los problemas de los usuarios y los programas del sistema que gestionan las actividades del computador.

En la Fig. 1 se describe esta situación. El HW se encuentra en la parte inferior, este nivel contiene los dispositivos físicos formados por circuitos integrados, cables, etc. A continuación viene un nivel de software muy rudimentario que controla directamente estos dispositivos y proporciona al nivel superior una interfaz más sencilla. Este SW, llamado microprograma (instrucciones formadas por 0 y 1) busca en memoria instrucciones de lenguaje máquina (ADD, MOVE,...) y las ejecuta. El resto de SW del sistema se sitúa sobre el SO. Aquí se pueden encontrar programas como el intérprete de comandos (shell), compiladores y otros programas similares independientes de las aplicaciones y los programas de aplicación, escritos por los usuarios con objeto de resolver sus problemas específicos. Sistema bancario

Editor de texto

Compiladores

Juegos

Intérpretes de comandos

Programas de aplicación

Programas del sistema

Sistema operativo Lenguaje máquina Microprograma Dispositivos físicos

Hardware

Fig. 1

El sistema operativo es la capa de software más importante de un sistema informático.

2. DEFINICIÓN DE SISTEMA OPERATIVO Un Sistema Operativo (SO) es un conjunto de programas que actúan como interfaz entre el usuario y la máquina y que fundamentalmente lleva a cabo dos funciones: 1. Administrar y gestionar los recursos HW: el procesador, la memoria, los dispositivos de E/S, etc. son recursos limitados que deben ser “repartidos” entre los programas que los soliciten de modo que se aumente su disponibilidad y se optimice su utilización. El SO lleva la cuenta del estado de cada recurso y cumple la función de asignarlos, de forma ordenada, a los procesos que compiten por ellos, resolviendo las peticiones conflictivas de manera que se preserve la integridad del sistema y que al hacerlo se optimice el rendimiento final. 2. Facilitar el uso del sistema: un computador está formado por un conjunto de recursos HW (memoria, reloj, discos, tarjetas de red,...) que lo convierten en un sistema complejo y de difícil manejo. Resultaría muy complicado para un programador que desarrolla programas de aplicación (editor de texto, hoja de cálculo,...) escribir, por ejemplo, rutinas para leer y escribir en disco en las que tuviese que manejar directamente los controladores de disco, proporcionando datos necesarios como el sector, la pista, el número de bloques, etc. Probablemente no utilizaría muchos de los recursos de forma correcta y eficiente. El SO aísla al usuario de la complejidad del HW convirtiendo el computador en una máquina virtual más fácil de entender y programar. El SO presenta al programador un sistema más sencillo donde la memoria es más grande, se accede a los ficheros por nombres simbólicos (no necesita saber las direcciones físicas donde se almacena la información), se proporcionan rutinas para la protección y el tratamiento de errores, etc.

3. FUNCIONES PRINCIPALES DE UN SISTEMA OPERATIVO Las dos tareas principales de un SO (gestión de recursos y facilitar el uso del sistema) engloban numerosas funciones que serán estudiadas en este apartado. Debido a su complejidad se describirán a grandes rasgos, ofreciendo una visión simplificada. 3.1. Gestión de procesos Un proceso es la unidad ejecutable elemental manejada por el SO. Podría decirse que un proceso es una instancia de un programa en ejecución. Cuando un usuario decide ejecutar un programa se crean en el sistema uno o varios procesos. Las instrucciones de estos procesos se cargan en memoria principal, a cada uno se le asigna espacio en memoria, permisos, nivel de prioridad, etc. Todos estos parámetros configuran el proceso. Una vez creado, un proceso necesita recursos de la máquina para llevar a cabo su tarea: tiempo de CPU, memoria, ficheros y dispositivos de E/S. El SO asigna estos recursos al proceso en el momento de su creación o durante su ejecución. Cuando el proceso termina libera los recursos que había ocupado le son devueltos al SO. El sistema operativo se encarga de las siguientes actividades relacionadas con la gestión de procesos: • Crear y eliminar procesos. • Suspender y reanudar procesos. • Asignar tiempo de CPU a los procesos. • Proveer mecanismos para la sincronización de procesos. • Proveer mecanismos para la comunicación entre procesos. • Proveer mecanismos para la gestión de interbloqueos. La gestión de procesos que realice el sistema operativo va a depender de si se quiere proporcionar monoprogramación o multiprogramación. Programa 1

P1

Inactivo

P1

Programa 2

Inactivo

P1

P2

Inactivo

P2

Inactivo

Actividad del procesador

P2

Tiempo

Programa 1 Programa 2 P1

P2

P1

Actividad del procesador

Figura 1.

P2

P1

P2

Tiempo

Esquema de ejecución monoprogramada vs. multiprogramada.

En un sistema monoprogramado los procesos (instancias de programas) se van atendiendo por orden de llegada, de modo que, tal y como se describe en la primera gráfica de la figura 1, si un usuario quiere ejecutar los programas P1 y P2, el sistema ejecutará completamente el programa P1 y hasta que no haya terminado no empezará con el siguiente. Pero un proceso durante su ejecución no está usando la CPU constantemente. A veces tiene que esperar por algún motivo (por ejemplo E/S) y mientras la CPU permanece inactiva (figura 1: ciclos sombreados). En un sistema multiprogramado, en vez de esperar, se cede la CPU a otro proceso, de este modo, si hay trabajos por ejecutar, la CPU nuca estará inactiva. La segunda gráfica de la figura 1 describe como se van

intercalando las ejecuciones de los programas P1 y P2. Los programas no son conscientes de que se ejecutan discontinuamente en el tiempo. Como se observa, se pueden lograr ganancias significativas de rendimiento. En el ejemplo de la figura se ilustra una situación ideal en la que se consigue un 100% de utilización del procesador con sólo dos programas activos. Estos resultados no se alcanzan en situaciones reales aunque se mejora bastante el rendimiento del sistema. El número de programas activamente en competencia por los recursos de un sistema informático multiprogramado se denomina grado de multiprogramación. En principio, mayores grados de multiprogramación deberían producir mayor utilización de recursos. Como se ha visto, si el sistema es monoprogramado la gestión de procesos es muy simple con respecto a la gestión de un sistema operativo multiprogramado. Una de las tareas que tiene que realizar un sistema operativo para proporcionar multiprogramación es mantener una estructura de datos para guardar información sobre cada uno de los procesos que se ejecutan concurrentemente en el sistema. Esta información es necesaria para que la multiprogramación se realice correctamente. Por ejemplo, cuando el sistema operativo decide ceder la CPU a un nuevo proceso guarda en esta estructura de datos la dirección de memoria de la siguiente instrucción del proceso que se estuviese ejecutando actualmente. De esta forma, cuando el sistema operativo reanude su ejecución sabe en qué punto fue interrumpido. Otra de las tareas a realizar por el sistema operativo es la planificación de procesos, es decir, decidir cuándo y a qué proceso de los están esperando hay que ceder la CPU. Para ello se ejecuta un programa del sistema operativo llamado planificador. El criterio seguido por el planificador para tomar una decisión varía de un sistema operativo a otro, pero los más importantes son: 1) intentar utilizar más eficientemente los recursos del ordenador y 2) repartir equitativamente la ocupación de la CPU entre todos los programas que existen en el sistema. Si el sistema operativo sólo utiliza el primer criterio será un sistema simplemente multiprogramado, si utiliza ambos criterios será un sistema de tiempo compartido. El tiempo compartido es una variante de la multiprogramación en la gestión de la CPU. 3.2. Gestión de la memoria principal Otra de las funciones del sistema operativo es la de gestionar la memoria principal del ordenador. Para ejecutar un programa es necesario cargarlo a memoria principal lo que la convierte en un recurso esencial para el funcionamiento de un computador. La gestión de memoria de un sistema operativo monoprogramado es sencilla, ya que en la memoria principal sólo es compartida por los programas del SO y por el único programa en ejecución. En los sistemas de multiprogramación es posible tener varios programas a la vez en memoria principal que se van ejecutando concurrentemente. El sistema operativo debe mantener una estructura de datos donde almacena la información sobre qué zona de la memoria ocupa cada proceso, así como de las zonas de la memoria libres. Cuando reciba una solicitud de creación de un proceso debe buscar una zona libre de la memoria (si hay), almacenar su código en ella y registrarla como ocupada. De igual forma, cuando un proceso finaliza hay que anotar que la zona de memoria que ocupaba queda como libre. 3.2.1. La memoria virtual Para que un programa se pueda ejecutar debe estar cargado (residir) en la memoria principal. Por lo tanto, el tamaño máximo del código máquina de un programa no debería exceder del tamaño de la memoria principal (realmente de algo menos, pues siempre hay una parte de la memoria ocupada por el sistema operativo). A partir de 1961 muchos sistemas operativos comenzaron a utilizar una técnica de gestión de la memoria llamada memoria virtual. Esta técnica permite que el usuario pueda crear programas cuyo código máquina exceda del tamaño de la memoria principal. Para ello el sistema operativo mantiene en la memoria principal sólo parte del código de un programa,

concretamente siempre mantiene por lo menos la parte del código que se está ejecutando actualmente, el resto permanece en la memoria secundaria. Cuando se necesita una parte del código que está en la memoria secundaria se transfiere a la memoria principal. Estas transferencias las realiza el sistema operativo de forma transparente al programador, es decir, el programador escribe programas igual que siempre, sólo que el tamaño de estos programas puede ser mayor que el tamaño de la memoria principal gracias a la gestión realizada por el sistema operativo. Para proporcionar memoria virtual se requiere un hardware especial. 3.3. Gestión de la entrada/salida (E/S) Los ordenadores disponen de muchos periféricos, o dispositivos de E/S, como impresoras, teclados, monitores, discos, ratones, etc. Estos periféricos hacen posible que los programas se comuniquen con los usuarios. Es misión del sistema operativo gestionar directamente los periféricos, ofreciendo al programador unos servicios para su utilización mucho más sencillos que los que ofrecen éstos a nivel hardware. A nivel físico los periféricos son muy distintos, las instrucciones máquina que hay que suministrar a una impresora para que escriba una línea difieren notablemente de las que hay que darle a un scanner para que digitalice una imagen. Sin embargo, el SO permite trabajar al programador de forma similar con distintos periféricos. Este hecho se conoce como E/S independiente del dispositivo y permite que un programa que, por ejemplo, manda sus salidas a una impresora, pueda mandarlas a la pantalla realizando unos cambios mínimos en su código. En general, el sistema operativo ofrece como mínimo los siguientes servicios para realizar operaciones de E/S: apertura de un periférico, operaciones de lectura o escritura y cierre de un periférico. 3.4. Gestión de ficheros Una vez que un programa termina su código y sus datos son eliminados de la memoria principal. Si queremos que ciertos datos perduren es necesario guardarlos en memoria secundaria (CD, pendrive, disco duro,...). Cada uno de estos dispositivos tiene sus propias características y su forma de organizar la información. Para facilitar el trabajo al usuario el SO establece el concepto de fichero (o archivo). Un fichero es una representación lógica de almacenamiento de datos. Esta representación es uniforme e independiente del tipo de dispositivo físico donde se vayan a guardar los datos. Un fichero es un objeto virtual, es decir, no existe como tal en un disco. El sistema operativo aporta un conjunto de servicios para manipular los ficheros, algunos de los más comunes permiten realizar tareas como: abrir un fichero, escribir en un fichero, leer de un fichero, borrar un fichero, cerrar un fichero. El sistema operativo también ofrece el concepto de directorio. Un directorio sirve para estructurar los ficheros almacenados en un disco, de forma que se puedan guardar ficheros relacionados lógicamente (por ejemplo porque todos son necesarios para ejecutar un programa) en un mismo directorio. Existe un directorio origen por disco, llamado directorio raíz. Un directorio puede contener a su vez directorios, lo que conduce una estructura de árbol. El sistema operativo ofrece servicios para trabajar con directorios, estos servicios permiten, por ejemplo, crear y eliminar directorios, o consultar los ficheros almacenados en ellos.

4. ALGUNOS SISTEMAS OPERATIVOS En el inicio de la informática cada fabricante tenía sus propios sistemas operativos que no eran compatibles con los de otros, incluso dentro de un mismo fabricante podían coexistir varios. Estos se conocen como sistemas propietarios. La tendencia actual es hacia los llamados sistemas abiertos,

esto es, sistemas operativos que trabajan sobre una gran variedad de máquinas con independencia del fabricante del equipo. A continuación se ofrece una revisión de los sistemas operativos más difundidos. 4.1. MS-DOS MS-DOS son las siglas de MicroSoft Disk Operating System (Sistema operativo de disco de Microsoft). Fue un sistema operativo adaptado por Microsoft para el ordenador IBM PC, aunque se popularizó rápidamente siendo el más usado a nivel personal. Fue desarrollado en el año 1979 por Tim Paterson que trabajaba en Seatle Computer Products, y adquirido por Microsoft Corporation. El MS-DOS es un sistema operativo: • Monousuario y monotarea por lo tanto sólo puede trabajar un usuario ejecutando un solo programa al mismo tiempo. • Con una interfaz en línea de comandos, es decir, que el usuario solicita las órdenes (copiar un fichero, cambiar de directorio, etc.) mediante el teclado. Estas órdenes son ejecutadas por un programa que inicia el SO llamado intérprete de comandos.

Fig. 1 Intérpretes de comandos de MS-DOS 4.2. WINDOWS Los sistemas operativos nos ofrecen una serie de servicios que se pueden solicitar desde el código de los programas que ejecutamos, a través del intérprete de órdenes (como el MS-DOS) o del GUI (Graphics User Interface, Interfaz Gráfico de Usuario). En la interfaz gráfica las distintas órdenes se representan mediante iconos y ventanas. El usuario sólo tiene que seleccionar con el ratón el icono para solicitar la acción correspondiente. En 1985 Microsoft publicó la primera versión de Windows, una interfaz gráfica de usuario (GUI) para su propio sistema operativo (MS-DOS). A partir del Windows XP los sistemas operativos de la familia Windows son SO por sí solos que no necesitan MS-DOS para funcionar. Estos sistemas tienen un entorno de trabajo multitarea. Como se comentó en el apartado 3.1 la multitarea es una característica que permite ejecutar más de una aplicación al mismo tiempo. El elemento fundamental de la interfaz de Windows es la ventana. Una ventana es un marco rectangular que maneja y ejecuta una aplicación. Las partes más importantes de una ventana, mostradas en la siguiente figura, son: 1. Barra de menús: aquí se encuentran los menús disponibles en ese momento para esa aplicación. Un menú muestra un conjunto de acciones que puede ejecutar un programa. 2. Barra de título: situada en la parte superior de todas las ventanas. Lleva el nombre de la aplicación con la que se está trabajando en ese momento.

3. Botón para minimizar: si se pulsa, la ventana se minimiza, desapareciendo del primer plano de la pantalla y apareciendo su nombre en la barra de tareas. 4. Botón para maximizar: si se pulsa, se amplía la ventana al tamaño de la pantalla. 5. Botón de cierre: si se pulsa, se cierra la ventana. 6. Barras de desplazamiento: cuando el tamaño de la ventana es menor que el tamaño que ocupa la información que ha de mostrarse en ella, las barras de desplazamiento nos permiten navegar por dicha información. 7. Borde de la ventana: es el marco exterior de la ventana que permite cambiar el tamaño de la misma. (3) (4) (5) (2) (1)

(6)

(7)

4.3. UNIX Fue diseñado en los laboratorios BELL de la empresa AT&T, para su empleo en ordenadores marca Digital. Dadas sus características pronto se difundió ampliamente en ambientes universitarios, por lo que hasta hace poco tiempo se ha considerado como un sistema operativo orientado a ambientes de investigación y no en aplicaciones de gestión. Actualmente está muy difundido en todo tipo de equipos aunque se ha perdido la estandarización habiendo muchas versiones diferentes poco compatibles entre si. Otra versión es el Solaris de la empresa SUN. Una ventaja sobre otros sistemas operativos es que este sistema es multiusuario, por lo que un equipo admite gran cantidad de terminales trabajando simultáneamente, además de la robustez y seguridad. 4.4. LINUX Linux es básicamente un sistema operativo compatible con UNIX, que opera principalmente bajo equipos compatibles con el estándar del mercado. Su principal ventaja es que su costo es prácticamente nulo. Fue escrito por Linus Torvalds como un sistema operativo abierto y estándar, siendo desarrollado posteriormente por muchos programadores, de forma independiente. El código fuente, gestores de dispositivos y utilidades están disponibles gratuitamente. Actualmente supone cierta competencia para Windows, no sólo por ser gratis y disponer de los códigos fuente, sino por superioridad y más seguridad.

Fig. 2 Aspecto de un SO de tipo UNIX con el entorno de escritorio GNOME1.

5. INFORMES PROPUESTOS •

• • • • • • • • • • • •

1

Historia de los Sistemas Operativos Tanenbaum: Bibliografía, vida, obra y milagros. Windows Vista: Ventajas de la última versión de Windows. Linux: Características básicas. Linux: Distintas distribuciones que existen. Guadalinex: Versión de Linux que promociona la Junta de Andalucía. Gestión de procesos en UNIX Gestión de procesos en Windows Gestión de la memoria principal en UNIX Gestión de la memoria principal en Windows Diseño del sistema de ficheros en UNIX Sistemas operativos en tiempo real Sistemas operativos distribuidos

Un entorno de escritorio (Desktop Environment) es un conjunto de software que proporcione al usuario de un ordenador una interfaz cómoda y fácil de utilizar. Existen distintos entornos de escritorio para SO UNIX y Linux (Gnome, Java Desktop System, KDE, etc.)