U4 - Conceptos Generales de SO

download U4 - Conceptos Generales de SO

of 22

Transcript of U4 - Conceptos Generales de SO

ESTRUCTURA Y FUNCIONAMIENTO DE COMPUTADORAS II

UNIDAD 4: SISTEMAS OPERATIVOS. CONCEPTOS GENERALES.

Licenciatura en Sistemas de Informacin Licenciatura en Ciencias de la Computacin

Departamento de Informtica

Facultad de Ciencias Exactas, Fsicas y Naturales

Universidad Nacional de San Juan

Estructura y Funcionamiento de Computadoras II

Esquema de contenidosConceptos bsicos Definicin de sistema operativo Objetivos del sistema operativo Funciones del sistema operativo Los comienzos El primer SO: Sistema Batch Serial Simple La disparidad de velocidades entre el procesador central y los dispositivos perifricos Sistemas de multiprogramacin Sistemas de tiempo compartido Sistemas de tiempo real Sistemas de multiprocesamiento

Evolucin de los sistemas de explotacin

Estructura del sistema El arranque del sistema Diagrama de trancisin de estados de un SO

4.1.

CONCEPTOS BSICOS

4.1.1. Definicin de sistema operativoUn sistema operativo es un conjunto de programas de control que controlan la ejecucin de aplicaciones y programas y que acta como interfaz entre las aplicaciones y el hardware de la computadora. Para ello una parte, denominada ncleo (o kernel) del Sistema Operativo, es cargada en memoria al comenzar la operacin de la mquina y reside all en forma permanente hasta el apagado. El ncleo contiene las funciones bsicas del SO. El resto de las funciones se encuentran almacenadas en un medio de memoria auxiliar, de donde son extradas para su ejecucin cuando se las necesita. Es el SO quien se comunica con el hardware. Todas las funciones del hardware estn a disposicin del usuario, a travs de pedidos al SO. El SO es un componente principal de prcticamente la totalidad de los sistemas de computacin. Salvo en casos muy especiales, es muy difcil, si no imposible, usar una computadora sin alguna clase de Sistema Operativo y usar un sistema deficiente podra tener un efecto desastroso en la capacidad de procesamiento de una mquina, pues anulara la eficacia de un costoso y veloz hardware. Los Sistemas Operativos adquieren da a da mayor importancia dentro del conjunto de los programas que integran y hacen producir a los sistemas de computacin, es decir el Software de Base o Sistema de Programacin. Son el centro nervioso que dirige y coordina el uso de una mquina y el medio idneo que permite obtener de ella una mayor eficiencia y flexibilidad al cumplir las mltiples funciones para las que estn diseados. As, posibilitan en las computadoras modernas la realizacin de varias tareas a la vez (multiprogramacin), atender a mltiples usuarios desde terminales conectadas al computador (tiempo compartido), comunicarse con otros sistemas (redes de computadoras / sistemas distribuidos), etc.

4.1.2. Objetivos del sistema operativoSe puede considerar que un sistema operativo tiene los siguientes tres objetivos: Facilidad de uso. Un SO facilita el uso de la computadora. Esto es equivalente a colocar frente al usuario una mquina virtual cuyas caractersticas sean distintas y ms fciles de manejar que la mquina real subyacente. Operacin eficiente del equipo. Un SO se debe construir de tal forma que administre los recursos (procesador/es, memoria, perifricos y archivos) de una manera eficiente.Sistemas Operativos. Conceptos generales. 2

Estructura y Funcionamiento de Computadoras II

Capacidad para evolucionar. Un SO se debe construir de tal forma que se puedan desarrollar, probar e introducir nuevas funciones en el sistema sin interferir con su servicio.

Facilidad de uso Interfaz usuario-computadora El hardware y software utilizados para proporcionar aplicaciones a los usuarios se pueden ver de forma jerrquica o en capas, tal como se muestra en la figura el usuario de dichas aplicaciones, es decir, el usuario final, normalmente no se preocupa por los detalles del hardware de la computadora. Por tanto, el usuario final ve un sistema de computacin en trminos de un conjunto de aplicaciones. Una aplicacin se puede expresar en un lenguaje de programacin y normalmente se desarrolla por un programador de aplicaciones. Si un programador tuviera que desarrollar una aplicacin como un conjunto de instrucciones en cdigo maquina que se encargaran de controlar completamente el hardware de la computadora, se enfrentara a una labor extremadamente compleja. Para facilitar esta tarea, se proporciona un conjunto de programas de sistema. Algunos de estos programas se conocen como utilidades. Estos programas utilizan frecuentemente funciones que asisten al programador en las fases de creacin de programas, gestin de archivos y control de dispositivos de E/S. Un programador har uso de estas utilidades cuando desarrolle una aplicacin, y las aplicaciones, invocaran a las utilidades durante su ejecucin para llevar a cabo ciertas funciones. El programa de sistema ms importante es el sistema operativo. El sistema operativo oculta los detalles del hardware al programador y le proporciona una interfaz apropiada para utilizar el sistema. Acta como mediador, haciendo ms fcil al programador y a la aplicacin el acceso y uso de dichas utilidades y servicios. Operacin eficiente del equipo La segunda razn histrica de los sistemas operativos y quizs la primera en orden de importancia para las empresas que encararon la ciclpea tarea de desarrollarlos, es la operacin eficiente del equipo, que permite al usuario aprovechar la costosa inversin realizada. Un sistema operativo debe ofrecer un balance adecuado entre estos dos objetivos. El objetivo es brindar los servicios de administracin de la manera ms eficiente posible, con la mayor facilidad de uso. Capacidad para evolucionar Un SO importante debe evolucionar en el tiempo por las siguientes razones: Actualizaciones de hardware y/o nuevos tipos de hardware. Nuevos servicios. En respuesta a la demanda del usuario o en respuesta a las necesidades de los gestores de sistema, el sistema operativo debe permitir la incorporacin de nuevos servicios. Resolucin de fallos. Cualquier sistema operativo tiene fallos. Estos fallos se descubren con el transcurso del tiempo y se resuelven. Por supuesto, esto implica la introduccin de nuevos fallos.Usuario final Programador Diseador del SO Programas de aplicacin Utilidades Sistema Operativo Hardware de la computadora

4.1.3. Funciones del sistema operativoUn sistema operativo proporciona un entorno para la ejecucin de programas. El SO ofrece ciertos servicios para los programas y para los usuarios de estos. Los servicios especficos que se ofrecen varan de un sistema operativo a otro, pero podemos identificar varias clases comunes, a saber:Sistemas Operativos. Conceptos generales. 3

Estructura y Funcionamiento de Computadoras II

Ejecucin de programas. Este servicio es bsico para la operacin de la computadora, ya que la funcin fundamental de un sistema operativo es la de brindar un ambiente de ejecucin de programas. El sistema debe ser capaz de almacenar, cargar, ejecutar e interrumpir programas de usuarios. Operaciones de E/S. Un programa en ejecucin puede requerir una operacin de E/S sobre algn dispositivo. Ya que un programa de usuario no puede ejecutar directamente operaciones de E/S, el sistema operativo debe ofrecer alguna forma de llevarlas a cabo. Manipulacin del sistema de archivos. El sistema de archivos es de especial inters. Es obvio que los programas necesitan leer y escribir archivos, as como crearlos y eliminarlos basndose en su nombre. Comunicaciones. Se presentan varias circunstancias en las que un proceso necesita intercambiar informacin con otro, y esto puede ocurrir principalmente en dos formas. La primera tiene lugar entre procesos que se ejecutan en el mismo computador; la segunda entre procesos que se ejecutan en sistemas de computacin diferentes unidos por una red. La comunicacin puede efectuarse a travs de memoria compartida o por la tcnica menos usual de paso de mensajes, en el cual el sistema operativo mueve paquetes de informacin entre procesos. Deteccin de errores. El sistema operativo debe estar constantemente pendiente de posibles errores, los cuales pueden darse en el hardware de la memoria y la CPU (como un error de memoria o un corte de energa), en dispositivos de E/S (como un error de paridad en la cinta, un atascamiento de tarjetas en el lector de tarjetas o falta de papel en la impresora) o en un programa de usuario (como un desbordamiento aritmtico, un intento de acceder a una posicin ilegal de la memoria, demasiado tiempo de uso de la CPU). Para cada tipo de error, el SO debe emprender la accin adecuada, para asegurar un funcionamiento correcto y consistente. Asignacin de recursos. Cuando varios usuarios o trabajos se ejecutan al mismo tiempo, se debe asignar recursos a cada uno de ellos. El sistema operativo administra varios tipos de recursos. Algunos (como los ciclos de la CPU, memoria principal y almacenamiento de archivos) pueden tener un cdigo de asignacin especial, mientras otros (como los dispositivos de E/S) pueden poseer un cdigo de solicitud y liberacin ms general. Contabilidad. Para llevar un control de cules usuarios utilizan cuntos recursos del computador y de qu tipo. Estas anotaciones pueden tener fines contables (para facturar a los usuarios) o simplemente para recopilar estadsticas de uso, las cuales pueden ser una valiosa herramienta para los administradores que desean reconfigurar el sistema a fin de mejorar los servicios. Proteccin. Posiblemente los dueos de la informacin almacenada en un sistema de computacin multiusuario deseen controlar su uso. Cuando varios trabajos independientes se ejecutan al mismo tiempo, no debera ser posible que un trabajo interfiriera con los dems, ni con el sistema operativo. La proteccin implica revisar la validez de todos los parmetros que se pasan en las llamadas al sistema y asegurar que todo el acceso a los recursos del sistema est controlado. Tambin es importante la seguridad del sistema respecto a personas ajenas. Esta seguridad comienza con las contraseas que los usuarios deben especificar para tener acceso a los recursos, y se extiende para defender a los dispositivos de E/S externos, incluyendo a los mdems y adaptadores de red, de intentos de acceso no permitidos, y para registrar todas estas conexiones a fin de detectar intromisiones. Para que un sistema est protegido y seguro, hay que establecer precauciones en todas partes. Debe recordarse que una cadena es tan fuerte como su ms dbil eslabn.

Sistemas Operativos. Conceptos generales.

4

Estructura y Funcionamiento de Computadoras II

4.2.

EVOLUCIN DE LOS SISTEMAS DE EXPLOTACIN

4.2.1. Los comienzosInicialmente, slo hubo hardware. Las primeras computadoras eran mquinas muy grandes, que se programaban desde una consola, utilizando llaves que permitan alterar los contenidos de la memoria y registros de CPU. El programador era el operador del equipo e intervena directamente en la ejecucin de cada programa. La programacin se efectuaba en lenguaje de mquina, debiendo el programador codificar sus instrucciones en binario o, en algunos casos, en octal o hexadecimal. Como la memoria era muy pequea, las posibilidades de programacin tambin lo eran y muchas de las aplicaciones consideradas hoy tradicionales, no eran ms que fantasiosas expresiones de deseos. Los programas se cargaban a llave, esto es, por medio de switches (llaves de 2 posiciones, una para el cero y otra para el uno) del tablero o consola de comando de la computadora, o bien desde una cinta de papel perforado, que contena una versin ejecutable del programa. La cinta de papel perforado, de cinco u ocho canales de perforacin, era el medio de almacenamiento externo de programas y datos. En caso de que el programa se encontrara perforado en cinta de papel, se deba cargar un primer programa a llave: el programa encargado de la lectura de la cinta de papel. Si el programa lea datos de la cinta, estos seguan a las instrucciones del programa. Luego se cargaba, a travs de los switches, la direccin de comienzo del programa en el registro Contador de Programa (PC) y se daba comienzo a la ejecucin. La determinacin de errores en el programa era muy rudimentaria, debindose recurrir para ello, a la observacin de luces en el tablero de comando. Cuando se descubran errores, el programador /operador poda parar la ejecucin, examinar el contenido de posiciones de memoria y registros de la CPU y corregir el programa directamente desde la consola, para evitar cargarlo nuevamente en su totalidad. La salida producida por el programa se imprima o se perforaba en cintas o tarjetas. El equipo, pese a sus limitaciones (una calculadora de bolsillo tiene ms capacidad de memoria y velocidad que aquellos mastodontes de miles de vlvulas de vaco) era sumamente costoso, superando su precio el milln de dlares, por lo que la hora de uso era gravosa. Debido a las caractersticas particulares del ambiente donde se trabajaba, el uso del equipo se estableca mediante la inscripcin de los usuarios en una planilla de turnos horarios. Eso haca que el conflicto de intereses fuera enorme y que el equipo se desaprovechara, puesto que un programador poda reservar una hora de mquina y descubrir, en los cinco primeros minutos un error de concepto que le impidiera continuar con su tarea, sin que necesariamente otro accediera al equipo, ahora inactivo. Por otra parte, podra suceder que un programa se demorara en su ejecucin por encima de las previsiones del programador, pero que la persona que ocupara el turno siguiente no tuviera contemplaciones, obligando a desalojar la mquina en el instante establecido, perdindose as valioso tiempo de procesamiento, ya que ello normalmente obligaba, cuando nuevamente fuera el turno del primero, a reiniciar la ejecucin del programa.

4.2.1.1.

La subrutina

La idea de software bsico, es decir, de programas de servicio de uso compartido por todos, es una nocin muy temprana en el desarrollo de la computacin. Prcticamente desde los albores de la misma, cuando en la Universidad de Cambridge se experimentaba con la EDSAC, la subrutina ocup un rol central en el diseo de su arquitectura. La invencin de la subrutina gener una corriente hacia la construccin de programas de biblioteca, proveedores de funciones comunes, las cuales podan copiarse en un nuevo programa sin tener que escribirse dos veces. En particular, se pudo comenzar a compartir las rutinas para gobernar los dispositivos perifricos. Cada dispositivo de E/S tiene sus caractersticas propias, requiriendo una programacin cuidadosa. Para cada dispositivo se escribe una rutina especial, llamada manejador del dispositivo (device driver). Este programa conoce como deben usarse los buffers, banderas (flags), registros, bits de control y estado, para un dispositivo particular. Cada tipo distinto de dispositivo tiene su propio manejador. Esto permiti que en lugar de escribir el cdigo necesario cada vez, se tomara directamente el manejador correspondiente de la biblioteca.Sistemas Operativos. Conceptos generales. 5

Estructura y Funcionamiento de Computadoras II

Asimismo, se desarrollan y pasan a formar parte de estas bibliotecas de funciones comunes, otros programas como ensambladores, vinculadores y cargadores que, al igual que las subrutinas de E/S, facilitan la programacin. En el terreno del hardware aparecen nuevos dispositivos, tales como lectoras de tarjetas, impresoras de lnea y cintas magnticas.

4.2.1.2.

Los ensambladores

El surgimiento del lenguaje ensamblador constituye una notable mejora de las facilidades de programacin, ya que permite codificar los programas de un modo ms simple, puesto que exime al programador de tener que manejarse con cdigos binarios, para pasar a emplear nemnicos en la escritura de las instrucciones. Asimismo, lo libera de la pesada tarea de llevar la cuenta de las direcciones de instrucciones y datos, al permitir referirse a ellas mediante el empleo de smbolos (etiquetas). Los ensambladores traducen el programa fuente a cdigo absoluto y los vinculadores /cargadores lo transforman en un programa ejecutable y lo cargan en memoria para su ejecucin. El desarrollo de ensambladores, as como de compiladores de nuevos lenguajes de programacin (Fortran, Cobol), a la vez que facilitan la programacin, dificultan la tarea de operacin. Para ejecutar un programa FORTRAN, por ejemplo, haba que desarrollar la siguiente secuencia de pasos: 1. Montar la cinta magntica o cargar las tarjetas perforadas que contenan el compilador Fortran. 2. Cargar el compilador Fortran en memoria. 3. Compilar el programa. El compilador Fortran produca una salida en lenguaje ensamblador. 4. Montar la cinta que contiene el Programa ensamblador (traductor). 5. Ensamblar el programa. 6. Linkeditar la salida del programa objeto obtenido del paso anterior, para incluir rutinas de biblioteca y subrutinas. 7. Cargar el programa ejecutable en memoria y ejecutarlo. Terminada una tarea, haba que descargar los perifricos y preparar la siguiente, repitiendo nuevamente todos o la mayora de los pasos anteriores.

4.2.1.3.

Tiempo de preparacin vs. Tiempo de ejecucin

Tal secuencia de pasos implicaba que la ejecucin de un trabajo insumiera una gran cantidad de tiempo de preparacin (setup time). Si se cometa un error en algn paso, deba recomenzarse, teniendo que cargar nuevamente cintas o tarjetas. Este mtodo es aceptable solamente si el tiempo de preparacin no es significativo con respecto al tiempo de procesamiento. Las primeras computadoras eran tan lentas que generalmente este era el caso, pero a medida que, como consecuencia del avance tecnolgico, fueron desarrollndose modelos ms veloces, esta modalidad de trabajo se vuelve ineficiente, por el alto porcentaje de tiempo que el sistema permanece ocioso (mientras el operador realiza las operaciones de carga y descarga de perifricos o trabaja en la consola). En ese entonces, un computador era muy caro, con un tiempo de vida esperado corto. Por lo tanto, el tiempo de computacin era muy valioso y los propietarios queran aprovecharlo al mximo. Se instrument una solucin doble: la primera fue ocupar operadores profesionales, de tal forma que el programador no operara ms la computadora y eliminar as el tiempo desperdiciado por las reservas. El nuevo especialista reciba los programas con indicaciones sobre su ejecucin y que medidas tomar en caso de mal funcionamiento y entregaba los resultados en un medio semejante (otra cinta de papel, que deba luego ser impresa por una teletipo, o un listado producido por la propia computadora). Los operadores no corrigen los programas. Ante una situacin de error, lo que hacen es obtener un vuelco (a impresora o cinta de papel) del contenido de la memoria y registros (dump), para que elSistemas Operativos. Conceptos generales. 6

Estructura y Funcionamiento de Computadoras II

programador determine el problema y continan con el trabajo siguiente. El esquema siguiente muestra este procedimiento:

PROGRAMADOR

OPERADOR

FIN NORMAL DUMP

La segunda solucin trat de reducir el tiempo de preparacin. Para evitar cargar reiteradamente compiladores, vinculadores o cargadores, muy pronto esos programas se hicieron residentes, es decir, podan correr una y otra vez sin que fuera necesario volver a leerlos de un perifrico (cinta o tarjetas) para cargarlos cada vez en memoria. Para aprovechar esta capacidad, el operador agrupaba en lotes (batch) los programas con requisitos semejantes, evitando as cambios de entorno cada vez que se cargaba un programa. Si el operador recibe varios trabajos Fortran y otros tantos Cobol, en lugar de ejecutarlos en orden de llegada, procesa todos los Fortran y luego todos los Cobol, ganando el tiempo de carga de los compiladores. El resultado fue una notable reduccin en el tiempo de preparacin de cada tarea.

4.2.2. El primer sistema operativo: Sistema batch serial simpleNo obstante los avances logrados con la implementacin del nuevo modo de trabajo, persistan causas de demoras en la ejecucin por Monitor intervencin manual del operador: ante cada detencin de un programa, el operador debe observar la consola de luces para determinar la causa (condicin de parada), si se trata de un error obtener el dump y luego cargar el prximo trabajo. Durante todo Programa de este tiempo la CPU se mantiene sin uso. Usuario La aparicin de medios magnticos de almacenamiento, junto con la modalidad de procesamiento en lotes, sugiri la posibilidad de escribir un programa que decidiera la carga automtica de compiladores, programas de servicio y de aplicacin. El programa encargado de automatizar la ejecucin secuencial de Fin compiladores, vinculadores, cargadores y programas de aplicacin Trabajo (reemplazando en esta tarea al operador), deba ser un habitante permanente de la memoria, por lo que se lo denomin inicialmente Residente, nombre que lo identific en los primeros aos de su existencia. Posteriormente fue recibiendo otras sucesivas denominaciones como Monitor, Ejecutivo, Supervisor, Programa de Control Maestro, Kernel o Ncleo. Inicialmente, el Monitor tiene el control del computador (se carga en memoria al comenzar las operaciones). El mismo transfiere el control a un programa de usuario. Cuando este termina, el control retorna al Monitor, que lo pasar al prximo programa y as sucesivamente. Este desarrollo constituy la creacin del primer sistema operativo, de caractersticas rudimentarias, cuya principal prestacin era, entonces, el encadenamiento de la secuencia de trabajos o secuenciamiento automtico de trabajos, adoptando la denominacin de Sistema batch serial simple (batch: modo de procesamiento en lotes; serial: se ejecuta un programa a continuacin del otro; simple: un solo programa por vez)

Sistemas Operativos. Conceptos generales.

7

Estructura y Funcionamiento de Computadoras II

4.2.2.1.

Lenguaje de control

Ahora, el autor del programa deba proveer al residente informacin acerca de las necesidades de ejecucin del programa. Ello lo haca mediante comandos especiales, codificados en tarjetas perforadas, que reciban el nombre de tarjetas de control, que el residente interpretaba. Estas tarjetas se intercalaban con las tarjetas del programa y datos, en los lugares apropiados y constituan directivas que indicaban, bsicamente, el programa que deba ejecutarse y los recursos necesarios para ello. El conjunto de estas directivas o sentencias de control pasa a constituir el llamado Lenguaje de Control. As, para indicar al residente que deba cargarse un compilador determinado, el programador antepona a su programa la tarjeta correspondiente. El compilador era cargado por el residente y, bajo la indicacin de los parmetros de la tarjeta de control, ejecutado. Al serlo, lea y traduca el programa del usuario y entregaba una copia de su traduccin en algn medio. Este medio era utilizado por el siguiente programa invocado por el residente atendiendo a las tarjetas de control y as hasta que el programa de aplicacin llegaba a un punto de carga propio, era ubicado en memoria y ejecutado. El lote necesario para procesar esta tarea es uno como el siguiente:

El conjunto as estructurado constituye una unidad que se presenta al sistema para su procesamiento y recibe la denominacin de Trabajo o Job. El monitor residente proporciona una secuenciacin automtica de trabajos siguiendo las indicaciones de las tarjetas de control. Cuando una de ellas indica que debe ejecutarse un programa, el monitor lo carga en memoria y le transfiere el control. Cuando el programa termina, devuelve el control al monitor, el cual lee la siguiente tarjeta de control, carga el programa adecuado, etc. Este ciclo se repite hasta que se interpretan todas las tarjetas de control del trabajo. Luego el monitor contina automticamente con el siguiente trabajo. Para ello, el personal de operaciones deba asegurar que siempre hubiera un nuevo trabajo (lote) esperando para ser procesado en la unidad de alimentacin de la lectora de tarjetas. Esta mecnica plantea varios problemas, cuya resolucin pasa a constituir caractersticas permanentes de los sistemas operativos a partir de entonces.

4.2.2.2.

Modo dual de ejecucin

Ahora podran presentarse 2 situaciones en las que el residente debera saber que acciones tomar. A continuacin se explican con su correspondiente solucin: 1. Cuando un programa tiene errores de compilacin y esta es, por lo tanto, abortada, el residente debe poder saber hasta donde debe avanzar en la secuencia de tarjetas de entrada para poder ingresar el programa siguiente, descartando las tarjetas restantes del anterior. Lo mismo ocurre en caso de que el error se produzca durante la ejecucin, debiendo en ese caso saltear todas las tarjetas de datos que resten procesar. Esto oblig a identificar las tarjetas de control con caractersticas especiales, para diferenciarlas de las del programa (instrucciones) y los datos. As, se las distingui con un caracter especial (*, $, //, etc.), en una posicin (columna) determinada. Entonces, en un caso como el planteado, el monitor saba que tena que avanzar hasta encontrar una tarjeta con esa identificacin. 2. Si el programa del usuario lee por s mismo las tarjetas de datos, podra darse el caso, debido a un error de lgica, de que intentara leer datos ms all de las tarjetas de control siguientes al ltimo,Sistemas Operativos. Conceptos generales. 8

Estructura y Funcionamiento de Computadoras II

haciendo imposible la ejecucin del programa subsiguiente (continuara leyendo sin control las tarjetas correspondientes al siguiente programa o siguiente trabajo). Ello obliga a establecer que la lectura de las tarjetas de control est reservada al nico programa al que estn dirigidas: el residente. La rutina de control de dispositivo (device driver), ser capaz de distinguir entre ellas y las restantes. Pero ello no es del todo suficiente, ya que el programador puede escribir, eventualmente, su propia rutina de dispositivo y leer las tarjetas de control, volviendo el problema a su comienzo. La solucin fue establecer que las operaciones de E/S solamente podan ser ejecutadas por el monitor residente. Se transformaron, as, en instrucciones privilegiadas, es decir, ejecutables slo por un programa privilegiado, en este caso el monitor. El modo de hacer que un programa sea privilegiado es utilizar un bit de un registro en el procesador a modo de seal o bandera, de manera que uno de los dos valores (1 o 0) indica que se est ejecutando un programa privilegiado y el otro que se trata de un programa normal. Esto conduce al concepto de estado del procesador, que ahora tiene dos modos: Estado de Monitor (cuando el control del procesador pertenece al monitor residente) - Bit = 0. Estado de Problema (cuando el procesador est bajo el control del programa del usuario) - Bit = 1. Esta mecnica de trabajo tambin se conoce como modo dual de ejecucin o modo maestro / esclavo, que puede representarse por el siguiente esquema: Atiende pedido 2 Operacin de E/S MONITOR (Estado de monitor: operacin privilegiada)

1

3

Lectura (pedido al Monitor)

PROGRAMA DE USUARIO (Estado de problema: operacin normal)

1. El programa de usuario solicita al monitor una operacin de E/S, en este caso una lectura. 2. El monitor atiende el pedido, realizando la operacin de E/S solicitada. 3. Una vez completada la operacin, devuelve el control al programa de usuario. Ahora, el programador no tiene acceso a la instruccin de E/S, pero si a la funcin, a travs de un pedido al residente. Para ello debe existir un mecanismo que permita que el programa del usuario se comunique con el monitor para dirigirle una solicitud y tambin uno que permita detectar si el programa del usuario, en cambio, intenta ejecutar por si mismo instrucciones de E/S, que le estn prohibidas. En ambos casos, tales mecanismos se conocen como interrupciones, concepto de importancia central en el estudio de los sistemas operativos. Una nocin completa sobre el mecanismo de la interrupcin se tratar ms adelante, por ahora baste con aclarar que los programas pueden solicitar servicios al Monitor o Residente a travs de un cierto tipo de interrupcin (Software interrupts), denominadas llamadas al monitor, extracdigos o instrucciones extendidas. Asimismo, que ciertos eventos (como un intento de ejecutar instrucciones no permitidas) pueden ser detectados por el hardware del sistema de computacin y comunicados al Sistema Operativo por medio de interrupciones. Las llamadas al monitor consisten en una instruccin especial que, al ser ejecutada por el programa de aplicacin, causa la suspensin de su propia ejecucin y que el control sea pasado al monitor, que acto seguido atiende el pedido del programa. En sntesis: cuando un programa de aplicacin emite una sentencia de entrada o salida, ella se traducir en una llamada al monitor, que ser quin, a travs de las rutinas de E/S, llevar a cabo la operacin.Sistemas Operativos. Conceptos generales. 9

Estructura y Funcionamiento de Computadoras II

Es importante sealar que, como consecuencia de la interrupcin, se cambia el estado del procesador, que se encontraba en estado de problema, pasando a estado de monitor o supervisor, para que ste pueda ejecutar las instrucciones privilegiadas de E/S. Por lo tanto, a esta altura del proceso de evolucin el monitor residente (Sistema operativo batch serial simple) tiene las funciones bsicas que se muestran en el siguiente esquema:

Interrupciones

Manejadores de dispositivos

Secuenciador de trabajos

Intrprete de tarjetas de control

4.2.3. La disparidad de velocidades entre el procesador central y los dispositivos perifricosLa evolucin desde el primer SO hasta los actuales SO modernos fue posible gracias a la implementacin de algunas tcnicas cuyo objetivo era aumentar la productividad (throughput) del sistema. A continuacin se explican las principales.

4.2.3.1.

Buffering

Para que se entienda el problema de fondo, vase el simple proceso de leer un registro, ejecutar las operaciones de procesamiento e imprimir los resultados como se ilustra en la figura siguiente.

Suponiendo que la entrada, el procesamiento y 1a salida requieren idnticas cantidades de tiempo, es evidente que el registro se lee durante un intervalo de tiempo y luego el dispositivo de entrada se mantiene ocioso durante los dos intervalos siguientes (procesamiento y salida). De hecho cada uno de los tres componentes del sistema est ocioso dos terceras partes del tiempo mientras espera que el tercero complete su operacin. Esto puede observarse tericamente, mientras que en la realidad el procesador est ocioso ms del 90% del tiempo. El buffering fue una de las primeras soluciones a la lentitud de los dispositivos de E/S. La idea es muy simple: despus que se ley un dato, y la CPU est operando en el mismo, el dispositivo de entrada comienza a leer el prximo dato inmediatamente. La CPU y el dispositivo estn ocupados simultneamente. Un buffering similar se puede hacer para la salida de datos. Esto se alcanza al dotar de almacenamientos intermedios a los dispositivos de entrada y de salida. En el siguiente esquema se muestra cmo funciona el buffering:

Sistemas Operativos. Conceptos generales.

10

Estructura y Funcionamiento de Computadoras II

Mientras se procesa el contenido de una tarjeta, almacenado en el buffer de memoria en un instante anterior, la lectora lee la siguiente tarjeta y almacena el contenido en el buffer del dispositivo (momento 1). Cuando los datos de la nueva tarjeta son requeridos, se los lee del buffer del dispositivo (momento 2) y transfiere al buffer de memoria. La mejora en los tiempos consiste en que la transferencia electrnica de buffer a buffer es insignificante con respecto a la lectura de una tarjeta, pudindose considerar, en trminos comparativos, instantnea. Este mecanismo permite as realizar operaciones de procesamiento al mismo tiempo que operaciones de entrada y salida, recibiendo la denominacin de procesamiento superpuesto, representado en el grfico siguiente:

En este caso se observa, por ejemplo que durante el intervalo de tiempo 4, el registro 4 se est leyendo al almacenamiento intermedio, gracias a la lectora de tarjetas, el registro 3 se est procesando y el 2 se est imprimiendo, tomndose de almacenamiento intermedio a la impresora de lneas. Nota: Se debe resaltar que se trata de ejemplos ideales y que representan mejoras ms notables que las que realmente se encuentran en la prctica. De manera anloga se proceda con las salidas: la CPU pona un registro (por ejemplo un rengln de una impresora) en el buffer del dispositivo y mientras el dispositivo escriba dicha informacin, la CPU iba preparando otro registro.

4.2.3.2.

Entrada/Salida fuera de lnea

Otra solucin para el problema de la disparidad de velocidades entre el procesador y los perifricos fue reemplazar las lectoras de tarjetas e impresoras, con unidades de cinta magntica. En vez que la CPU leyera directamente de las tarjetas, las mismas primero se copiaban en una cinta magntica. Cuando sta estaba suficientemente llena, se llevaba a la computadora. Cuando un programa quera leer una tarjeta, lee la cinta. Similarmente, la salida se hace en una cinta para imprimirse posteriormente. Las lectoras e impresoras operaban off-line (fuera de lnea), no en la computadora principal. La ventaja principal es que la CPU se libera de la espera de lectura de tarjetas, que son muy lentas, y la misma se hace por medio de cintas, que son mucho ms rpidas. Adems no son necesarios cambios enSistemas Operativos. Conceptos generales. 11

Estructura y Funcionamiento de Computadoras II

los programas de aplicacin: los mismos llaman al driver de la lectora de tarjetas, que se reemplaza por un driver de lectura de cinta magntica. De esta forma, los programas de aplicacin no deben ser cambiados: solo el driver. Los programas usan dispositivos de E/S lgicos.

4.2.3.3.

Canales de Entrada /Salida

El siguiente paso en la evolucin hacia los sistemas de Multiprogramacin fue conectar los perifricos esta vez en lnea con la computadora central, a travs de dispositivos llamados canales, o procesadores de E/S. Estos son subcomputadoras especializadas en la realizacin de operaciones de E/S, capaces de controlar uno o varios dispositivos perifricos. Una vez puestos en marcha por el procesador central, funcionaban independientemente de ste, cumplimentando la operacin de E/S.

Ahora los buffers, necesarios para lograr la superposicin de las operaciones, se definen en la memoria central. Como contrapartida de los beneficios logrados con la incorporacin de estas mejoras, surgi la complicacin de una mayor dificultad en el manejo de la E/S: el programador deba luchar con los buffers, el desbloqueo y rebloqueo de registros y la sincronizacin del canal autnomo. Esto condujo al desarrollo de nuevas funciones de software para atender toda esta problemtica, que se sumaron a las ya provistas por el residente, constituyndose paquetes de subrutinas, agrupados bajo la denominacin de IOCS (Input Output Control System-Sistema de Control de E/S). Ahora bien, para controlar las operaciones de entrada/salida y lograr el procesamiento superpuesto es necesario proporcionar dos zonas separadas para el dispositivo de entrada y el de salida. Esto queda demostrado, si se recuerda que el canal est leyendo un registro nuevo al almacenamiento, al mismo tiempo que la CPU procesa el anterior El uso de zonas de almacenamiento intermedio alternas se ilustra en la figura, en donde el registro 3 se lee al almacenamiento intermedio de entrada 1, en tanto que se procesa el registro 2 tomado del almacenamiento intermedio de la entrada, colocndose los resultados en el almacenamiento intermedio de salida 1, al tiempo que se escribe el registro de salida 1, tomado delSistemas Operativos. Conceptos generales. 12

Estructura y Funcionamiento de Computadoras II

almacenamiento intermedio de salida 2. Al completar este ciclo, la CPU comienza a procesar el registro 3 tomado del almacenamiento intermedio de la entrada 1 al almacenamiento intermedio de entrada 2 y la salida del registro 2 se obtiene del almacenamiento intermedio de salida 1.

La superposicin de las entradas y salidas con las operaciones de procesamiento contribuy en parte a una mejora global del rendimiento, pero en programas con frecuentes invocaciones a dispositivos perifricos el efecto es insuficiente (la CPU, en estos casos, siempre termina primero y debe esperar al perifrico). Teniendo en cuenta esto, una visin ms ajustada a la realidad del esquema correspondiente al procesamiento superpuesto se muestra en el grfico siguiente:

Las barras grises representan los tiempos de CPU ociosa: el procesamiento no puede continuar hasta que se complete la entrada de los datos (registro) necesarios.

4.2.3.4.

Spooling

Esta es la mejor solucin para todos los problemas mencionados anteriormente. La aparicin del disco magntico, con capacidad de almacenamiento interesante y acceso directo, el mtodo de derivar entrada y salida lenta hacia procesadores ms baratos, se adapt a la nueva tecnologa. As, se comenz a reemplazar los sistemas de E/S off-line por el empleo de discos. El nuevo mtodo incluy la produccin de programas que intercambiaban datos entre perifricos lentosSistemas Operativos. Conceptos generales. 13

Estructura y Funcionamiento de Computadoras II

y el disco, llamados SPOOLers. Un estudio pormenorizado de este mtodo se har al estudiar el componente de administracin de E/S, ms adelante. El spooler lee tarjetas de la lectora de tarjetas y las almacena en un rea de disco. La ubicacin de la imagen de las tarjetas en el disco se registra en una tabla del sistema operativo. Por las caractersticas fsicas de las operaciones de lectura y escritura en el disco (el mecanismo de lecto/grabacin puede acceder a distintas reas del medio de almacenamiento a travs de sus movimientos mecnicos caractersticos, combinados con el movimiento de rotacin del disco), es posible cambiar del rea de tarjetas que se estn usando, para almacenar nuevas tarjetas (de otro trabajo) en otra ubicacin del mismo disco. Cada trabajo se registra en la tabla indicada. Cuando se ejecuta un trabajo, sus pedidos para la lectora de tarjetas se satisfacen leyendo su imagen desde el disco. Asimismo, los registros de salida (lneas de impresin, salidas perforadas en tarjetas), se graban en una ubicacin del disco. Cuando el trabajo termina, el spooler imprime o perfora la salida completa, leyendo las imgenes de renglones de impresin o de tarjetas a perforar almacenadas en el rea del disco donde fueron grabadas por el programa. Una caracterstica importante de los spoolers, es que utilizan, para llevar a cabo su tarea, los tiempos libres del procesador, durante los cuales el programa de aplicacin no realiza ninguna tarea til, por ejemplo, mientras espera por una operacin de E/S. Por otra parte, provee una estructura de datos importante: una cola de trabajos (secuencia ordenada de objetos que esperan servicio). Varios trabajos han sido ledos y esperan en el disco, listos para ser ejecutados. Esta cola permite al Sistema Operativo elegir qu trabajo ejecutar luego, para aumentar la utilizacin de la CPU. Si los trabajos se alimentan al computador directamente desde tarjetas o incluso desde una cinta magntica, no es posible ejecutar trabajos en distinto orden al de llegada, es decir en forma secuencial. En cambio, al tener los trabajos en un dispositivo de acceso directo, surge la posibilidad de hacer una Planificacin de Trabajos. Esto llev directamente a la multiprogramacin.

4.2.4. Sistemas de MultiprogramacinCon el concepto del programa supervisor que reside permanentemente en el almacenamiento, se introdujo la modalidad de contar con dos programas en el almacenamiento al mismo tiempo: el supervisor, para el control general del sistema, y el del problema, para ejecutar las funciones del procesamiento de datos. En la multiprogramacin, este concepto se lleva un paso ms all, colocando uno o ms programas de problemas (programas de usuario) en el almacenamiento y ejecutndolos de un modo simultneo, aunque en realidad si bien es factible tener simultneamente dos o ms programas dentro del almacenamiento, en un sistema con un solo procesador (por ese entonces, la mayora) la computadora es capaz de ejecutar slo una instruccin a la vez. Por ende, en cualquier momento dado slo uno de los programas controla a la computadora y ejecuta las instrucciones. Dicho de otra manera es imposible tener una ejecucin simultnea de dos programas con una misma CPU. La idea de la programacin mltiple es ejecutar un programa designado como de menor prioridad durante los periodos ociosos de la CPU que se presentan en la ejecucin de un programa de mayorSistemas Operativos. Conceptos generales. 14

Estructura y Funcionamiento de Computadoras II

prioridad. En un esquema ideal, el programa de mayor prioridad es del tipo Entrada/Salida-intensivo o encauzado a la E/S, esto es un programa con una elevada tasa de operaciones de E/S en comparacin con las operaciones internas o de procesamiento, procesan grandes archivos de datos (E) y producen tambin voluminosos archivos de salida y salidas impresas (planillas, facturas, rdenes de compra, recibos, etc.), siendo las operaciones de clculo relativamente irrelevantes. En cambio, el programa de segunda prioridad ser del tipo CPU-intensivo o encauzado al procesamiento que, por el contrario, realiza relativamente pocas operaciones de E/S y mucho procesamiento interno de datos. As, el SO levanta uno de los trabajos de la cola de trabajos y comienza a ejecutarlo. En el momento en que tenga que esperar por algo (montar una cinta, escribir algo en el teclado, terminar una operacin de E/S), la CPU se entrega a otro trabajo, y as sucesivamente. En un sistema monoprogramado, la CPU hubiera estado desocupada, a pesar de que hay trabajo que hacer. Las tareas o trabajos que estn listas para iniciarse se alinean en el almacenamiento auxiliar, esperando a cargarlas en el almacenamiento principal y ejecutarlas (cola). Una computadora grande puede tener varios programas simultneamente en el almacenamiento. Conforme cada uno de ellos se va completando se toma el siguiente de la cola y se transfiere al almacenamiento. Cuando a un programa se le asigna una prioridad elevada, se le pone al frente de la cola. Si la prioridad es lo suficientemente alta, algunos sistemas operativos pueden incluso quitar temporalmente los programas de menor prioridad del almacenamiento para hacerle espacio a los otros. Al completar el trabajo de alta prioridad, los otros programas se regresan su lugar y se le da el control del procesador al trabajo de mayor prioridad. Aunque estas funciones parecen tener una eficiencia extraordinaria, cuentan tambin con sus problemas inherentes En efecto, el proceso de manipular los programas determinando la prioridad, asignndoles intervalos de tiempo, resguardando su contexto, cargando el contexto del nuevo trabajo, etc., requiere tambin, a veces, una cantidad importante tiempo de CPU, que es la misma cantidad que el sistema est tratando de optimizar. Este tiempo no productivo se denomina comnmente sobrecarga (overhead) y se debe minimizar para tener un aprovechamiento pleno del SO.

4.2.4.1.

Requerimientos de hardware.

Para la implementacin de este SO el hardware y el software deben soportar caractersticas tales como la proteccin del almacenamiento, la interrupcin de programas y la preservacin del estado de los programas, los cuales son aspectos bsicos en el estudio de los SO. Proteccin del almacenamiento Es evidente la necesidad de evitar que el programa que ocupa una parte del almacenamiento cambie la informacin o las instrucciones de un programa perteneciente a otra parte del almacenamiento. Por ejemplo, en la figura se evitara a toda costa Supervisor que el programa 1 destruyera por inadvertencia algo del programa 2 que es Programa 1 limitado al Programa 1 direccionamiento en esta parte del independiente, o bien del supervisor. En un almacenamiento sistema de multiprogramacin, esto se evita mediante la capacidad de proteccin del Programa 2 limitado al Programa 2 almacenamiento, que es un sistema direccionamiento en esta parte del combinado de hardware y software que almacenamiento evita que un programa tenga acceso ms all de los lmites de sus propias zonas de almacenamiento asignadas. Capacidad de Interrupcin La caracterstica de interrupcin de programas es una combinacin de hardware y software mediante la cual se puede interrumpir la ejecucin de un programa en ciertas condiciones y devolver el control al supervisor. A su vez, el supervisor est en posicin de controlar la transferencia, pasndola a otro programa del almacenamiento. Preservacin del estado del programa o preservacin del contexto No obstante, para lograr lo explicado en el prrafo anterior sin destruir los diferentes contenidos deSistemas Operativos. Conceptos generales. 15

Estructura y Funcionamiento de Computadoras II

registros del primer programa, toda esta informacin se debe conservar y luego rescatar, cuando el control se devuelva finalmente al primer programa. Esta actividad recibe el nombre de preservacin del estado del programa.

4.2.5. Sistemas de Tiempo CompartidoEl tiempo compartido se refiere a asignar los recursos de la computadora a varios programas que ocupan el almacenamiento en una forma dependiente del tiempo. El concepto principal de un sistema de tiempo compartido es proporcionar a una gran cantidad de usuarios el acceso directo a la computadora para resolver problemas. As pues, el usuario tiene la capacidad de conversar directamente con la computadora para resol ver un problema: de ah el trmino de computacin coloquial o interactiva. En la multiprogramacin, la principal consideracin es maximizar el uso de la computadora, pero en el tiempo compartido es, en cierto sentido, maximizar la eficiencia de cada usuario de computadora y mantenerlo ocupado. En la figura se muestra una representacin muy simplificada de un sistema de tiempo compartido.

Cada usuario posee su propia terminal de comunicaciones, parte del almacenamiento y almacenamiento auxiliar. En contraste con la programacin mltiple, donde los programas se ejecutan sobre una base prioritaria, en el tiempo compartido el tiempo de CPU se divide entre los usuarios basndose en tiempos predeterminados A cada programa se le asigna su rebanada (time slice) de tiempo de CPU (que se mide comnmente. en fracciones de segundo), basndose en algunas premisas de horario predeterminadas, principiando con el primer programa y avanzando hasta el ltimo Al completar el ciclo, se inicia una vez ms, de modo que un usuario individual difcilmente se da cuenta de que otra persona est utilizando tambin la computadora. El tiempo compartido se emplea ms a menudo para desarrollar y probar programas. Los sistemas que son completamente interactivos inspeccionan cada proposicin de un nuevo programa conforme entra a la computadora a travs de una terminal. Los errores en el uso del lenguaje que se detectan se identifican inmediatamente y se le sealan al operador para que se tomen las medidas correctivas apropiadas. Una vez que se termina la entrada del programa, ste se corre y verifica para asegurar su validez. Cuando se detectan errores en el momento de la corrida, se corrigen y se hace otra prueba. El beneficio ms grande de este tipo de sistema es que los errores se encuentran y corrigen y el trabajo contina inmediatamente. Esto contrasta con un sistema por lotes en el que los errores se corrigen pero el trabajo se somete a otra corrida. La demora entre la entrega del trabajo y la obtencin de los resultados en un sistema por lotes puede ser slo una cuestin de minutos, pero con frecuencia se mide en horas. No es nada extrao que se necesite una noche completa para realizar toda la vuelta. Evidentemente este lapso de tiempo no contribuye favorablemente a la eficiencia pensante del programador La programacin interactiva y la capacidad de depuracin de los lenguajes adaptados a este entorno demostraron ser tan eficientes para mejorar la eficacia del programador que se desarrollaron versiones interactivas de todos los lenguajes ms usados de la poca (Fortran, Cobol).

Sistemas Operativos. Conceptos generales.

16

Estructura y Funcionamiento de Computadoras II

Multiprogramacin vs Tiempo Compartido. La multiprogramacin provee un entorno batch mltiple, es decir, que contrariamente lo que ocurre en el sistema batch serial, los programas no se ejecutan uno tras otro, segn su orden en el lote, sino que varios de ellos comparten el uso del sistema. Sin embargo, conserva la caracterstica de batch, debido al modo en que se produce la ejecucin de los programas. La caracterstica principal de un sistema batch es la falta de interaccin entre el usuario y el trabajo mientras se esta ejecutando. El trabajo se prepara y se enva al sistema y un tiempo ms tarde aparece la salida. El tiempo entre el comienzo del trabajo y su terminacin, llamado tiempo de turnaround, puede ser el resultado del tiempo de ejecucin o bien de ste ms las demoras antes que el sistema operativo comience a procesar el trabajo. Como los usuarios no pueden interactuar con sus trabajos mientras estn ejecutando, deben colocar sentencias de control para manejar todos los resultados posibles. En un trabajo multietapa, un resultado puede depender de resultados anteriores. Puede ser difcil definir que hacer en todos los casos. Otra desventaja es que los programas deben corregirse en forma esttica. El programador no puede corregir su programa a medida que se ejecuta. Un sistema interactivo provee comunicacin on-line entre el usuario y el sistema. El usuario da instrucciones al sistema operativo o a un programa directamente y recibe una respuesta inmediatamente, por medio de una terminal. Cuando el sistema operativo termina la ejecucin de un comando, pide la prxima sentencia de control, no de la cola de jobs sino del teclado. El usuario ejecuta un comando, espera la respuesta y decide cual ser el prximo comando, basado en el resultado anterior. Los sistemas batch son apropiados para ejecutar trabajos grandes, que no tienen interaccin. Los trabajos interactivos tienden a estar compuestos por varias acciones cortas, donde los resultados de un comando pueden ser impredecibles. Como el usuario se queda esperando el resultado, el tiempo de respuesta tiene que ser muy corto. En general, en el campo de la multiprogramacin, una vez iniciado un programa, ste contina hasta su terminacin, o hasta que es suspendido en espera de una transferencia perifrica (o, en algunos sistemas, hasta que es detenido y reemplazado por un programa de mayor prioridad). Por el contrario, en un sistema de tiempo compartido el control debe ser transferido de un programa a otro despus de cierto tiempo, con la finalidad de mantener atendidos a otros usuarios.

MULTIPROGRAMACIN Objetivo principal Adjudicacin del procesador Unidad de trabajo Ingreso del trabajo /requerimiento Depuracin de errores Interaccin usuario/programa Adecuado para Maximizar el uso de la computadora Prioridades Trabajos distintos (jobs) Cola de jobs Esttico Nula Ejecucin de programas en produccin

TIEMPO COMPARTIDO Maximizar la eficiencia del usuario Porciones de tiempo Sesin de terminal Teclado Dinmico Mxima Desarrollo y prueba de programas

4.2.6. Sistemas de Tiempo RealControlan la operacin de sistemas en los que el tiempo de respuesta es una variable crtica. De uso en computadoras cuya funcin es el control de dispositivos en una aplicacin dedicada: sistemas mdicos, sistemas industriales mquinas-herramienta, experimentos cientficos, etc. Estos sistemas cuentan con sensores apropiados que ingresan datos a la computadora, que los analiza y procesa. El sistema puede ser de tipo abierto o cerrado. En el primer caso, ante una situacin que requiera una accin correctiva, el sistema acciona una seal de alerta. En el segundo, activa por s mismo la accin.Sistemas Operativos. Conceptos generales. 17

Estructura y Funcionamiento de Computadoras II

Son casos que tienen restricciones de tiempo bien definidas y si el procesamiento no tiene lugar dentro de ellas, fallar.

4.2.7. Sistemas de MultiprocesamientoDesde el punto de vista hardware, consiste en configurar un sistema de computacin con varios procesadores. El trmino se refiere tanto a una arquitectura de hardware que incluye mltiples procesadores, como a los SO que reflejan esta arquitectura. No es un enfoque nuevo pero s posee grandes perspectivas en funcin del desarrollo de los microprocesadores. Se podran concebir sistemas construidos por cientos o miles de microprocesadores. En los primeros sistemas con procesadores mltiples, los procesadores adicionales eran unidades especializadas, por ejemplo, canales de E/S. Las metas de los sistemas de multiprocesamiento generalmente son la confiabilidad y la disponibilidad muy altas, como as tambin el incremento del poder de computacin. El diseo modular proporciona una flexibilidad importante y facilita la expansin de la capacidad. Un Sistema Operativo de multiprocesamiento incluye todas las capacidades funcionales de los sistemas de multiprogramacin y adems: Equilibrio de cargas de Entrada / Salida. Equilibrio de carga del procesador. Reconfiguracin. La mayora de los sistemas de multiprocesamiento tienen como meta principal el incremento de la capacidad de ejecucin. Un aspecto fundamental en este sentido es la posibilidad de maximizar la explotacin del paralelismo o programacin concurrente (se ver en Administracin del Procesador). Otra caracterstica importante de los sistemas de multiprocesador es, como se dijo, la confiabilidad. Si un procesador falla, los restantes continan operando, lo cual no es automtico y requiere de un diseo cuidadoso. Un procesador que falla habr de informarlo a los dems de alguna manera, para que se hagan cargo de su trabajo. Los procesadores en funcionamiento deben poder detectar el fallo de un procesador determinado. El Sistema Operativo debe percibir que ha fallado un procesador determinado y ya no podr asignarlo y tambin debe ajustar sus estrategias de asignacin de recursos para evitar la sobrecarga del sistema que est degradado.

4.2.7.1.

Grados de acoplamientoProcesadores de funcionalidad especializada. Este es el caso del procesador de E/S, donde hay un procesador de propsito general maestro y procesadores especializados que son controlados por el procesador maestro y que le proporcionan servicios, por ejemplo: canales de E/S o de dispositivos. Dbilmente acoplado, ligeramente acoplado, multiprocesador distribuido, o cluster. Consiste en una coleccin de sistemas relativamente autnomos; cada procesador tiene su propia memoria principal y canales de E/S. En este caso la conexin de dos o ms sistemas independientes es por medio de un enlace de comunicacin.Almacenamiento Almacenamiento

Hay tres modelos diferentes para los sistemas multiprocesadores:

Procesador

Procesador

E/S Enlace de Comunicaciones Sistemas Operativos. Conceptos generales. 18

E/S

Estructura y Funcionamiento de Computadoras II

Cada sistema tiene su propio SO y almacenamiento. Los sistemas pueden funcionar independientemente y se comunican cuando sea necesario. Los sistemas separados pueden acceder a los archivos de los otros e intercambiar tareas a procesadores menos cargados. En la bibliografa puede encontrarse este tema bajo los nombres de procesamiento distribuido, cliente/servidor y cluster. Estos conceptos se vern en otra asignatura, sin embargo esquemticamente: Procesamiento fuertemente acoplado o rgidamente acoplado. Utiliza un solo almacenamiento compartido por varios procesadores. Emplea un solo Sistema Operativo que controla todos los procesadores y el hardware del sistema. La administracin de los sistemas multiprocesadores de este tipo se ver en Administracin del Procesador. Esquemticamente:Procesador Almacenamiento Procesador

E/S

E/S

4.2.7.2.

Organizacin

Existen varias organizaciones bsicas de los Sistemas Operativos para multiprocesadores. La ms importante es la de multiprocesamiento simtrico (SMP), que se muestra esquemticamente en la figura siguiente:E/S

Procesador

E/S

Procesador

Almacenamiento

Procesador

E/S

Procesador

E/S

El trmino simtrico alude a que todos los procesadores son equivalentes en cuanto a su capacidad y funcionalidad. Un multiprocesador simtrico contiene mltiples procesadores, cada uno de los cuales puede realizar las mismas funciones ya que poseen capacidades funcionales completas: comparten la misma memoria y las facilidades de E/S, ya que los dispositivos de Entrada / Salida pueden ser conectados a cada uno de los procesadores. Las ventajas potenciales son la mejora en la performance por el procesamiento en paralelo, la posibilidad del crecimiento incremental del sistema, y la posibilidad de que el sistema contine funcionando aunque uno de los procesadores falle. El multiprocesamiento simtrico permite a un SO correr sobre cualquier procesador o sobre varios simultneamente, balanceando la carga del sistema. Si el sistema est constituido por procesadores con funcionalidades distintas, se habla de multiprocesamiento asimtrico (ASMP). El multiprocesamiento asimtrico selecciona el mismo procesador para ejecutar cdigo del SO, mientras los otros procesadores corren slo trabajos del usuario.Sistemas Operativos. Conceptos generales. 19

Estructura y Funcionamiento de Computadoras II

4.3.

ESTRUCTURA DEL SISTEMA

A medida que se han aadido ms caractersticas a los SO y el hardware subyacente se ha vuelto ms potente y verstil, han crecido el tamao y la complejidad de los sistemas operativos. CTSS, que fue puesto en marcha en el MIT en 1963, estaba compuesto aproximadamente por 32.000 palabras de almacenamiento de 36 bits. OS/360, presentado por IBM un ao despus, tena ms de un milln de instrucciones de mquina. En 1975, el sistema Multics, desarrollado por MIT y los laboratorios Bell, haba superado los 20 millones de instrucciones. Es cierto que ms recientemente, se han introducido algunos sistemas operativos ms sencillos para sistemas ms pequeos, pero estos se hacen inevitablemente ms complejos a medida que el hardware subyacente y los requisitos de usuario se incrementan. Por tanto, el sistema UNIX de hoy es muchsimo ms complejo que el sistema casi de juguete puesto en marcha por unos pocos programadores de gran talento a comienzo de los aos 70, y el sencillo sistema MS-DOS supuso el comienzo de los ricos y complejos sistemas OS/2 y Windows. Por ejemplo, Windows NT 4.0 contiene 16 millones de lneas de cdigo y Windows 2000 duplica este nmero. El tamao de un SO con un conjunto completo de caractersticas, y la dificultad del problema que afronta dicho sistema, ha llevado a esta disciplina a cuatro desafortunados, aunque demasiado comunes, problemas. En primer lugar, los sistemas operativos se entregan tarde de forma crnica. Esto implica la creacin de nuevos sistemas operativos y frecuentes actualizaciones a viejos sistemas. En segundo lugar, los sistemas tienen fallos latentes que deben ser planteados y resueltos. En tercer lugar, el rendimiento no es frecuentemente el esperado. En ltimo lugar, se ha comprobado que es imposible construir un sistema operativo complejo que no sea vulnerable a una gran cantidad de ataques de seguridad, incluyendo virus, gusanos y accesos no autorizados. Para gestionar la complejidad de los SO y eliminar estos problemas, se ha puesto mucho nfasis en la estructura software del SO a lo largo de los aos. Ciertos puntos parecen obvios. El software debe ser modular. Esto ayudar a organizar el proceso de desarrollo de software y limitar el esfuerzo de diagnosticar y corregir errores. Los mdulos deben tener interfaces bien definidas, y estas interfaces deben ser tan sencillas como sea posible. De nuevo, esto facilita la programacin. Tambin facilita la evolucin del sistema. Para SO grandes, que ejecutan desde millones a decenas de millones de lneas de cdigo, no es suficiente la programacin modular. De hecho, ha habido un incremento en el uso de los conceptos de capas jerrquicas y abstraccin de informacin. Se puede ver el sistema como una serie de niveles. Cada nivel realiza un subconjunto relacionado de funciones requeridas por el sistema operativo. Dicho nivel confa en los niveles inmediatamente inferiores para realizar funciones ms primitivas y ocultar detalles de esas funciones. Cada nivel proporciona servicios a la capa inmediatamente superior. Idealmente, estos niveles deben definirse de tal forma que los cambios en un nivel no requieran cambios en otros niveles. Por tanto, de esta forma se ha descompuesto un problema en un nmero de subproblemas ms manejables. La forma en que estos principios se aplican vara enormemente entre los sistemas operativos contemporneos. Sin embargo, es til en este punto, para el propsito de mostrar los SO, presentar un modelo de SO jerrquico compuesto por los siguientes niveles: 7 6 5 4 3 2 1 0 Usuarios Shell o Intrprete de comandos Planificador de Trabajos Administracin de Archivos Administracin de Perifricos Administracin de Memoria Ncleo o Kernel Hardware

La capa 0 y la 7, en rigor, no constituyen estratos del Sistema Operativo, pero se los consigna como las capas extremas del sistema de procesamiento, la mquina fsica y su usuario. Entre ellos corre el Sistema Operativo. En la capa 1, ncleo o kernel, se implementan procesos, su comunicacin y sincronizacin y laSistemas Operativos. Conceptos generales. 20

Estructura y Funcionamiento de Computadoras II

administracin del procesador. El ncleo administra gran cantidad de procesos, algunos independientes y otros mutuamente dependientes, por ejemplo un proceso de clculo que debe esperar que se complete una operacin de entrada. Todos estos procesos exigirn los recursos del sistema. La funcin clave del ncleo es la de administrar el procesador. De los varios procesos en ejecucin, slo uno de ellos puede tener, en un instante dado, el control del procesador. Para realizar esta tarea, debe mantenerse una lista de los procesos en curso, seguir el rastro de aquellos que estn libres para proceder y repartir el (los) procesador(es) entre ellos de acuerdo con una estrategia elegida. Los procesos pueden crear otros procesos por medio de un pedido al sistema operativo (caso de un programa que requiere una operacin de E/S para poder continuar) y todos ellos pueden enviar seales, por va del ncleo, a otros procesos, para obtener sincronizacin donde fuera necesario. La administracin de la memoria, perifricos y archivos (capas 2, 3 y 4) sern vistos en profundidad en unidades posteriores. El planificador de trabajos o planificador de Alto Nivel (capa 5) organiza la secuencia de trabajos y administra los recursos en forma global. Finalmente, el shell o intrprete de comandos (aunque se lo llama tambin: intrprete de rdenes, intrprete de lnea de rdenes, terminal, consola) acta como interfaz de usuario para comunicar al usuario con el SO mediante una ventana que espera rdenes escritas por el usuario en el teclado y la respuesta del SO se muestra al usuario en la misma ventana.

4.4.

EL ARRANQUE DEL SISTEMA

El procedimiento de inicializacin de una computadora mediante la carga del kernel se conoce como arranque del sistema. En la mayora de los sistemas informticos, una pequea parte del cdigo, conocida como programa de arranque o cargador de arranque, se encarga de localizar el kernel, lo carga en la memoria principal e inicia su ejecucin. Cuando una CPU recibe un suceso de reinicializacin (por ejemplo cuando se reinicia o se enciende), el registro de instrucciones se carga con una posicin de memoria predefinida y la ejecucin se inicia de all. En dicha posicin se encuentra el programa inicial de arranque. Este programa se encuentra en memoria ROM, dado que la RAM se encuentra en estado desconocido cuando se produce el arranque del sistema. El programa de arranque puede realizar diversas tareas. Normalmente, una de ellas consiste en ejecutar una serie de diagnsticos para determinar el estado de la mquina. Si se pasan las pruebas de diagnstico satisfactoriamente, el programa puede continuar con la secuencia de arranque. En los SO de gran envergadura, incluyendo los de propsito general como Windows, Linux y Mac OS X, el cargador de arranque se almacena en firmware y el SO en disco. En este caso, el programa de arranque que ejecuta los diagnsticos tiene un pequeo fragmento de cdigo que puede leer un solo bloque que se encuentra en una posicin fija (por ejemplo, el bloque 0) del disco, cargarlo en memoria y ejecutar el cdigo que hay en dicho bloque de arranque. El programa almacenado en el bloque de arranque debe ser capaz de cargar el SO en memoria e iniciar su ejecucin. Aunque, normalmente, se trata de un cdigo simple (que cabe en un solo bloque de disco) y que nicamente conoce la direccin del disco del resto del programa de arranque. Finalmente, se llama disco de arranque o disco de sistema a aquel disco que tiene una particin de arranque.

4.5.

DIAGRAMA DE TRANSICIN DE ESTADOS DE UN SO

A lo largo del curso se vern los administradores necesarios, y sus distintos tipos y algoritmos posibles, para que un SO funcione eficientemente. La idea es que en las siguientes unidades se pueda conocer el flujo interno de un SO de un programa a lo largo de toda su ejecucin, sus estados, las tablas y los programas que intervienen en la vida del programa/trabajo. A continuacin, como adelanto de los temas que se irn desarrollando en este curso, se presenta un esquema con el diagrama de transicin de estados de un sistema operativo.Sistemas Operativos. Conceptos generales. 21

Estructura y Funcionamiento de Computadoras II

Sistemas Operativos. Conceptos generales.

22