Sunteți pe pagina 1din 45

UNIDAD I Conceptos Introductorios.

Arquitecturas secuenciales, estructura de una arquitectura secuencial y monoprocesador. Arquitecturas para procesamiento en paralelo: SISD, SIMD, MISD y MIMD. Concepto de acople: acoplamiento dbil y fuerte. Paralelismo con una CPU, computadora Pipeline. Arquitectura Data Flow, representacin de programas Data Flow, Tipo de Operadores

Arquitectura de Computadoras Concepto: La composicin y combinacin funcional de los distintos elementos de un computador Arquitecturas Convencionales: Serie o Secuencial Estructura general determinada por Von Neumann: 1. Programa almacenado, datos almacenados 2. Flujo de computo secuencial 3. Representacin Binaria de la informacin 4. No hay paralelismo de las operaciones Estructuras para una Arquitectura secuencial y monoprocesador Estructura: interconexin entre los distintos componentes Dos buses: todo dato, transferencia y operacin E/S pasara por el procesador Dos buses alternativa: las operaciones de E/S y transferencia se realizan bajo el control de procesadores de E/S Un bus: una sola transferencia a la vez sea solo 2 unidades pueden estar haciendo uso de l. Arquitecturas de procesamiento paralelas Se basa en la explotacin de sucesos concurrentes en un proceso de cmputos La concurrencia implica que pueden ser: Sucesos Paralelos: ocurren en mltiples recursos durante el mismo intervalo. Sucesos Simultneos: ocurren en un mismo instante. Sucesos Pipeline: ocurren en lapsos superpuestos. A nivel de hardware puede ser varias computadoras conectadas para hacer una tarea comn o ofrecer recursos, varios procesadores en una sola computadora, procesadores capaces de trabajar en forma pipeline. Tipos de Procesamiento en paralelo TI-DI-TO-EI(traer instruccin, decodificarla, traer operandos y ejecutar la instruccin) Estas operaciones definen el flujo de instrucciones que combinado con el flujo de datos, surgen los cuatro grupos de procesadores posibles : SISD: Simple Instruccin Simple dato El programa se almacena en memoria como una secuencia de instrucciones y se ejecuta extrayendo las mismas en secuencia y ejecutndola. Por lo tanto el curso que sigue el cmputo viene dado por las secuencias de las instrucciones del programa, es decir el flujo de control del programa. No permite paralelismo

Es necesario disponer de un registro que tenga la direccin de la prxima instruccin llamado contador de programa. Arquitecturas No convencionales: En Paralelo SIMD: Simple Instruccin Mltiple Dato Se ejecuta ms de una instruccin en forma simultnea. Tiene

una sola unidad de control (UC) que ejecuta una instruccin , pero cuenta con varias unidades de procesamiento (ALU o UP) que depositan sus datos en la memoria, as cada instruccin puede operar con varios datos.

MISD: Mltiples Instrucciones Simple Dato Esta arquitectura posee varias unidades de control con una unidad de procesamiento(ALU o UP), existen distintos flujos de instrucciones y un nico flujo de datos. Esto es un esquema terico sin aplicacin.

MIMD: Mltiple Instruccin, Mltiple Dato: Tenemos varias unidades de control con varias unidades de ejecucin

Concepto de Acople(MIMD) Las computadoras MIMD se clasifican en dos grupos: Multi-computadoras: diversas computadoras autnomas que pueden o no comunicarse entre s. Multiprocesadores: controlado por un SO que provee la interaccin entre los procesadores y sus programas a nivel de dato , proceso y archivo. Existen dos modelos diferentes para los sistemas multiprocesadores: Fuertemente acoplados: este tipo de sistemas se comunica a travs de una memoria comn, puede existir cache en cada procesador. Existe una compleja conectividad entre los procesadores y la memoria ya que uno de los problemas este tipo de sistemas es la concurrencia. Cuando la interaccin entre las tareas es alta son muy eficientes sin perder performance Dbilmente acoplados: cada procesador tiene un conjunto de dispositivos de E/S y una gran memoria local a donde accede para obtener la mayora de sus datos e instrucciones. Se comunican a travs de un sistema de transferencia de mensajes. Se los conoce tambin como Sistemas Distribuidos. Cuando la interaccin entre las tareas es baja son muy eficientes. En un sistema fuertemente acoplado, el retraso que se experimenta al enviar un mensaje de una computadora a otra es corto y la tasa de transmisin de los datos, es decir, el nmero de bits por segundo que se puede transferir, es alta. Esto se debe a que estos sistemas se comunican a travez de una memoria comun. En un sistema dbilmente acoplado ocurre lo contrario: el retraso de los mensajes entre las mquinas es grande y la tasa de transmisin de los datos es baja. Paralelismo con una sola CPU Salvo en el caso de la SISD , las dems arquitecturas permiten el paralelismo por la simple utilizacin adecuada de las estructuras del hardware. Procesamiento en paralelo es un trmino utilizado para denotar operaciones simultaneas en la CPU con el fin de aumentar la velocidad de computo. En las Arquitecturas en paralelo o no convencionales, se utilizan tcnicas de paralelismo que se consiguen multiplicando los componentes de hardware o tecnicas de pipeline. Un computador pipeline hace operaciones superpuestas para explotar el paralelismo temporal. Un Array procesador usa ALUs multiples sincronizadas para lograr paralelismo espacial. Un sistema multiprocesador logra paralelismos asincrnicos, a travs de un conjunto de procesadores que interactan y comparten recursos. Pipelining: Se divide la tarea en una secuencia de subtareas cada una de las cuales se ejecutan en una etapa de hardware especializada que trabaja concurrentemente con otras de las etapas del pipeline (Similar a la cinta de montaje). Esto aumenta el Troughput de forma considerable. Computadoras Pipeline Hay 4 etapas o pasos principales de ejecucin de un proceso: IF: Levantar instruccin ID: identificar la operacin OF: Levantar los operadores EX: Ejecutar la operacin

La idea de un computador pipeline es que las instrucciones sucesivas se ejecuten de forma superpuesta. EJEMPLO DE COMPUTADOR SIN PIPELINE: ETAPAS EX OF ID IF P1 P1 P1 P1 P2 P2 P3 P2 P3 P2 P3 P3

Un computador sin pipeline le toma 4 ciclos de pipeline completar una instruccion EJEMPLO DE COMPUTADOR CON PIPELINE ETAPAS EX OF ID IF P1 P1 P2 P1 P2 P3 P1 P2 P3 P4 P2 P3 P4 P5 . P10 P3 P4 P5 P10 P4 P5 . P10 P5 . P10 TIEMPO Un pipeline produce un resultado de salida por cada ciclo luego de cargado el pipeline. El ciclo de instruccin ha sido reducido a un cuarto del tiempo de ejecucin original por medio de las ejecuciones superpuestas. Hay ciertas dificultades que impiden al pipeline operar con su maxima velocidad. Los segmentos pueden tomar tiempos diferentes para cumplir su funcion sobre los datos que llegan. Algunos pasos son saltados por ciertas instrucciones.(por ejemplo una instruccin no necesita un clculo de direccin de un operando). Arquitectura a nivel de software (DATA FLOW) La idea principal al realizar un sistema es alcanzar velocidad y performance ms alta posible, esto se logra mediante dos medios: 1) Explotando las necesidades tecnologias de los componentes 2) Adecuando estructuras y organizaciones del computador. El modelo computo de Von Neumann parece inapropiado debido a que es un modelo serial , muchos lenguajes y arquitecturas como SISD, SIMD o MIMD esta basadas en este modelo. Es necesario contar con un modelo de sistema de computador que permita expresar algoritmos de un paralelismo natural. Uno de estos modelos es el DATAFLOW tambin conocido como SISTEMA DATADRIVEN. La diferencia entre el modelo de cmputo DATA FLOW y el modelo convencional de Von Neumann (CONTROL FLOW) se basa en qu considera cada modelo como lo decisivo en el proceso de cmputo: El modelo CONTROL FLOW, es la secuencia de instrucciones El programa se almacena en la memoria como un secuencia de instrucciones, el flujo de control del programa(curso) est dado por la secuencia de instrucciones. No es posible ejecutar cualquier instruccin hasta que todas las instrucciones previas hayan sido ejecutadas por lo tanto puede haber instrucciones que pese a estar listas(estar disponibles sus operandos) para ejecutar deban esperar. - El modelo DATA FLOW, es la disponibilidad de los datos El curso del computo esta controlado por el flujo de datos en el programa. Una instruccin puede ejecutarse solo cuando estan disponibles todos sus operandos. La precedencia de una instruccin respecto a otra esta dada exclusivamente por la estructura natural del algoritmo y no depende de la ubicacin de las instrucciones en memoria.

Tipos de operadores Los instrucciones combinativas tienen dos input y un output. Pueden ejecutar operaciones como OR y AND. Las instrucciones separativas tienen dos input y un output. Realizan una copia.

UNIDAD II: Sistemas Operativos Introduccin, evolucin de los Sistemas Operativos. Tipos de Sistemas Operativos, Sistemas Operativos combinados. Estructura de los S.O. Objetivo de los S.O SISTEMA OPERATIVO Es un programa que actua como interfase entre el usuario de una computadora y el hardware de la misma. Este se utiliza para ADMINISTRAR LOS RECURSOS El requisito principal es dar buenos tiempos de respuesta y compartir equitativamente los recursos del sistema entre todos los usuarios. Es un programa con rutinas de control sobre todo el hardware, que se instala entre el hardware y los programas, proporcionandoles a estos ultimos facilidades para conseguir acceder a los recursos del sistema, tales como archivos y dispositivos de entrada/salida. Un SO actua como gestor de los dispositivos de E/S y dems recursos, asignandolos a los usuarios y programas en el orden y tiempo que el decida. EVOLUCIN DE LOS S.O. Primera Generacin 1945-1955 Tecnologa de tubos de vaco. Programacin en lenguaje mquina, teclado hexadecimal(se cargaba instruccin por instruccin y se observaban los resultados una a una ). Lento y por ende exclua a programas medios y largos. Avances: Se empiezan a emplear para las entradas tarjetas perforadas y para salidas cintas de papel. Se crea el programa cargador: cargaba en memoria programas y datos (Primer esbozo de SO). El usuario colocaba las tarjetas perforadas con el programa (ya codificado en lenguaje mquina) y con los datos. Las memorias de la primera generacin El almacenamiento se lograba con un tambor que giraba rpidamente, sobre el cual un dispositivo de lectura/escritura colocaba marcas magnticas. Segunda Generacin 1955-1965 Con la introduccin del transistor cada una de las tareas se poda realizar con mayor velocidad y precisin. Esto permiti empezar a vender computadoras. Se utilizaban para clculos cientficos y de Ingeniera. Lenguajes utilizados: FORTRAN y ASSEMBLER. Avances: Se crean mquinas capaces de leer tarjetas perforadas y escribir la informacin sobre cintas. Luego el procesador (otra mquina) ejecutaba el programa con los datos desde estas cintas y volcaba los resultados sobre otras cintas. Por ltimo otra mquina lea estas cintas y emita una salida por impresora. Eran necesarias 3 mquinas para poder procesar, generalmente se tenan en empresas diferentes debido a los costos. Los tiempos de transporte y de carga de cintas eran mayores que el T de procesamiento. Entonces las operaciones de E/S eran el cuello de botella. Solucin: Agrupar trabajos afines en una misma cinta. Colocar dos mquinas lectoras de tarjetas y dos lectores de cinta por procesador. Agrupar trabajos afines genera otro tipo de procesamiento denominado: PROCESAMIENTO POR LOTES. El SO se encargaba de coordinar estas tareas y se lo denomin: SISTEMA OPERATIVO POR LOTES. Pona en accin a los dispositivos de cinta. Transfera de estas, los datos y programas a la memoria. Arrancaba el interprete. Coordinaba la ejecucin. Pona en accin al dispositivo de salida. Una parte de este sistema se lo mantena en memoria y se lo denomin: MONITOR DE LOTES.

Para mejorar los tiempos se introducen dos nuevos conceptos: Buffering: elemento amortiguador entre las E/S y el procesador, es bsicamente un acumulador. Almacenamiento magntico Discos: reemplaza a cintas. Permita cambiar de un programa a otro con slo cambiar manualmente la posicin de la cabeza lectora. Estos dos avances dan origen a un nuevo concepto: SPOOLING: operaciones perifricas simultneas en lnea. Significa tener varios trabajos distintos en disco y una cola de trabajos esperando para ser ejecutados. Esto le permite al procesador elegir que programa ejecutar para aumentar la utilizacin de la CPU. En trabajos en cinta o tarjeta, no es posible ejecutar trabajos en distinto orden que el de llegada. Surge la posibilidad de hacer una planificacin de trabajos. Las memorias de la segunda generacin Las computadoras de la segunda generacin utilizaban redes de ncleos magnticos en lugar de tambores giratorios para el almacenamiento primario. Estos ncleos contenan pequeos anillos de material magntico, enlazados entre s, en los cuales podan almacenarse datos e instrucciones. Tercera Generacin 1965-1980 Con la introduccin de los circuitos integrados, sumado a la aparicin de discos, se permite integrar en una sola Mquina las E/S con el proceso. Equipos de menor costo y mejor performance. El procesamiento por lotes dedica recursos a un solo programa a la vez. Pero basados en el principio que la mayora de los programas oscilan entre fases de computacin intensiva y de intensiva E/S, esto implica la necesidad de tener varios programas, concurrentes, en memoria. A esto se lo denomina: MULTIPROGRAMACIN. La multiprogramacin implica: Mecanismos de proteccin. De manera de proteger cada trabajo contra la intrusin y daos de los otros. Manejo de interrupciones del sistema, originadas por las peticiones de los programas de necesidad de E/S, datos, memoria, etc. Cuarta Generacin 1980-1990 Circuitos integrados a gran escala permite fabricacin de computadoras personales. Integran la mayora de los conceptos anteriormente vistos. Se desarrollan a nivel de hardware y software sistemas con entornos amigables al usuario, es decir se mejora el acceso a los recursos. Debido a que el hardware se hace de uso general, el software se afirma en el concepto de multiprogramacin. Un avance se da a mediados de los 80 con el desarrollo de redes de computadoras personales que corren S.O. en red con el concepto de: Multiprogramacin, Multiusuario En 1977 aparecen las primeras microcomputadoras, Apple Computer, Radio Shack, Commodore Business Machines. IBM se integra al mercado de las microcomputadoras con su Personal Computer, de donde les ha quedado como sinnimo el nombre de PC. Que incluye un sistema operativo estandarizado, el MS- DOS (MicroSoft Disk Operating System). Las memorias de la cuarta generacin : Se reemplazan las memorias con ncleos magnticos, por las de chips de silicio Actual Generacin Desde 1990 Surgen conceptos como Inteligencia artificial, sistemas expertos, redes neuronales, teora del caos, algoritmos genticos, fibras pticas, telecomunicaciones, etc., son parmetros que marcan la 5ta generacin. Dos grandes avances tecnolgicos: La creacin en 1982 de la primera supercomputadora con capacidad de proceso paralelo Anuncio por parte del gobierno japons del proyecto "quinta generacin" que aplicara frustradamente lo que llamamos Inteligencia Artificial. Se introducen los conceptos de cache.

Aparecen las CPU de varios ncleos, por lo cual se potencia el concepto de hilos y multihilos. Se disminuye el tiempo de acceso a disco mediante la creacin de discos de estado slido. En cuanto a los SO: Se afianza el desarrollo de los mismos orientndolos a usuarios, haciendo entornos amigables y de fcil utilizacin. Se brindan libreras de fcil acceso para que programadores puedan utilizar los recursos de hardware sin tener que conocer los aspectos tcnicos de los mismos. EVOLUCION DE LOS S.O. MS-DOS La razn de su continua popularidad se debi al aplastante volumen de software disponible y a la base instalada de computadoras con procesador Intel. Cuando Intel liber el 80286, DOS se hizo tan popular y firme en el mercado que DOS y las aplicaciones DOS representaron la mayora del mercado de software para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los productos tuvieran xito, y la "compatibilidad IBM" significaba computadoras que corrieran DOS tan bien como las computadoras IBM lo hacan. Interfaz de usuario era por medio de una lnea de comando. Permita manejar directamente hasta 1 MB de la RAM OS/2 Despus de la introduccin del procesador Intel 80286, IBM y Microsoft reconocieron la necesidad de tomar ventaja de las capacidades multitarea de esta CPU. Se unieron para desarrollar el OS/2, un moderno SO multitarea para los microprocesadores Intel. Es un sistema operativo de multitarea para un solo usuario que requiere un microprocesador Intel 286 o mejor . Permita manejar directamente hasta 16 MB de la RAM. Su era un entorno muy complejo que requera 4 MB de la RAM para funcionar. UNIX SO multiusuario y multitarea, que corre en diferentes computadoras, desde supercomputadoras, Mainframes, Minicomputadoras, computadoras personales y estaciones de trabajo. Fue creado a principios de los setentas por los cientficos en los laboratorios Bell. Unix es ms antiguo que todos los dems SO de PC MACINTOSH La Macintosh es una mquina netamente grfica. No existe una interfaz de lnea de comando. Se basan en la familia de microprocesadores de Motorola, usan la arquitectura de Bus de 32 bits. Incluan un entorno grfico. Precursores.

ESTRUCTURA DEL SO Nivel 1: formado por circuitos electrnicos, donde los objetos tratados son registros, celdas de memoria y puertas lgicas. Las acciones son poner a 0 una puerta lgica o leer una posicin de memoria Nivel 2: Conjunto de instrucciones del procesador. Acciones: sumar, restar, carga, almacenamiento. Nivel 3: Aade el concepto de procedimiento o subrutina mas las operaciones de call/return. Nivel 4: Introduce las interrupciones, que permiten al procesador guardar el contexto actual e invocar una rutina de tratamiento de interrupciones Estos cuatro primeros niveles no son parte del SO, sino que constituyen el hardware del procesador. Sin embargo algunos elementos del SO se empiezan a mostrar en estos niveles, por ejemplo las rutinas de tratamiento de interrupciones. Nivel 5: Se introduce la nocin de un proceso como un programa en ejecucin. Incluye el suspender procesos y continuar procesos. Esto requiere guardar los registros de hardware de manera de poder dar inicio a otro proceso. Se incluye tambin mtodos de sincronizacin entre procesos, para cuando ellos necesitan comunicarse entre s. Esto implica la sealizacin y semforos. Nivel 6: Trata los dispositivos de almacenamiento secundario del computador. En este nivel se dan las funciones para posicionar las cabezas de lectura / escritura y la trasferencia real de bloques. Delega al nivel 5 aspectos relacionados a la planificacin de la operacin y la notificacin al proceso solicitante. Niveles ms altos se ocupan de la direccin en el disco de los datos requeridos. Nivel 7: Crea un espacio de direcciones lgicas para los procesos. Organiza el espacio de direcciones virtuales en bloques que se mueven entre la memoria principal y la secundaria. Cuando un bloque de memoria necesario no se encuentra en la memoria principal, este nivel realiza la peticin al nivel 6. Hasta el nivel 7, el SO trata con recursos no compartibles entre procesos. A decir, dos procesos no pueden compartir la misma posicin en disco ni en memoria. A partir del nivel 8, el SO trata con objetos externos, como dispositivos perifricos, redes de computadoras. Los objetos de estos niveles, son objetos lgicos con nombre que pueden compartirse entre procesos. Nivel 8: Trata con la comunicacin de informacin y mensajes entre los procesos. Es un mtodo ms rico que la sealizacin del nivel 5. Utiliza tuberas o pipe, es un canal lgico para el flujo de datos entre procesos. Un pipe se define por su salida de un proceso y su entrada en otro proceso. Nivel 9: Da soporte al almacenamiento a largo plazo en ficheros con nombre. Son entidades abstractas y de longitud variable, en contraposicin del Nivel 6, donde el almacenamiento se trata a nivel pista, sectores y bloques de tamao fijo. Nivel 10: Proporciona acceso a los dispositivos externos utilizando interfaces estndar. Nivel 11: Responsable para mantener la asociacin entre los identificadores externos e internos de los recursos y objetos del sistema. El identificador externo es un nombre que puede utilizar una aplicacin o usuario. El identificador interno es una direccin de otro identificador que puede utilizarse por parte de los niveles inferiores del SO para localizar y controlar un objeto. Estas asociaciones se mantienen en un directorio. Las entradas no solo incluyen la asociacin entre identificadores internos/externos, sino tambin caractersticas como los derechos de acceso. Identificador externo: directorio, carpetas. Identificador interno: archivos (nivel 9) Existe una tabla relacional donde figura para cada identificador externo, los identificadores internos que contiene. Nivel 12:Proporciona una utilidad completa para dar soporte a los procesos. En el nivel 5 solo se mantiene los contenidos de los registros del procesador mas la lgica de planificacin. En el nivel 12, se da el espacio de direcciones virtuales de los procesos, una lista de objetos y procesos con los cuales puede interactuar, parmetros pasados al proceso en la creacin, y toda otra caracterstica que pudiera utilizar el SO para controla el proceso.

Nivel 13: Proporciona una interfaz del SO al usuario. Se denomina shell (caparazn), porque separa al usuario de los detalles del SO y lo presenta como una coleccin de servicios. El shell acepta mandatos de usuario, los interpreta, y crea y controla los procesos que necesita para su ejecucin. SERVICIOS DEL S.O. Ejecucin de programas: Cargarlos, darles el control. Determinar su fin normal o anormal. Operaciones de E/S: El programa de usuario no puede ejecutar operaciones de E/S directamente, el SO provee los medios para hacerlo. Manipulacin del Sistema de Archivos: Para que programas pueden leer y escribir archivos. Se hace por medio del sistema de archivos Deteccin de errores: Pueden ocurrir en CPU, memoria, E/S o en el programa. Por cada error, el SO tiene un tipo de accin diferente. Administracin de recursos: Cuando hay varios usuarios o programas concurrentemente, el SO debe administrar los recursos a c/u, tales como CPU, memoria, dispositivos, etc. Accounting: Contabilizar que recursos son los usados por cada usuario. Usados con fines estadsticos para configurar el sistema. Proteccin: Cuando se ejecutan distintos trabajos en forma simultnea, uno no debe poder interferir con los otros. Los servicios de los Sistemas operativos son provistos de 2 formas: 1. Llamadas al Sistema El nivel ms fundamental de los servicios se maneja por medio de las llamadas al supervisor o ncleo (Kernel) del SO. Estas llamadas proveen la interface entre un programa en ejecucin y el SO. Las llamadas se agrupan en 4 grupos: Control de procesos: Find, dump. Carga de otro proceso (Load). Crear procesos, terminarlos. Esperar un tiempo. Esperar por un evento o una seal. Manipulacin de archivos: Crear y borrar archivos. Apertura y cierre de archivos. Lectura y escritura. Manipulacin de dispositivos: Pedir un dispositivo. Liberar un dispositivo. Leer y Escribir. Mantenimiento de la informacin: Fecha, Hora. Atributos de procesos, archivos o dispositivos. La forma de hacer todas las llamadas es por medio de Interrupciones o como llamadas a un Server.

2. Programas del sistema La mayora de los SO proveen una gran cantidad de programas para resolver problemas comunes y otorgar un entorno ms conveniente para la construccin y ejecucin del programa. Los programas del sistema se dividen en varias categoras:
Manipuladores de archivos: crear, copiar, renombrar, imprimir, listar, manipular y hacer vuelcos de archivos y directorios. Informacin de estado: pedir fecha, hora, cantidad de memoria, cantidad de disco, nmero de usuarios, etc. Modificaciones de archivos: Editores de texto. Soporte para lenguajes de programacin: compiladores, assemblers, interpretes. Carga y ubicacin de programas: Cargadores absolutos, Reubicables, Linkeditores, etc Programas de aplicacin

UNIDAD III: Administracin del Procesador Introduccin, Administracin de Memoria, CPU, Entrada/Salida, Informacin. Administracin del Procesador, relacin entre Procesos y Programas. Tablas y diagramas de transicin. Bloque de control de proceso, rutinas de administracin del Procesador, algoritmos de planificacin: FIFO, El ms corto primero, Round Robin. Medicin de perfomances. Sincronizacin entre procesos, semforos, semforos con contador. CPU Procesador : Controla el funcionamiento del computador y realiza sus funciones de procesamiento de datos Cuando hay un solo procesador se lo denomina unidad central de proceso UC: examina la instruccin y da las rdenes correspondientes para su ejecucin. ALU: si en la instruccin interviene un clculo matemtico o decisin lgica UC ordena a la ALU que ejecute la funcin. CP: contador de programa, contiene la direccin de la prxima instruccin. RI: registro de instrucciones, contiene la ltima instruccin leda RDIM: registro de direccin de memoria, especifica la direccin de memoria de la siguiente lectura o escritura. RDAM: registro de datos de memoria, contiene los datos que se van a escribir en memoria. RDI E/S: registro de direccin de entrada /salida, especifica el dispositivo de E/S. RDA E/S: registro de datos de entrada/salida, permite el intercambio de datos entre un dispositivo y el procesador. Administracin de CPU Es la tarea ms importante de los SO. La CPU tiene como funcin el control y la ejecucion de los procesos, Una buena y eficiente administracion se basa en dos aspectos fundamentales: THROUGHPUT (Cantidad de procesos por unidad de tiempo que se pueden ejecutar) TURNAROUND TIME (Tiempo de respuesta de los procesos) La idea de repartir el recurso del procesador entre distintos procesos, se debe a que tenemos la posibilidad de utilizar el tiempo de procesador abandonado por un proceso para que lo pueda usar otro. Compartimos el tiempo del procesador para evitar as tiempos muertos originados por procesos que requieren E/S. Para obtener el Turnaround debemos sumar los tiempos de los procesos y dividirlos por la cantidad de procesos. Es decir que el tiempo de respuesta es tiempo promedio en el cual el sistema dar respuesta. Hay una mejora sustancial del tiempo de respuesta en sistemas monoprocesador multitarea respecto de monoprocesador monotarea. A este tiempo se le suma el tiempo del SO en salvar contextos y cargar otro proceso: overhead (sobrecarga).

Programa secuencia de instrucciones. Proceso un programa en ejecucin, tambin podemos definirlo como la entidad de un programa ejecutado en un computador. Otra definicin el proceso consiste en leer el programa, obtener los datos necesarios y ejecutarlo. - Multiprogramacin < > Multiprocesamiento - Multiprogramacion: Mas de un programa residente en memoria - Multiprocesamiento: Mas de un procesador Tabla de procesos y diagrama de transicin de estados: Para poder administrar convenientemente el procesador sera necesario

llevar una tabla con el estado en que se encuentran los distintos procesos. (Base de datos del Sistema Operativo) Los procesos se van a encontrar en tres estados: - Ejecucin: Proceso ejecutndose - Listo: Proceso listo para entrar en ejecucin - Bloqueado: Proceso detenido por algn motivo - que el procesador no puede atenderlo. Cada flecha determina los algoritmos del Sistema Operativo, esto se comportaran dependiendo del tipo de politica de asignacin. Como hemos dicho anteriormente el estado de un proceso es el lugar donde se ubica un proceso, tanto sea de manera lgica como de manera fsica. La ubicacin lgica est dada por la base de datos (Tabla de control de Proceso) que lleva el sistema operativo de los procesos. Esta tabla contiene los bloques de control de proceso con todo lo referente proceso . La ubicacin fisica esta dado por el lugar fisico que ocupa el proceso. Estos pueden ser Memoria RAM o Microprocesador. Bloque de control de procesos(BCP) Es un registro que se lleva por proceso toda la informacin referida al proceso en cuestin de forma que posible interrumpir el proceso cuando est corriendo y posteriormente restaurar la ejecucin como si no hubiera habido interrupcin. Datos necesarios para que el SO pueda controlar el proceso. Los elementos que contiene son ID de proceso: nico para distinguirlo del resto de los procesos. Estado: si el proceso est en ejecucin o no. Prioridad: Nivel de prioridad relativo al resto de los procesos. CP: contador de programa: Direccin de la siguiente instruccin que se ejecutara. Puntero a memoria: cada proceso contiene una o ms pilas LIFO. Datos de contexto: Estos son los datos que estn presentes en los registros del procesador cuando el proceso est corriendo. Informacin del estado de E/S: Incluye peticiones pendientes de E/S, dispositivos asignados al mismo, una lista de fichero en uso por el mismo PSW: Program Static Word , el tamao de una palabra hace referencia al nmero de bits contenidos en ella. La mayora de los registros en un ordenador normalmente tienen el tamao de la palabra. El valor numrico tpico manipulado por un ordenador es probablemente el tamao de palabra. La cantidad de datos transferidos entre la CPU del ordenador y el sistema de memoria a menudo es ms de una palabra. Los ordenadores modernos normalmente tienen un tamao de palabra de 16, 32 64 bits. Tiempo usado de CPU Informacin de auditoria Fin de un proceso total o temporal Las causas posibles de abandono son: - Fin normal (proceso completo) - Lmite de tiempo excedido - Memoria no disponible - Violaciones de frontera - Error de proteccin - Error aritmtico - Fallo de E/S - Instruccin no valida o privilegiada - Terminacin o solicitud del proceso padre - Error (Fin Anormal) - Necesita recursos E/S, etc. (Pasa a Bloqueado) - Desalojo (Por algn proceso de mayor prioridad pasa a listo) Rutinas de administracin del procesador El sistema operativo es un programa construido modularmente, esto hace que dentro del mismo existan rutinas que se encargan de distintas actividades las cuales son disparadas por el mismo SO. Modelo de 2 estados El modelo de estados ms simple es el de dos estados. En este modelo, un proceso puede estar ejecutndose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecucin.

En algn momento el proceso que se est ejecutando pasar al estado No ejecucin y otro proceso se elegir de la lista de procesos listos para ejecutar para ponerlo en estado Ejecucin.

De esta explicacin se desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en memoria. Adems los procesos que no se estn ejecutando deben guardarse en algn tipo de cola mientras esperan su turno para ejecutar. Modelo de 5 estados En este modelo los estados Bloqueado y Listo tienen ambos una cola de espera. Cuando un nuevo proceso es admitido por el sistema operativo, se sita en la cola de listos

Los cinco estados de este diagrama son los siguientes:

Ejecucin: el proceso est actualmente en ejecucin. Listo: el proceso est listo para ser ejecutado, slo est esperando que el planificador as lo disponga. Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como una operacin de Entrada/Salida. Nuevo: El proceso recin fue creado y todava no fue admitido por el sistema operativo. En general los procesos que se encuentran en este estado todava no fueron cargados en la memoria principal. Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque termin o por algn fallo, como un error de proteccin, aritmtico, etc.

Los procesos para un instante dado, se encontraran el cualquiera de esos cinco estados, y salvo en el de ejecucin, los dems son estados estticos. Las rutinas del sistema operativo se encargan de lograr dicha trancision de los procesos dentro de los distintos estados. Esas rutinas o polticas de asignacin son: - Planificador de Trabajo: Se encarga de ingresar los procesos desde el exterior. Ademas se comunica con el resto de los administradores para ir solicitando los recursos y tambien se encarga de la liberacin de los procesos. - Planificador del Procesador: Se encarga de administrar la cola de Listos, es decir la inspecciona y selecciona, de acuerdo a algun criterio, cual de los procesos que ah se encuentran har uso el procesador. - Controlador de Trfico: Se encarga del manejo de las tablas, cuando un proceso pide un servicio sobre un recurso (Ej: E/S) cambiar de estado de Ejecucin a estado Bloqueado. - Dispatcher: Se encarga de poner en ejecucin a los procesos, sea carga en el procesador el contexto del proceso a procesar.

Procesos suspendidos SWAPPING

Una de las razones para implementar el estado Bloqueado era poder hacer que los procesos se puedan mantener esperando algn suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho ms lentas estas operaciones, puede suceder que en nuestro modelo de cinco estados todos los procesos en memoria estn esperando en el estado Bloqueado y que no haya ms memoria disponible para nuevos procesos. El intercambio se lleva a cabo moviendo una parte de un proceso o un proceso completo desde la memoria principal al disco, quedando en el estado Suspendido. Despus del intercambio, se puede aceptar un nuevo proceso o traer a memoria un proceso suspendido anteriormente. El problema que se presenta ahora es que puede ser que si se decide traer a memoria un proceso que est en el estado Suspendido, el mismo todava se encuentre bloqueado. Slo convendra traerlo cuando ya est listo para ejecutar, esto implica que ya aconteci el suceso que estaba esperando cuando se bloque. Para tener esta diferenciacin entre procesos suspendidos, ya sean listos como bloqueados, se utilizan cuatro estados: Listo, Bloqueado, Bloqueado y suspendido y Listo y suspendido. Algoritmos de planificacin Dichas politicas de asignacin son fundamentales para la definicion del rendimiento del sistema. Esto quiere decir que los criterios para seleccionar un algoritmo de asignacion del procesador deben responder a las siguientes pautas: - Utilizacin del Procesador: 100% - Throughtput: Cantidad de trabajos por unidad de tiempo. - Tiempo de ejecucin: Tiempo desde que ingresa un proceso hasta que termina. - Tiempo de espera: Tiempo de permanencia en Listo. - Tiempo de respuesta: Tiempo que tarda en obtenerse un resultado. Tipos de algoritmos de Planificacin FIFO (First in, First out): Es la ms sencilla, los procesos se ejecutan en el orden que llegan, es decir toma al primero que este en la cola de listo continuado con el siguiente. El proceso abandona voluntariamente el uso del procesador (se termina o se bloquea). Desventaja: si en la cola hay un proceso muy largo, los dems tendrn mucho tiempo de espera aumentara el Troughput. MS CORTO PRIMERO (JSF): JOB SHORT FIRST Es la que mas se utiliza cuando queremos ordenar los procesos en funcion del tiempo. Ordena los procesos de acuerdo al tiempo que necesitan ser procesados, es decir la cola de listo se reordena cada vez que ingresa un proceso de acuerdo a las rafagas que va a emplear el procesador para cada proceso. Es el algoritmo ms eficiente. Dificultad de conocer que tan largo o tan corto es el proceso. Desventaja: se castiga a los procesos largos que podran no ejecutarse nunca.(Inanicin) No se tiene en cuenta el tiempo total de ejecucion sino el tiempo de rfaga. No se conoce cuanto dura una rafaga sino que se basa en estadisticas y promedio para calcular cuanto duraria el proceso. NOTA: Rfaga o Quantum es el tiempo continuo del uso del procesador para un solo proceso. MS CORTO PRIMERO (Con desalojo):

El desalojo en esta politica se da por: - Llego un proceso calificado como mas corto que el que esta en ejecucion - Llego un proceso cuyo tiempo es menor al tiempo remanente. Dificultad de conocer que tan largo o tan corto es el proceso. Desventaja: se castiga a los procesos largos que podran no ejecutarse nunca.(Inanicin) ROUND ROBIN: Polticas con derecho preferente, pues abandonan el recurso por expiracin del tiempo. Se divide el tiempo de la CPU en fracciones o cuantos que se asigna a los peticionarios. Ningn proceso puede ejecutarse por ms de una fraccin de tiempo, en la que los dems procesos estn esperando en la cola de listos. Si un proceso necesita ms de una fraccin de tiempo para completar su ejecucin despus de agotar su cuanto, se lo coloca en la cola de listos para que espere la siguiente asignacin. El punto a determinar es el valor del quantum de tiempo Se utiliza principalmente para sistemas de tiempo compartido y multiusuario. CREACION DE PROCESOS Asignar un Id de proceso nico

Reservar espacio para el proceso: programa y datos, espacio direcciones compartidas y BCP
Inicializar el BCP: Id, CP y punteros de pila. Resto todo en 0. Establecer enlaces apropiados: orden en cola de listos que corresponda. Creacin o expansin de Estructuras de datos: registros de auditora, etc. CAMBIO DE PROCESO:

Interrupciones: reloj, por quantum, E/S , fallo de memoria: falta de pgina/segmento Llamadas al SO: utilizar alguna librera del SO, por ejemplo al abrir un archivo. Por condiciones de error. Ejemplo intento de acceso a un archivo prohibido.

Cambio de modo. Atendemos la interrupcin: Salvamos el contexto del proceso en ejecucin Cargamos la direccin de la primer instruccin del manejador de interrupciones. Cambiamos de modo usuario a modo ncleo.

Un cambio de modo no implica siempre un cambio de proceso, ya que, atendida la interrupcin se puede continuar con la ejecucin del proceso que estaba en ejecucin. Cambio de estado, debemos salvar el estado del procesador esto significa: Actualizar el BCP Mover el BCP a la cola apropiada (listo, bloqueado, listo/suspendido). Seleccionar un nuevo proceso. Actualizar el BCP del proceso elegido y cargarlo en el procesador. Actualizar las estructuras de datos de gestin de memoria. Restaurar el estado del proceso, desde donde haba quedado en su ltima ejecucin.

Interrupciones: De programa: desbordamiento, divisin por cero, fuera de espacio de memoria permitido.

Por temporizador: usado en RR por ejemplo. De E/S: generada por un controlador de E/S para sealar la conclusin normal de una operacin o para indicar error. Por fallo de hardware: error de paridad en memoria, fallo de energa, etc.

Planificacin de colas mltiples Los procesos pueden clasificarse en grupos: Primer plano (interactivos). Segundo plano (por lotes). Podemos usar colas distintas una para cada grupo, con prioridades distintas y algoritmos de planificacin distintos. Cada nuevo proceso se incluir en una cola y permanecer en ella. Debe existir una planificacin entre las colas. Planificacin de colas mltiples con realimentacin:

Adems de incluir varias colas podemos permitir que los procesos cambien de cola. Por ejemplo:

Ir cambiando a los procesos interactivos o de rfagas de CPU cortas a colas de mayor prioridad. Cambiar los procesos de rfagas CPU largas a las colas de menor prioridad. Si un proceso espera demasiado en una cola se puede mover a otra de mayor prioridad (envejecimiento, bloqueo indefinido).

Para definir un planificador de colas mltiples con realimentacin necesitamos:


Concurrencia

El nmero de colas y algoritmo de planificacin para cada una. El mtodo para saber cundo cambiar un proceso a otra cola de mayor o menor prioridad. El mtodo para determinar a qu cola entra un proceso nuevo.

En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el tiempo (Round Robin) para dar apariencia de ejecucin simultnea. Aunque no se consigue un procesado en paralelo real, y aunque se produce una sobrecarga en la CPU por el hecho de tener que cambiar de tarea constantemente, las ventajas de todo esto son muy elevadas. Uno de los grandes problemas que nos podemos encontrar es que el hecho de compartir recursos est lleno de riesgos. Por ejemplo, si dos procesos hacen uso al mismo tiempo de una variable global y ambos llevan a cabo tanto operaciones de lectura como de escritura sobre dicha variable, el orden en que se ejecuten estas lecturas y escrituras es crtico, puesto que se ver afectado el valor de la variable.

Dos tareas se dice que son concurrentes si transcurren durante el mismo intervalo de tiempo. En un PC, el SO pasa el control de la CPU de una tarea a otra cada pocos milisegundos, algo conocido como cambio de contexto. Al realizar los cambios de contexto en intervalos de tiempo muy cortos, el usuario tiene la percepcin de que las distintas tareas se ejecutan en paralelo (algo que, obviamente, solo sucede si disponemos de mltiples procesadores). Tipos de concurrencia Concurrencia aparente: hay ms procesos que procesadores. Los procesos se multiplexan en el tiempo. Pseudoparalelismo.

Concurrencia real: cada proceso se ejecuta en un procesador. Se produce una ejecucin en paralelo. Paralelismo real.

Ventajas de la ejecucin concurrente

1. Facilita la programacin. Diversas tareas se pueden estructurar en procesos separados.


Ejemplo: Servidor Web: Un proceso encargado de atender a cada peticin.

2. Acelera la ejecucin de clculos. Divisin de clculos en procesos ejecutados en paralelo.


Ejemplos: Simulaciones, Mercado electrnico, Evaluacin de carteras financieras.

3. Mejora la interactividad de las aplicaciones. Se pueden separar las tareas de procesamiento de las tareas de
atencin de usuarios. Ejemplo: Impresin y edicin.

4. Mejora el aprovechamiento de la CPU. Se aprovechan las fases de E/S de una aplicacin para procesamiento
de otras. Tipos de procesos concurrentes Independientes: Procesos que se ejecutan concurrentemente pero sin ninguna relacin. No necesitan comunicarse. No necesitan sincronizarse. Ejemplo: Dos intrpretes de mandatos de dos usuarios ejecutados en distintos terminales. Cooperantes: Procesos que se ejecutan concurrentemente con alguna interaccin entre ellos. Pueden comunicarse entre s. Pueden sincronizarse. Ejemplo: Servidor de transacciones organizado en proceso receptor y procesos de tratamiento de peticiones. Interacciones entre procesos Acceso a recursos compartidos: Procesos que comparten un recurso. Procesos que compiten por un recurso. Ejemplo: Servidor de peticiones en la que distintos procesos escriben en un registro de actividad (log). Comunicacin: Procesos que intercambian informacin. Ejemplo: Receptor de peticiones debe pasar informacin a proceso de tratamiento de peticin. Sincronizacin: Un proceso debe esperar a un evento en otro proceso. Ejemplo: Un proceso de presentacin debe esperar a que todos los procesos de clculo terminen. Concurrencia: compartiendo recursos

Un problema fundamental a la hora de compartir recursos ocurre cuando dos o ms procesos acceden un recurso compartido sin control, de manera que el resultado combinado de este acceso depende del orden de llegada.

HILOS Subprocesos de un proceso. La memoria y los recursos son asignados a los procesos. Todos los hilos de un proceso comparten la memoria y los recursos asignados a dicho proceso. Cada hilo tiene un contexto diferente Puede decirse que el recurso CPU no es compartido. Cada hilo tiene una pila diferente.

Los hilos de un proceso pueden acceder a datos comunes. SO mantiene varios hilos de ejecucin dentro de un mismo proceso. MS-DOS soporta un solo hilo. UNIX soporta mltiples procesos de usuarios, pero slo un hilo por proceso. Windows (a partir del 2000), Solaris, Linux, Mach, y OS/2 soportan mltiples hilos.

Beneficios de los hilos

Se tarda menos tiempo en crear un nuevo hilo en un proceso existente. Se tarda menos tiempo en terminar un hilo que un proceso. Se tarda menos tiempo en cambiar entre dos hilos de un mismo proceso. Los hilos de un mismo proceso comparten recursos (memoria, archivos, )


Condicin de carrera

pueden comunicarse entre s sin invocar al ncleo (no necesidad de proteccin) coordinacin es ms rpida (vs. procesos, que deben enviarse msgs.) aumenta eficiencia

Al pasar de tener un solo hilo en el que la ejecucin de un programa es secuencial a tener varios en los que el programa y sus tareas se procesan de forma pseudo-paralela o incluso paralela, no podemos garantizar ningn orden concreto en la ejecucin de los procesos, es decir, su comportamiento es pseudo aleatorio. Cuando un programa o sistema en tiempo real se distribuye en diferentes tareas, surge la necesidad de controlar la coherencia de la informacin que maneja cada proceso as como la que es compartida por todos. Las acciones que ejecuta el procesador no son atmicas, es decir, pueden dividirse. De esta forma una simple asignacin x=y; puede llegar a componerse de varias instrucciones en ensamblador que pueden no ser ejecutadas de forma secuencial con una probabilidad ms alta de la que nos gustara.

Es decir, todas las instrucciones en un lenguaje de programacin imperativo no garantizan su total ejecucin en un periodo de tiempo dado. El sistema operativo o cualquier interrupcin ajena al sistema puede ocasionar la ruptura del flujo normal de ejecucin y es normal y habitual que esto ocurra. Por tanto existe un problema: la informacin compartida por los procesos ligeros de un programa puede presentar problemas serios de coherencia ya que no se garantiza la integridad de los datos cuando el recurso compartido no tiene control. Solucin Impedir que ms de un proceso acceda simultneamente a las variables compartidas. Esto se logra mediante la Exclusin Mutua. Consiste en que un solo proceso excluye temporalmente a todos los dems para usar un recurso compartido de forma que garantice la integridad del sistema. Exclusin Mutua. Los algoritmos de exclusin mutua (comnmente abreviada como mutex por mutual exclusion) se usan en programacin concurrente para evitar el uso simultneo de recursos comunes, como variables globales, por fragmentos de cdigo conocidos como secciones crticas. Seccin crtica Se denomina as, en programacin concurrente, a la porcin de cdigo de un programa de computador en la cual se accede a un recurso compartido (estructura de datos o dispositivo) que no debe ser accedido por ms de un hilo en ejecucin. La seccin crtica puede ser utilizada en dispositivos para asegurarse de que un recurso compartido, por ejemplo, una impresora, puede ser accedida por un solo proceso a la vez. La seccin crtica puede ser utilizada en datos para asegurarse de que una variable compartida, puede ser accedida por un solo proceso a la vez.

La aplicacin de la exclusin mutua crea dos problemas de control adicionales: Interbloqueo e Inanicin. INTERBLOQUEO: considere 2 procesos, P1 y P2, y dos recursos R1 y R2. suponga que cada proceso necesita acceder a ambos recursos para realizar parte de su funcin. Es posible encontrar la siguiente situacin: el sistema operativo asigna R2 a P1 y R1 a P2. Cada proceso est esperando por uno de los dos recursos. Ninguno liberar el recurso que ya posee hasta haber conseguido el otro recurso y realizado la funcin que requiere ambos recursos. Los dos procesos estn INTERBLOQUEADOS. INANICIN : Suponga que tres procesos (P1,P2,P3) requieren todos acceso peridico al recurso R. Considere la situacin en el cual P1 est en posesin del recurso y P2 y P3 estn ambos retenidos, esperando por ese recurso. Cuando P1 termine su seccin crtica debera permitrsele acceso a R a P2 o P3. Asuma que el SO le concede el acceso a P2 y que P1 solicita nuevamente acceso a su seccin crtica. Si el SO le concede acceso a P1 despus de que P2 haya terminado y luego nuevamente a P2, entonces a P3 puede denegrsele indefinidamente el acceso al recurso.

Para evitar todos estos inconvenientes, se deberan cumplir ciertas pautas a saber: Slo se permite un proceso al tiempo dentro de su seccin crtica, de entre todos los procesos que tienen secciones crticas para el mismo recurso u objeto compartido. Un proceso que se pare en su seccin no crtica debe hacerlo sin interferir con otros procesos. No debe ser posible que un proceso que solicite acceso a una seccin crtica sea postergado indefinidamente: ni interbloqueo ni inanicin. Cuando ningn proceso est en una seccin crtica, a cualquier proceso que solicite entrar en su seccin crtica debe permitrsele entrar sin demora. No se hacen suposiciones sobre las velocidades relativas de los procesos ni sobre el nmero de procesadores Un proceso permanece dentro de su seccin crtica slo por un tiempo finito.

Exclusin Mutua: soporte hardware Deshabilitar interrupciones: En una mquina monoprocesador, un proceso continuar ejecutando hasta que invoque un servicio del SO o hasta que sea interrumpido. Por tanto, para garantizar la exclusin mutua basta con impedir que un proceso sea interrumpido. Esta tcnica puede proporcionarse en forma de primitivas definidas por el ncleo del SO para deshabilitar y habilitar las interrupciones. Dado que la seccin crtica no puede ser interrumpida se garantiza la exclusin mutua. La eficiencia podra degradarse por cuanto se limita la capacidad del procesador de entrelazar programas. Adems esta solucin no funciona sobre sistemas multiprocesador.

Instrucciones mquina especiales: TSL (Test and set lock)es una instruccin hardware que provoca la lectura del contenido de una palabra de la memoria en un registro y el almacenamiento de un valor distinto de cero en dicha palabra de memoria. Al tratarse de una instruccin mquina, el procesador nos garantiza que la instruccin TSL sin interrupcin por parte de otro proceso. En un sistema multiprocesador, ninguno de los dems procesadores tendr acceso a la palabra hasta que termine de ejecutarse la instruccin. Exclusin Mutua: soporte software ALGORITMO DE DEKKER: La solucin se desarrolla por etapas. Se reserva una posicin de memoria global llamada turno. Un proceso que desea ejecutar su seccin crtica primero evala el contenido de turno. Si el valor de turno es igual al nmero del proceso, puede continuar con su seccin crtica. En espera, lee repetitivamente el valor de turno hasta que puede entrar en su seccin crtica. (espera activa). Cuando termina con ella, debe actualizar el valor de turno para el otro proceso. La espera activa genera mucha sobrecarga al SO. Cada proceso debe tener su propia llave de la seccin crtica para que, si uno de ellos falla, pueda seguir accediendo a su seccin crtica; para esto se define un vector booleano seal. Cada proceso puede evaluar el valor de seal del otro, pero no modificarlo. Cuando un proceso desea entrar en su seccin crtica, comprueba la variable seal del otro hasta que tiene el valor falso (indica que el otro proceso no est en su seccin crtica). Asigna a su propia seal el valor cierto y entra en su seccin crtica. Cuando deja su seccin crtica asigna falso a su seal. Si uno de los procesos falla fuera de la seccin crtica, el otro proceso no se queda bloqueado. El otro proceso puede entrar en su seccin crtica tantas veces como quiera, porque la variable seal del otro proceso est siempre en falso. Pero si un proceso falla en su seccin crtica o despus de haber asignado cierto a su seal, el otro proceso estar bloqueado permanentemente. Una solucin correcta

Hay que observar el estado de ambos procesos, que est dado por la variable seal, pero es necesario imponer orden en la actividad de los procesos para evitar el problema de "cortesa mutua". La variable turno puede usarse en esta labor, indicando que proceso tiene prioridad para exigir la entrada a su seccin crtica. De esta manera tenemos turnos para ingresar a la SC. ALGORITMO DE PETERSON: lo desarroll, basndose en el algoritmo de Dekker al igual que este la variable global seal indica la posicin de cada proceso con respecto a la exclusin mutua y la variable global turno resuelve los conflictos de simultaneidad. Los N procesos comparten una zona de memoria, por lo que hay que tener cuidado de no coincidir en su peticin. Solucin : variables de cierre, que nos indican la intencin de cada proceso en querer entrar en su seccin crtica, y con otra variable indicadora de quien tiene el turno de entrada. Semforos Dos o ms procesos pueden cooperar por medio de simples seales, tales que un proceso pueda ser obligado a parar en un lugar especfico hasta que haya recibido una seal especfica. Para la sealizacin se utilizan variables especiales llamadas semforos. Para transmitir una seal va el semforo S, el proceso ejecutar semSignal(s). Para recibir una seal va el semforo S, el proceso ejecutar semWait(s) El semforo puede ser visto como una variable que contiene un valor entero sobre el cual slo estn definidas 3 operaciones: Un semforo puede ser inicializado a un valor no negativo.

La operacin semWait decrementa el valor del semforo. Si el valor pasa a ser negativo, entonces el proceso se bloquea, sino el proceso contina se ejecucin. La operacin semSignal incremente el valor del semforo. Si el valor es menor o igual que 0, entonces se desbloquea uno de los procesos bloqueados en la operacin semWait. Semforos contadores Se inicializa la variable S en 1 El Proceso P1 invoca a semWait(s), este devuelve 0, por lo que puede entrar en la seccin crtica. Antes de ingresar, decremente el valor de s. Cuando P2 invoca a semWait(s), este le devuelve un valor negativo, s=-1, por lo que el proceso se bloquea, es decir pasa a una cola de bloqueados. Cuando el proceso P1 sale de la seccin crtica, incremente s, siendo su valor entonces 0. Se ejecuta semSignal, se desbloquea algn proceso y se le da permiso para entrar en la seccin crtica. Semforos binarios Esta, es una versin ms restringida, conocida como semforo binario o mutex. Un semforo binario solo puede tomar 2 valores, puede ser inicializado a 0 o 1. La operacin semWait comprueba el valor de s. Si el valor es 0, entonces el proceso se bloquea. Si el valor es 1, entonces se cambia el valor a 0 y el proceso contina la ejecucin. La operacin semSignal comprueba si hay algn proceso bloqueado. Si lo hay, entonces se desbloquea a uno de ellos, si no hay procesos bloqueados se pone el valor del semforo a 1. Este tipo de semforos, no puede saber por medio de s si hay procesos o no en espera, por lo que necesita un mecanismo adicional para ello. Un tema adicional para ambos tipos de semforos es determinar qu proceso de la cola tiene prioridad de ejecucin. La poltica ms favorable es la FIFO, el proceso que est primero es el que ms tiempo lleva esperando. Esta poltica se denomina semforo fuerte. Un semforo que no especifica el orden en que deben ser extrados los procesos, se denomina semforo dbil. En la actualidad mayora de los SO operativos utilizan semforos fuertes. QUE SUCEDE EN SISTEMAS CON MAS DE UN PROCESADOR IMPLEMENTADO SEMFOROS? El problema de la cena de los filsofos

En 1965 Dijkstra plante y resolvi un problema de sincronizacin llamado el problema de la cena de los filsofos, que se puede enunciar como sigue. Cinco filsofos se sientan a la mesa, cada uno con un plato de espaghetti. El espaghetti es tan escurridizo que un filsofo necesita dos tenedores para comerlo. Entre cada dos platos hay un tenedor . La vida de un filsofo consta de periodos alternos de comer y pensar. Cuando un filsofo tiene hambre, intenta obtener un tenedor para su mano derecha, y otro para su mano izquierda, cogiendo uno a la vez y en cualquier orden. Si logra obtener los dos tenedores, come un rato y despus deja los tenedores y contina pensando. La pregunta clave es: puede el lector escribir un programa para cada filsofo que permita comer equitativamente a los filsofos y no se interbloquee ? El procedimiento coger_tenedor espera hasta que el tenedor especificado est disponible y lo coge. Por desgracia la solucin obvia es incorrecta. Supongamos que los cinco filsofos cogen sus tenedores izquierdos de forma simultnea. Ninguno podra coger su tenedor derecho, lo que producira un interbloqueo. Una mejora que no tiene interbloqueos ni aplazamiento indefinido, es la proteccin de los cinco enunciados siguientes a la llamada al procedimiento pensar mediante un semforo binario exmut. Antes de empezar a coger los tenedores, un filsofo hara un wait sobre exmut. Desde el punto de vista terico esta solucin es adecuada. Desde el punto de vista prctico presenta un error de eficiencia: en todo instante existir a lo sumo un filsofo comiendo. Si se dispone de cinco tenedores, se debera permitir que dos filsofos comieran al mismo tiempo. La solucin permite el mximo paralelismo para un nmero arbitrario de filsofos. Utiliza un vector, estado, para llevar un registro de la actividad de un filsofo: si est comiendo, pensando o hambriento (estado que indica que quiere coger los tenedores). Un filsofo puede comer nicamente si los vecinos no estn comiendo. Los vecinos del i-simo filsofo se definen en las macros IZQ y DER. En otras palabras, si i= 2, entonces IZQ = 1, y DER = 3. Se utiliza un vector de semforos, uno por filsofo, de forma que los filsofos hambrientos puedan bloquearse si los tenedores necesarios estn ocupados. Observe que cada proceso ejecuta el procedimiento filsofo como programa principal, pero los dems procedimientos, coger_tenedores, dejar_tenedores y prueba, son procedimientos ordinarios y no procesos separados.

UNIDAD IV: Administracin de Dispositivos de Entrada/Salida Introduccin. Tipos de perifricos. Canales y unidades de control. Tcnicas para la administracin y asignacin. Asignacin de perifricos dedicados y compartidos. Algoritmos de planificacin de E/S. Dispositivos virtuales. Operaciones perifricas off-line.
ADMINISTRACIN DE DISPOSITIVOS DE E/S Probablemente la E/S es el aspecto ms intrincado en el diseo de un SO. Dado que existe una gran variedad de dispositivos es difcil desarrollar una solucin general uniforme. Los dispositivos externos dedicados a la E/S se pueden agrupar, a grandes rasgos, en tres categoras: Dispositivos legibles por los humanos: apropiados para la comunicacin con el usuario. Impresoras, Terminales de visualizacin grfico: que constan de pantalla, teclado y quizs un ratn. Dispositivos legibles por la mquina: adecuados para comunicarse con equipos electrnicos. Discos y unidades de cinta. Sensores. Controladores. Impulsores. Dispositivos de comunicaciones: apropiados para comunicarse con dispositivos lejanos. Adaptadores de lneas digitales. Mdem. Las unidades de E/S constan de dos elementos: MECNICO: denominado DISPOSITIVO DE E/S.

ELECTRNICO: denominado CONTROLADORES.

Los dispositivos de E/S que se conectan al ordenador se clasifican en: BLOQUE: La informacin se almacena en bloques, esos bloques son de tamao fijo. Donde cada bloque tiene una direccin que lo identifica. Se puede leer o escribir en un bloque independiente de los dems. Ej: disquete, CD, DVD, disco duro. CARCTER: La informacin que se generan o reciben son flujos de caracteres (no bloques). Accede a los datos en secuencia: o sea, para acceder a determinados datos, la lectura y escritura se debe hacer seguido de los datos anteriores. Ej: teclado, pantalla, cinta, ratones, interfaz de comunicacin Otros aspectos importantes que hacen la diferencia entre dispositivos son: Comportamiento: entrada, salida, almacenamiento.

Tasa de transferencia: entre dispositivos y memoria.


D PO IT IS S IVO T C AD EL O MO S UE S ANNE C R VO (S lida S a ) IMPR S R EOA (L nea ) IMPR S R EOA (L ser) MO E DM R DL E AN FL PPY O C D C A INT MAG T A NE IC C MPO T O R AMIE O NT E da ntra " " S lida a " " E da/ sa ntra lida " Alm c m a ena iento " " C AS AC N L IFIC IO C r ter a c " " " " " " " B loque " " T A AS KB E . /S G 0 1 ,0 0 2 ,0 40 0 0 ,6 1 20 0 2 -8 ,0 ,0 50 00 0 -6 0 10 0 10 00 20 00

DIFERENCIAS SEGN E/S La operacin de E/S presenta 3 caractersticas: Operacin asincrnica: Se dice que la operacin de E/S es asncrona, debido a que el procesador y los dispositivos de E/S no operan a la misma velocidad. Un dispositivo de E/S puede tardar entre 500 y 1000 veces el tiempo de la CPU.

Dada la necesidad de controlar la operacin asncrona, el hardware de E/S debe incluir seales de control para coordinar las operaciones. Conversin de formato: algunos dispositivos requieren transferencias de datos bits en serie y otros de caracteres en paralelo. Existen adems numerosas codificaciones: ASCII, EBCDIC. Velocidad de transferencia de datos (bps): Diferencia dispositivos de e/s

Aplicaciones: el uso al que est destinado un dispositivo de hardware tiene influencias en el software y en las polticas del SO y de las herramientas que dan soporte. Por ejemplo: Un disco que almacena archivos necesita el soporte de un software de gestin de archivos. Un disco usado como almacn de pginas de un sistema de memoria virtual necesita el soporte de un software y de un hardware especial. Puede que un terminal usado por el administrador del sistema tenga una prioridad mayor. Complejidad del control: Una impresora requiere una interfaz de control sencilla. Un disco es mucho ms complejo. El efecto de estas diferencias en el SO se filtra hasta cierto punto por el mdulo de E/S que controla el dispositivo. Unidad de transferencia: Los datos pueden transmitirse como flujos de bytes o caracteres (E/S de un terminal) o en bloques de mayor tamao (E/S de un disco). Representacin de los datos: Los dispositivos utilizan distintos esquemas de codificacin de datos, incluyendo diferencias en el cdigo del carcter y en las convenciones sobre paridad. Condiciones de error: Cada dispositivo responde a los errores de diferente manera y los notifica de manera distinta. Evolucin del Sistema de E/S El procesador controla directamente un dispositivo perifrico. Se aade un controlador o mdulo de E/S. El procesador usa E/S programada sin interrupciones. Con este paso el procesador se independiza de los detalles especficos de las interfases de los dispositivos externos. Se utiliza la misma configuracin que la etapa anterior pero empleando interrupciones. El procesador no necesita estas gastando tiempo esperando a que se realice una operacin de E/S, incrementando de esta manera la eficiencia. Al mdulo de E/S se le da control directo a la memoria mediante DMA. Con ello puede mover un bloque de datos a la memoria sin involucrar al procesador, excepto al principio y al final de la transferencia. Se mejora el mdulo de E/S para convertirse en un procesador independiente, con un juego de instrucciones especializadas adaptas a la E/S. La unidad central de procesamiento hace que el procesador ejecute un programa de E/S residente en la memoria principal. El procesador de E/S lee y ejecuta estas instrucciones sin la intervencin del procesador. Esto permite que el procesador especifique una secuencia de actividades de E/S, siendo interrumpido slo cuando se termine la secuencia completa. El mdulo de E/S tiene su propia memoria local y es de hecho un computador por derecho propio. Con esta arquitectura, se pueden controlar un gran conjunto de dispositivos de E/S, con una intervencin mnima por parte del procesador. CONTROLADORES Los CONTROLADORES DE DISPOSITIVOS (tambin llamados adaptadores de dispositivos) son la parte electrnica de los perifricos, el cual puede tener la forma de una tarjeta o un circuito impreso integrado a la tarjeta maestra de la computadora. Por ejemplo, existen controladores de discos que se venden por separado y que se insertan en una ranura de la computadora, o existen fabricantes de computadoras que integran esa funcionalidad en la misma tarjeta en que viene la unidad central de procesamiento (tarjeta maestra). Los controladores de dispositivos generalmente trabajan con voltajes de 5 y 12 volts con el dispositivo propiamente, y con la computadora a travs de interrupciones. Estas interrupciones viajan por el 'BUS' de la computadora y son recibidos por el CPU el cual a su vez pondr en ejecucin algn programa que sabr qu hacer con esa seal. A ese programa se le llama 'MANEJADOR DE DISPOSITO' (device driver). Algunas veces el mismo controlador contiene un pequeo programa en una memoria de solo lectura o en memoria de acceso aleatoria no voltil y re-escribible que interacta con el correspondiente manejador en la computadora. Por ejemplo, la terminal (CRT) tiene un 'chip' que se encarga de enviar cadenas de bits por medio de un cable serial que a su vez son recibidos por un controlador de puerto serial en la computadora. Este 'CHIP' tambin se encarga de leer secuencias de bits que agrupa para su despliegue en la pantalla o para ejecutar algunas funciones de control. Lo

importante en todos estos dispositivos es que se debe ejercer un mecanismo para sincronizar el envo y llegada de datos de manera concurrente Compatible SATA I y II, la tarjeta controlador PCI-ST101 de Advance permite conectar nuevos perifricos SATA e IDE (discos duros, reproductor de DVD, etc.) a su configuracin informtica Controlador LED F-HD: Controlador de sistemas de iluminacin LED. Controlador de led rgb controlador con 60 led x metro la distancia ms larga es de 15 m 100x65x24mm. MONTAK (ASCENSOR) PUERTOS Las placas controladoras se conectan entre el bus del sistema y el dispositivo que tienen que controlar, estas controladores se enchufan en ranuras de expansin, que son puestos de E/S. Cada puerto se identifica con un nmero de puerto de 16 bits. Como se hace con la memoria, la CPU utiliza los buses de datos, direccin y control como conductores para comunicarse con los puertos. Para acceder a un puerto, la CPU enva primero una seal para avisar a todos los dispositivos de que la direccin que va en el bus es la de un puerto de E/S. El dispositivo cuya direccin de puerto coincida responder. TIPOS DE ENTRADA SALIDA El concepto de entrada/salida engloba la comunicacin e intercambio entre la CPU y el exterior. Esta comunicacin se puede efectuar por 2 mtodos: Serie Paralelo

La E/S paralela se basa en una comunicacin simultnea de n bits. Transmite simultneamente una palabra completa, tal como es utilizada por el procesador hacia o desde unidades perifricas, por lo que el tiempo de transferencia es mnimo. La E/S serie puede ser considerada como un caso particular de la anterior, en la que n=1 efectundose entonces un secuenciamiento de bits. La E/S serie exige un tiempo unitario para cada bits transmitido, por lo que la transmisin de una misma palabra requerir los n tiempos correspondientes, ms los precisados para la informacin de control y proteccin. Las interfaces de E/S serie exigen una serializacin previa y paralelizacin posterior de la informacin que no es precisa efectuar en la E/S paralela. Pero en la E/S paralela se requieren n vas de comunicacin ms las necesarias para control y proteccin, por lo que a grandes distancias se prefiere la comunicacin serie, y a cortas distancias y velocidad alta se prefiere paralelo. PUERTOS DE E/S SERIE El modo de bits en serie se usa principalmente para las comunicaciones. A este tipo de puertos se los denomina USART (unidad transmisor receptor asncrono sncrono). Hay dos modos de transferencia de datos de bits en serie: Asncrona: cada carcter va precedido de un bits de arranque y otro bits de parada al final del carcter. Sncrona: cada mensaje o bloque de transmisin va precedida por unos bits de sincronismo. TRABAJO: INVESTIGAR DIFERENCIAS ENTRE TRANSMISIN SERIE SNCRONA Y ASNCRONA. SOFTWARE DE ENTRADA-SALIDA Los objetivos ms importantes del software de E/S son: Ocultar la complejidad del hardware a los procesos que se ejecutan por encima del sistema operativo. Presentar una interfaz de E/S sencilla.

Para conseguir estos objetivos se estructura el software de E/S en capas, de forma que las capas inferiores ocultan la complejidad del hardware a las capas superiores y stos se encargan de conseguir una interfaz sencilla. CAPAS DEL SOFTWARE DE E/S MANEJADORES DE INTERRUPCIONES: Su principal objetivo es que el usuario no debe darse cuenta de los manejos de bajo nivel para los casos en que el dispositivo est ocupado y se debe suspender el proceso o sincronizar algunas tareas.

Driver:

MANEJADORES DE DISPOSITIVOS: El driver es el software que se comunica con el hardware de E/S. Existe un driver para cada controlador que tengamos conectado a la computadora. Es el nico software que conoce las caractersticas del dispositivo. Programa al controlador imprimiendo en sus registros. Se encarga de traducir peticiones del nivel superior. Encola las peticiones que van llegando para que el driver las trate ms tarde. Por ejemplo, si el sistema tiene tipos diferentes de discos duros, al usuario las diferencias tcnicas entre ellos no le deben importar, y los drivers le deben ofrecer el mismo conjunto de rutinas para leer y escribir datos.

SOFTWARE DE E/S INDEPENDIENTE DEL DISPOSITIVO: En esta capa se agrupa la mayor parte del software de E/S. Las funciones bsicas de este nivel son: Presentar una interfaz uniforme a los programas de usuario; la misma operacin de entrada o de salida independientemente del dispositivo al que se desea acceder.

Identificar al dispositivo a partir del nombre simblico ; asignndoles nombres a los dispositivos.

Proteccin de los dispositivos ; debe disponer de un sistema que permita determinar quien tiene acceso a qu dispositivos. Tamao de bloque; a los dispositivos de bloque los trata como si todos tuvieran el mismo tamao de bloque (conocido como bloque lgico). El driver de cada uno de ellos es el encargado de comprobar si a cada uno de ellos le corresponde 1 o ms sectores del disco.

Almacenamiento Intermedio; Si se solicita informacin de un bloque que est cargado en el cach su lectura no se ordena al driver pero si no est cargado en cach se ordena la lectura del bloque completo. (lecturas por adelantado). SOFTWARE DE E/S EN ESPACIO DE USUARIO: Una porcin pequea del software de E/S se ejecuta a nivel de usuario. Consiste en bibliotecas que se enlazan con los programas de usuario. Tambin el sistema de spooling o reas de trabajo encolados, permite conseguir una explotacin concurrente de dispositivos de acceso exclusivo, como por ejemplo la impresora. Tcnicas para realizar la E/S E/S Programada. El procesador emite el mandato de E/S, a peticin de un proceso, al mdulo de E/S. El proceso espera a que termine la operacin antes de continuar. E/S dirigida por Interrupciones. El procesador emite el mandato de E/S de un proceso y contina ejecutando instrucciones del mismo u otro proceso. El mdulo de E/S enva un interrupcin cuando est prepara para transmitir. Acceso directo a memoria ( DMA). Existe un mdulo DMA que controla el intercambio de datos entre la memorial principal y el mdulo de E/S. El procesador manda una peticin de transferencia de bloque de datos al mdulo de DMA. El procesador es interrumpido slo luego que el bloque entero ha sido transferido La unidad de DMA es capaz de imitar al procesador, tomando el control del bus del sistema tal como lo hace un procesador. La unidad de DMA necesita hacerlo para transferir los datos desde y hacia la memoria usando el bus del sistema. Tcnicas para realizar la E/S: DMA 1)- Cuando el procesador quiere leer o escribir un bloque de datos, enva un mandato al mdulo de DMA especificndole la siguiente informacin: Si se trata de una operacin de lectura o escritura, utilizando la lnea de control de lectura o escritura que existe entre le procesador y el mdulo de DMA. La direccin del dispositivo de E/S, comunicndoselo mediante las lneas de datos.

La direccin inicial de memoria que se pretende leer o escribir, comunicndoselo mediante las lneas de datos y almacenndose en el registro de direcciones del mdulo de E/S. El nmero de palabras que se van a leer o escribir, comunicndoselo de nuevo mediante las lneas de datos y almacenndose en el registro contador de datos. Toma el control del sistema desde la CPU para transferir datos desde y hacia la memoria a travs del bus del sistema. Se utiliza el robo de ciclos para transferir datos a travs del bus del sistema. El ciclo de instruccin se suspende para dar paso a la transferencia de datos. La CPU espera un ciclo del bus. No existe interrupcin alguna: no salva el contexto. 2)- A continuacin el computador contina con otro trabajo. El mdulo de E/S transfiere el bloque completo de datos, palabra a palabra, directamente desde la memoria o hacia ella, sin pasar por el procesador. Cuando se completa la transferencia, el mdulo DMA enva una seal de interrupcin al procesador. Por tanto el procesador est involucrado solo al principio y al final de la transferencia. El DMA se conecta al bus del sistema para poder transferir los datos entre los dispositivos de entrada/salida y la memoria principal. Por esta razn, debe compartirlo con el procesador, siendo capaz de robarle a ste ciclos de bus. El DMA obliga al procesador a que suspenda temporalmente lo que est haciendo justo antes de que ste precise el bus del sistema. La figura siguiente se muestra en qu momentos el DMA

puede suspender al procesador durante el ciclo de una instruccin. Una vez que el procesador est suspendido, el DMA utiliza el ciclo de bus robado para transferir una palabra, devolviendo inmediatamente el control al procesador. Es importante sealar que el procesador no se ve interrumpido, ya que no debe guardar el contexto del proceso que est ejecutando, simplemente se ve inactivo durante el ciclo de bus que el DMA realiza la transferencia. Aunque la actividad del procesador se ralentiza, este esquema es mucho ms eficiente que todos los anteriores. Sin embargo, el rendimiento del DMA depende de su configuracin dentro del propio sistema. Existen distintas alternativas de diseo, el esquema de las cuales, se puede apreciar en las siguientes figuras. A continuacin describiremos en qu consisten bsicamente estas configuraciones. Estructura de DMA: de bus sencillo Estructura sencilla y barata. El mdulo realiza la transferencia entre Memoria y los dispositivos de E/S a travs del mdulo DMA, por lo que consume 2 ciclos de bus por cada palabra transferida, como en la E/S programada, una para peticin de transferencia y otra para la transferencia misma. El robo de ciclos hace que la CPU ejecute ms lentamente.

El nmero de ciclos de bus requeridos se puede acortar mediante la integracin de las funciones del DMA y de la E/S. Debe haber un camino entre el mdulo de DMA y el mdulo de E/S que no pasen por el bus del sistema. El modulo DMA est conectado directamente a uno o ms bloques de E/S, de modo que la transferencia de datos no emplea el bus del sistema. El intercambio de datos entre DMA y los mdulos de E/S se realiza fuera del bus de sistema

Estructura de DMA: bus de E/S Los mdulos de E/S estn conectados al DMA mediante un bus. La configuracin es fcilmente ampliable. El intercambio de datos entre DMA y los mdulos de E/S se realiza fuera del bus de sistema.

CANALES Y PROCESADOR DE ENTRADA SALIDA Siguiendo con la tendencia de independizar al procesador de las operaciones de entrada/salida, se libera a ste de tener que ejecutar instrucciones relacionadas con las mismas. Es decir, las instrucciones de entrada/salida que pueda contener un programa son ejecutadas por un subsistema denominado canal de entrada/salida. Para iniciar una transferencia, el procesador simplemente especifica al canal en qu lugar de la memoria se encuentra el programa de entrada/salida. El programa contiene la informacin necesaria sobre cules son los dispositivos involucrados en la transferencia, as como las zonas de memoria para el almacenamiento, la prioridad y las acciones a llevar a cabo bajo las posibles condiciones de error. Una vez que el Canal ha terminado de dirigir toda la transferencia, informa al procesador del cumplimiento de la operacin. Cuando hablamos de un canal, nos referimos a un controlador o interface para perifricos con inteligencia, es decir posee una CPU dedicada a las operaciones de E/S. Esta CPU dedicada mejora el rendimiento por cuanto libera a la CPU principal de controlar las operaciones especficas de los dispositivos de E/S. Por lo general la CPU principal y el canal estn en una relacin Maestro Esclavo, por lo que la CPU indica al canal cuando debe comenzar y le ordena detenerse o cambiar lo que hace. Por otra parte el canal no puede realizar ninguna operacin a menos que as le indique la CPU. Hay dos tipos de comunicacin entre la CPU y Canal: Desde la CPU al canal viajan las instrucciones de E/S Desde el canal a la CPU viajan las interrupciones del canal. Veamos ahora cmo es la arquitectura bsica de un canal. ste posee un procesador especializado en la ejecucin de instrucciones de entrada/salida, un canal de datos y direcciones con la memoria principal, una va de seales de control con el procesador y un bus independiente al que se conectan distintos dispositivos con sus controladores. Segn la forma en que el canal da servicio a los distintos dispositivos, podemos clasificarlo en distintas clases. CLASIFICACION DEL PE/S Canal selector: Un canal selector controla varios dispositivos de alta velocidad, dedicndose a la transferencia de uno cada vez. El procesador del canal opera con los controladores de los dispositivos conectados al bus del propio canal de entrada/salida

Canal multiplexor: Un canal multiplexor puede manejar varios dispositivos a la vez. Si los dispositivos son de baja velocidad se utiliza un multiplexor de bytes, mientras que si su velocidad es elevada, se utiliza uno de bloques. Cada controlador de dispositivos se conecta al canal multiplexor por una va diferente. Reparte el tiempo de comunicacin de manera secuencial y en espacios cortos entre todos los perifricos, dando la sensacin de que est atendiendo a todos de modo paralelo. OBJETIVOS EN EL DISEO Eficiencia La mayora de los dispositivos de E/S son extremadamente lentos en comparacin con la memoria principal. El uso de la multiprogramacin permite que algunos procesos esperen en operaciones de E/S mientras otro proceso se est ejecutando. La E/S no puede seguir el paso de la actividad del procesador. Se utiliza el intercambio para introducir ms procesos listos, que es una operacin de E/S. Generalidad Es preferible gestionar todos los dispositivos de E/S de una manera uniforme. Oculta la mayora de los detalles de la E/S con dispositivos en rutinas de bajo nivel, de forma que los procesos y los niveles superiores contemplen a los dispositivos en trminos generales, como la lectura, escritura, apertura, cierre, bloqueo y desbloqueo. ESTRUCTURA LOGICA DEL SISTEMA DE E/S En la estructura por capas de SO se enfatiz la naturaleza de que el mismo est construido jerrquicamente. Las funciones del SO estn separadas dependiendo de su complejidad, su escala de tiempo, etc. Cada nivel realiza un subconjunto de funciones del SO y se apoya sobre la capa inferior para brindar servicios al nivel superior. Por ejemplo, la capa 7 Memoria virtual, se apoya sobre la capa 6, almacenamiento secundario local (bloque de datos) y brinda servicio a las capas de nivel superior. Los niveles inferiores tratan con una escala de tiempo mucho ms corta. Algunas partes del SO interactan directamente sobre el hardware, donde los eventos pueden tener una escala de tiempo muy breve, nanosegundos. En el otro extremo se sitan las partes del SO que interactan con las aplicaciones de usuario, con eventos que rondan unos pocos segundos. El uso de niveles se ajusta perfectamente a este entorno. Aplicando esta filosofa especficamente al sistema de E/S se llega a los siguientes tipos de organizacin: Dispositivo perifrico local, Puerto de comunicacin, Sistema de fichero Los detalles de organizacin dependern del tipo de dispositivo y su aplicacin. Organizacin de la E/S Niveles involucrados: E/S lgica: trata a los dispositivos como un recurso lgico y no se ocupa de los detalles del control real del dispositivo. Se ocupa de la gestin de tareas generales de E/S para los procesos de usuario, tratando al dispositivo en trminos de un identificador (Disco C): Abrir, cerrar, leer y escribir. E/S de dispositivo: mandatos de E/S, poner caracteres en los buffer y registros, rdenes al controlador. Planificacin y control: la gestin real de la cola y la planificacin de las operaciones de E/S se producen en este nivel, as como el control de las operaciones. En este nivel se manejan las interrupciones y se obtiene el estado de la E/S y se informa el mismo. Este nivel es el que interacta con el mdulo de E/S, y por tanto con el hardware. La estructura de E/S se parece mucho a la anterior. La diferencia es que el mdulo de E/S lgica se reemplaza por una arquitectura de comunicaciones, que a su vez puede tener muchos niveles, por ejemplo TCP/IP. Estructura representativa para almacenamiento segundario que da soporte a un sistema de ficheros. Los tres nuevos niveles son: Gestin de directorios: los nombres simblicos de los ficheros se convierten en identificadores que hacen referencia al fichero o a una tabla de ndices. Se ocupa de operaciones de usuario tales como: Aadir, borrar, reorganizar. Sistema de ficheros: trata con la estructura lgica de los ficheros y con las operaciones que pueden especificar los usuarios, como abrir, cerrar, leer y escribir. Los derechos de acceso se gestionan a este nivel. Organizacin fsica: de la misma manera que las direcciones de memoria virtual deben convertirse en direcciones fsicas de memoria principal teniendo en cuenta la estructura de segmentacin y paginacin, las referencias lgicas a ficheros y registros se deben convertir en direcciones fsicas del almacenamiento secundario, teniendo en cuenta la estructura de pistas y sectores del dispositivo de almacenamiento secundario. BUFFERING de E/S (Almacenamiento intermedio de E/S) Razones para almacenamiento temporal Dispositivos orientados a bloque: La informacin se almacena en bloques de tamao fijo. Las transferencias de un bloque se realizan cada vez. Se utilizan para los discos y las cintas. Dispositivos orientados a flujo: Transfieren los datos como una serie de bytes. Se utilizan para los terminales, impresoras, puertos de comunicacin, ratones y otros dispositivos que no son de almacenamiento secundario. BUFFER NICO Es el esquema ms sencillo. Las transferencias de entrada usan el buffer del sistema. Cuando se completa la transferencia, el proceso mueve el bloque al espacio de usuario e inmediatamente pide otro bloque. A esto se le denomina Lectura adelantada, pues esta ltima operacin se realiza con la esperanza de que este nuevo bloque ser solicitado posteriormente. Se basa en el principio de la secuencialidad. Buffer nico: orientado a bloques

Las transferencias de entrada se realizan en el espacio del sistema. Cuando sea necesario, el proceso mueve el bloque al espacio del usuario. El proceso mueve otro bloque al espacio realizando lectura por adelantado. El proceso de usuario puede procesar un bloque de datos mientras se est leyendo el siguiente. Se puede dar el intercambio, ya que la entrada tiene lugar en la memoria del sistema y no en la memoria de usuario. El sistema operativo debe guardar constancia de las asignaciones de memorias intermedias del sistema a procesos de usuario. Buffer nico: orientado a flujo Se puede utilizar en modo de operacin lnea a lnea o byte a byte. Lnea a lnea: se usa el retorno de carro para indicar el final de lnea. El proceso de usuario se suspende durante la entrada de datos, esperando la llegada de una lnea completa. Con respecto a la salida, se copia la lnea en el buffer y contina el procesamiento. Solo se suspende en caso de tener que enviar la segunda lnea y la primera an se encuentra en buffer. BUFFER DOBLE Utiliza dos almacenes intermedios del sistema en lugar de uno. Un proceso puede transferir datos hacia o desde una memoria intermedia mientras que el sistema operativo vaca o rellena el otro. Con respecto a la entrada orientada a flujo, en lnea a lnea el proceso de usuario no necesita suspenderse debido a una operacin de E/S a menos que el proceso vaya por delante del buffer doble. BUFFER CIRCULAR Se usan ms de dos memorias intermedias. Cada memoria intermedia individual constituye una unidad de la memoria intermedia circular. Se usan cuando las operaciones de E/S han de ir al ritmo del proceso. INVESTIGAR MODELO PRODUCTOR CONSUMIDOR.COMO INFLUYE EN CADA UNO DE LOS BUFFER? ADMINISTRACIN DE DISPOSITIVOS Desde el punto de vista de los SO se administran los dispositivos de E/S cumpliendo 2 funciones: Llevar el control del estado de los dispositivos. Una forma de hacerlo es llevar una base de datos, tal como un Bloque de control de unidad (BCU) asociado con cada dispositivo. Decidir acerca de la poltica para determinar quien recibe un dispositivo, durante cunto tiempo y cuando. Hay 3 tcnicas bsicas para implementar polticas de administracin de dispositivos: Dedicada: se asigna un dispositivo a un solo proceso. Compartida: muchos procesos comparten un dispositivo. Virtual: se simula un dispositivo fsico (de tipo dedicado) en otro dispositivo fsico (generalmente de tipo compartido) Asignacin: asignar fsicamente un dispositivo a un proceso. En forma semejante se deben asignar las unidades de control y canales correspondientes. Poltica de asignacin: perifricos dedicados. Puede hacerse a nivel de: Proceso: cada vez que un proceso necesite el recurso, el mismo estar disponible por cuando lo captur al inicio del proceso Etapa: el perifrico se captura cuando comienza la etapa donde se aloja la instruccin que lo solicita. Instruccin: se hace la asignacin al momento de utilizarlo realmente. Puede que est ocupado por lo que habr que esperar o cancelar. Se puede hacer una asignacin parcial o total: Total: El SO no entregar la totalidad de los perifricos dedicados hasta no tenerlos a todos disponibles. Si un proceso necesita 3 cintas, hasta que no estn las 3 libres no se le asignarn. Parcial: A medida que el SO encuentra perifricos libres los va asignando. Puede existir en este caso el famoso Abrazo Mortal. Poltica de asignacin: perifricos compartidos. Parcial: La asignacin se hace en el momento de usarlos, es decir al momento de lanzarse la operacin de E/S. Se arman colas de espera de disponibilidad de perifricos, unidades de control, y procesadores de E/S (canal). Para ello es necesario el uso de tablas. Estas tablas conforman la base de datos para la administracin de perifricos. BD Para la Administracin de perifricos La BD consta de tablas, una para cada unidad funcional del canal (procesador de E/S, unidad de control) y para perifricos. Estas tablas son denominadas: Bloque de control de perifrico # de dispositivo. Estado del dispositivo. Lista de Unid. de Cont. a las que est conectado el dispositivo. Lista de procesos esperando este dispositivo. Bloque de control de procesador de E/S # de canal. Estado de canal Lista de Unid. de control a las que est conectado el canal Lista de procesos esperando el canal. Bloque de control de la unidad de control # de la unidad de control Estado de la unidad de control Lista de dispositivos conectados a esta unidad de control.

Lista de canales conectados a esta unidad de control. Lista de procesos esperando a esta unidad de control. Por medio de la tablas, se puede determinar la conexin entre mdulos funcionales, a fin de determinar cuales son los caminos para acceder a los dispositivos. Este trabajo le corresponde a una de las rutinas del sistema. RUTINAS DEL SISTEMA Cuando el SO administra a los perifricos de tipo compartido, utiliza 3 rutinas: Controlador de trfico, Planificador de E/S, Manipulador de perifricos. CONTROLADOR DE TRFICO Lleva el estado de los dispositivos, unidades de control y procesadores de E/S por medio de los bloques de control. Determina la posibilidad de una operacin de E/S y la posibilidad de caminos alternativos. Cada bloque de control servir para poder determinar si es posible la operacin y porque camino. El proceso se encolar para que se le asigne un perifrico, luego para que se le asigne una unidad de control y luego para que se le asigne un procesador de E/S. Solo una vez que el proceso est a la cabeza de cada una de las tres colas este puede realizar su operacin de E/S. PLANIFICADOR DE E/S Encargada de decidir qu proceso toma el recurso. Determina el orden en que se asignarn a los procesos los dispositivos, UC y procesadores de E/S, ya sea por algoritmo o prioridad. Una vez que hay un orden, es el controlador de trfico el que determina que puede ser satisfecho el pedido. Una vez que el proceso toma el dispositivo, no se interrumpe hasta que se termina, no hay polticas de desalojo. MANIPULADOR DE PERIFERICOS Existe uno para cada tipo de perifrico. Sus tareas son: Arma el programa del procesador de E/S, emite la instruccin de arranque de E/S, procesa las interrupciones del dispositivo, maneja errores del dispositivo, realiza una planificacin de acuerdo al perifrico (estrategia de acceso). PLANIFICACIN DEL DISCO: ORGANIZACIN Un disco es un plato circular. Los datos se graban en el disco y se recuperan por medio de una bobina, llamada cabeza. Durante una operacin de E/S la cabeza est estacionaria mientras que el plato rota debajo de ella. La cabeza es un dispositivo relativamente pequeo. La organizacin de los datos en el plato consiste en un conjunto concntrico de anillos, llamados pistas. Cada pista tiene la misma anchura que la cabeza. Hay miles de pistas en cada superficie. Los datos se transfieren del disco en sectores. Normalmente hay cientos de sectores por pista, que pueden ser de longitud fija o variable. En la mayora de los sistemas, los sectores utilizan una longitud fija de 512 bytes. Para evitar requisitos de imprecisin los sectores a su vez estn separados por huecos. Las pistas adyacentes estn separadas por huecos. Esto impide los errores debido a que la cabeza magntica no est alineada, o simplemente, a que existan interferencias en los campos magnticos. Un bit que est prximo al centro de un disco rotando pasa a travs de un punto fijo (como una cabeza de lectura escritura) a menos velocidad que un bit situado en la parte exterior. Entonces es necesario encontrar alguna manera de compensar esta variacin en la velocidad de manera que la cabeza pueda leer todos los bits a la misma velocidad. Esto se logra incrementando el espacio entre los bits de informacin grabada en distintos segmentos del disco. Gracias a ello, la informacin puede accederse a la misma velocidad rotando el disco a una velocidad fija, conocida como Velocidad angular constante. El disco est dividido en varios sectores en forma de tarta y en una serie de pistas concntricas. La ventaja de utilizar CAV es que se puede hacer referencia directamente a cada bloque individual de datos usando un nmero de pista y sector. Para mover la cabeza desde su posicin actual a una direccin especfica, slo se necesita un corto movimiento de la cabeza a la pista correspondiente y una breve espera hasta que el sector apropiado gire debajo de la cabeza. La desventaja de CAV es que la cantidad de datos que se pueden almacenar en las pistas exteriores, que tienen mayor longitud, es la misma que se puede almacenar en las pistas interiores, que son ms cortas. Los discos duros modernos utilizan una tcnica conocida como grabacin en mltiples zonas, en la que la superficie del disco est dividida en varias zonas concntricas. Dentro de una zona, el nmero de bits por pista es constante. Las zonas ms alejadas del centro contienen mas bits (mas sectores) que las zonas que estn ms cerca del centro. Esto permite una mayor capacidad de almacenamiento global con el coste de una circuitera algo ms compleja. Segn se mueve la cabeza del disco de una zona a otra, cambia la longitud de cada bits, causando un cambio en la temporizacin de las lecturas y escrituras. Se necesita entonces alguna forma de localizar la posicin de cada sector dentro de una pista. Debe de haber alguna manera de identificar el inicio y fin de cada sector. Estos requisitos se manejan por medio de datos de control grabados en el disco. Por tanto el disco, se formatea con algunos datos adicionales utilizados slo por el controlador de disco y que no estn accesibles para el usuario. Ejemplo de ello sucede al dar formato. CARACTERSTICAS FSICAS Movimiento de la cabeza: Cabeza fija (una por pista), Cabeza mvil (una por superficie) Platos : nico plato, Mltiples platos PLANIFICACION DE DISCO La razn de la diferencia en el rendimiento puede encontrarse en el tiempo de bsqueda. Para un disco sencillo, habr un nmero de solicitudes de E/S. Si se eligen las solicitudes en un orden aleatorio, se obtendr el peor rendimiento posible.

FIFO: primero en entrar, primero en salir Las solicitudes se procesan en un orden secuencial. Es una estrategia justa para todos los procesos. Esta tcnica se parece mucho a la planificacin aleatoria si hay muchos procesos. Prioridad No persigue la optimizacin del uso del disco, sino cumplir con otros objetivos. Los trabajos por lotes que sean cortos tienen una prioridad ms alta. Proporciona un buen tiempo de respuesta interactiva. LIFO: ltimo en entrar, primero en salir Buena poltica para los sistemas de proceso de transacciones: El hecho de conceder el dispositivo al ltimo usuario acarrea pocos o nulos movimientos del brazo. Existe la posibilidad de inanicin, ya que puede que el trabajo no vuelva a ganar la cabeza de la lnea. SSTF: primero el tiempo de servicio ms corto Elegir la solicitud de E/S a disco que requiera el menor movimiento posible del brazo del disco desde su posicin actual. Siempre se elige procurando el mnimo tiempo de bsqueda. SCAN El brazo slo se puede mover en un sentido, resolviendo todas las solicitudes pendientes de su ruta hasta que alcance la ltima pista o hasta que no haya ms solicitudes en esa direccin. Se produce un cambio en la direccin. CSCAN Restringe el rastreo a una sola direccin. Cuando se haya visitado la ltima pista en un sentido, el brazo vuelve al extremo opuesto del disco y comienza a recorrerlo de nuevo. SCAN de N pasos Divide la cola de solicitudes del disco en subcolas de longitud N. Las subcolas se procesan una a una mediante un SCAN. Mientras se procesa una cola, se aadirn nuevas solicitudes a las otras. FSCAN Emplea dos subcolas. Una de las colas permanece vaca en espera de nuevas solicitudes. PLANIFICACION DE DISCO SSTF es comn y tiene un atractivo natural. SCAN y C-SAN funcionan mejor en sistemas en los que la carga sobre el disco es intensa, y no son propensos al problema de inanicin. El mtodo de asignacin de archivos puede influir mucho sobre las solicitudes de servicio de disco. Un programa que lee un archivo que se asign contiguamente generar varias solicitudes cercanas entre s en el disco, y el movimiento de la cabeza ser limitado. Un archivo enlazado o indexado, en cambio, podra incluir bloques muy dispersos en el disco, y el movimiento de la cabeza sera mayor. La colocacin de los directorios y los bloques ndice en caches de la memoria principal puede ayudar tambin a reducir el movimiento del brazo del disco, sobre todo para las solicitudes de lectura.

UNIDAD V: Administracin de memoria Introduccin. Administracin de memoria simple y contigua. Capacidad de direccionamiento vs. Capacidad de almacenamiento. Soluciones a la monotarea. Administracin de memoria particionada variable o dinmica. Administracin de memoria paginada. Memoria virtual: paginacin, segmentacin. Administracin paginada por demanda. Interrupciones
Para que un proceso pueda ejecutarse debe estar ubicado en la memoria principal del ordenador. Una parte del sistema operativo se va a encargar de gestionar la memoria principal. La gestin de la memoria implica varias tareas, una de ellas es llevar un registro de qu zonas estn libres (no utilizadas por otro proceso), y qu zonas estn ocupadas por qu procesos. TIPOS DE MEMORIA Simple y Continua: Para sistemas operativos Monotareas. Se divide en dos partes una parte para el sistema operativo y una parte para el programa en ejecucin. - Inconvenientes: Un solo proceso en RAM, por lo tanto un solo proceso en cola de listo. Si el proceso es menor (Tamao) que el espacio en memoria tenemos espacio ocioso. Si el proceso es mayor que el espacio en memoria resulta un error de memoria insuficiente. Asignacion de memoria contigua: un proceso se ubica en su totalidad en posiciones consecutivas de memoria. Asignacin de memoria no contigua: Un proceso puede dividirse en bloques en posiciones no contiguas de memoria principal, no es preciso que se encuentren en la memoria todos los bloques de un proceso para que se pueda ejecutar, basta los bloques que contienen cdigo o datos actualmente referenciados, el resto puede permanecer en memoria secundaria. Gestin de la memoria en los sistemas monoprogramados [MILE94] [TANE93] Slo existe un proceso de usuario, que disfruta de todos los recursos del ordenador. Se simplifica la gestin de la memoria, ya que sta slo debe ser compartida por los programas del sistema operativo, y por el nico proceso de usuario existente.

Si el usuario conoce la ubicacin en la memoria del sistema operativo, entonces puede escribir programas en trminos de direcciones absolutas de memoria (direccin fsica de la memoria). En contraposicin se tienen las direcciones relativas. Un programa est escrito en trmino de direcciones relativas cuando se escribe suponiendo que empieza a cargarse en la direccin cero de la memoria. Por lo comn, los sistemas operativos monousuario de no tienen proteccin de la memoria. Por lo tanto, el nico proceso de usuario que existe en la memoria, puede modificar posiciones de memoria pertenecientes al sistema operativo, esto provocara errores al ejecutarse la zona modificada. La proteccin se puede realizar mediante un registro de lmite integrado en la CPU. Gestin de la memoria en los sistemas multiprogramados :La memoria debe ser compartida por varios procesos. Esto provoca que la gestin de la memoria se complique sustancialmente. Hay que llevar un recuento de las zonas de

memoria ocupadas. Cuando un nuevo proceso entre se le asignar una zona que estaba libre. Otro problema es, que al momento de escribir un programa no se sabe en qu zona se ubicar, siendo posible que durante la vida de un proceso ste cambie varias veces de emplazamiento. Habr que tener en cuenta, tambin, la proteccin de las zonas de memoria ocupadas por los procesos, mxime en sistemas multiusuario donde los procesos pueden pertenecer a distintos usuarios. Capacidad de direccionamiento vs capacidad de almacenamiento La capacidad de almacenamiento: es la cantidad de informacin que puede almacenar el sistema de memoria y se mide en mltiplos de bit. Unidad de transferencia: Es igual al nmero de lneas de datos de entrada y salida del mdulo de memoria. Unidad direccionable: Es el tamao mnimo que podemos direccionar en la memoria. El tamao puede coincidir con el ancho de palabra. Unidad de transferencia es el nmero de bits que se leen o escriben en memoria a la vez, lo mximo que puedo leer.

Velocidad: Para medir el rendimiento se utilizan tres parmetros: Tiempo de Acceso (TA): tiempo que transcurre desde el instante en el que se presenta una direccin a la memoria hasta que el dato, o ha sido memorizado, o est disponible para su Tiempo de Ciclo de memoria (TC): transcurre desde que se da la orden de una operacin de L/E hasta que se puede dar otra orden de L/E porque sino NO le da tiempo a responder y creara un tiempo muerto que nos interesa que sea lo menor posible. Direccionamiento El lmite de capacidad de la memoria RAM viene dado por la capacidad de direccionamiento que tiene el Sistema Operativo para el uso de la RAM. El direccionamiento en palabras simples es el almacenamiento de las direcciones de memoria en donde se encuentran los datos que van siendo requeridos por el computador. Como los datos de las computadoras son almacenados de forma binaria, el limite de direccionamiento que tendr un Sistema Operativo para la RAM instalada es de 2 elevado a la cantidad de bits que maneja el sistema operativo. Es decir, para una versin de 32 bits de Windows, su lmite de RAM posible para administrar ser de 4 GB (2 elevado a 32). Una aplicacin debe estar hecha para 64 bits para poder aprovechar las ventajas de esta arquitectura, si no, funcionara tal cual como hara en un sistema operativo de 32 bits.. Particiones estticas Esta forma de gestin consiste en dividir la memoria en varias zonas, pudiendo ser cada zona de un tamao diferente. El tamao de las zonas podr ser modificado eventualmente por algn usuario responsable de la administracin del ordenador.Una vez introducido un proceso en una particin, permanece en ella hasta su finalizacin. Si un trabajo se iniciaba, y la particin para la que estaba compilado estaba ocupada, tena que esperar, aunque estuvieran libres otras particiones. Esto provoca una prdida de eficiencia.

De cara a mejorar el rendimiento es preciso que un proceso se pueda cargar en cualquier particin. Para ello, los programas se escriben en trminos de direcciones relativas a la direccin de comienzo de carga cero. Cuando un proceso se introduce en una particin, lo ms probable es que su tamao no sea el mismo (es decir, sea algo menor) que el de la particin. Esto origina un problema de desperdicio de memoria conocido como fragmentacin interna. Particiones dinmicas En este mtodo se va asignando la memoria dinmicamente a los procesos, conforme se introducen en la memoria. A cada proceso se le asigna exactamente la memoria que necesita. Con este mtodo de gestin de la memoria se evita el problema de la fragmentacin interna. Sin embargo, aparece el problema de la fragmentacin externa entre particiones. El problema consiste en que se creen huecos libres demasiado pequeos como para que quepan procesos, aunque la unin de todos esos huecos producira un hueco considerable, lo que acarrea el desperdicio de la memoria. Una posible solucin es la compactacin de la memoria, que consiste en desplazar todos los procesos hacia la parte inferior de la memoria mientras sea posible.

Registro de la ocupacin de la memoria En el sistema de particiones estticas es sencillo llevar el registro de la ocupacin de la memoria, basta con guardar sobre cada particin si est libre, u ocupada por qu proceso, as como sus direcciones de comienzo y fin de particin. Por contra, con las particiones dinmicas, el nmero de stas vara con el tiempo, as como su tamao. Una forma posible de registrar la ocupacin de la memoria es utilizar una lista enlazada de los segmentos de la memoria asignados o libres Estrategias de colocacin: se pueden utilizar diversos algoritmos para la eleccin del hueco de memoria donde ubicar al proceso. Supongamos que se conoce la cantidad de memoria por asignar. El algoritmo ms simple es el primero en ajustarse (first fit). Se revisa la lista de huecos hasta encontrar un espacio lo suficientemente grande. El espacio se divide entonces en dos partes, una para el proceso, y otra para la memoria no utilizada, excepto en el caso poco probable de un ajuste perfecto. Este algoritmo es rpido, ya que busca lo menos posible. Otro algoritmo es el mejor en ajustarse (best fit), el cual busca en toda la lista, y elige el mnimo hueco suficientemente grande como para ubicar al proceso. Este algoritmo intenta que los huecos que se creen en la memoria sean lo ms pequeos posible.

Realizando simulaciones se ha demostrado que el algoritmo del mejor ajuste desperdicia ms la memoria, pues al crear huecos demasiado pequeos, stos no pueden ser utilizados por procesos. Un algoritmo que enfrenta el problema de la manera contraria es el del peor ajuste (worst fit). En este algoritmo se elige el hueco ms grande disponible. De esta forma aumenta la probabilidad de que el nuevo hueco creado sea lo suficientemente grande como para albergar un proceso.

MTODOS DE ASIGNACIN DE MEMORIA. Un mtodo de asignacin de memoria es la manera mediante la cual el Sistema Operativo lleva el control de la memoria tratando de que sea lo ms eficiente posible. Los mtodos de asignacin ms comunes son: SEGMENTACIN. Este mtodo consiste en la asignacin de bloques de memoria de tamao variable, llamados segmentos. El tamao de cada segmento ser el requerido segn la peticin, por ejemplo el tamao del proceso a cargar. El tamao mximo para un segmento estar determinado por la capacidad de direccionamiento del hardware de la computadora,. El acceso a cada elemento individual (byte) en la memoria se hace mediante una direccin de memoria que se integra por dos elementos: una direccin de segmento y una de desplazamiento. La combinacin (suma) de la direccin de segmento y la de desplazamiento generan la direccin de memoria absoluta a acceder.

VALIDACION DEL DIRECCIONAMIENTO (Segmentacin): Debe tambin asegurarse de que cada direccin lgica est dentro del rango de direcciones empleado por el proceso. PAGINACION La paginacin consiste en considerar el espacio de direcciones lgicas de cada proceso como un conjunto de bloques de tamao consistente llamados paginas. Cada direccin lgica manejada para un proceso estar conformada por un par de valores [pagina: desplazamiento]. La memoria fsica se administra implementando bloques de tamao consistente denominados 'marcos'. Obviamente el tamao de un 'marco' debe ser igual al tamao de una pgina. Por lo general el tamao designado para los marcos y pginas es pequeo.

OPCIONES DE IMPLEMENTACION DE LA TABLA DE PAGINAS 1. - La tabla de pginas se implementa completamente en hardware. VENTAJA: Se obtiene una alta velocidad de acceso a memoria. DESVENTAJA: Resulta problemtica cuando la tabla de paginas debe ser grande. 2. - Implementar la tabla de pginas en la memoria principal. VENTAJA: La tabla de paginas puede crecer segn se requiera. DESVENTAJA: La velocidad de acceder a memoria es relativamente baja, dado que cada referencia a memoria involucra 2 accesos.

SEGMENTACION/PAGINACION Algunos sistemas (Multics y la Serie 370 de IBM) combinan ambas tcnicas en donde los segmentos tienen un tamao mltiplo de pagina. El proceso es el siguiente: - Se hace la solicitud de acceso por medio de una direccin "X" la cual contiene los campos Segmento, Pagina y Desplazamiento. Con el campo Segmento, lo que se trata es de acceder a una Tabla de segmentos, cada campo de dicha tabla apunta directamente a la tabla de paginas asignada para ese segmento conteniendo una direccin que ser sumada a una direccin en la Tabla Asociativa para por fin formar una direccin real con el desplazamiento de "X".

En un sistema con un nmero muy grande de procesos, segmentos o paginas, sta estructura puede consumir una parte muy importante de la memoria real La memoria virtual La clave del concepto de memoria virtual es la disociacin de las direcciones a las que hace referencia un proceso en ejecucin de las direcciones disponibles en la memoria principal. Las direcciones a las que hace referencia un proceso en ejecucin, en este esquema, se llaman direcciones virtuales. El intervalo de direcciones virtuales a las que puede hacer referencia un proceso en ejecucin se llama espacio de direcciones virtuales. La memoria virtual es una tcnica de gestin de la memoria que posibilita que el espacio de direcciones virtuales sea mayor al espacio de direcciones reales. Para lograr esto, el sistema operativo se encarga de mantener en la memoria principal solamente aquellas partes del espacio de direcciones del proceso que actualmente estn siendo referenciadas, el resto permanece en disco. La memoria virtual se basa en el hecho de que muchos programas presentan un comportamiento conocido como operacin en contexto, segn el cual, en cualquier intervalo pequeo de tiempo un programa tiende a operar dentro de un mdulo lgico en particular, sacando sus instrucciones de una sola rutina y sus datos de una sola zona de datos. De esta forma, las referencias de memoria de los programas tienden a agruparse en pequeas zonas del espacio de direcciones. La localidad de estas referencias viene reforzada por la frecuente existencia de bucles: cuanto ms pequeo sea el bucle, menor ser la dispersin de las referencias. La observacin de este comportamiento conduce al postulado (Denning, 1970) del llamado principio de localidad: "Las referencias de un programa tienden a agruparse en pequeas zonas del espacio de direcciones. Estas zonas, adems, tienden a cambiar slo de forma intermitente". La memoria virtual se compagina con la multiprogramacin. Al no tener que almacenar los procesos enteros en la memoria, pueden entrar ms en la memoria principal, con lo que es ms probable que siempre exista un proceso en estado listo. Por otro lado, cuando un proceso espera a que se cargue en la memoria principal parte de su cdigo o datos, se inicia una E/S con el disco. Mientras dura dicha E/S la CPU puede ejecutar otro proceso.

Se han desarrollado varios mtodos para asociar las direcciones virtuales con las reales. Los mecanismos de traduccin dinmica de direcciones convierten la direcciones virtuales en direcciones reales en tiempo de ejecucin. Todos estos sistemas tienen la propiedad de que las direcciones contiguas en el espacio de direcciones virtuales de un proceso no son necesariamente contiguas en la memoria principal. Esto se conoce como contigidad artificial (fig. 6.8). Debe quedar claro que toda esta correspondencia es transparente al programador, que escribe sus programas en trminos de direcciones consecutivas de memoria virtual. Esquema general de traduccin [DEIT93] Cuando los bloques son del mismo tamao, se llaman pginas, y la organizacin de la memoria virtual correspondiente se conoce como paginacin. Cuando los bloques pueden tener tamaos diferentes se llaman segmentos, y la organizacin de la memoria virtual correspondiente se llama segmentacin. Algunos sistemas combinan ambas tcnicas, con segmentos, que son entidades de tamao variable, compuestas de pginas de tamao fijo ( Segmentacin paginada ). Interrupciones Es importante sealar que la traduccin de una direccin virtual a real la realiza una unidad hardware, que transforma todas las direcciones generadas por la CPU antes de que pasen al bus del sistema. Un proceso no tiene por qu tener todos sus bloques en memoria principal, recurdese que el espacio de direcciones virtuales puede ser muy superior al espacio de direcciones reales, esto hace que a veces un proceso referencie a una direccin de un bloque que no se encuentra en la memoria principal. Para detectar esto, las tablas de correspondencias tienen un "bit de presencia" por entrada (cada entrada representa un bloque), que indica si el bloque se encuentra presente en la memoria principal o no. El hardware de traduccin debe verificar este bit en cada referencia a memoria. Si el bloque no est en memoria principal, el hardware produce una interrupcin. Esta interrupcin provoca que el control pase al software (sistema operativo), para que ste inicie la transferencia del bloque que falta desde la memoria secundaria a la memoria principal, y actualice de acuerdo con ello la tabla de correspondencias. El proceso en ejecucin se har no listo hasta que se haya completado esta transferencia. La posicin de los bloques en la memoria secundaria puede guardarse en la misma tabla de correspondencias. Paginacin [SILB94] [DEIT93] El concepto de almacenamiento a un slo nivel, en el que la memoria secundaria aparece como una extensin de la memoria principal, puede llevarse a cabo mediante una tcnica llamada paginacin, segn la cual el espacio de direcciones virtuales se divide en pginas del mismo tamao (en el Atlas eran de 512 palabras). La memoria principal se divide tambin en marcos o pginas fsicasdel mismo tamao. Estos marcos son compartidos entre los distintos procesos que haya en el sistema, de forma que en cualquier momento un proceso dado tendr unas cuantas pginas residentes en la memoria principal (sus pginas activas) y el resto en la memoria secundaria (sus pginas inactivas). El mecanismo de paginacin cumple dos funciones: Llevar a cabo la transformacin de una direccin virtual a fsica, o sea, la determinacin de la pgina a la que corresponde una determinada direccin de un programa, as como del marco, si lo hay, que ocupa esta pgina; Transferir, cuando haga falta, pginas de la memoria secundaria a la memoria principal, y de la memoria principal a la memoria secundaria cuando ya no sean necesarias. Segmentacin La segmentacin es un esquema de administracin de la memoria que soporta la visin que el usuario tiene de la misma. Un espacio de direcciones lgicas es una coleccin de segmentos. Cada segmento tiene un nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como el desplazamiento dentro del segmento.Por simplicidad de implementacin, los segmentos estn numerados y se referencian por un nmero de segmento en lugar

de por un nombre. Aunque el usuario ahora puede referenciar los objetos del programa por medio de una direccin de dos dimensiones, la memoria fsica real es todava, por supuesto, una secuencia unidimensional de palabras. La transformacin se efecta por medio de una tabla de segmentos. Ventaja de la segmentacin est relacionada con la comparticin de cdigo y datos. Los segmentos se comparten cuando las entradas en las tablas de segmentos de dos procesos diferentes apuntan a las mismas posiciones fsicas. La comparticin se produce a nivel de segmento. Por lo tanto, cualquier informacin puede compartirse definindole un segmento. Pueden compartirse varios segmentos, de modo que es posible compartir un programa compuesto de ms de un segmento. Tambin es posible compartir solo partes de programas.

Fragmentacin: La segmentacin puede ocasionar entonces fragmentacin externa, cuando todos los bloques libres de memoria son demasiado pequeos para acomodar a un segmento. En este caso, el proceso puede simplemente verse obligado a esperar hasta que haya disponible ms memoria (o al menos huecos ms grandes), o puede utilizarse la compactacin para crear huecos mayores. Puesto que la segmentacin es por naturaleza un algoritmo de reubicacin dinmica, podemos compactar la memoria siempre que queramos. Estrategias de la Administracin de Memoria Virtual [DEIT93] [STAL95] De las diversas organizaciones de memoria tratadas en el tema anterior nicamente las que realizan una asignacin no contigua (paginacin, segmentacin y segmentacin paginada) del almacenamiento permiten implantar una administracin virtual de la memoria. Para cualquiera de las tres formas de organizar esta memoria virtual habr que determinar: Estrategias de obtencin. Determinan cundo se debe transferir una pgina o un segmento del almacenamiento secundaria al primario. Esperan a que un proceso en ejecucin haga referencia a una pgina o a un segmento antes de traerla/lo. Los esquemas de obtencin anticipada intentan determinar por adelantado a qu pginas o segmentos har referencia un proceso. Si la probabilidad de una referencia es alta y hay espacio disponible, entonces se trae al almacenamiento primario la pgina o segmento antes de que se haga la referencia explcita Estrategias de colocacin. Determinan en qu lugar de la memoria principal se debe colocar una pgina o un segmento entrante. Los sistemas de paginacin vuelven trivial la decisin de colocacin, porque una pgina entrante se puede ubicar en cualquier marco de pgina disponible. Los sistemas con segmentacin requieren estrategias de colocacin como las tratadas en el contexto de los sistemas de multiprogramacin con particiones dinmicas. Estrategias de reemplazo. Sirven para decidir qu pgina o segmento se debe desplazar para dejar espacio a una pgina o segmento entrante cuando est completamente ocupada la memoria principal. Paginacin por Demanda [SILB94] Un sistema de paginacin por demanda es similar a un sistema de paginacin con intercambios. Los procesos residen en memoria secundaria (en el disco). Cuando queremos ejecutar un proceso, lo metemos en memoria. Sin embargo, en vez de intercambiar todo el proceso hacia la memoria, utilizamos un intercambiador perezoso. Un intercambiador perezoso nunca reincorpora una pgina a memoria a menos que se necesite. Como ahora consideramos un proceso como una secuencia de pginas, en vez de un gran espacio contiguo de direcciones, el trmino intercambio es

tcnicamente incorrecto. Un intercambiador manipula procesos enteros, mientras que un paginador trata con las pginas individualmente de un proceso.

Cuando un proceso se reincorpora, el paginador lleva a memoria las pginas necesarias. As evita colocar en la memoria pginas que no se utilizarn, reduciendo el tiempo de intercambio y la cantidad de memoria fsica necesaria. Este esquema requiere apoyo del hardware. Generalmente se aade un bit ms a cada entrada de la tabla de pginas: un bit vlido-invlido. Cuando este bit est asignado como vlido, indica que la pgina asociada se encuentra en memoria. Si el bit est como invlido, este valor indica que la pgina est en disco. Una pgina marcada como invlida no tendr ningn efecto si el proceso nunca intenta acceder a esa pgina. El hardware para apoyar la paginacin bajo demanda es el mismo que se usa para la paginacin y segmentacin, y los intercambios: Tabla de pginas. Esta tabla tiene la capacidad para marcar una entrada como invlida usando un bit vlido-invlido o un valor especial de los bits de proteccin. Memoria secundaria. Esta memoria contiene las pginas que no se conservan en la memoria principal. La memoria secundaria casi siempre es un disco de alta velocidad.

FICHEROS Unidad 5
INTRODUCCION
En la mayora de las aplicaciones, el archivo es el elemento central. Cualquiera que sea la finalidad de la aplicacin, implicar la generacin y uso de informacin. La salida se guarda en archivos para su almacenamiento a largo plazo y para accesos posteriores por parte de programas. Cuando se habla de archivos, se utilizan 4 trminos comunes: CAMPO REGISTRO ARCHIVO BASE DE DATOS CAMPO: es un elemento de datos bsico, un campo individual contiene un valor nico, este se caracteriza por su longitud y por el tipo de dato. El contenido de este campo es proporcionado por un usuario o por un programa. Estos campos pueden tener un tamao fijo o variable. La mayora de los sistemas de archivos no soportan campos de longitud variable. REGISTRO: es una coleccin de campos relacionados que pueden tratarse como una unidad en algunos programas de aplicacin. Dependiendo del diseo del registro, pueden ser de tamao fijo o variable. Un registro es de longitud variable si alguno de sus campos es de tamaa variable o si el nmero de campos puede variar. Cada campo se acompaa normalmente de un nombre de campo. ARCHIVO: es una coleccin de registros similares. Los usuarios tratan al archivo como una entidad nica y se refieren a el por un nombre. Los archivos pueden crearse y borrarse, las restricciones de los mismos suelen aplicarse a nivel de archivo. BASE DE DATOS: es una coleccin de datos relacionados. Las relaciones que existen entre los elementos de datos son explicitas, y esta diseada para poder ser usada por varias aplicaciones. La base de datos consta de una o mas clases de archivos. Generalmente se dispone de un sistema de gestion de bases de datos separados, aunque dichos sistemas pueden hacer uso de algunos programas de gestion de archivos.

OPERACIONES BASICAS
Los usuarios y aplicaciones desean usar los archivos. Las operaciones tpicas que deben soportarse incluyen las siguientes:

1.

Recuperar Todo ( Retrieve_all): Recuperar todos los registros de un archivo. Esto va a requerir de una aplicacin que deba procesar toda la informacin de un archivo una vez.. Esta opcion es usualmente equivalente con el termino de sequential proccessing, ( proceso secuencial), porque todos los registros son accedidos en secuencia. 2.Recuperar_Uno (Retrieve_One): Esta operacion requiere la recuperacin de un solo un registro. Las soluciones interactivas orientadas a la transaccin necesitan esta operacin.

3.

Recuperar_siguiente (Retrieve_Next): Esta operacin implica la recuperacin del registro que es el siguiente ,segn una secuencia lgica, el recuperado hace

menos tiempo. Un programa que realice bsquedas puede usar tambin esta operacin. 4. Recuperar Previo (Retrieve_Previous): Es similar a Recuperar Siguiente, pero en este caso el registro que es "previo" al que se esta accediendo en el momento actual. 5. Insertar Uno (Insert One): Inserta un nuevo registro dentro del archivo. Es necesario que el nuevo registro se ajuste a una posicin particular para preservar la secuencia del archivo. 6. Borrar uno (Delete One): Borra un registro existente. Ciertos enlaces o otras estructuras puede que necesiten actualizarse para preservar la secuencia del archivo.

7.Actualizar Uno ( Update_one): Recupera un registro o actualiza uno o ms de sus


campos, y rescribe la actualizacin en el archivo. Es necesario preservar la secuencia con esta operacin. S el tamao del registro esta cambiado, la operacin de actualizacin es ms difcil si el tamao es preservado. 8.Recuperar Varios (Retrieve_ Few): Recupero un numero de registros. La naturaleza de las operaciones que comnmente se ejecutan. sobre un archivo va a influenciar sobre el modo en que se va a organizar el mismo.

SISTEMA DE GESTION DE ARCHIVOS


Un sistema de gestin de archivos es aquel sistema software que provee servicios a los usuarios y aplicaciones en el uso de archivos. El nico camino que tiene el usuario o la aplicacin tiene para acceder a los archivos es a travs de un sistema de gestin de archivos. Esto revela para el usuario o programador la necesidad de desarrollar software de propsito especial para cada aplicacin y provee al sistema un medio de controlar su ventaja ms importante. Estos son los objetivos de un sistema de gestin de archivos:

1. Cumplir con las necesidades de gestin de datos y con los requisitos del usuario, que
incluye el almacenamiento de, datos y la capacidad de ejecutar las operaciones en la lista precedente. 2. Garantizar, en la medida de lo posible, que el dato en el archivo es valido. 3. Optimizar el rendimiento, ambos desde el punto de vista del sistema en trminos de productividad global, y como punto de vista del usuario en tiempos de respuesta. 4. Para proveer soporte de E/S para una variedad de tipos de dispositivos de almacenamiento. 5. Para minimizar o eliminar la posibilidad de perdida o destruccin de datos. 6. Para proveer un conjunto estndar de rutinas de E/S. 7. Para proveer soporte de E/S para mltiples usuarios, en caso de sistemas multiusuarios.

DIRECTORIOS DE ARCHIVO

Asociado con algunos sistemas de gestin de archivos o cualquier coleccin de archivos suele haber un directorio de archivos. El directorio contiene informnacin acerca de los archivos, incluyendo atributos, localizacin y propietario. Mucha de esta informacin, especialmente la concernida con el almacenamiento es gestionada por el sistema operativo. El directorio es propiamente un archivo, posedo por el sistema operativo y, accesible a traces de diversas rutinas de gestin de archivos. Aunque alguna informacin en los directorios esta disponible para los usuarios y aplicaciones, en general , la informacin se proporciona indirectamente a travs de rutinas del sistema. De este modo los usuarios pueden acceder directamente al directorio, incluso en modo de solo lectura.

SISTEMA DE ARCHIVOS SIMBOLICOS

Los usuarios necesitan poder referirse a un archivo mediante un nombre simblico. Cada archivo del sistema debe tener un nombre nico para que las referencias al archivo no sean ambiguas. Por otro lado, es una carga inaceptable para los usuarios el proporcionar nombres nicos, especialmente en los sistemas compartidos. El uso de directorios estructurados en arbol minimiza la dificultad de asignar nombres unicos. Cualquier archivo del sistema puede ser localizado siguiendo un camino desde, el directorio raz o maestro. descendiendo por varias ramas hasta que se alcance el archivo. La serie de nombres de directorios, terminados con el propio nombre del archivo, constituye el propio nombre del camino del archivo. Cada usuario interactivo o proceso tiene asociado un directorio actual, conocido a menudo como directorio de trabajo.

SISTEMA DE ARCHIVOS BASICOS


Este nivel esta referido con el nombre de sistema de archivos bsicos ( basic file system), o nivel de E/S fsica ( physical I/O) . Esta es la interfase primaria con el ambiente fuera del sistema de la computadora. Este nivel trata con bloques de datos que son intercambiados con sistemas de disco o cinta. De este modo se preocupa de ubicar dichos bloques en el dispositivo de almacenamiento secundario y del almacenamiento intermedio de los mismos en memoria principal. Este nivel no comprender el contenido de los datos o la estructura de los archivos implicados. El sistema de archivos bsicos es usualmente considerado como parte del sistema operativo.

ESTRUCTURA DE DIRECTORIOS DE ARCHIVO

La manera en que la informacin se almacena difiere mucho en los diferentes sistemas. Parte de la informacin puede almacenarse en un registro de cabecera asociado al archivo, esto reduce el espacio necesario para el directorio, haciendo mas fcil mantener todo el directorio. La forma mas fcil de estructuracin de un directorio es una lista de entradas, unas para cada archivo. Esta estructura puede representarse con un simple archivo secuencial, con el nombre del archivo haciendo las veces de clave. Operaciones que se pueden realizar con un directorio: 1. Buscar: Cuando alguien referencia el archivo, debe buscarse en el directorio la entrada correspondiente al archivo. 2. Crear archivo: Al crear un nuevo archivo. debe aadirse una entrada al directorio. 3. Borrar archivo: Al borrar un archivo, debe eliminarse una entrada al directorio. 4. Listar directorio: Puede solicitarse todo el directorio o una parte. Una simple lista no se ajusta bien a estas operaciones. Si el directorio es una simple lista secuencias, no ofrecer ayuda en la organizacin de los archivos y obligara al usuario a tener cuidado de no usar el mismo nombre para dos tipos diferentes de archivos. Para resolver este problema se puede acudir a un esquema de dos niveles donde hay un directorio para cada usuario y un directorio maestro. Un mtodo mas potente y flexible es el directorio jerrquico o estructurado en arbol. Existe un directorio maestro que contiene un numero determinado de directorios de usuario. Cada uno de estos directorios puede tener a su vez subdirectorios y archivos como entradas. Esto se cumple en cualquier nivel. Para organizar cada directorio y subdirectorio. El mtodo mas simple es almacenar cada directorio como un archivo secuencial. Cuando los directorios contengan un numero muy grande de entradas, tal organizacin puede conducir a tiempos de, bsqueda innecesariamente grandes. En ese caso se prefiere una estructura de dispersin.

CONTROL DE ACCESO
El sistema de archivos provee una herramienta flexible para permitir compartir extensos archivos entre los usuarios. El sistema de archivos debe proporcionar un numero de opciones de modo en que un archivo que es accedido pueda ser controlado. Normalmente, al usuarios o a los grupos de usuarios se les otorgan ciertos derechos de acceso a cada archivo. Un amplio rango de derechos de acceso se ha venido usando. La siguiente lista representa los derecho de acceso que pueden ser asignados a un usuario en particular para un archivo en particular: 1. Ninguno: El usuario no puede siquiera determinar la existencia del archivo ni mucho menos acceder al mismo. No se permite al usuario leer el directorio de usuario que incluya al archivo. 2. Conocimiento: El usuario sabe de la existencia del archivo Y quien el dueo. El usuario puede solicitar los derechos de acceso adicionales al propietario. 3. Ejecucin: El usuario puede ejecutar y cargar un programa pero no copiarlo. 4. Lectura: El usuario puede leer el archivo para cualquier propsito, incluyendo copia y ejecucin. 5. Adicin: El usuario puede aadir datos al archivo, generalmente al final, pero no puede modificar o borrar el contenido del mismo. 6. Actualizacin: El usuario puede modificar, borrar y aadir otros datos al archivo. 7. Cambio de proteccin: El usuario puede cambiar los derechos de acceso otorgados a usuarios. 8. Borrado: El usuario puede borrar el archivo del sistema de archivos. Los derechos constituyen una jerarqua. Si un usuario adquiere el derecho de la actualizacin para un archivo determinado, tambin habr adquirido los derechos siguientes: conocimiento, ejecucin, lectura y adicin. El propietario de un archivo dispone de los derecho de acceso listados antes y puede otorgar derechos a los otros. Puede ofrecerse acceso a las siguientes clases de usuarios: 1. Usuario especfico: Usuarios individuales quienes son designados por su ID de usuario. 2. Grupos de usuarios: Un conjunto de usuarios no definidos individualmente. 3. Todos: Todos los usuarios que tengan acceso al sistema. Estos sern archivos pblicos.

Temas adicionales
El problema del productor y el consumidor
P P r o c e s o r o d u c t o r
F l u jo d d a t o s e

P C

r o c e s o o n s u m i d

M e c a c o m u

n i s m o d e n i c a c i n

El problema del productor-consumidor (con un buffer finito): Un conjunto de procesos "productores" y un conjunto de procesos "consumidores" se comunican entre s a travs de un buffer, en el que los productores van depositando elementos, y del cual, los consumidores los van sacando. Los productores llevan a cabo de forma continua un ciclo "producir un elemento - guardar el elemento en el buffer", y los consumidores repiten un ciclo parecido: "sacar un elemento del buffer - consumir el elemento". El buffer tiene una capacidad limitada, pudiendo almacenar slo N elementos del mismo tamao. La sincronizacin que se requiere en este caso es doble: en primer lugar, los

productores no pueden colocar elementos en el buffer si ste est lleno, y en segundo lugar, los consumidores no pueden sacar elementos del buffer si ste est vaco. Adems, el buffer y las variables compartidas deben protegerse del acceso concurrente por parte de los distintos procesos, pues son zonas compartidas de memoria modificables por los procesos. De ah que el acceso al buffer y a las variables compartidas se realice en exclusin mutua. Los problemas comienzan cuando el productor quiere dejar algo en el buffer, pero ste ya est lleno. La solucin es mandar a dormir al productor y despertarlo slo cuando el consumidor haya retirado uno o ms elementos. Anlogamente, debe enviarse a dormir al consumidor cuando trate de retirar un elemento del buffer y ste est vaco. Ms tarde, cuando el productor deje uno o ms elementos en el buffer, despertar al consumidor. Para llevar la cuenta del nmero de elementos en el buffer, necesitamos una variable, cuenta. El acceso a la variable cuenta no est controlado. As, se puede presentar la siguiente situacin: el buffer est vaco y el consumidor acaba de leer 0 de la variable cuenta. En este instante el planificador decide pasar el control del consumidor al productor. El productor deja un elemento en el buffer, incrementa cuenta y observa que su valor ahora es 1, por lo que deduce que su valor era 0 y que, por tanto, el consumidor est dormido, as que el productor llama a despertar al consumidor. Por desgracia, el consumidor no est todava lgicamente dormido, de modo que la seal para despertarlo se pierde. Cuando el consumidor se active de nuevo, comprobar el valor de cuenta que ley anteriormente, ver que es 0 y se ir a dormir. Por su parte, el productor acabar llenando el buffer y tambin se tendr que ir a dormir. Ambos dormirn eternamente. Una posible implementacin de los semforos La operacin wait lleva implcita la idea de que los procesos se quedan bloqueados cuando un semforo tiene el valor 0, y son liberados cuando se realiza una operacin signal. La forma natural de implementar todo esto es asociando a cada semforo una cola. Cuando un proceso lleva a cabo una operacin wait sobre un semforo a cero, se aade a la cola del semforo y se le pasa a estado bloqueado. Recprocamente, cuando se ejecuta una operacin signal sobre un semforo determinado, se saca un proceso de la cola del mismo (a menos que est vaca) y se le hace listo. Un semforo debe implementarse, pues, a base de dos elementos: un entero y un puntero asociado a una cola (que puede ser nulo). No hemos dicho nada an acerca del proceso que ser sacado de la cola del semforo despus de una operacin signal. Tampoco hemos dicho nada sobre el lugar donde hay que colocar un proceso que haya efectuado un wait sobre un semforo a cero. Para la mayora de semforos es adecuada una cola en la que se siga el criterio de que el primero en entrar sea el primero en salir (FIFO), ya que con ello se garantizara que todos los procesos bloqueados puedan eventualmente hacerse listos. Lo que es importante tener en cuenta es que distintos semforos pueden estar asociados a colas con criterios distintos. Ello obliga a aadir un nuevo elemento en la implementacin de un semforo con el fin de especificar el criterio de gestin de la cola. Este elemento puede ser un puntero a un pequeo programa que lleve a cabo las funciones de entrada y salida de la cola. Soluciones al problema del productor/consumidor con buffer acotado: Por medio de Monitores con seales (monitor de Hoare). Por medio de Monitores con notificacin y difusin (monitor de Lampson y Redell). Solucin al P/C con monitores con seales: El procedimiento comprueba primero la condicin no_lleno, para saber si hay espacio libre en el buffer. De no haberlo el proceso que est ejecutando el monitor se suspende cualquier otro proceso (P o C) puede entrar ahora al monitor. Cuando el buffer ya no est lleno el proceso suspendido puede ser retirado de la cola y reactivado y el proceso podra reanudarse. Tras introducir un carcter en el buffer, el proceso activa la condicin no_vaco. Conclusiones: Como vemos la propia estructura del monitor garantiza la EM, no es posible que P y C accedan simultneamente al buffer. Lo nico que tiene que hacer el programador es situar correctamente las primitivas cwait() y csignal() en el monitor controlando que no se depositen elementos en un buffer lleno o no se extraigan de uno vaco. Inconvenientes de los monitores con seales: Posible error de sincronizacin de monitores: Si olvidamos cualquiera de los csignal(), los procesos que entran en la cola de la condicin se quedan colgados permanentemente. Si un proceso ejecuta un csignal() y no ha terminado en el monitor, hacen falta dos cambios de proceso adicionales para continuar la ejecucin del programa: Uno para suspender el proceso.

Otro para reanudarlo cuando el monitor quede disponible. La planificacin debe de ser muy fiable. Cuando se ejecuta un csignal() se activar inmediatamente un proceso de la cola de la condicin correspondiente y el planificador debe asegurarse de que ningn otro proceso entre al monitor antes de la activacin. Soluciones al P/C con monitores de notificacin y difusin: Notifican los procesos en vez de reactivarlos a la fuerza. Se puede aadir una primitiva de difusin cbroadcast(), que provoca que todos los procesos que estn esperando por una condicin se sitan en el estado de listos. Esto es conveniente en situaciones donde un proceso no sabe cuantos procesos deben reactivarse. Ventajas sobre los monitores con seales: 1. Menor propensin a errores, cada procedimiento comprueba la variable del monitor despus de ser despertado, por medio del while. 2. Ms modulable en cuanto a la construccin de programas. 3. Hace cumplir la EM y concluye la operacin de E/S antes de permitir cualquier otra operacin sobre el buffer. 4. Dispone de suficiente memoria para que este proceso pueda completar su solicitud de asignacin.

Sistemas Distribuidos. Un sistema distribuido se define como una coleccin de computadores autnomos conectados por una red, y con el software distribuido adecuado para que el sistema sea visto por los usuarios como una nica entidad capaz de proporcionar facilidades de computacin. [Colouris 1994]. Es un sistema operativo comn compartido por una red de computadoras. A los usuarios les parece un sistema operativo normal centralizado , pero les proporciona acceso transparente a los recursos de diversas maquinas .Un SO distribuido puede depender de una arquitectura de comunicaciones para las funciones bsicas de comunicacin, pero normalmente se incorporan un conjunto de funciones de comunicacin mas sencillas para proporcionar eficiencia. La funcionalidad de las comunicaciones que necesitan las aplicaciones distribuidas es bastante compleja. Esta funcionalidad generalmente se implementa como un conjunto estructurado de mdulos. Los mdulos se disponen en capas situadas de forma vertical. Cada capa proporciona una parte de la funcionalidad necesaria y depende de la capa inferior. Esta estructura se conoce como arquitectura de comunicaciones. Una motivacin para el uso de este tipo de estructura es que facilita la tarea de diseo e implementacin Para cualquier paquete grande de software es una prctica dividir la funcionalidad en mdulos que se pueden disear e implementar en forma separada.(Stalling) Ventajas: Comparticin de Recursos Dispositivos y Programas Eficiencia y Flexibilidad. Respuesta Rpida, ejecucin Concurrente de procesos (En varias computadoras),Empleo de tcnicas de procesamiento distribuido.

Disponibilidad y Confiabilidad: Sistema poco propenso a fallas (Si un componente no afecta a la disponibilidad del sistema).Mayores servicios que elevan la funcionalidad ( Monitoreo, Telecontrol, Correo Elctrico, Etc.). Crecimiento Modular. Es inherente al crecimiento. Inclusin rpida de nuevos recursos. Desventajas: Requerimientos de mayores controles de procesamiento.Velocidad de propagacin de informacin ( Muy lenta a veces).Servicios de replicacin de datos y servicios con posibilidades de fallas.Mayores controles de acceso y proceso. Usos: estaciones cientificas por ejemplo meteorolgicas Cluster:Un cluster es un grupo de equipos independientes que ejecutan una serie de aplicaciones de forma conjunta y aparecen ante clientes y aplicaciones como un solo sistema. Ventajas Escabilidad: capacidad de un equipo de hacer frente a volmenes de trabajo cada vez mayores, sin dejar por ello de prestar un nivel de rendimiento aceptable. Disponibilidad: es la capacidad de estar presente, de estar listo en un determinado momento en el que se quiere hacer uso. Cada nodo del cluster es una computadora en si mismo el fallo de un de los nodos no determina la prdida del servicio. Fiabilidad: es la probabilidad de funcionamiento correcto. Desventajas: La mala planificacin y la falta de estudios sobre la factibilidad de un Cluster pueden provocar un mala perspectiva del mismo, conduciendo a la falta de afiliados y al poco inters de parte de los empresarios. Usos: Tcnicas como la generacin (rendering) de imgenes fotorrealistas ARQUITECTURAS RECONFIGURABLES: Es un paradigma el computar que combina algo de la flexibilidad del software con el alto rendimiento del hardware procesando con las telas que computan de alta velocidad muy flexibles como FPGAs. Tiene la capacidad de realizar cambios substanciales a datapath s mismo adems del flujo del control. Los bloques de la lgica se pueden programar para realizar la funcin de bsico puertas de la lgica por ejemplo Y, y XOR, o ms complejo funciones combinational por ejemplo los decodificadores o las funciones matemticas. Usos: Procesamiento digital de seales, sistemas aeroespaciales y de defensa, prototipos de ASICs, sistemas de imgenes para medicina, sistemas de visin para computadoras, reconocimiento de voz,etc Assembler: El lenguaje Assembler es un tipo de lenguaje de bajo nivel utilizado para escribir programas informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador. Usos: Fue usado principalmente en los inicios del desarrollo de software, cuando aun no se contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en ambientes acadmicos y de investigacin, especialmente cuando se requiere la manipulacin directa de hardware, se pretenden altos rendimientos o un uso de recursos controlado y reducido.

S-ar putea să vă placă și