Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 1
1.- Introducción
Los Sistemas Operativos son una materia fundamental en el estudio de la Informática. Todo usuario de un ordenador pasará una buena parte de su tiempo dialogando con la máquina a través de comandos, utilidades o software de un determinado Sistema Operativo.
La evolución continua de los ordenadores supuso, ya desde las primeras generaciones de los mismos, un aumento de complejidad en la lógica de su funcionamiento. Con el fin de conseguir un uso más racional y un mejor aprovechamiento de la capacidad de los ordenadores, se desarrollaron una serie de programas, intermediarios entre hombre y máquina, que constituyen el software funcional o sistema operativo del ordenador.
Un sistema operativo es un programa que actúa como una interfaz entre el usuario de un ordenador y el hardware del mismo, ofreciendo el entorno necesario para que el usuario pueda ejecutar programas. Por tanto el sistema operativo se carga en memoria al arrancar el ordenador y se mantiene ejecutándose hasta que la máquina se apaga.
Usuario 1 Usuario 2 Usuario n
Compilador Base de Datos . . . editor de texto
Programas de Aplicación
Sistema Operativo
Hardware |
El ordenador posee una serie de recursos que han de ser utilizados racionalmente para obtener el mayor rendimiento posible. El S.O. es el administrador de estos recursos.
Los recursos hardware y software que gestiona el S.O. son:
∙ el procesador
∙ la memoria
∙ los dispositivos de E/S
∙ la información (sistema de ficheros)
Su principal objetivo es facilitar el uso del sistema informático. Como objetivos secundarios destacaremos el empleo de hardware del ordenador de forma eficiente y la capacidad de evolución del propio sistema (actualización del hardware, nuevos servicios, correcciones…). (Cómodo, eficiente y con capacidad de evolución)
Para lograr estos objetivos, el sistema operativo debe realizar las tareas o servicios siguientes:
▪ Controlar la ejecución de los programas para prevenirerrores.
▪ Controlar las operaciones de E/S.
▪ Gestionar los sistemas de ficheros.
▪ Detectar errores.
▪ Asignar los recursos del sistema: tiempo de CPU, dispositivos deE/S, memoria, etc. ▪ Resolver los conflictos que se pueden dar entre varios procesos cuando acceden a los recursos.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 2
2.- Sistemas operativos
El software se clasifica en 2 categorías diferentes:
∙ Sistemas Operativos.
∙ Software de uso general o Software de Aplicación.
El sistema operativo es el gestor y organizador de todas las actividades que realiza el ordenador. Marca las pautas según las cuales se intercambia información entre la memoria central y la secundaria, y determina las operaciones elementales que puede realizar el procesador. El sistema operativo debe ser cargado en la memoria principal antes que ninguna otra información.
Un sistema operativo es en sí mismo un programa de ordenador. Sin embargo, es un programa muy especial, quizá el más complejo e importante en un ordenador. El sistema operativo despierta al ordenador 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 el ordenador y sirve de plataforma a partir de la cual se ejecutan los programas de aplicación. Cuando se enciende un ordenador, lo primero que hace ésta es llevar a cabo un autodiagnóstico de encendido durante el cual, el ordenador identifica su memoria, sus discos, su teclado, su sistema de vídeo y cualquier otro dispositivo conectado a ella. Lo siguiente que hace el ordenador es buscar un sistema operativo para arrancar.
Una vez que el ordenador ha puesto en marcha su sistema operativo, mantiene al menos parte de éste en su memoria en todo momento. Mientras el ordenador esté encendido, el sistema operativo tiene 3 tareas principales:
1. 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 el ordenador.
∙ Interfaz de línea de comando: tú introduces palabras y símbolos desde el teclado del ordenador. Ejemplo: el sistema operativo MS-DOS.
∙ Interfaz gráfica de usuario (GUI): seleccionas las acciones mediante el uso de un ratón para pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús. Ejemplo: los sistemas Windows de Microsoft.
2. Administrar los dispositivos de hardware en el ordenador. Cuando se ejecutan los programas, estos necesitan utilizar la memoria, el monitor, las unidades de disco, los puertos de Entrada/Salida (impresoras, módems, etc.). El sistema operativo sirve de intermediario entre los programas y el hardware, es decir, proporciona servicios a dichos programas. Teóricamente, un programador debería de conocer las características del hardware en el que se está ejecutando su programa para así poder utilizar correctamente dicho hardware; pero gracias al sistema operativo, el programador puede abstraerse de las peculiaridades de la máquina ya que es el sistema operativo quien hace el “trabajo sucio” de conocer los entresijos de lamisma.
3. Administrar y mantener los sistemas de archivo de disco. Los sistemas operativos agrupan la información dentro de compartimentos 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 sistema operativo mantiene una lista de los archivos en un disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 3
3.- Evolución de los sistemas operativos
Los objetivos fundamentales de los sistemas operativos respecto a eficiencia y facilidad de uso, no son siempre compatibles. En un principio se primó la eficiencia, mientras que actualmente se atribuye más importancia al uso. A continuación haremos un breve recorrido a través de la historia de los sistemas operativos para comprender las razones de esta evolución.
Primeros sistemas
Los primeros sistemas informáticos (hablamos de los años cincuenta) carecían de sistema operativo. Simplemente eran grandes máquinas que se controlaban desde una consola. El programador era al mismo tiempo el operador del sistema. Él mismo escribía un programa, lo cargaba en memoria, indicaba la dirección de comienzo, transfería el control al programa y, a medida que éste se ejecutaba, seguía su ejecución mediante una monitorización de las señales que iba dando el hardware.
Estos sistemas utilizaban un método de “reserva de solicitud” para asignar el tiempo de máquina. Si uno quería utilizar el ordenador, iba a la hoja de solicitud, miraba cual era el siguiente período libre que le convenía y lo solicitaba. En el caso de que al programador se le acabara el tiempo de máquina concedido sin haber terminado el trabajo, este debía suspender el trabajo en el estado en que se encontrara en ese instante, recopilar todo el material obtenido y estudiarlo hasta que tuviera otra vez la oportunidad de disponer de ordenador. Por el contrario, si el programador acababa antes del final del tiempo asignado, el ordenador quedaba inactivo hasta el siguiente período de tiempo concedido a otro programador
Los dispositivos de entrada comunes eran lectores de tarjetas y unidades de cinta. Los dispositivos de salida comunes eran impresoras de líneas, unidades de cinta y perforadoras de tarjetas.
Podemos deducir que en esos primeros sistemas el aprovechamiento de los recursos del ordenador era escasísimo, perdiéndose tiempo de CPU, de ahí los esfuerzos para mejorar su rendimiento.
El objetivo principal era la eliminación del tiempo de inactividad del ordenador (CPU frecuentemente ociosa) para lo que se introdujo la secuencia automática de trabajos.
Secuencia automática de trabajos
Analizando el trabajo que desempeñaba un operador, se observó que era bastante mecánico y que podía ser automatizado con lo que surgió lo que se denomina secuencia automática de trabajos. Se diseñó un pequeño programa que transfería automáticamente el control de un trabajo al siguiente. Este programa se denominó Monitor Residente, que puede ser considerado como el primer sistema operativo y que, como su nombre indica, permanecía constantemente en memoria.
Estos programas de control deben estar en memoria principal, por lo que es necesario un programa de carga inicial (IPL), existente en la ROM, que se ejecuta automáticamente al arrancar el ordenador.
Se utilizaban tarjetas de control que marcaban el principio y fin de cada programa y eran interpretadas por el JCL (lenguaje de control de trabajo). También eran necesarios programas para controlar los dispositivos y gestionar posibles errores.
Inicialmente el control del ordenador residía en el monitor residente, quien lo transfería al primer trabajo. Cuando éste acababa, el monitor residente volvía a tener el control dando paso al segundo de los trabajos, y así sucesivamente.
Incluso con la secuencia automática de trabajos, la CPU permanece a menudo inactiva. El problema reside en que la velocidad de los dispositivos mecánicos de E/S es muy inferior a la velocidad de los dispositivos electrónicos: mientras tiene lugar una operación de E/S, la CPU permanece “ociosa”, esperando que la E/S se complete y mientras la CPU ejecuta, los dispositivos de E/S están inactivos.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 4
Operación Off-Line
Con el tiempo los dispositivos de E/S fueron más rápidos pero a la vez aumentaba la velocidad de la CPU con lo que el problema no quedó resuelto. La CPU continuaba siendo mucho más rápida que los dispositivos de E/S.
Una solución a esa diferencia de velocidad consistía en sustituir las lectoras de tarjetas (dispositivos de entrada) e impresoras de salida (dispositivos de salida) por unidades de cinta magnética.
En lugar de hacer que la CPU leyera directamente las tarjetas, estas se copiaban primero en una cinta magnética. Esta cinta se pasaba al ordenador en bloque para la ejecución de los programas, grabándose los resultados en una nueva cinta. Por último, la cinta de resultados se volcaba sobre una impresora. Las acciones de copiado de tarjetas a cinta y de cinta a impresora se hacían sin intervención del ordenador, ya que eran operaciones muy lentas, y mientras el ordenador trataba otros trabajos. Es lo que se conoce como operación off-line.
La principal ventaja de la operación off-line consistía en que el ordenador principal ya no quedaba limitado por la velocidad de las lectoras de tarjetas y las impresoras sino por la velocidad de las unidades de cinta, mucho más rápidas.
A continuación se muestra un esquema de un sistema on-line (a) y de un sistema off-line (b):
(a)
(b)
CPU
Lectora de tarjetas Impresora
CPU
Lectora de tarjetas Unidades de cinta Unidades de cinta Impresora
La desventaja del sistema off-line era que un usuario tenía que esperar a que se llenara una cinta con otros trabajos hasta que pudiera ser procesada la misma, además de todos los procesos de rebobinar la cinta, desmontarla, llevarla a mano a la unidad central y montarla sobre una unidad libre.
Buffering
Esta técnica trata de mantener ocupados tanto a la CPU como a los dispositivos de E/S. Una forma de mejorar el tiempo que se pierde en los procesos de carga de la cinta en el ordenador (que es un proceso relativamente lento), es utilizar una memoria intermedia, denominada buffer, donde la cinta va grabando datos hasta que se llena, volcándose estos en la memoria de una vez y, mientras el procesador realiza
operaciones con los datos recibidos, en paralelo se vuelve a cargar el buffer. Para la salida el proceso es análogo: los datos de salida se descargan en otro buffer hasta que el dispositivo de salida pueda procesarlos. De esta manera, la CPU y el dispositivo están ocupados. A esta forma de trabajo se le denomina buffering.
La misión de las técnicas de buffering es mantener tanto el procesador como los dispositivos de E/S ocupados el mayor tiempo posible. Esto se logra solapando la E/S de un trabajo con el procesamiento del mismo.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 5
Buffering
Terminal buffers CPU buffer Impresora
El buffering es complicado. Uno de los problemas reside en detectar tan pronto como sea posible que un dispositivo de E/S haya acabado una operación. La operación de E/S que le siga únicamente podrá iniciarse cuando la previa haya finalizado. Este problema se resuelve mediante las interrupciones: tan pronto como un dispositivo de E/S acaba una operación, interrumpe a la CPU para avisarlo. Entonces, ésta detiene lo que está haciendo e inmediatamente transfiere el control a la rutina de servicio de las interrupciones. La rutina de servicio de la interrupción comprueba si el buffer no está lleno (para un dispositivo de entrada) o si no esta vacío (para un dispositivo de salida) e inicia la siguiente petición de E/S. De esta manera, los dispositivos de E/S y la CPU pueden trabajar a pleno rendimiento.
Spooling
Con la aparición del disco magnético como dispositivo de almacenamiento masivo de información con acceso directo, desapareció el problema que representaban las cintas magnéticas ya que éstas tienen un acceso secuencial con lo que una lectora de tarjetas no podía escribir sobre un extremo de la cinta mientras la CPU leía el otro. En cambio, los discos, pueden ser leídos y escritos en cualquier punto de su superficie. Con este sistema, las tarjetas se leen directamente desde la lectora de tarjetas sobre eldisco
La técnica del spooling (Simultaneous Peripheral Operation On-line) utiliza el disco como un buffer muy grande, para leer tan por delante como sea posible de los dispositivos de entrada y para almacenar los ficheros de salida hasta que los dispositivos de salida sean capaces de aceptarlos. Cuando se ejecuta un trabajo, se lee desde el disco; cuando el trabajo solicita una operación de salida, ésta se escribe en un buffer y luego se escribe en el disco.
Cuando se crean varias ordenes de E/S simultáneamente, se utiliza un fichero spool en el que se almacenan todos los trabajos en colas de espera. Los ficheros spool disponen de un sistema de gestión que permite reorganizar esta cola según la prioridad del trabajo.
Disco
Spooling
E/S
CPU
Lectora de tarjetas Impresora
La ventaja del spooling sobre el buffering es que el spooling solapa la E/S de un trabajo con la computación de otros. De esta manera, puede mantener tanto a la CPU como a los dispositivos de E/S trabajando con un rendimiento mucho mayor. Incluso en un sistema sencillo, el spooling puede estar leyendo la entrada de un trabajo mientras imprime la salida de otro diferente. El buffering únicamente puede simultanear la E/S de un trabajo con su propia computación.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 6
Un sistema de SPOOL se podría ver como una cola de archivos en espera de que llegue su turno para ser impresos, grabados en una cinta, etc. La gestión de la cola (la planificación de trabajos) puede ser del tipo primero en llegar-primero en salir (FIFO), en función de la prioridad de cada trabajo, en función de la longitud, etc.
Multiprogramación
La multiprogramación es un modo de trabajo en el que se pueden ejecutar varios programas simultáneamente con el fin de aprovechar al máximo los recursos del ordenador, incluso si éste sólo posee una única CPU. Surgió de la imposibilidad, para los sistemas o modos de trabajo anteriores, de que con un solo trabajo se pudiese tener ocupados al procesador y a los dispositivos de E/S durante todo el tiempo.
La multiprogramación es un método para aumentar el empleo de la CPU disponiendo en todo momento de algo que la CPU pueda ejecutar.
Podemos clasificar los trabajos en dos tipos:
∙ Trabajos limitados por proceso: aquellos que consumen la mayor parte de su tiempo en la CPU y poco en operaciones de E/S.
∙ Trabajos limitados por operaciones de entrada/salida: dedican la mayor parte de su tiempo en operaciones de E/S, haciendo poco uso del procesador, manteniéndolo inactivo durante grandes períodos de tiempo.
Proceso limitado por CPU
Proceso limitado por E/S
CPU Espera terminación E/S
El segundo tipo de procesos fue el que dio lugar a la multiprogramación al aprovechar la inactividad del procesador durante la ejecución de una operación de entrada/salida de un proceso, para que otro que lo necesite utilice dicho procesador.
Desde el punto de vista de cada proceso, cada uno está siendo atendido por un procesador aunque en realidad todos están atendidos por el mismo, que conmuta de uno a otro constantemente.
Desde el punto de vista del usuario, los procesos se están ejecutando en paralelo sin tener en cuenta que en cada momento sólo se atiende a uno de ellos.
Con el esquema planteado es fácil comprender que van a surgir diversos tipos de problemas:
∙ El acceso al procesador deberá seguir algún tipo de reglas para que todos los posibles trabajos que lleguen puedan ser ejecutados.
∙ La memoria ha de ser compartida por todos los trabajos, ya que necesitarán residir en ella al mismo tiempo para poder ser ejecutados, por ello se hace necesario algún tipo de administración de la misma.
∙ Varios trabajos pueden necesitar la utilización de algún recurso al mismo tiempo, dando lugar a problemas de concurrencia.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 7
Surge el concepto de planificar el procesador, puesto que hay que ir asignando tiempo de CPU a los diferentes procesos que están en memoria principal.
Tiempo compartido
El siguiente paso en el desarrollo de los sistemas operativos fue la introducción de la multiprogramación interactiva.
Apareció a la vez que los terminales conversacionales o interactivos (formados únicamente por un teclado y una pantalla, sin CPU, ni memoria), llamados también “terminales tontos” que carecían de sistema operativo, en los que el usuario ya no tenía que suministrar todos los datos al principio de la ejecución del proceso, sino que podía ir dándolos a medida que el proceso los iba necesitando, de igual modo que iba recibiendo respuesta inmediata. Esos terminales estaban conectados directamente al ordenador central de tal manera que se podía estar trabajando simultáneamente desde dichos terminales puesto que el ordenador iba conmutando entre ellos.
usuario 1
usuario 2
…
usuario n
El tiempo compartido es una extensión lógica de la multiprogramación. Se ejecutan múltiples trabajos mientras la CPU se conmuta entre ellos, pero la conmutación es tan frecuente que los usuarios pueden interactuar con cada programa durante su ejecución.
Un sistema operativo en tiempo compartido utiliza la planificación de la CPU y la multiprogramación para dotar a cada usuario de una pequeña parte del ordenador compartido. Como cada acción o comando en un sistema de tiempo compartido suele ser breve, basta con un tiempo de CPU corto para cada usuario. Dado que el sistema cambia rápidamente de un usuario al siguiente, estos tienen la impresión de que cada uno de ellos dispone de su propio ordenador, cuando realmente un solo ordenador es compartido entre muchos usuarios.
Tiempo real
El tiempo real es otra modalidad de los sistemas operativos multiprogramados, en que se necesita un tiempo de respuesta pequeño ante cualquier petición. Si el sistema no respeta las restricciones de tiempo en las que las operaciones deben entregar su resultado se dice que ha fallado.
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos.
Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos. Su objetivo es proporcionar rápidos tiempos de respuesta.
Muchos S.O. de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, telecomunicaciones, control industrial.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 8
Proceso distribuido
El siguiente paso en la evolución de los sistemas operativos fue el proceso distribuido, que consiste en la conexión de ordenadores entre sí a través de una gran variedad de dispositivos, existiendo varias modalidades entre las que podemos citar la conexión de varios ordenadores compartiendo un mismo almacenamiento principal o aquellos que se conectan a una misma red nacional o internacional para el intercambio de información.
Multiproceso
Uno de los problemas actuales en el proceso de datos ha sido la aparición de aplicaciones que manejan tal cantidad de información, que un solo procesador no es capaz de procesarla en el tiempo requerido.
El sistema estándar es monoprocesador o monoproceso, es decir, sólo tiene una CPU. Un sistema multiprocesador o multiproceso tiene varios procesadores que pueden trabajar conjuntamente compartiendo memoria y periféricos.
En este tipo de ordenadores, el sistema operativo es complejo debido a que tiene que administrar varios procesadores de tal manera que la carga y reparto de los trabajos debe equilibrar y optimizar al máximo el proceso global.
Puede trabajar de diferentes formas:
∙ Asimétrica: el ordenador irá saturando de trabajo a sus procesadores poco a poco. Con la primera tarea utilizará el primer procesador, si entra otra tarea se utilizará lo que reste de potencia del 1º procesador y lo necesario del segundo. Los demás procesadores se irán utilizando de forma sucesiva. De esta forma pueden quedar procesadores inactivos.
∙ Simétrica: utilizan la totalidad de los procesadores para realizar todas las tareas. La saturación del procesador sólo se producirá cuando el sistema esté funcionando al 100%. Cada programa utiliza parte de todos los procesadores. Si llega otro programa, se utilizarán también todos los procesadores y así hasta su total utilización. De esta forma trabajarán todos pero a más bajo rendimiento.
En las siguientes figuras vemos las diferencias existentes en la ejecución de cuatro procesos A, B, C y D en tres sistemas con diferentes métodos de funcionamiento: monoprogramación, multiprogramación y multiproceso.
A |
B |
C |
D |
1 procesador
Monoprogramación Multiprogramación
Procesos Procesos
Tiempo de proceso Tiempo de proceso
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 9
Lleva el mismo tiempo en ambos sistemas (sólo hay un procesador que, en realidad, únicamente puede hacer una cosa a la vez).
A B C D
4 procesadores
Multiproceso
Procesos
Tiempo de proceso
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 10
4.- Más clasificaciones de sistemas operativos
Sistemas operativos monotarea y multitarea (multiprogramado)
Un sistema operativo monotarea es aquel que sólo es capaz de ejecutar una tarea a la vez. Es el caso del sistema DOS de Microsoft. De esta forma, los recursos del sistema estarán dedicados a esa tarea hasta que finalice su ejecución. (Esto no impide que el sistema pueda ser multiusuario. Varios usuarios pueden intentar ejecutar sus programas en el mismo ordenador, pero lo harán de forma sucesiva).
Por otra parte, como hemos visto anteriormente, un sistema es multitarea (multiprogramado) cuando permite realizar más de un trabajo de forma simultánea. Para ello la CPU comparte el tiempo de uso del procesador entre los diferentes programas que se van a ejecutar. Así, todos los procesos tardarán individualmente más tiempo en ejecutarse, pero el tiempo medio de espera será mucho menor que en monotarea.
Sistemas operativos monousuario y multiusuario
Que un sistema operativo sea monousuario significa que sólo un usuario puede hacer uso del ordenador, es decir, que todos los recursos del ordenador están asignados a un único usuario (un único terminal es el que puede acceder al sistema). El ejemplo más común de sistema monousuario es el sistema operativo MS-DOS.
En cambio, el término multiusuario hace referencia a sistemas que soportan más de un usuario. Este término es bastante amplio y abarca varias posibilidades. Por un lado, están los sistemas que permiten que varios usuarios estén utilizando de manera simultánea todos los recursos del ordenador (CPU, memoria, etc.). Éste es el caso de los sistemas UNIX y Linux, por ejemplo, e incluso Windows XP. Por otro lado, el término multiusuario también contempla a aquellos sistemas que permiten que más de un usuario utilice todos los recursos del ordenador aunque no de manera simultánea. Éste es el caso de los sistemas UNIX, Linux, Windows NT, Windows 2000, Windows XP y Windows 2003, en los que se definen (por parte del administrador del sistema) diferentes “perfiles de usuario”, es decir, que en el sistema existen usuarios definidos cada uno con un nombre y una contraseña necesarios para que puedan acceder al sistema con el fin de tener acceso a ciertas tareas y datos, y con la posibilidad de que cada uno maneje sus propios datos sin afectar a los de los demás.
Sistemas Operativos para redes
Son sistemas operativos diseñados con el objetivo de permitir que varios equipos accedan a diversos recursos (archivos, programas, impresoras, etc.) que se encuentran en uno o más equipos servidores.
Los usuarios de una red pueden compartir archivos o comunicarse entre sí con facilidad. En consecuencia, a menudo se puede reducir el costo de los programas y equipos, se pueden adquirir versiones para red de los programas más usados y compartir dispositivos costosos, como pueden ser impresoras, unidades de almacenamiento, scanner, etc.
Cada vez más va en aumento la necesidad de utilizar redes, así como también van disminuyendo los costos del hardware necesario. Instalando placas de red, cables y software de red, es posible configurar un sistema de comunicaciones sofisticado y productivo.
Hoy en día, los sistemas operativos que hay en el mercado soportan el funcionamiento en red.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 11
5- Esquema de un Sistema Operativo
Todo el mundo sabe que en el mundo PC, los ordenadores son casi todos ellos diferentes en sus componentes (placas madre, tarjetas de vídeo, controladoras de disco, lector de CD-ROM, tarjeta de sonido, etc.), aunque al final nos permiten trabajar con los mismos sistemas operativos. Básicamente, las partes o subsistemas que componen un sistema operativo son las siguientes:
∙ Interfaz de usuario: Es el entorno que nos ofrece el sistema operativo para poder trabajar con él. En el caso del DOS, es un programa (el “command.com”) el que nos permite movernos por las unidades de disco, manejar las disqueteras, realizar operaciones de copia o borrado de ficheros, cargar otros programas, etc. Se le suele llamar intérprete de comandos.
∙ Núcleo: Es el corazón del sistema operativo y “descansa” directamente sobre el hardware. Tiene dos vertientes: la que se «comunica» con las aplicaciones que utilizamos los usuarios y que ofrece servicios como acceso a puertos de comunicaciones y a la impresora, lectura y escritura de disco, asignación de memoria…; y la que es complementaria, es decir, la que «habla» con el hardware de la máquina: RAM, periféricos, procesador, etc.
∙ Sistema de ficheros: Es un subsistema que organiza la información en los discos duros, disqueteras y en general en cualquier dispositivo de almacenamiento masivo. En el caso del DOS el sistema de ficheros se denomina FAT. Windows utilizan el sistema de ficheros llamado NTFS. Los sistemas basados en Linux suelen utilizar el sistema de ficheros denominado ext3 y ext4.
∙ Controladores de dispositivos (Entrada/Salida): Son los conocidos drivers, y existe uno para cada tarjeta o dispositivo externo al procesador que tengamos en nuestra máquina. Todos los PC’s cuentan con drivers para la tarjeta gráfica, la controladora IDE, SCSI, el disco duro, el lector de CD-ROM, la tarjeta de sonido, etc. Estos drivers normalmente son suministrados por el fabricante de las tarjetas y, en el caso del sistema operativo DOS, son ficheros conextensión
«sys» que se cargan en nuestro fichero «config.sys». Los drivers son software.
Para entender mejor estos conceptos, veamos un caso práctico. La simple lectura de un archivo puede servirnos de ejemplo. La aplicación (un procesador de textos, por ejemplo) que desea leer el archivo debe pedir al núcleo del sistema operativo dicho servicio (lectura de archivo). Este, a su vez, le solicita al sistema de ficheros dicho archivo y, dependiendo de cómo lo haya guardado (sector, pista, etc.), ordenará al driver del disco duro que realice dicha operación. Después será la controladora del disco la que ordenará al disco para que se sitúe en la pista, sector y cilindro donde que se guarda el archivo, y que lo lea y pase los datos.
Hecho esto, la controladora devolverá dichos datos al driver, éste al sistema de ficheros que organizará la información con estructura de archivo y, por último, el núcleo dará dicho archivo a la aplicación que se lo había solicitado.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 12
6.- Gestión de procesos
6.1.- Concepto de proceso o tarea
Es la unidad más pequeña de trabajo individualmente planificable por un sistema operativo. Un proceso o tarea es un programa en ejecución. Mientras un programa se considera un ente pasivo (conjunto de instrucciones destinadas a obtener unos resultados), un proceso es un ente activo, que sufre frecuentes cambios de estado y necesita diferentes recursos del sistema a lo largo del tiempo.
Aparece en los sistemas operativos con multiprogramación o multitarea, donde varios programas activos, se ejecutan concurrentemente, compitiendo por los recursos del sistema (procesador, memoria, archivos de datos, dispositivos de E/S, etc.).
6.2.- Estados de un proceso
El sistema operativo considera un proceso como una progresión de estados desde que comienza su ejecución hasta su finalización. Un proceso puede encontrarse en uno de los siguientes estados:
Turno de CPU
En Ejecución
Fin de ejecución
Operación de E/S o espera de un evento
MEMORIA
Listo o Preparado Bloqueado o suspendido
Fin de Operación E/S o evento
Liberar Memoria Principal DISCO
Memoria disponibleIntercambiado
∙ LISTO o PREPARADO: Se encuentra en la memoria principal en espera de ser atendido por la CPU.
∙ EN EJECUCIÓN: El proceso está siendo ejecutado en la CPU. Hay que tener en cuenta que una CPU sólo puede atender a un proceso en cada instante.
Abandona este estado cuando ocurre alguna de las siguientes situaciones:
❑ Finaliza su ejecución.
❑ Finaliza el quantum de tiempo asignado de CPU (en un modelo de multiprogramación que utilice este criterio de abandono de CPU) pasando al estado preparado.
❑ Inicia una operación de E/S o bien ocurre un evento externo que lo suspenda, pasando a estado bloqueado o suspendido.
∙ BLOQUEADO o SUSPENDIDO: Espera a que se cumpla alguna condición: una operación de E/S (bloqueado) o está esperando algún evento que le permita continuar su ejecución (ejemplo: una señal de sincronización de otro proceso).
Abandona este estado cuando ocurre alguna de las siguientes situaciones:
❑ Finaliza su ejecución.
❑ Finaliza la operación de E/S.
❑ Ocurre el evento que lo tenía suspendido.
Si el proceso continúa su ejecución pasará al estado preparado.
∙ INTERCAMBIADO: El proceso que se encuentra en estado preparado es llevado temporalmente a disco porque el sistema necesita liberar espacio en memoria. Este proceso, parcialmente ejecutado, permanece en disco hasta que haya memoria suficiente para devolverlo al estado preparado.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 13
También puede considerarse el estado INACTIVO, cuando un proceso no está ejecutándose, bien porque haya finalizado su ejecución, o bien porque no ha comenzado.
6.3.- Bloque de control de procesos (PCB)
El sistema operativo mantiene toda la información que necesita de un proceso en una estructura de datos llamada PCB. Cuando se inicia un proceso, se crea un PCB para él que se mantiene hasta que finalice su ejecución. Un PCB contiene la siguiente información:
∙ Identificador del proceso (Ejemplo: PID en el sistema Linux)
∙ Estado hardware: valor de los registros del procesador (necesita ser salvado cuando abandona el estado de ejecución).
∙ Estado en el que se encuentra el proceso (Ejemplo: listo, suspendido, etc.).
∙ Prioridad del proceso respecto a los demás (para aplicar algoritmos de prioridad). ∙ Recursos solicitados, recursos asignados, etc.
∙ Información de gestión de memoria (localización de las tablas, etc.).
∙ Información de gestión de archivos (archivos abiertos, derechos de acceso).
∙ Etc.
El sistema operativo utiliza esta estructura para gestionar el estado global del sistema, creando varias colas con los PCB según el estado en el que se encuentre cada proceso. (El estado global del sistema en un instante determinado, es el conjunto de recursos y procesos existentes con sus estados correspondientes.)
Una cola es una estructura formada por un conjunto de elementos del mismo tipo (en este caso PCB). Los elementos forman una cola según el orden de llegada, y el primer elemento en ser atendido es el primero en haber llegado a la cola. Por eso también se denomina Lista FIFO (First-In First-Out).
1º | 2º | 3º | 4º | 5º |
SALIDAElemento cabeza Elemento finalENTRADA
En Memoria Principal se gestionan las listas del sistema:
∙ Una cola para cada uno de los estados de un proceso: en ellas se encuentran los PCB de todos los procesos reconocidos por el sistema. Cada proceso pertenece a una única lista. El planificador es el encargado de gestionar el paso de los procesos de una lista a otra.
∙ Colas de dispositivos: puede existir una cola para cada dispositivo de E/S. Cada cola recoge los PCB de los procesos que están esperando por un dispositivo para realizar una operación de E/S.
Cola de procesos listos
CPU
Colas de dispositivos (procesos bloqueados)
Impresora
Modem
∙ ∙
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 14
6.4.- Planificadores
Se denomina planificador al software del S.O. encargado de asignar los recursos del sistema entre los procesos que los solicitan. (Gestiona el paso de los procesos de una lista a otra.)
Un sistema operativo contiene módulos de planificación que controlan la ejecución de los procesos. Su objetivo es optimizar el rendimiento del sistema, es decir, el uso eficiente de los recursos (CPU y demás dispositivos), aumentar la productividad (maximizar el número de tareas ejecutadas en unidad de tiempo), disminuir el tiempo de respuesta de los procesos (tiempo que espera el usuario desde que lanza la ejecución de una tarea hasta recibe una respuesta), etc.
Para planificar los procesos, el sistema utilizar 3 tipos de planificadores que hacen uso de las colas de PCB:
MEMORIA PRINCIPAL
Planificador a largo plazo
Cola de procesos listos Planificador a corto plazo
DISCO CPU
Planificador a medio plazo
Cola de procesos suspendidos
∙ PLANIFICADOR A LARGO PLAZO o PLANIFICADOR DE TRABAJOS: se encarga de seleccionar qué trabajo (tarea) de los que se encuentra en disco esperando comenzar su ejecución (en estado inactivo), pasa a la cola de procesos listos de memoria principal.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 15
Es por tanto el encargado de controlar el grado de multiprogramación (número de procesos que están en memoria principal). Se ejecuta cuando haya memoria suficiente para aumentar el número de procesos en memoria. Es importante que seleccione los trabajos de forma que combine los trabajos orientados a CPU (muchas operaciones de CPU y pocas con dispositivos de E/S), con los trabajos orientados a E/S (pocas operaciones de CPU y muchas con dispositivos de E/S), para disminuir los tiempos muertos en CPU y dispositivos de E/S.
∙ PLANIFICADOR A MEDIO PLAZO o PLANIFICADOR DE SWAPPING: una operación de swapping consiste en llevar a disco un proceso que está en memoria reduciendo el grado de multiprogramación, para liberar memoria o bien para realizar una mejor combinación de procesos orientados a CPU y orientados a E/S.
Este planificador selecciona trabajos que se encuentran parcialmente ejecutados en la cola de procesos listos o en la cola de suspendidos, para llevarlos a disco, pasando a estado intercambiado. Posteriormente, volverán a memoria para continuar su ejecución.
∙ PLANIFICADOR A CORTO PLAZO o PLANIFICADOR DE CPU: selecciona, de entre los procesos listos, cuál pasa a ser atendido por la CPU. Se ejecuta cada vez que un proceso abandona laCPU.
6.5.- Algoritmos de planificación
6.6.- Concurrencia y sincronización de procesos
Los sistemas multiproceso o multitarea, que permiten la ejecución concurrente de varios procesos (se ejecutan al mismo tiempo y hacen uso de los mismos recursos). Estos procesos deben sincronizarse cuando van a utilizar recursos compartidos, como estructuras de datos comunes o dispositivos físicos. Para que dos actividades se consideren concurrentes es necesario que tengan alguna relación entre ellas.
Ejemplos:
– dos personas que viven juntas:
Persona A | Persona B |
09:50 Llega a casa | |
10:00 Mira la nevera. No hay leche | |
10:10 Va a la tienda | 10:10 Llega a casa |
10:20 Llega a la tienda | 10:20 Mira la nevera. No hay leche |
10:30 Deja la tienda | 10:30 Va a la tienda |
10:40 Llega a casa y guarda la leche | 10:40 Llega a la tienda |
10:50 Deja la tienda | |
11:00 Llega a casa y ¿¿?? ¡¡ya hay leche!! |
– Un proceso escribe un fichero y otro que lee los datos en él; el funcionamiento de uno interfiere en el otro.
– Un proceso que permite la retirada de fondos de una cuenta bancaria, actualiza una variable compartida que es el saldo. Otro proceso accede a dicha variable para consultar el saldo actual de lacuenta.
Cuando varios procesos comparten un recurso, es necesario que exista sincronización entre ellos. Debe existir una forma de prohibir que más de un proceso lea o escriba datos compartidos a la vez.
Se denomina sección crítica de un programa al conjunto de instrucciones que realizan operaciones que pueden dar lugar a interferencias con otros procesos.
Para garantizar la integridad del sistema se aplica la técnica de exclusión mutua: cuando un proceso ejecuta su sección crítica, ningún otro proceso puede estar en ella. Hay que tener en cuenta que un proceso no puede “dormirse” en su sección crítica porque estará bloqueando la sección crítica de otros procesos.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 16
INTERBLOQUEO
La mayoría de los recursos sólo pueden utilizarse por un proceso a la vez. No obstante, la apropiación de un recurso para uso exclusivo puede provocar bloqueos.
Por ejemplo, dos procesos que desean imprimir un archivo situado en una cinta al mismo tiempo. El proceso A solicita en uso exclusivo la impresora y el proceso B solicita el uso exclusivo de la cinta. El proceso A no puede imprimir porque no tiene acceso a la cinta, pero no suelta la impresora. El proceso B no imprime porque no tiene acceso a la impresora, pero no suelta la cinta. Se dice que los procesos se han bloqueado y permanecerán así para siempre si el S.O. no se encarga de solucionarlo.
El bloqueo de un conjunto de procesos se produce cuando un proceso espera un evento que sólo puede ser provocado por otro proceso del conjunto.
Motivos: exclusión mutua y no apropiación
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 17
7.- Gestión de memoria
7.1.- Introducción
Para poder ejecutar un programa en un ordenador es necesario que, previamente, tanto él como los datos que maneja estén cargados en la Memoria Principal.
Hemos visto como un conjunto de procesos pueden compartir la CPU. Podemos repartir los servicios de la CPU entre varios programas mejorando notablemente el rendimiento del mismo y, por tanto, su velocidad de proceso. No obstante, para lograr este incremento en las prestaciones, tenemos que mantener varios procesos en memoria; tenemos que compartir la memoria.
En el funcionamiento de un ordenador la Memoria Principal es un recurso «central» ya que tanto la CPU como los dispositivos de E/S acceden a ella para leer y/o grabar la información que manejan.
CPUMEMORIA PRINCIPAL
Dispositivos de E/S
Un programa tiene que cargarse en memoria para ejecutarse. A medida que se ejecuta, la CPU irá leyendo cada instrucción para ejecutarla además de leer también de la memoria los datos que necesite esa instrucción. El posible resultado que se genere de la ejecución de la instrucción, también irá a la memoria principal. Finalmente, el programa termina y se declara disponible su espacio de memoria.
Esta operación se estará repitiendo continuamente por lo que la velocidad a la que se realicen estos accesos, tanto de lectura como de escritura, condicionará la rapidez y eficacia del ordenador.
Por lo tanto, una parte de todo sistema operativo tiene como función controlar el correcto funcionamiento de la memoria además de que ha de intentar que su uso sea lo más eficiente posible. De esa tarea se encarga el gestor de memoria.
7.2.- Direccionamiento
La memoria física se puede ver como una sucesión de celdas cada una de las cuales es capaz de almacenar un byte. Además, cada una de estas celdas posee su propia dirección para poder acceder a ellas directamente.
Cuando se desarrolla el hardware de un ordenador se define el esquema de direccionamiento que éste podrá utilizar. Si las direcciones que genera son de 16 bits (es decir, un bus de direcciones de 16 bits) podrá direccionar como máximo 216 celdas, o sea, 64 KB. Aunque la memoria fuera mayor, por ejemplo de 128 KB, sólo podría acceder a los primeros 64 bytes.
Asignación de direcciones
Hasta ahora sabemos que los programas deben estar en memoria para su ejecución, pero ¿en qué dirección se deben cargar?
El programador que diseña su programa no puede saber dónde se cargará ese programa que está codificando, simplemente definirá una sentencia de inicio que marcará el comienzo de las instrucciones y, a partir de ella, escribirá el resto de su programa.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 18
Posteriormente, el Compilador, traducirá a lenguaje máquina el programa escrito en código fuente y les asignará, a las diferentes instrucciones y variables, un desplazamiento con respecto a la dirección de la instrucción inicial, dirección que se denomina cero relativo. Por lo tanto, el compilador asignará direcciones relativas al programa.
Una vez enlazado (linkado) el programa, el Cargador podrá colocarlo en memoria asignándole al cero relativo una dirección de memoria real, quedando definidas a partir de ella el resto de direcciones del programa por medio de los mencionados desplazamientos. Es decir, que se habrán transformado las direcciones relativas en direcciones absolutas o reales.
Se logra así independizar el desarrollo de un programa de su futura dirección de carga en la memoria.
Direcciones simbólicas
Direcciones relativas
(Desplazamiento respecto al inicio)
Punto de carga
(Dirección de inicio)
Direcciones absolutas
7.3.- Jerarquía de almacenamiento
PROGRAMA FUENTE
COMPILADOR
PROGRAMA OBJETO
ENLAZADOR / CARGADOR
PROGRAMA CARGABLE
Los primeros ordenadores utilizaban memoria de tipo magnético. Dado el nivel tecnológico del momento, se trataba de dispositivos muy grandes y caros que mantenían en todo momento los programas y datos que ejecutaban. No parecía lógico mantener cargados en memoria principal aquellos programas y datos que no fueran a ejecutarse, pero tampoco sería práctico compilarlos y enlazarlos cada vez que fuera necesaria su ejecución. Por eso, el desarrollo de dispositivos rápidos de almacenamiento secundario (cintas y discos) permitió guardar en ellos dichos programas y datos, transfiriéndolos a la memoria principal cuando fueran a procesarse. El sistema operativo se encargaría también de gestionar este almacenamiento secundario.
En la década de los 60, las nuevas tecnologías permitieron el desarrollo de memorias mucho más rápidas que las magnéticas, aunque también más caras. Estas memorias muy rápidas o caché, se comenzaron a utilizar para almacenar los programas y datos más utilizados, logrando una mejora general del sistema. Su coste forzó a usar memorias caché de pequeño tamaño.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 19
Tiempo
acceso
Capacidad
MEMORIA
CACHÉ
Los programas y datos pueden ser
utilizados directamente por el procesador
MEMORIA
PRINCIPAL
Los programas y datos deben ser transferidos
a la memoria principal antes de ser tratados
por el procesador
Coste
7.4.- Gestión de la memoria
MEMORIA SECUNDARIA
Al ser la memoria un recurso tan caro e influyente en el rendimiento general del ordenador, debe de ser manejado de la forma más eficaz posible. Por este motivo, el sistema operativo dedica una parte importante de su software a su gestión (gestor de memoria) buscando la utilización más adecuada.
7.4.1.- Sistemas monoprogramados
En un sistema que trabaje en modo monoprogramación, la memoria principal se divide en dos partes: una parte para el sistema operativo, y otra para el programa de usuario que se ejecuta en ese instante.
MEMORIA PRINCIPAL
Sistema operativo |
Programa de usuario |
Zona no utilizada |
En este tipo de sistemas, el gestor de memoria tiene como misión importante el asegurar la independencia de las 2 zonas para que no interfieran entre ellas. A esta función se la denomina protección de la memoria.
7.4.2.- Sistemas multiprogramados
En un sistema multiprogramado, la CPU accede simultáneamente a varios procesos repartiendo el tiempo entre todos ellos según diversas técnicas como las que hemos visto anteriormente. Sabemos también que, para que un proceso se ejecute, éste ha de estar situado en la memoria principal del ordenador por lo que en los sistemas multiprogramados la parte de la memoria correspondiente al usuario, debe subdividirse en varias zonas, llamadas regiones o particiones, para hacer sitio a varios procesos. El número de regiones indicará el grado de multiprogramación del sistema.
Implantación de Sistemas Operativos
SISTEMAS OPERATIVOS 20
MEMORIA PRINCIPAL
Sistema operativo |
Proceso 1 |
Proceso 2 |
Zona no utilizada |
Si simultáneamente se encuentran en memoria varios procesos, se han de proteger sus respectivas regiones para que no se “molesten” unas a otras.
7.4.3.- Memoria virtual
Hasta ahora hemos supuesto que el programa a ejecutar tiene que estar cargado totalmente en la memoria principal aunque no todas las partes de ese programa se ejecutan al mismo tiempo. La memoria virtual es una técnica de gestión que, combinando hardware y software, permite la ejecución de programas parcialmente cargados en memoria real.
En los sistemas que utilizan técnicas de memoria virtual, el sistema operativo mantiene en la memoria principal aquella parte del proceso que se utiliza en cada momento, el resto permanece en el disco. De esta manera, una parte del disco se utiliza como si se tratase de memoria principal (de ahí el nombre de memoria virtual) con lo que podemos ejecutar programas de mayor tamaño que la capacidad real de la memoria RAM. Esto supone una gran ventaja pero que tiene también un inconveniente: los discos son dispositivos que poseen elementos mecánicos lo que los hace mucho más lentos que la memoria principal por lo que los programas se ejecutarán de forma más lenta. Para minimizar este problema, es recomendable que los discos sean de gran velocidad.
Supongamos un proceso que necesita 1 MB de memoria para su ejecución. Se le pueden asignar, por ejemplo, únicamente 512 KB. Cuando el sistema operativo necesite una parte de ese programa que todavía no está en la memoria principal, tiene que traer del disco el bloque de datos que necesita y, en caso de que sea necesario, tiene que pasar un bloque de la memoria al disco (para hacer sitio al nuevo bloque). A este proceso de intercambio se le conoce como swapping.
Con la utilización de la memoria virtual, se puede trabajar con programas de mayor tamaño así como también se puede tener más grado de multiprogramación.
Implantación de Sistemas Operativos