Sistemas operativos Dolors Royo Vallés P01/79008/00052 FUOC • P01/79008/00052 Índice Introducción............................................................................................... 5 Objetivos ...................................................................................................... 6 1. Definición de sistema operativo ...................................................... 7 2. Visión histórica..................................................................................... 9 2.1. Los primeros sistemas computadores (la primera generación) ......... 9 2.2. La segunda generación ...................................................................... 10 2.3. La tercera generación......................................................................... 12 2.4. De la cuarta generación hasta ahora ................................................. 15 2.5. Tabla resumen ................................................................................... 16 3. Los servicios que ofrece el sistema operativo ............................... 17 3.1. Las llamadas al sistema ...................................................................... 17 3.2. El intérprete de comandos................................................................. 17 Resumen....................................................................................................... 18 Actividades.................................................................................................. 19 Glosario ........................................................................................................ 19 Bibliografía................................................................................................. 20 Sistemas operativos FUOC • P01/79008/00052 5 Sistemas operativos Introducción Un sistema computador está formado por los siguientes elementos: • El hardware, que se refiere a la máquina física. • El software, que se refiere al conjunto de programas que se ejecutan y que permiten sacar provecho de las prestaciones que ofrece el sistema. Sin software, el computador es prácticamente un objeto sin ninguna utilidad. El software permite almacenar información, procesarla y recuperarla. En general, también permite realizar una serie de actividades muy diversas que justifican la inversión económica en el sistema computador. Actualmente, un sistema computador es un sistema complejo que consta de uno o más procesadores, memoria, reloj, terminales, discos, impresoras, módems, etc. Los dispositivos que contiene son de varios tipos* y tienen un funcionamiento muy variado**. Además, en general hay más de un usuario que * Magnético, mecánico, láser, etc. ** Compartición, control de errores, operaciones necesarias para utilizar el dispositivo, etc. utiliza a la vez el sistema. Así, si un usuario quiere utilizar el sistema de forma eficiente y con cierta protección de su información respecto al resto de usuarios, difícilmente lo podrá conseguir sin ningún tipo de ayuda. Es evidente que tiene que haber alguna forma de conseguir que los usuarios puedan acceder al sistema sin tener en cuenta la complejidad del hardware. El problema se ha resuelto poniendo por encima del hardware una capa de software para gestionar las distintas partes del sistema computador de forma eficiente y, a la vez, presentar al usuario una máquina virtual mucho más sencilla de comprender y utilizar. Esta capa de software es el llamado software de sistema, cuya parte más importante es el sistema operativo (SO)*. En este módulo didáctico nos centramos en la descripción de sistemas monoprocesadores y no tenemos en cuenta en ningún momento los sistemas multiprocesadores. * Utilizaremos las siglas SO como abreviatura de sistema operativo. FUOC • P01/79008/00052 6 Objetivos Los objetivos que el estudiante podrá alcanzar son los siguientes: 1. Tener una visión lo más clara posible de lo que es un sistema operativo. A causa de la complejidad del concepto, formulamos la definición a partir de la descripción de las funciones que cumple el sistema operativo dentro del sistema computador, y a partir del proceso evolutivo que han experimentado los sistemas operativos a lo largo de la historia, desde los primeros computadores hasta nuestros días. 2. Comprender la visión externa del sistema operativo: desde el punto de vista del usuario que utiliza el sistema para consultar, modificar, crear, destruir y almacenar información, y desde el punto de vista del usuario como programador. Sistemas operativos FUOC • P01/79008/00052 7 Sistemas operativos 1. Definición de sistema operativo En la figura siguiente se muestra un esquema general del sistema computador: Figura 1 La capa inferior corresponde al hardware del computador. Por encima de ésta encontramos el sistema operativo. Es muy difícil dar una definición exacta y precisa del término sistema operativo; generalmente se define a partir de las funciones que desarrolla. Básicamente son las dos funciones que presentamos a continuación: 1) Gestión eficiente de los recursos del sistema El SO controla el acceso eficiente a los recursos del computador: la memoria principal, el tiempo de la unidad central del proceso (UCP) y los dispositivos. Es decir, el SO se encarga principalmente de trabajos de protección y de utilización eficiente del sistema. En general, en un sistema computador tenemos muchos programas que se ejecutan al mismo tiempo. Son programas que pueden pertenecer a uno o a varios usuarios, los cuales compiten por los diferentes recursos del sistema. El sistema operativo reparte el tiempo de UCP entre los diferentes programas y consigue una ejecución concurrente, protege el acceso a la memoria* y coordina el acceso a los dispositivos compartidos (discos, memoria) y a lo no compartidos (impresora). 2) Presentación a los usuarios de una máquina virtual mucho más sencilla de utilizar El sistema operativo proporciona un entorno de trabajo al usuario y a los programas de aplicación que permite utilizar el computador (ejecutar programas) * El SO protege el acceso a memoria entre diferentes usuarios y entre usuarios y el mismo SO. FUOC • P01/79008/00052 8 de forma más fácil e intuitiva. Desde este punto de vista, el sistema operativo proporciona al usuario una máquina virtual mucho más fácil de entender y utilizar por el hecho de que oculta la complejidad del hardware. Lectura de un fichero Por ejemplo, si no existiera el sistema operativo en el momento de leer un fichero, el usuario necesitaría comprender y ocuparse de los detalles técnicos del disco: poner en funcionamiento el motor, recalibrar los cabezales, posicionarlos (la pista, la cara, el sector), leer y apagar el motor. El sistema operativo nos permite hacer esta lectura de datos de un fichero con una operación mucho más sencilla e intuitiva: con la operación read (nombre_fichero, pos, reg) se indica que se quiere leer del fichero nombre_fichero, el registro reg, que está en la posición pos. Por encima del núcleo del sistema operativo tenemos el software de sistema, que consta del intérprete de comandos (shell), compiladores, editores y, en general, programas que facilitan la comunicación entre el sistema operativo y el usuario. Finalmente, por encima del software de sistema tenemos el software de aplicación. Una parte de este software la utiliza el usuario sobre todo para resolver problemas específicos. En este nivel encontramos hojas de cálculo, procesadores de texto, juegos de vídeo, etc. Sistemas operativos 9 FUOC • P01/79008/00052 Sistemas operativos 2. Visión histórica Para entender bien qué es un sistema operativo y para qué sirve, es importante analizar con detalle su evolución. A continuación explicamos cómo han ido evolucionando los sistemas operativos desde las versiones más primitivas (monitores residentes y sistemas operativos por lotes), pasando por los sistemas operativos multiprogramados y con tiempo compartido, hasta los sistemas operativos distribuidos y los sistemas operativos en red. No es fácil separar el desarrollo de la arquitectura de los computadores de la evolución de los sistemas operativos, esencialmente porque los sistemas operativos han evolucionado en función de los cambios tecnológicos intentando sacar el mayor provecho de las nuevas tecnologías. Éstas, a sus vez, han dado soluciones a muchos problemas que han ido surgiendo en los sistemas operativos. 2.1. Los primeros sistemas computadores (la primera generación) Al principio sólo estaba el hardware del computador. La tecnología utilizada en la construcción de los primeros computadores eran las válvulas de vacío, que obligaban a fabricar unos aparatos monstruosamente grandes. El ENIAC,… … Electronic Numerical Integrator and Computer (computador e integrador numérico electrónico), pesaba aproximadamente 30 toneladas, ocupaba 150 m2 y tenía una potencia de 150 kilovatios. Estos primeros computadores se utilizaban para efectuar cálculos matemáticos en cuestiones militares. Por ejemplo, para calcular trayectorias balísticas y tablas de senos y cosenos. La velocidad de operación se medía en milisegundos. Los dispositivos que había eran cintas de papel y tarjetas perforadas. El programa se escribía en lenguaje máquina, se cargaba manualmente en la memoria y se ejecutaba. El resultado se almacenaba en cinta de papel o en tarjetas perforadas. Modelo de tarjeta perforada. 10 FUOC • P01/79008/00052 Sistemas operativos En esta primera época se consideraba que no había sistema operativo y que el usuario interaccionaba directamente con el computador. Evidentemente, la programación de la máquina era muy poco productiva tanto para el usuario como para el hardware. El proceso de introducción de programas, que era largo y complicado, hacía inviable la ejecución de programas medianos o grandes en este entorno. 2.2. La segunda generación La aparición del transistor en la década de 1950 permitió construir computadores mucho menores y mucho más fiables, de modo que ya se podían fabricar con la idea de venderlos. Eran máquinas muy caras y sólo estaban al alcance de grandes corporaciones, instituciones como el ejército, universidades y gobiernos. La velocidad de las operaciones se calculaba en microsegundos. Paralelamente, constatamos los siguientes sucesos: Primer transistor de puntas de contacto (1958). a) Aparecen nuevos dispositivos de entrada/salida: los lectores de tarjetas perforadas y las impresoras. Las tarjetas y las cintas perforadas… … se utilizaban para programar los computadores y para recibir los resultados de sus cálculos mediante máquinas lectoras-perforadoras de tarjetas. b) También se inventan nuevos dispositivos de almacenamiento: las unidades de disco y las cintas magnéticas. c) Se desarrolla el primer software, que incluye ensambladores, lenguajes de programación*, cargadores, montadores, librerías de funciones matemáticas y rutinas estándar de entrada/salida de los diferentes dispositivos que pueden utilizar los programas**. Con este nuevo entorno se mejora considerablemente el proceso de programación y ejecución de programas respecto de la etapa inicial. En esta etapa, el proceso tiene lugar siguiendo los pasos que exponemos a continuación: * Algol, Cobol, Fortran ** Impresoras, monitores y tarjetas perforadas. FUOC • P01/79008/00052 11 Sistemas operativos 1) Los programas se escriben en lenguajes ensambladores o de alto nivel; una vez creados se denominan código fuente. 2) Los programas se traducen de forma automática mediante los compiladores/traductores a lenguaje máquina: • Si hay errores de sintaxis se tiene que repetir el proceso desde el principio. • Si no hay errores sintácticos, el código objeto producido a partir del código fuente por el programa traductor/compilador se puede cargar en memoria y ejecutar. 3) Otro programa, el cargador, automatiza el proceso de cargar el programa en la memoria para ejecutarlo. 4) Después de transferir el control al programa cargado por medios manuales o automáticos, empieza la ejecución del programa. Una vez cargado en la memoria, el programa se puede reejecutar con diferentes datos, y los resultados se sacan por la impresora o en cinta de papel. Si se detectan errores en tiempo de ejecución, es posible determinar dónde se han producido haciendo un volcado de la memoria y de los registros del computador o bien utilizando el programa depurador. En este sistema, las rutinas de entrada/salida, junto con el programa cargador, se pueden considerar una primera versión muy rudimentaria del sistema operativo. Los traductores de lenguaje de alto nivel, los editores y los depuradores son programas del sistema que se incluyen en los diferentes servicios que ofrece el sistema operativo, pero generalmente se considera que no forman parte del mismo. Pese a todas estas mejoras, el modo de operación continuaba siendo poco eficaz a causa de las distintas operaciones manuales que convenía efectuar, que comportaban una utilización baja de los recursos del sistema. Puesto que el coste económico del sistema computador era elevado, no es extraño que se buscasen formas de aprovechar el tiempo perdido y aumentar la utilización de los recursos del sistema para eliminar los tiempos muertos generados por las operaciones manuales. El primer objetivo fue autorizar al máximo todas las operaciones mediante el uso de hardware. Sin embargo, pese a la automatización de estas operaciones y a la mejora de los dispositivos*, la velocidad de las operaciones de entrada/salida de datos continuaba siendo demasiado lenta en comparación con la velocidad del procesador y la de la memoria. Puesto que no era posible reducir el coste temporal de las operaciones de entrada/salida, se intentó al menos efectuarlas el mínimo número posible de veces. La idea era agrupar los trabajos de forma que las operaciones auxiliares sólo se hiciesen una vez por todos los trabajos del grupo. Este sistema se denomina sistema por lotes (sistema batch). * Utilización de cintas en lugar de tarjetas perforadas. FUOC • P01/79008/00052 12 Sistemas operativos Un ejemplo de su funcionamiento sería el siguiente: agrupando en un lote todos los programas escritos en lenguaje de alto nivel Fortran, sólo se tiene que cargar una vez el compilador de Fortran, y los trabajos que se realizan dentro del lote se pueden procesar uno detrás de otro con un secuenciamiento automático. Para que sea posible este secuenciamiento automático, se tiene que poder indicar al sistema operativo al menos cuándo empieza y cuándo finaliza un programa dentro del lote. En este punto, conviene introducir el concepto de lenguaje de control de trabajos (JCL)*. Con este lenguaje se podía indicar al sistema operativo el inicio y la finalización de un trabajo, dar órdenes de carga y ejecución y solicitar cier- * Las siglas JCL provienen de la abreviatura de la expresión inglesa Job Control Language. tos recursos del computador (tiempo de UCP, cantidad de memoria, etc.) Pese a esta automatización, la UCP continuaba parada durante mucho tiempo. El problema principal era la diferencia de velocidades entre la UCP y los dispositivos: las UCP en este período eran lentas, pero los lectores de tarjetas todavía lo eran más. Por tanto, la UCP estaba mucho tiempo parada esperando que finalizase una operación de entrada/salida. Para intentar reducir al máximo estas diferentes velocidades de trabajo, apareció el trabajo fuera de línea (off-line). Con este sistema se intentaban encabalgar las operaciones de entrada/salida con la ejecución de programas. Mientras los programas escritos en tarjetas se leían y se pasaban a cinta en una máquina, en otra máquina se podían ir ejecutando otros programas que ya se habían cargado anteriormente en otra unidad de cinta. Posteriormente se idearon otras técnicas de solapamiento como el almacenamiento en memoria intermedia (buffering), que consiste en encabalgar las operaciones de entrada/salida de un programa con las operaciones de cálculo del mismo programa. La aparición del disco proporcionó una nueva técnica de trabajo: la gestión de colas (spooling), que permitía encabalgar las operaciones de entrada/salida de diferentes trabajos mientras se ejecutaban otras operaciones. 2.3. La tercera generación La tercera generación de computadores surge a mediados de los años sesenta y tecnológicamente se basa en los circuitos integrados. Estas nuevas máquinas son mucho más pequeñas que las de la segunda generación, y también son mucho más rápidas. La velocidad de proceso se medía en nanosegundos. Circuito integrado. La serie IBM 360 El primer grupo de computadores con circuitos integrados fue el compuesto por los de la serie 360 de IBM. FUOC • P01/79008/00052 13 Otro aspecto muy importante de esta nueva generación es el hecho de que se introducen mecanismos nuevos: interrupciones, protección, búsqueda de una concurrencia máxima de operación, etc. Paralelamente, se desarrollaron el hardware y el software que dieron lugar a los siguientes elementos: • Periféricos más rápidos y efectivos. • Terminales remotos (con los que se puede acceder a bancos de datos, actualizar cuentas corrientes, etc.) • Softwares de base adaptados al usuario que se caracterizaban por la elaboración de lenguajes universales, pensados para que los pudiesen utilizar diferentes computadores con características de hardware muy diversas. Se estandarizaron los lenguajes de alto nivel ya existentes (Fortran, Algol, Cobol, PL/1) y aparecieron otros, como el Basic y el Pascal. Una de las técnicas más innovadoras de esta generación es la multiprogramación, que permite encabalgar la ejecución de varios programas. La ejecución de programas en computadores de segunda generación En los computadores de la segunda generación, la ejecución de los programas era totalmente secuencial. Cuando un programa se detenía para esperar la finalización de una operación de entrada/salida (de una unidad de cinta o de cualquier otro dispositivo), la unidad central de proceso (UCP) sencillamente se detenía y esperaba que la operación de entrada/salida acabase. En el caso de programas científicos, en los que domina el cálculo de operaciones en punto flotante (los cuales se efectúan en la UCP) y las operaciones de entrada/salida son poco frecuentes, este sistema de trabajo ya era lo bastante eficiente. Con la aparición de computadores de menor tamaño y más fiables gracias a las nuevas tecnologías y a la posibilidad de incrementar la producción de computadores, los costes de fabricación se redujeron. De esta forma nació un sector informático comercial muy importante. Los computadores se pusieron al alcance de empresas medianamente grandes y empezó el uso comercial de la informática. En el procesamiento de datos comerciales, el tiempo de espera a causa de operaciones de entrada/salida puede suponer el 90% del tiempo total de ejecución. Así pues, conviene introducir mejoras para conseguir reducir el tiempo de respuesta de estas operaciones. La solución será la introducción de la programación concurrente. Durante la ejecución de un programa, generalmente podemos distinguir entre fases de cálculo intensivo y fases en las que se efectúan operaciones de entrada/salida de forma intensiva. Esto se ilustra en la figura 2, donde las fases de cálculo intensivo se indican mediante rectángulos grises y las de entrada/salida, con rectángulos blancos. La ejecución secuencial de dos programas se muestra en el punto a. Para simplificarlo, supondremos que los programas tienen un comportamiento idéntico. Como se puede deducir de la figura 2, durante la ejecución secuencial de los dos programas se supone que o bien la UCP o bien los dispositivos están inactivos en algún momento, incluso cuando el flujo de trabajos que esperan para ser ejecuta- Sistemas operativos FUOC • P01/79008/00052 14 dos no está vacío. Una forma de solucionar estos problema es asignar cualquier otra tarea a la UCP o a los dispositivos de entrada/salida cuando, por algún motivo, están inactivos. Si es posible ejecutar los programas de forma concurrente, estos pueden proporcionar trabajo tanto a la UCP como a los dispositivos en cualquier instante durante la ejecución de los dos programas. En el punto b de la figura 2 se muestra un posible escenario de la ejecución concurrente de los dos programas. El procesador empieza ejecutando el primer proceso, el proceso A, y cuando éste lleva a cabo una operación de entrada/salida, el procesador, en lugar de quedarse inactivo, pasa a ejecutar el segundo proceso, el proceso B, que se supone que se encuentra en memoria esperando para ser ejecutado. Cuando este segundo proceso acaba o hace una operación de entrada/salida, el procesador ejecuta el primer proceso A. El proceso continúa alternando la ejecución de los dos procesos hasta que ambos finalizan. Figura 2 Como se puede observar en la figura 2, con la ejecución concurrente o multiprogramada se puede incrementar considerablemente el rendimiento del computador: el tiempo de ejecución de los dos programas se reduce de 10 unidades en la ejecución secuencial a 6 unidades en la ejecución concurrente, y la utilización del sistema en este segundo caso es de un cien por cien. El ejemplo, aunque muy representativo, no es real, ya que generalmente la distribución de las fases de cálculo y programación son más variables, de forma que no siempre se consigue que el procesador y los dispositivos estén activos. Para aumentar la utilización de los recursos del sistema computador, los sistemas multiprogramados permiten la ejecución concurrente de más de dos programas, de los cuales se dice que están compitiendo por los recursos del sistema. El número de programas que están activamente en competencia por los recursos del sistema determina el grado de multiprogramación. Sistemas operativos 15 FUOC • P01/79008/00052 La aparición de la multiprogramación permite desarrollar sistemas con múltiples usuarios conectados simultáneamente mediante terminales a un sistema computador. En este caso, el sistema multiprogramado puro no es muy eficiente, ya que, tal y como hemos explicado anteriormente, la UCP deja de ejecutar un programa y pasa a ejecutar otro que esté pendiente de ejecución siempre que el programa que se está ejecutando haga una operación de entrada/salida o bien cuando finaliza. A causa de este funcionamiento, el tiempo de respuesta que tiene un usuario que está conectado interactivamente puede ser considerablemente grande. Para solucionar este problema se propone un nuevo mecanismo llamado tiempo compartido, con el cual los diferentes programas que están compitiendo por los recursos del sistema, entre los cuales está la UCP, tienen asignada la UCP durante un periodo de tiempo limitado, llamado quantum. De esta forma, cuando un programa deja de ejecutarse, libera la UCP por alguno de los siguientes tres motivos: 1) Porque el programa finaliza. 2) Porque el programa realiza una operación de entrada/salida. 3) Porque ha pasado un cuanto de tiempo en ejecución. El quantum de tiempo es lo bastante pequeño como para que los programas de los diferentes usuarios que están conectados al sistema progresen concurrentemente y cada usuario tenga la impresión de que es el único que utiliza el sistema. 2.4. De la cuarta generación hasta ahora Con la aparición de la integración a gran escala (LSI/VLSI) se inicia la era de los computadores personales (1974), a los cuales se aplican todos los mecanismos desarrollados hasta el momento (tanto de hardware como de software). Seguramente, la aportación más importante de esta nueva generación son las redes de computadores (Internet e intranet). El interior del procesador 80486 de Intel Los microprocesadores actuales se fabrican con técnicas de integración a una escala muy grande (VLSI). Surgen los sistemas operativos en red y los distribuidos, que permiten utilizar recursos de máquinas remotas (discos, UCP, software, etc.) con diferentes niveles de abstracción. Sistemas operativos 16 FUOC • P01/79008/00052 Sistemas operativos También se introduce el concepto de sistema operativo en tiempo real referido a los sistemas que han procesado muchos datos, que generalmente se obtienen del exterior (sensores), en un tiempo limitado y en un periodo determinado. Es importante darse cuenta de que estos sistemas operativos se centran en conseguir un tiempo de respuesta efectivo, mientras que la utilización adecuada de recursos (gestión eficiente de la memoria) y la perspectiva del usuario quedan en un segun- Los sistemas operativos en tiempo real… … se utilizan en entornos industriales, en equipos de conmutación telefónica, en control de vuelo en aviones y en simulaciones en tiempo real. do plano. A partir de este momento y hasta nuestros días, los computadores se utilizan en cualquier ámbito: los usuarios en sus casas (computadores personales), las pequeñas y grandes empresas (software de gestión), las corporaciones, las universidades y los centros de investigación (supercomputadores y multicomputadores). En general, hay una explosión de recursos: nuevos dispositivos cada vez más avanzados (impresoras láser, módems, etc.) y UCP cada vez más rápidas (1.000 MHz), sistemas con más memoria (megabytes) y discos con más capacidad (gigabytes). Hay que señalar que según qué utilización se haga del sistema computador, interesa que el sistema operativo proporcione herramientas específicas a los usuarios que lo van a utilizar. Así pues, se tienen que conseguir los siguientes objetivos: • Los sistemas en red o los distribuidos tienen que desarrollar gestores de comunicación eficientes. • Los sistemas multiprogramados/multiusuario se tienen que centrar en conseguir tiempos de respuesta aceptables. • Interesa que los sistemas en tiempo real sean lo más sencillos posible para procesar datos del exterior a la mayor velocidad posible. 2.5. Tabla resumen En la siguiente tabla presentamos una recopilación de las características más destacadas de cada generación de computadores: Figura 3 Generación 1.ª 1925-1957 Tecnología Tipo de programación Velocidad de operación Válvulas de vacío Lenguaje binario o máquina Milisegundos 2.ª Transistores 1958-1964 Memoria de ferrita 3.ª 1964-1974 4.ª 1974- Circuitos integrados Sistemas con multiprogramación Cintas de papel Tarjetas perforadas Lectores de tarjetas Fortran, Cobol, Pascal Ensambladores/ montadores Dispositivos Microsegundos Impresoras Unidades de disco Nanosegundos Ámbito de uso Militar Grandes corporaciones Gobiernos Universidades Periféricos más rápidos y efectivos Empresas medianas Redes Doméstico LSI/VLSI Memoria de semiconductores o burbujas Interconexión con bases de memoria FUOC • P01/79008/00052 17 Sistemas operativos 3. Los servicios que ofrece el sistema operativo El sistema operativo ofrece una gran variedad de servicios. Los podemos agrupar en los dos bloques siguientes: 1) Las llamadas al sistema son los servicios más sencillos y permiten hacer peticiones directas al sistema operativo. Las llamadas al sistema son la visión que tiene un programador de los servicios que puede ofrecer el sistema operativo. En última instancia, los lenguajes de alto nivel hacen una llamada al sistema. 2) En un nivel más próximo el usuario, el software de sistema ofrece un programa, el llamado intérprete de comandos, gracias al cual el usuario puede dialogar con el sistema operativo sin necesidad de escribir ningún programa. 3.1. Las llamadas al sistema Las llamadas al sistema ofrecen las soluciones básicas para utilizar todos los recursos del sistema de una forma correcta y controlada. Aunque los diferentes sistemas operativos pueden ofrecer varias llamadas al sistema*, en general podemos encontrar en todos una semántica equivalente. * Desde el punto de vista sintáctico. Las llamadas al sistema se pueden clasificar en: gestión de procesos, señalización de procesos, gestión de dispositivos de entrada/salida, gestión directa de los recursos del sistema, gestión del sistema de archivos, protecciones y funciones de tiempo. 3.2. El intérprete de comandos El intérprete de comandos es un programa encargado de interpretar y de comunicar al SO lo que quiere hacer el usuario del sistema. Este programa reconoce un conjunto limitado de instrucciones o comandos que, básicamente, permiten al usuario acceder, modificar, crear y proteger la información. En general, los servicios que ofrece el intérprete de comandos están bastante relacionados con los grupos de llamadas a los sistemas que hemos descrito. FUOC • P01/79008/00052 18 Resumen Los sistemas operativos han ido evolucionando a lo largo de los últimos cincuenta años, orientados hacia dos objetivos principales: 1) Gestionar de forma eficiente los recursos del sistema entre los diferentes programas que se ejecutan. 2) Proporcionar un entorno que facilite el desarrollo y la ejecución de programas. Inicialmente se trabajaba con lenguaje máquina, pero la aparición de lenguajes de alto nivel, compiladores y cargadores ha facilitado el trabajo de programación. Por un lado, la evolución del hardware (dispositivos cada vez más rápidos) determina en cada momento los métodos de trabajo y las técnicas que se desarrollan. Inicialmente estaban los sistemas por lotes (batch) y las operaciones fuera de línea (off-line) que permitían encabalgar operaciones de entrada/salida con operaciones de cálculo. Con la multiprogramación, varios programas se cargan en memoria y la UCP hace una ejecución concurrente para conseguir estar siempre ocupada. Finalmente, tenemos el tiempo compartido, que hace que varios usuarios puedan utilizar un computador interactivamente al mismo tiempo. Otros sistemas operativos incluyen los conceptos en red, distribución de recursos y tiempo real. Finalmente, se han introducido los servicios que suele ofrecer un sistema operativo: en un nivel bajo están las llamadas al sistema, y en un nivel más alto tenemos la interpretación de comandos. Sistemas operativos FUOC • P01/79008/00052 19 Actividades 1. ¿Cuáles son las dos funciones principales de un sistema operativo? 2. ¿Qué es la multiprogramación? ¿Cuál es su ventaja principal? 3. ¿El concepto de multiprogramación tiene sentido en sistemas operativos en tiempo real? ¿Por qué? ¿Y el concepto de tiempo compartido? ¿Por qué? 4. En un sistema monousuario, ¿un usuario puede proteger sus datos de alguna manera? ¿Existe el concepto de protección en sistemas monousuario? ¿A qué nivel? Glosario almacenamiento en memoria intermedia Almacenamiento que permite solapar el procesamiento de un trabajo con sus propios trabajos de entrada/salida. sin.: buffering batch Ver sistema por lotes. buffering Ver almacenamiento en memoria intermedia. gestión de colas Gestión que permite solapar el proceso de un trabajo con la entrada/salida de otro. sin.: spooling sistema por lotes Forma de utilizar un computador donde la ejecución de los trabajos no es interactiva. La ejecución de los trabajos suele ser secuencial. sin.: batch sistema monousuario Sistema en el cual el tipo de usuario no está definido y, por tanto, los datos que tiene el sistema son accesibles para cualquiera que pueda conectarse. sistema multiprogramado Sistema que permite que diferentes procesos compartan el procesador. Cuando un proceso deja de ejecutarse (al finalizar o al realizar una petición de entrada/salida) el procesador pasa a ejecutar otro proceso. sistema multiusuario Sistema que distingue entre diferentes usuarios (grupos de usuarios) y permite controlar el acceso a la información por parte de los diferentes grupos de usuarios que se puedan definir. sistema operativo distribuido Sistema conectado en red que permite la compartición de recursos. Un usuario no tiene por qué saber dónde se ejecutan sus procesos o qué recurso concreto de la red está utilizando. El sistema gestiona todos los recursos de forma trasparente para el usuario. sistema operativo en tiempo real Sistema operativo que tiene que ser capaz de reaccionar de forma rápida y segura ante acontecimientos externos en tiempo real. sistema operativo en red Sistema que está conectado mediante una red de interconexión. El usuario sabe en todo momento en qué máquina de la red se ejecutan sus procesos. software de sistema Software (programas) que permite utilizar y gestionar el computador. Comprende el núcleo (sistema operativo), los editores, el intérprete de comandos, los compiladores, etc. spooling Ver gestión de colas. tiempo compartido Sistema en el que varios procesos pueden compartir el procesador. En este caso, un proceso tiene asignado el procesador por un tiempo máximo (un quantum) si no acaba o realiza una petición de entrada/salida. Sistemas operativos FUOC • P01/79008/00052 20 trabajo fuera de línea (off-line) Un dispositivo está fuera de línea si está desconectado del computador y, por tanto, no puede realizar ningún tipo de transferencia directa. Un trabajo fuera de línea es el que se efectúa en un dispositivo fuera de línea. Bibliografía Bibliografía básica Milenkovic, M. (1994). Sistemas operativos, conceptos y diseño (2.ª ed., trad. de A. Bautista). Madrid: McGraw-Hill. Silberschatz, A.; Peterson, J. (1989). Sistemas operativos: conceptos fundamentales (2.ª ed., trad. de E. Morales). Barcelona: Reverté. Tanembaum, A. (1991). Sistemas operativos: diseño e implementación (trad. de F. Gómez). México: Prentice-Hall. Bibliografía complementaria Taniguchi-Dietrich, P. (1985). La historia de los ordenadores. Barcelona: Eunibar (col. informática básica). Sistemas operativos