














Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Sistemas operativos, Profesor: , Carrera: Enginyeria Tècnica de Telecomunicació, especialitat en Telemàtica, Universidad: UOC
Tipo: Apuntes
1 / 22
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!















En oferta
Módulo 1
Un sistema operativo está formado por los siguientes elementos:
Sin software , el computador es prácticamente un objeto sin ninguna utilidad. El software permite almacenar información, procesarla y recuperarla. En gene- ral, también permite realizar una serie de actividades muy diversas que justifi- can 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 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 for- ma 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 compren- der y de utilizar. Esta capa de software es el llamado software de sistema , cuya par- te más importante es el sistema operativo (SO)*.
En este módulo didáctico nos centramos en la descripción de sistemas mono- procesadores y no tenemos en cuenta en ningún momento los sistemas mul- tiprocesadores.
*** Magnético, mecánico, láser, etc. ** Compartición, control de errores,operaciones necesarias para utilizar el dispositivo, etc.**
abreviatura de sistema operativo.^ *** Utilizaremos las siglas SO como**
En la figura siguiente se muestra un esquema general del sistema computador:
La capa inferior corresponde al hardware del computador. Por encima de ésta en- contramos 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
En general, en un sistema computador tenemos muchos programas que se ejecu- tan 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 CPU 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 los no compartidos (impresora).
2) Presentación a los usuarios de una máquina virtual mucho más senci- lla de utilizar
El SO controla el acceso eficiente a los recursos del computador: la memoria principal, el tiempo de la unidad central del proceso (CPU) y los dispositivos. Es decir, el SO se encarga principalmente de trabajos de protección y de utilización eficiente del sistema.
El sistema operativo proporciona un entorno de trabajo al usuario y a los pro- gramas de aplicación que permite utilizar el computador (ejecutar programas)
a memoria entre diferentes^ *** El SO protege el acceso usuarios y entre usuariosy el mismo SO.**
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 sec- tor), 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 del sistema, que consta del intérprete de órdenes ( shell ), compiladores, editores y, en gene- ral, programas que facilitan la comunicación entre el sistema operativo y el usuario.
Finalmente, por encima del software de sistema tenemos el software de apli- cación. Una parte de este software la utiliza el usuario sobre todo para resol- ver problemas específicos. En este nivel encontramos hojas de cálculo, procesadores de texto, juegos de vídeo, etc.
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.
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 en este nivel 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 media- nos o grandes en este entorno.
2.2. La segunda generación
La aparición del transistor en la década de 1950 permitió construir computa- dores mucho más pequeños y 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 las grandes corporaciones, instituciones como el ejército, las universidades y el gobierno. La velocidad de las operaciones se calculaba en microsegundos.
a) Aparecen nuevos dispositivos de entrada/salida: los lectores de tarjetas perforadas y las impresoras
b) También se inventan nuevos dispositivos de almacenamiento: las unida- des de disco y las cintas magnéticas.
c) Se desarrolla el primer software , que incluye ensambladores, lenguajes de comunicació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 programa- ció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:
Las tarjetas y las cintas perforadas… … se utilizaban para progra- mar los computadores y para recibir los resultados de sus cál- culos mediante máquinas lec- toras-perforadoras de tarjetas.
*** Algol, Cobol, Fortran. ** Impresoras, monitores y tarjetasperforadas.**
Primer transistor de puntasde contacto (1958)
1) Los programas se escriben en lenguajes ensamblador o de alto nivel; una vez creados se denominan código fuente.
2) Los programas se traducen de forma automática mediante los compilado- res/traductores a lenguaje máquina:
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 diferen- tes datos, y los resultados se consiguen 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 com- putador 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 pro- gramas 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 efi- caz 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 automatizar 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 ve- locidad del procesador y la de la memoria.
Puesto que no era posible reducir el coste temporal de las operaciones de en- trada/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 de- nomina sistema por lotes (sistema batch ).
*** Utilización de cintas en lugarde tarjetas perforadas.**
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:
Una de las técnicas más innovadoras de esta generación es la multiprograma- ción , que permite solapar 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 dis- positivo), la unidad central de proceso (CPU) sencillamente se detenía y también esperaba que la operación de entrada/salida acabase. En el caso de programas cien- tíficos, en los que domina el cálculo de operaciones en coma flotante (los cuales se efectúan en la CPU) 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 nace un sector informático comercial muy importante. Los computadores se pu- sieron al alcance de empresas medianamente grandes y empieza el uso co- mercial 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 fa- ses de cálculo intensivo y fases en las que se efectúan operaciones de entrada/sa- lida de forma intensiva. Esto se ilustra en la figura de la página siguiente, donde las fases de cálculo intensivo se indican mediante rectángulos grises y las de en- trada/salida, con rectángulos blancos. La ejecución secuencial de dos programas se muestra en el punto a. Para simplificarlo, supondremos que los programas tie- nen un comportamiento idéntico.
Como se puede deducir de la figura de la página siguiente, durante la ejecu- ción secuencial de los dos programas se supone que o bien la CPU o bien los dispositivos están inactivos en algún momento, incluso cuando el flujo de tra- bajos que esperan para ser ejecutados no está vacío. Una forma de solucionar este problema es asignar cualquier otra tarea a la CPU o a los dispositivos de entrada/salida cuando, por algún motivo, están inactivos. Si es posible ejecu- tar los programas de forma concurrente, éstos pueden proporcionar trabajo tanto a la CPU como a los dispositivos en cualquier instante durante la ejecu- ción de los dos programas.
En el punto b de la figura se muestra un posible escenario de la ejecución concurrente de los dos programas. El procesador empieza ejecutando el pri- mer proceso, el proceso A, y cuando éste lleva a cabo una operación de en- trada/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 realiza 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.
Como podemos ver en el esquema de la figura anterior, con la ejecución con- currente 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 ejecu- ció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 ge- neralmente la distribución de las fases de cálculo y programación son más
Surgen los sistemas operativos en red y los distribuidos , que permiten utili- zar recursos de máquinas remotas (discos, CPU, software , etc.) con diferentes niveles de abstracción.
También se introduce el concepto de sistema operativo en tiempo real refe- rido a los sistemas que deben procesar muchos datos, que generalmente se obtienen del exterior (sensores), en un tiempo limitado y en un periodo de- terminado. Es importante darse cuenta de que estos sistemas operativos se centran en conseguir un tiempo de respuesta efectivo, mientras que la utili- zación adecuada de recursos (gestión eficiente de la memoria) y la perspectiva del usuario quedan en un segundo 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 uni- versidades y los centros de investigación (supercomputadores y multicompu- tadores). En general, hay una explosión de recursos: nuevos dispositivos cada vez más avanzados (impresoras láser, módems, etc.) y CPU cada vez más rápi- das (más de 1 GHz), sistemas con más memorias (megabytes) y discos con más capacidad (gigabytes).
Hay que señalar que según qué utilización se haga del sistema computador, in- teresa 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:
El interior del procesador 80486 de Intel Los microprocesadores actua- les se fabrican con técnicas de integración a una escala muy grande (VLSI).
Los sistemas operativos en tiempo real… … se utilizan en entornos industriales, en equipos de conmutación telefónica, y en simulaciones en tiempo real.
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:
Generación Tecnología (^) de programaciónTipo de operaciónVelocidad Dispositivos Ámbito de uso
1.ª 1925-1957 Válvulas de vacío^
Lenguaje binario o máquina Milisegundos^
Cintas de papel Tarjetas perforadas Militar
2.ª 1958-
Transistores Memoria de ferrita
Fortran, Cobol, Pascal Ensambladores/montadores Microsegundos
Lectores de tarjetas Impresoras Unidades de disco
Grandes corporaciones Gobiernos Universidades 3.ª 1964-1974 Circuitos integrados^
Sistemas con multiprogramación Nanosegundos^
Periféricos más rápidos y efectivos Empresas medianas
4.ª 1974-
LSI/VLSI Memoria de semiconductores o burbujas
Interconexión con bases de memoria Redes^ Doméstico
Los sistemas operativos han ido evolucionando a lo largo de los últimos cin- cuenta 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 lengua- jes de alto nivel, compiladores y cargadores ha facilitado el trabajo de pro- gramación.
Por un lado, la evolución del hardware (dispositivos cada vez más rápidos) de- termina en cada momento los métodos de trabajo y las técnicas que se desa- rrollan. Inicialmente estaban los sistemas por lotes ( batch ) y las operaciones fuera de línea ( off-line ) que permitían solapar operaciones de entrada/salida con operaciones de cálculo. Con la multiprogramación , varios programas se cargan en memoria y la CPU lleva a cabo una ejecución concurrente para conseguir estar siempre ocupada. Finalmente, tenemos el tiempo comparti- do , que hace que varios usuarios puedan utilizar un computador interactiva- mente al mismo tiempo.
Otros sistemas operativos incluyen los conceptos en red, distribución de re- cursos y tiempo real.
Finalmente, se han introducido los servicios que suele ofrecer un sistema ope- rativo: en un nivel bajo están las llamadas al sistema , y en un nivel más alto tenemos el intérprete de órdenes.