Você está na página 1de 184

SISTEMAS OPERATIVOS

Nombre del alumno:_____________________________ Grado_______________________________

carrera______________________________

Indice 1. Introduccin 2. Concepto y definicin de Sistemas Operativos. 3. Caractersticas de los Sistemas Operativos. 4. Clasificacin de los sistemas operativos. 5. Sistemas Operativos paralelos 6. Historia de los Sistemas Operativos. 7. Sistema Operativo NetWare de Novell. 8. NetWare, Versin 4.0. 9. Servidor de Archivos de NetWare. 10. Seguridad del Sistema. 11. Puentes, Ruteadores y Compuertas de NetWare hacia otras Redes. 12. La Interfaz de Enlace de Datos Abierta de Novell. 13. Instalacin, Configuracin y Evaluacin de NetWare. 1. Introduccin Un Sistema Operativo es una parte importante de cualquier sistema de computacin. Un sistema de computacin puede dividirse en cuatro componentes: el hardware, el Sistema Operativo, los programas de aplicacin y los usuarios. El hardware (Unidad Central de Procesamiento(UCP), memoria y dispositivos de entrada/salida (E/S)) proporciona los recursos de computacin bsicos. Los programas de aplicacin ( compiladores, sistemas de bases de datos, juegos de video y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemas de computacin de los usuarios. Esto es a grandes rasgos un concepto de sistemas operativos en el contenido que a continuacin presentamos existen diversos conceptos, as como tambin su historia, caractersticas y su clasificacin, ms adelante se consiguen caractersticas o informacin bastante importante sobre un sistema operativo en particular llamado Novell-Netware. 2. Concepto y definicin de Sistemas Operativos. Figura. Algunos recursos que administra el Sistema Operativo Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicin exacta, es decir una que sea estndar; a continuacin se presentan algunas: 1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el softwareo firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cmputo"; los sistemas operativosponen dicha capacidad de cmputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento. 2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador ;adems de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacin y los datos. 3.- Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware del computador y su propsito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecucin de programas de aplicacin y acta como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema.

En resumen, se podra decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son:

Gestionar el hardware.- Se refiere al hecho de administrar de una forma ms eficiente los recursos de la mquina. Facilitar el trabajo al usuario.-Permite una comunicacin con los dispositivos de la mquina.

El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de cdigo que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicacin y software variado. 3. Caractersticas de los Sistemas Operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas:

Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el

posible.

desarrollo,

prueba o introduccinefectiva de nuevas funciones del sistema sin interferir con el recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada procesador para poder compartir los recursos.

servicio. proceso una parte del

Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los

Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los

dispositivos perifricos, cuando el usuario as lo requiera. Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras. Procesamiento por bytes de flujo a travs del bus de datos.

Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. Tcnicas de recuperacin de errores. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, Generacin de estadsticas. Permite que se puedan compartir el hardware y los datos entre los usuarios.

informndoles si esa aplicacin esta siendo ocupada por otro usuario.

El software de aplicacin son programas que se utilizan para disear, tal como el procesador de palabras, lenguajes de programacin, hojas de clculo, etc. El software de base sirve para interactuar el usuario con la mquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseo del mismo. El Software de base est compuesto por :

Cargadores. Compiladores. Ensambladores. Macros.

4. Clasificacin de los sistemas operativos.

Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas: Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuencialidad de la ejecucin de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento cientfico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento acadmico. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son:

Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (ej., anlisis estadsticos, nminas de

personal, etc.)
Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de

transitorios.

archivos: se requiere poca proteccin y ningn control de

concurrencia para el acceso. Figura. Trabajos ms comunes que realiza el Sistema Operativo por lotes. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados un gran nmero de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas como control de trfico areo, bolsas de valores, control de refineras, control de laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los siguientes:

Control de trenes. Telecomunicaciones. Sistemas de fabricacin integrada. Produccin y distribucin de energa elctrica. Control de edificios. Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos

al sistema computacional, en breve tiempo o dentro de ciertos plazos. Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real.,

aplicaciones militares, etc. Objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. Proceso de mayor prioridad expropia recursos. Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes Poblacin de procesos esttica en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestin de archivos se orienta ms a velocidad de acceso que a utilizacin eficiente del recurso.

en memoria.

Sistemas Operativos de multiprogramacin (o Sistemas Operativos de multitarea). Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos activos(que se estn ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al mximo su utilizacin. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est usando el procesador, o un procesador distinto, es decir, involucra mquinas con ms de una UCP. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes:


real.

Mejora productividad del sistema y utilizacin de recursos. Multiplexa recursos entre varios programas. Generalmente soportan mltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios individuales. Requieren validacin de usuario para seguridad y proteccin. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo

Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de

mltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos Sistemas Operativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecer en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que tiene el sistema dedicado para s mismo. Esto trae como

perifricos.

consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Caractersticas de los Sistemas Operativos de tiempo compartido:

Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseo asistido por

computador, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. Mayora utilizan algoritmo de reparto circular. Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido

el servicio. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). Gestin de memoria proporciona proteccin a programas residentes. Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples

usuarios accesando un mismo archivos. Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caracteristicas de los Sistemas Operativos distribuidos:

Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y

software . Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos. Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de

clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.). Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o ms computadoras unidas atravez de algn medio de comunicacin (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic. Figura. Se muestra un Sistema Operativo en red.

5. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM. 6. Historia de los Sistemas Operativos. Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales caractersticas de un Sistema Operativo contemporneo, es til considerar como han ido evolucionando stos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podra ser esta: En los 40's, se introducen los programas bit a bit, por medio de interruptores mecnicos y despus se introdujo el leng. mquina que trabajaba por tarjetas perforadas. Con las primeras computadoras, desde finales de los aos 40 hasta la mitad de los aos 50, el programador interactuaba de manera directa con el hardware de la computadora, no exista realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a travs del lenguaje mquina (bits) o a travs de interruptores. Durante los aos 50's y 60's.- A principio de los 50's, la compaa General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseadores, capturistas, etc.), se encarguen de modificar sus programas. Establecan o apartaban tiempo, metan o introducan sus programas, corregan y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traduca en prdida de tiempo y tiempos de programas excesivos. En los aos 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta poca surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo. En los 80's, inici el auge de la INTERNET en los Estados Unidos de Amrica. A finales de los aos 80's comienza el gran auge y evolucinde los Sistemas Operativos. Se descubre el concepto de multiprogramacin que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales. Los 90's y el futuro, entramos a la era de la computacin distribuida y del multiprocesamiento a travs de mltiples redes de computadoras, aprovechando el ciclo del procesador. Se tendr una configuracin dinmica con un reconocimiento inmediato de dispositivos y software que se aada o elimine de las redes a travs de procesos de registro y localizadores. La conectividad se facilita gracias a estndares y protocolos de sistemas abiertos por organizaciones como la Org. Intern. de normas, fundacin de software abierto, todo estar mas controlado por los protocolos de comunicacin OSIy por la red de servicios digital ISDN. Se ha desarrollado otra versin, la cual se ha hecho en base a etapas o generaciones:

1a. Etapa (1945-1955) : Bulbos y conexiones. Despus de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccinde las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la dcada de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), as como Conrad Zuse (Alemania), entre otros lograron construir mquinas de clculomediante bulbos. Estas mquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho ms lentas que la computadora casera ms econmica en nuestros das. Toda la programacin se llevaba a cabo en lenguaje de mquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de programacin eran desconocidos (incluso el lenguaje ensamblador). No se oa de los Sistemas Operativos el modo usual de operacin consista en que el programador reservaba cierto perodo en una hoja de reservacin pegada a la pared, iba al cuarto de la mquina, insertaba su conexin a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o ms bulbos se quemara durante la ejecucin. La inmensa mayora de los problemas eran clculos numricos directos, por ejemplo, el clculo de valores para tablas de senos y cosenos. A principio de la dcada de los 50's la rutina mejoro un poco con la introduccin de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo dems el proceso era el mismo. 2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes.

La introduccin del transistor a mediados de los aos 50's modific en forma radical el panorama. Las computadoras se volvieron confiables de forma que podan fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Dado el alto costodel equipo, no debe sorprender el hecho de que las personas buscaron en forma por dems rpidas vas para reducir el tiempo invertido. La solucin que, por lo general se adopt, fue la del sistema de procesamiento por lotes. 3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramacin. La 360 de IBM fue la primera lnea principal de computadoras que utiliz los circuitos integrados, lo que proporcion una gran ventaja en el precio y desempeocon respecto a las mquinas de la segunda generacin, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamao y sus problemas el sistema operativo de la lnea IBM 360 y los sistemas operativos similares de esta generacin producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayora de sus clientes. Tambin popularizaron varias tcnicas fundamentales, ausentes de los sistemas operativos de la segunda generacin, de las cuales la ms importante era la de multiprogramacin. Otra caracterstica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cmputo. As, siempre que concluyera un trabajo el sistema operativo poda cargar un nuevo trabajo del disco en la particin que quedara desocupada y ejecutarlo. 4ta Etapa (1980-Actualidad) : Computadoras personales. Un interesante desarrollo que comenz a llevarse a cabo a mediados de la dcada de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos. En los sistema operativo de red, los usuarios estn conscientes de la existencia de varias computadoras y pueden conectarse con mquinas remotas y copiar archivos de una mquina a otra. Cada mquina ejecuta su propio sistema operativo local y tiene su propio usuario.

Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando est compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automtica y efica z por el sistema operativo. 7. Sistema Operativo NetWare de Novell. Introduccin al uso de la Red NetWare. El sistema de redes ms popular en el mundo de las PCs es NetWare de Novell. Este sistema se dise con la finalidad de que lo usarn grandes compaas que deseaban sustituir sus enormes mquinas conocidas como mainframe por una red de PCs que resultara ms econmica y fcil de manejar. NetWare es una pila de protocolos patentada que se ilustra y que se basa en el antiguo Xerox Network System, XNS pero con varias modificaciones. NetWare de Novell es previo a OSI y no se basa en l, si acaso se parece ms a TCP/IP que a OSI. Las capas fsica y de enlace de datos se pueden escoger de entre varios estndares de la industria, lo que incluye Ethernet, el token ring de IBM y ARCnet. La capa de red utiliza un protocolode interred poco confiable, si n conexin llamado IPX. Este protocolo transfiere paquetes de origen al destino en forma transparente, aun si la fuente y el destino se encuentran en redes diferentes. En lo funcional IPX es similar a IP, excepto que usa direcciones de 10 bytes en lugar de direcciones de 4 bytes, (9) y (10). Por encima de IPX est un protocolo de transporteorientado a la conexin que se llama NCP (Network Core Protocol, Protocolo Central de Red). El NCP proporciona otros servicios adems del de transporte de datos de u suario y en realidad es el coraznde NetWare. Tambin est disponible un segundo protocolo, SPX, el cual solo proporciona transporte. Otra opcin es TCP. Las aplicaciones pueden seleccionar cualquiera de ellos. Por ejemplo, el sistema de archivos usa NCP y Lotus Notes usa SPX. Las capas de sesin y de presentacin no existen. En la capa de aplicacin estn presentes varios protocolos de aplicacin. La clave de toda la arquitecturaes el paquete de datagrama de interred sobre el cual se construye todo lo dems. En la Figura 1.3 se muestra el formato de un paquete IPX. El campo Suma de verificacin pocas veces s e usa puesto que la capa de enlace subyacente tambin proporciona una suma de verificacin. El campo Longitud del paquete indica qu tan grande es el paquete, es decir suma el encabezado ms datos y el resultado se guarda en 2 bytes. El campo Control de transporte cuenta cuntas redes ha atravesado el paquete; cuando se excede un mximo, el paquete se descarta. El campo Tipo de paquete sirve para marcar varios paquetes de control. Cada una de las dos direcciones contiene un nmero de red de 32 bits, un nmero de mquina de 48 bits (La direccin802 LAN) y la direccin local (Socket) de 16 bits en esa mquina. Por ltimo se tienen los datos que ocupan el resto del paquete, cuyo tamao mximo est determinado por la capa subyacente NetWare, Versin 2.2. La adaptabilidad de las caractersticas de NetWare 2.2 a las necesidades al mercado de hoy se queda corto cuando comienza a listar los asuntos de conectividad a que se enfrentan las compaas de hoy, administrac in y apoyo para mltiples protocolos, conexiones de rea amplia, flexibilidad y facilidad de uso al administradordel NOS bajo escenarios de conectividad que cambian constantemente. El NetWare 2.2 no pudo mantener el ritmo de los dems en las pruebas de ejecucin que representaban tareas de redes mayores. Esto se puede comprender si se tiene en cuenta que NetWare 2.2 de 16 bits todava se puede ejecutar en una mquina de clase AT. Comprensible, s, pero no aceptable como una solucin para toda una compaa. NetWare 386 inicialmente slo estaba disponible como una versin de 250 usuarios, e incluso para cuando NetWare 2.2 sali al mercado, la versin bsica de NetWare 3.x era una licencia de 20 usuarios de US$3.495. Hoy en da las cosas son

completamente distintas. Una versin de 5 usuarios de NetWare 3.11 tiene un precio de lista de US$1.095 comparado con NetWare 2.2 que cuesta US$895. Incluso el nivel de 100 usuarios solamente muestra una diferencia de mil dlares entre los US$5.995 de NetWare 2.2 y los US$6.995 de NetWare 3.11. Aunque la instalacin y la configuracin de NetWare 2.2 son mejores que las de sus predecesores, ests ya son demasiado lentas comparndolas con las de las versiones 3.11 y 4.0. La documentacin de NetWare 2.2 est extremadamente bien escrita, organizada y repleta de fotostiles de pantalla. Durante la instalacin hay ayuda en lnea disponible para cada pantalla, como es el c aso del resto de los servicios de NetWare. NetWare 2.2 es la novena generacin de la lnea NetWare 286, una madurez evidente en los servicios de administracin para usuarios y archivos. Configurar los usuarios, establecer los derechos de cuentas y administra r la estructura de directorios son tareas que se realizan con una serie de servicios de mens bien diseados o de lnea de comandos. Sin embargo, hasta que sali NetWare 4.0, Novell no ofreci un servicio de directorios globales como parte inherente de NetWare. NetWare 2.2 recibe ayuda de Banyan, en la forma de su Enterprise Network Services for NetWare (ENS), que esencialmente ofrece parte del servicio de nombres globales StreetTalk de Banyan a las redes de NetWare. NetWare 2.2 tambin carece de una opcin de consola remota que ya tienen las versiones 3.11 y 4.0. En su arquitectura, NetWare 2.2 es familiar, pero antiguo como lo muestra la Figura 1.4. No tiene la capacidad de procesar mltiples hilos de NetWare 3.11 y 4.0, aunque puede ejecutar aplicaciones basadas en el servidor de llamadas a procesos de valoraadido (VAPs). Pero los VAPs se consideran como difciles de escribir y hay pocos disponibles. Por otro lado, NetWare 3.11 tiene disponibilidad de miles de aplicaciones basadas en el servidor de llamadas a M&oa cute; dulos Cargables de NetWare (NLMs). Que varan desde las aplicaciones de administracin de la red a servidores de SQL. Figura 1.4 Arquitectura de NetWare 2.2. Requerimientos:

PC basada en una 286 o superior. 500K de RAM (2.5 Mb recomendados.)

NetWare, Versin 3.11. NetWare 3.11 sigue siendo un lderfuerte y flexible en la arena de los NOS para las compaas pequeas o grandes. Su nica desventaja para los que necesitan una solucin a nivel de empresa es que carece de un servicio global de directorios. Pero esto se puede corregir en parte con el NetWare Naming Service (NNS) o el ENS de Banyan, que ofrece parte de los servicios distribuidos StreetTalk a los LANs de NetWare. Ofrece la habilidad de compartir archivos e impresoras, velocidad, seguridad, apoyo para la mayora de los sistemas operativos, y una gran cantidad de Hardware, NetWare 3.11 es un producto realmente potente. Aunque tiene algunas dificultades con la administracin de memoria, todava vale la pena, pues tiene algunas otras caractersticas que lo hacen importante. La principal atraccin de un NOS de 32 bits como el que introdujo Novell, fue su diseo modular, como lo muestra la Figura 1.5. Los NLMs se pueden actualizar sin tener que reconstruir el NOS completo, y se pueden ca rgar sobre la marcha. Adems, solamente los mdulos necesarios se cargan en el NOS, reservando la memoria para otras funciones como el caching de discos. Una desventaja de este diseo es el uso de memoria. Los NLMs se cargan en el ani llo 0 y pueden trabar el servidor si el NLM no est escrito correctamente o si entran en conflicto con el NLM de otro fabricante. Por otra parte algunos de los mdulos no desocupan la memoria cuando se descargan (Estos problemas de administr acin de memoria ya han sido resueltos en NetWare 4.x). Figura 1.5 Arquitectura de NetWare 3.11.

NetWare 3.11 est diseado en su mayora para redes desde pequeas a moderadamente grandes que consisten en servidores individuales, principalmente porque sus servicios de directorios no integran a la red en su totalidad. Cada uno de los servidores mantiene una base de datoscentralizada de verificacin individual llamada el Bindery. El Bindery del servidor mantiene la informacin como los nombres de conexin, las contraseas, los derechos de acceso y la informacin de impresin. Si los usuarios necesitan conectarse a ms de un servidor para compartir recursos, deben hacerlo manualmente con cada servidor. Requerimientos:

PC basada en una 386 o superior. 4Mb de RAM. 50Mb de espacio en Disco Duro.

8. NetWare, Versin 4.0. NetWare 4.0 ofrece la conexin simplificada de mltiples servidores, la capacidad de compartir recursos en la red y la administracin centralizada en un producto coherente lleno de caractersticas. La arquitectura de NetWare 4.0, es similar a la de la versin 3.11, como se mostr en la Figura 1.5, pero se han corregido y aumentado sus capacidades. NetWare 4.0 no es para todo el mundo. Determinar si en realidad se necesita un NOS tan potente depende del tamao, la configuracin y la complejidad de la LAN que se quiera formar y, con precios de US$1.395 (5 usuarios) a US$47.995 (1000 usuarios), del presupuesto. NetWare 4.0 aumenta las capacidades de NetWare 3.11, aadiendo muchas caractersticas nuevas. Algunas de las ms atractivas son el NetWare Directory Services (NDS), la compresin de a rchivos, la subasignacin de bloques, la distribucin de archivos y la administracin basada en Microsoft Windows. NDS est en el ncleo de NetWare 4.0. Basado en el estndar X.500, NDS es una base de datos diseada jerrquicamente que reemplaza el Bindery en versiones anteriores de NetWare. Toda la informaci&oacut e;n de la red se guarda en el NDS. NDS considera todas las entidades de la red como objetos, cada uno de los cuales es un puntero a un usuario, un grupode usuarios, servidores de impresoras, o un volumen en el servidor. Con este cambio Novell no abandona a los usuarios del Bindery, NDS puede emular a un Bindery, facilitando la actualizacin a las compaas que tengan un entorno mixto de servidores 2.x, 3.x y 4.x. Lo bueno del NDS es la tolerancia a fallos que proporciona. Si el servidor que contiene la informacin se daa, NDS busca en su base de datos en los otros servidores para recopilar la informacin para una conexi&oac ute;n y permitirle conectarse a la red. Esto es posible porque la base de datos de NDS est duplicada en todos los servidores en la red en particiones, que mantienen toda la informacin de la red. En contraste, StreetTalk de Banyan mantiene la informacin de un usuario en un solo servidor: Si ese servidor sufre algn tipo de avera, el usuario no se podr conectar a la red. La subasignacin de bloques, la compresin de archivos y la migracinde archivos son algunas de las caractersticas atractivas en la versin 4.0. La subasignacin de bloques interviene cuando, por ejemplo, un archivo, de 2Kb se guarda en un servidor que tiene bloques de 4Kb. Normalmente, los 2Kb adicionales de espacio en el disco que no se usaron seran desperdiciados, pero con la subasignacin de bloques activada, ese espacio pue de ser utilizado por otros archivos para rellenar el resto del bloque. Usando una razn de 2:1, la compresin de archivos tambin puede hacer una gran diferencia en el espacio del disco duro. La distribucin de archivos es una caracterstica que ha sido ofrecida en algunos paquetes de resguardo en cinta. Novell ha incorporado, el High Capacity Storage Systems (Sistema de Almacenamiento de Alta Capacidad o HCSS) , en NetWare 4.0 HCSS permite fijar indicadoresen archivos que muestran la frecuencia con que se utilizan y adems permite moverlos a otros medios que incluso no tienen que estar en el disco del servidor. Un marcador fantasma permanece en los vol&

uacute;menes para que si un usuario trata de abrir el archivo, el sistema lo recupera de su lugar de almacenamiento alterno y la copia se hace transparentemente. Con NetWare 4.0, Novell tambin aade un programa de administracin basado en Microsoft Windows uniendo caractersticas de configuracin nuevas y viejas en programas familiares tales como SYSCON, PCONS OLE y PRINTDEF. Los atributos del GUI facilitan el aadir, mover, borrar y modificar objetos de la red. El proceso de instalacin del servidor bajo esta nueva versin es un procedimiento totalmente basado en mens. Un CDROM que contiene todos los archivos de instalacin significa que no se tendr que ca mbiar discos flexibles. Despus de instalar el primer servidor, se puede copiar el contenido del CD-ROM al volumen del servidor para poder instalar otros servidores en la red con mayor velocidad. Novell ha cambiado totalmente el entorno, reemplazando 2 archivos IPX y NET, con mdulos. Los Mdulos Cargables Virtuales (VLMs), que ofrecen una solucin ms flexible a la estacin de trabajo, son cargados en memoria por el VLM Manager. El VLM Manager aprovecha automticamente la memoria alta disponible, conservando la memoria convencional. Los VLMs ocupan menos memoria convencional que sus predecesores, y con la habilidad de rfagas de paquetes incorporada, ocupan menos memoria que incluso BNETX (El entorno de modo de rfaga usado en una estacin). Como son mdulos, los VLMs se pueden aadir o eliminar con rapidez. Adems de los nuevos entornos, un mejor apoyo para Microsoft Windows aade una interfaz grfica para aliviar el problema de conectarse, desconectarse, analizar un disco y conectarse a una cola de impresin. Hay tres rutas de transferencia para actualizar desde NetWare 3.11: a. b. A travs de una conexin a un servidor 4.0 es el procedimiento ms seguro, pero puede ser el ms caro. Hay que instalar un servidor separado con NetWare 4.0 y colocarlo en la red. Si se tiene un servidor adicional disponible, se puede instalar de un servidor a otro, actualizando cada uno en cada paso.

c. A travs de una conexin en el mismo servidor requiere un riesgo a la integridad de los datos. Es necesario tener un cliente con un disco duro o un sistema de resguardo en cinta lo suficientemente grande para contener
toda la informacin acuten del servidor temporalmente mientras se configura el servidor para NetWare 4.0. d. Una actualizacin en el lugar tambin requiere cierto riesgo, en su mayora debido a los posibles fallos durante la actualizacin. Simplemente se debe asegurar de tener un resguardo completo de la red antes de comenzar el proceso. Este procedimiento no est disponible en los servidores 3.0; primero se tiene que actualizar a NetWare 3.1 o superior. Requerimientos:

PC basada en una 386 o superior. 6Mb de RAM 12Mb-60Mb de espacio en Disco Duro.

SISTEMAS OPERATIVOS Enviado por cypress_92 Anuncios Google:

Renta De Computadoras
El mejor equipo al mejor precio !Llamanos y compruebalo | www.compuremates.com.mx

Renta de Computadoras
Pcs, Porttiles, Impresoras Entrega en instalacin sin costo | www.compusolucionesrenta.com

Nuevo Asistente Digital


Vea cmo el ES400 de Motorola marca la Diferencia Entre Saber y Poder! | Facebook.com/Motorola_ES400

Indice

1. Introduccin a los sistemas operativos


2. Estructura de un sistema operativo 3. Funciones y caractersticas de los sistemas operativos. 4. Modalidades de trabajo de los sistemas operativos. 5. Bibliografia 1. Introduccin a los sistemas operativos Definiciones de los sistemas operativos. Un sistema operativo es un programaque acta como intermediario entre el usuario y el hardware de un

computador y su propsito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un sistemaoperativo es lograr que el sistema de computacin se use de manera cmoda, y el objetivo
secundario es que el hardware del computador se emplee de manera eficiente. Un sistema Operativo (SO) es en s mismo un programa de computadora. Sin embargo, es un programa muy especial, quiz el ms complejo e importante en una computadora. El SO despierta a

la computadora y hace que

reconozca a la CPU, la memoria, el teclado, el sistema de vdeo y las unidades de disco. Adems, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran

programas de aplicacin.
Cuando enciendes una computadora, lo primero que sta hace es llevar a cabo un autodiagnstico llamado auto prueba de encendido (Power On Self Test, POST). Durante la POST, la computadora identifica su memoria, sus discos, su teclado, su sistema de vdeo y cualquier otro dispositivo conectado a ella. Lo siguiente que la computadora hace es buscar un SO para arrancar (boot). Una vez que la computadora ha puesto en marcha su SO, mantiene al menos parte de ste en su momento. Mientras la computadora est encendida, el SO tiene 4 tareas principales:

memoria en todo

Proporcionar ya sea una interfaz de lnea de comando o una interfaz grfica al usuario, para que este ltimo se

pueda comunicar con la computadora. Interfaz de lnea de comando: t introduces palabras y

smbolos desde el

teclado de la computadora, ejemplo, el MS-DOS. Interfaz grfica del Usuario (GUI), seleccionas las acciones mediante el uso de un Mousepara pulsar sobre figuras llamadas iconos o seleccionar opciones de los mens.

Administrar los dispositivos de hardware en la computadora. Cuando corren los programas, necesitan utilizar la

memoria, el monitor, las unidades de disco, los puertos de Entrada/Salida ( sirve de intermediario entre los programas y el hardware.

impresoras, mdems, etc.). El SO

Administrar y mantener los sistemas de archivo de disco. Los SO agrupan la informacin dentro de

compartimientos lgicos para almacenarlos en el disco. Estos

gruposde informacin son llamados archivos. Los

archivos pueden contener instrucciones de programas o informacin creada por el usuario. El SO mantiene una lista de los archivos en un disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos.

Apoyar a otros programas. Otra de las funciones importantes del SO es proporcionar serviciosa otros

programas. Estos servicios son similares a aquellos que el SO proporciona directamente a los usuarios. Por ejemplo, listar los archivos, grabarlos a disco, eliminar archivos, revisar espacio disponible, etc. Cuando los programadores escriben programas de computadora, incluyen en sus programas instrucciones que solicitan los servicios del SO. Estas instrucciones son conocidas como "llamadas del sistema"

Qu es un sistema operativo? Un sistema operativo es el programa que oculta la verdad del hardware al programador y presenta una vista simple y agradable de los archivos nominados que pueden leerse y escribirse. El sistema operativo resguarda al programador del hardware del disco y presenta una interfaz simple orientada al archivo, tambin disimula mucho del interrupciones, relojes o cronmetros, manejo de memoria y otras caractersticas de bajo nivel. La funcindel sistema operativo es la de presentar al usuario con el equivalente de una mquina ampliada o mquina virtual que sea ms fcil de programar que el hardware implcito. Un sistema operativo es una parte importante de casi cualquier sistema de computacin. Un sistema de computacin puede dividirse en cuatro componentes: el hardware, el sistema operativo, los programas de aplicacin y los usuarios. El hardware (unidad central de procesamiento (UCP), memoria y dispositivos de entrada y salida (E/S)) proporciona los

trabajoconcerniente a

recursos de computacin bsicos. Los programas de aplicacin (compiladores, sistemas de bases de datos, juegos de video y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemasde computacin de los usuarios. Puede haber distintos usuarios (personas, mquinas, otros computadores)
que intentan resolver problemas diferentes; por lo tanto es posible que haya diferentes programas de aplicacin. El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicacin de los distintos usuarios Podemos ver al sistema operativo como un asignador de recursos. Un sistema de computacin tiene muchos recursos (hardware y software) que pueden requerirse para resolver un problema: tiempo de la UCP, espacio de memoria, espacio de almacenamiento de archivos, dispositivos de E/S, etc. El sistema operativo acta como el

administrador

de estos recursos y los asigna a usuarios y programas concretos segn los necesiten las tareas de los usuarios. Puesto que pueden surgir conflictosen las solicitudes de recursos, el sistema operativo debe decidir a que solicitudes se les asignaran para que el sistema de computacin pueda funcionar de manera eficiente y justa. En trminos generales no hay una definicin de sistema operativo completamente adecuada. Los sistemas operativos existen porque son una manera razonable de solucionar el problema de crear un sistema de computacin utilizable. Objetivos para la creacin de los sistemas Operativos.

Transformar el complejo hardware de una computadora a una mquina accesible al usuario. Lograr el mejor uso posible de los recursos. Hacer eficiente el uso del recurso.

El objetivo fundamental de los sistemas de computacin es ejecutar los programas de los usuarios y facilitar la resolucin de sus problemas. El hardware se construye con este fin, pero como este no es fcil de utilizar, se desarrollan programas de aplicacin que requieren ciertas operaciones comunes, como el controlde dispositivos de E/S. las funciones comunes de control y de asignacin de recursos se integran para formar un solo fragmento de software: el sistema operativo. Desarrollo histrico de los sistemas operativos. En un principio solo exista el hardware del computador. Los primeros computadores eran (fsicamente) grandes maquinas que se operaban desde una consola. El programador escriba un programa y luego lo controlaba directamente desde la consola. En primer lugar, el programa se cargaba manualmente en la memoria, desde los interruptores del tablero frontal (una instruccin en cada ocasin), desde una cinta de papel o desde tarjetas perforadas. Luego se pulsaban los botones adecuados para establecer la direccinde inicio y comenzar la ejecucin del programa. Mientras este se ejecutaba, el programador-operador lo poda supervisar observando las luces en la consola, si se descubran errores, el programador poda detener el programa, examinar el contenido de la memoria y los

registrosy depurar el programa directamente desde

la consola. La salida del programa se imprima, o se perforaba en cintas de papel o tarjetas para su impresin posterior. Sin embargo, con este procedimientose presentaban ciertos problemas. Supongamos que un usuario se haba registrado para usar una hora de tiempo del computador dedicada a ejecutar el programa que estaba desarrollando, pero se topaba con algn error difcil y no poda terminar en esa hora. Si alguien ms haba reservado el siguiente bloque de tiempo, usted deba detenerse, rescatar lo que pudiera y volver mas tarde para continuar. Por otra parte, si el programa se ejecutaba sin problemas, podra terminar en 35 minutos; pero como pens que necesitara la maquina durante ms tiempo, se registro para usarla una hora, y permanecera inactiva durante 25 minutos.

Conforme transcurri el tiempo, se desarrollaron software y hardware adicionales; empezaron a popularizarse los lectores de tarjetas, impresoras de lneas y cintas magnticas; se disearon ensambladores, cargadores y ligadores para facilitar las tareas de programacin, y se crearon bibliotecasde funciones comunes, de manera que estas podan copiarse a un nuevo programa sin tener que escribirlas de nuevo. Las rutinas que efectuaban operaciones de E/S tenan una importancia especial. Cada nuevo dispositivo de E/S posea sus propias caractersticas, lo que requera una cuidadosa programacin. As mismo, para cada uno de ellos se escriba una subrutina especial, la cual se denominaba manejador de dispositivos. Este sabe como deben de usarse los buffers,

indicadores, registros, bits de control y bits de estadopara cada dispositivo. Cada tipo de dispositivo tena su propio manejador. Una tarea sencilla, como leer un carcterde un lector de cinta de papel, poda conllevar complicadas secuencias de operaciones especficas para el dispositivo. En lugar de tener que escribir cada vez el cdigo necesario, bastaba usar el manejador de dispositivo de la biblioteca. Ms tarde aparecieron los compiladores de FORTRAN, COBOLy otros lenguajes, lo que facilito la tarea de programacin,
pero hizo ms complejo el funcionamiento del computador. Por ejemplo, al preparar la ejecucin de un programa en FORTRAN, el programador primero necesitaba cargar en el computador el compilador de FORTRAN, que generalmente se conservaba en una cinta magntica, por lo que haba que montar la cinta adecuada en la unidad correspondiente. El programa se lea a travs del lector de tarjetas y se escriba en otra cinta. El compilador de FORTRAN produca una salida en lenguaje ensamblador, que luego tenia que ensamblarse, para esto era necesario montar otra cinta con el ensamblador, y su salida deba enlazarse con las rutinas de apoyo de las bibliotecas. Finalmente, el programa objeto, en cdigo binario, estaba listo para ejecutarse; se cargaba en memoria y se depuraba desde la consola como antes. Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llamados generaciones. En el caso del Hardware, las generaciones han sido marcadas por grandes avances en los componentes utilizados, pasando de vlvulas (primera generacin) a transistores (segunda generacin), a

circuitosintegrados (tercera generacin), a circuitos integrados de gran y muy gran escala (cuarta generacin). Cada generacin Sucesiva de hardware ha ido acompaada de reducciones substanciales en los costos, tamao, emisin de calor y consumode energa, y por incrementos notables en velocidady capacidad.
Generacin Cero (dcada de 1940) Los primeros sistemas computacionales no posean sistemas operativos. Los usuarios tenan completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano. Primera Generacin (dcada de 1950) Los sistemas operativosde los aos cincuenta fueron diseados para hacer mas fluida la transicin entre trabajos. Antes de que los sistemas fueran diseados, se perda un tiempo considerable entre la terminacin de un trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunan por grupos o lotes. Cuando el trabajoestaba en ejecucin, este tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y lea e iniciaba el trabajo siguiente. Al inicio de los 50's esto haba mejorado un poco con la introduccin de tarjetas perforadas (las cuales servan para introducir los programas de lenguajes de mquina), puesto que ya no haba necesidad de utilizar los tableros enchufables. Adems el laboratorio de investigacinGeneral Motors implement el primer sistema operativo para la IBM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transicin entre tareas se suavizaba para lograr la mxima utilizacin del sistema. Esto se conoce como sistemas de procesamiento por lotes de un slo flujo, ya que los programas y los datos eran sometidos en grupos o lotes. La introduccin del transistor a mediados de los 50's cambi la imagenradicalmente. Se crearon mquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque slo las grandes universidades y las grandes corporaciones o bien las oficinas del

gobiernose podan dar el lujo de tenerlas.

Para podercorrer un trabajo (programa), tenan que escribirlo en papel (en FORTRAN o en lenguaje ensamblador) y despus se perforara en tarjetas. Enseguida se llevara la pila de tarjetas al cuarto de introduccin al sistema y la entregara a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigira a la desprendera la salida y la llevara al cuarto de salida, para que la recogiera el programador.

impresora y

Segunda Generacin (a mitad de la dcada de 1960) La caracterstica de los sistemas

operativos fue el desarrollo de los sistemas compartidos con multiprogramacin, y procesador se cambia rpidamente de un trabajo a otro. En los

los principiosdel multiprocesamiento. En los sistemas de multiprogramacin, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el sistemas de multiprocesamiento se utilizan varios procesadoresen un solo sistema computacional, con la finalidad de incrementar el poder de procesamiento de la maquina. La independenciade dispositivos aparece despus. Un usuario que desea escribir datos en una cinta en sistemas de la primera generacin tenia que hacer referencia especifica a una unidad de cinta particular. En la segunda generacin, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto nmero de pistas y cierta densidad. Se desarrollo sistemas compartidos, en la que los usuarios podan acoplarse directamente con el computador a travs de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de

procesosindustriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata.
Tercera Generacin (mitad de dcada 1960 a mitad dcada de 1970) Se inicia en 1964, con la introduccin de la

familiade computadores Sistema/360 de IBM. Los computadores de esta

generacin fueron diseados como sistemas para usos generales. Casi siempre eran sistemas grandes, voluminosos, con el propsito de serlo todo para toda la gente. Eran sistemas de modos mltiples, algunos de ellos soportaban simultneamente procesos por lotes, tiempo compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se haba construido algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuestoy mucho despus de lo que el planificador marcaba como fecha de terminacin. Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios. Cuarta Generacin (mitad de dcada de 1970 en adelante) Los sistemas de la cuarta generacin constituyen

el estado actual de la tecnologa. Muchos diseadores y usuarios se

sienten aun incmodos, despus de sus experiencias con los sistemas operativos de la tercera generacin. Con la ampliacin del uso de redesde computadores y del procesamiento en lnea los usuarios obtienen acceso a computadores alejados geogrficamente a travs de varios tipos de terminales. Los sistemas de seguridadse han incrementado mucho ahora que la informacin pasa a travs de varios tipos vulnerables de lneas de comunicacin. La clave de cifrado esta recibiendo mucha atencin; han sido necesario codificar los datos personales o de gran intimidad para que; aun si los datos son expuestos, no sean de mas que a los receptores adecuados. 2. Estructura de un sistema operativo En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin de tener una idea ms extensa de cmo esta estructurado el sistema operativo. Veremos brevemente algunas estructuras de diseos de sistemas operativos. Estructura modular. Tambin llamados sistemas monolticos. Este tipo de organizacines con mucho la mas comn; bien podra recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una coleccin de procedimientos, cada uno de los cuales puede llamar a los dems cada vez que as lo requiera. Cuando se usa esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos de parmetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto

utilidad a nadie

clculotil para el

primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parmetros en lugares bien definidos, como en los registros o en la pila, para despus ejecutar una instruccin especial de trampa de nombre "llamada al ncleo" o "llamada al supervisor".

Esta instruccin cambia la mquina del modo usuario al modo ncleo y transfiere el control al sistema operativo, lo que se

muestraen el evento (1) de la figura 1. El sistema operativo examina entonces los parmetros de la llamada, para
determinar cual de ellas se desea realizar, como se muestra en el evento (2) de la figura 1. A continuacin, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operacin que se muestra en (3) de la figura 1, identifica el procedimiento de ultimo, la llamada al sistema termina y el control regresa al programa del usuario. Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atrado hacia el ncleo. (2) el sistema operativo determina el nmero del servicio solicitado. (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa del usuario. Esta organizacin sugiere una organizacin bsica del sistema operativo: 1.- un programa principal que llama al procedimiento del servicio solicitado. 2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. 3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio. En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de l. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario. La siguiente figura muestra este procedimiento de tres capas: (Para ver el grfico faltante haga click en el men superior "Bajar Trabajo") Figura 2. Un modelo de estructura simple para un sistema monoltico. (Para ver el grfico faltante haga click en el men superior "Bajar Trabajo") Estructura por microkernel. Las funciones centrales de un SO son controladas por el ncleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte ms importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el cdigo mquina de bajo nivel para manejar la administracin de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos Las funciones de bajo nivel del SO y las funciones de

servicio, al cual se llama. Por

interpretacin de comandosestn separadas, de tal forma que

puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de lnea de comandos con una interfaz grfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versin 5.0 incluy un Shell llamado DOS SHELL.

Estructura por anillos concntricos (capas). El sistema por "capas" consiste en organizar el sistema operativo como una jerarqua de capas, cada una construida sobre la inmediata inferior. El primer sistema construido de esta manera fue el sistema THE (Technische Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignacin del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronmetros. Sobre la capa 0, el sistema consta de procesos secunciales, cada uno de los cuales se podra programar sin importar que varios procesos estuvieran ejecutndose en el mismo procesador, la capa 0 proporcionaba la multiprogramacin bsica de la CPU. La capa 1 realizaba la

administracin de la memoria. Asignaba el espacio de memoria principal para los procesos y un

recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos (pginas) para las que no exista lugar en la memoria principal. Por encima de la capa 1, los procesos no deban preocuparse si estaban en la memoria o en el recipiente; el software de la capa 1 se encargaba de garantizar que las pginas llegaran a la memoria cuando fueran necesarias. La capa 2 se encargaba de la comunicacin entre cada

proceso y la consola del operador. Por encima de esta capa, cada

proceso tiene su propia consola de operador. La capa 3 controla los dispositivos de E/S y guarda en

almacenes(buffers) los flujos de informacin entre ellos. Por

encima de la capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde estaban los programas del usuario, estos no tenan que preocuparse por el proceso, memoria, consola o control de E/S. el proceso operador del sistema se localizaba en la capa 5 Una generalizacin mas avanzada del concepto de capas se presento en el sistema MULTICS. En lugar de capas, MULTICS estaba organizado como una serie de anillos concntricos, siendo los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior, debi hacer el equivalente a una llamada al sistema Mientras que el esquema de capas de THE era en realidad un apoyo al

diseo, debido a que todas las partes del sistema

estaban ligadas entre si en un solo programa objeto, en MULTICS, el mecanismo de anillos estaba mas presente durante el tiempo de ejecucin y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensin para estructurar subsistemas del usuario.

El operador

Programas del usuario

Control de entrada/salida

Comunicacin operador-proceso

Administracin de la memoria y del disco

Asignacin del procesador y multiprogramacin

Figura 3. Estructura del sistema operativo THE. Estructura cliente servidor Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el cdigo a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un ncleo mnimo. El punto de vista usual es el de

la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) enva la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo nico que hace el ncleo es controlar la comunicacin entre los clientes y los servidores. Al separar el sistema
implantar la mayora de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequea y controlable. Adems como todos los servidores se ejecutan como procesos en modo usuario y no en modo ncleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, ste puede fallar, pero esto no afectar en general a toda la mquina. (Para ver el grfico faltante haga click en el men superior "Bajar Trabajo") Figura 4. El modelo Cliente-servidor. Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptacin para su uso en los sistemas distribuidos (figura 5). Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su mquina, o si se enva por medio de una

red a un servidor en una mquina remota. En lo que respecta

al cliente, lo mismo ocurre en ambos casos: se envi una solicitud y se recibi una respuesta. (Para ver el grfico faltante haga click en el men superior "Bajar Trabajo")

Figura 5. El modelo cliente-servidor en un sistema distribuido. 3. Funciones y caractersticas de los sistemas operativos. Funciones de los sistemas operativos. 1.- Aceptar todos los trabajos y conservarlos hasta su finalizacin. 2.- Interpretacin de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador. 3.- Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el Mouse. 4.- Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles,

discos duros, discos compactos o cintas magnticas.


5.- Manejo de errores: Gestiona los errores de hardware y la prdida de datos. 6.- Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien despus). 7.- Proteccin: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario. 8.- Multiacceso: Un usuario se puede conectar a otra mquina sin tener que estar cerca de ella. 9.- Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos. Caractersticas de los sistemas operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas:

Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente

posible. Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba

o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los

recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos.

Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo Procesamiento por bytes de flujo a travs del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los

dispositivos perifricos, cuando el usuario as lo requiera.

lo referente a la instalacin y uso de las redes de computadoras.

dispositivos de Entrada/Salida de la computadora. 4. Modalidades de trabajo de los sistemas operativos. Sistemas operativos por lotes. La secuencia por lotes o procesamiento por lotes en microcomputadoras, es la ejecucin de una lista de comandos del sistema operativo uno tras otro sin intervencin del usuario. En los ordenadores ms grandes el proceso de recogida de programas y de

conjuntosde datos de los usuarios, la

ejecucin de uno o unos pocos cada vez y la entrega de los recursos a los usuarios. Procesamiento por lotes tambin puede referirse al proceso de almacenar transacciones durante un cierto lapso antes de su envo a un archivo maestro, por lo general una operacin separada que se efecta durante la noche Los sistemas operativos por lotes (batch), en los que los programas eran

tratadospor grupos (lote) en ves de

individualmente. La funcin de estos sistemas operativos consista en cargar en memoria un programa de la cinta y

ejecutarlo. Al final este, se realizaba el salto a una direccin de memoria desde donde reasuma el control del sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta manera el tiempo entre un trabajo y el otro disminua considerablemente. (Para ver el grfico faltante haga click en el men superior "Bajar Trabajo") Figura 6 - Sistema de procesamiento por lotes. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son:

Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (Ej., anlisis estadsticos, nminas de

personal, etc.)
Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de

transitorios.

concurrencia para el acceso. Sistemas operativos de tiempo compartido. El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema por ms de una

persona al mismo

tiempo. El tiempo compartido ejecuta programas separados de forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). En este aspecto, es similar a la capacidad de multitareas que es comn en la mayora de los microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el acceso de varios usuarios a computadoras ms grandes y a organizacionesde servicios, mientras que la multitarea relacionada con las microcomputadoras implica la realizacin de mltiples tareas por un solo usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la y secundaria. Caractersticas de los Sistemas Operativos de tiempo compartido:

administracin de memoria principal

Populares representantes de sistemas multiprogramados multiusuario, Ej.: sistemas de diseo asistido por

computador, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. La mayora utilizan algoritmo de reparto circular. Los programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de

concedido el servicio. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). Gestin de memoria: proporciona proteccin a programas residentes. Gestin de archivo: debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples

usuarios accesando un mismo archivo. Sistemas operativos de tiempo real. Un sistema operativo en tiempo real procesa las instrucciones recibidas al instante, y una vez que han sido procesadas

muestra el resultado. Este tipo tiene relacin con los sistemas operativos monousuarios, ya que existe un solo operador y no necesita compartir el procesador entre varias solicitudes. Su caracterstica principal es dar respuestas rpidas; por ejemplo en un caso de peligro se necesitaran respuestas inmediatas para evitar una catstrofe. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos

al sistema computacional, en breve tiempo o dentro de ciertos plazos. Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real.,

aplicaciones militares, etc. Su objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Un proceso se activa tras ocurrencia de suceso, mediante interrupcin. Un proceso de mayor prioridad expropia recursos. Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes Poblacin de procesos esttica en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. La gestin de archivos se orienta ms a velocidad de acceso que a utilizacin eficiente del recurso.

en memoria.

Sistemas operativos de red. La principal funcin de un sistema operativo de red es ofrecer un mecanismo para transferir archivos de una mquina a otra. En este entorno, cada instalacin mantiene su propio sistema de archivos local y si un usuario de la instalacin A quiere acceder a un archivo en la instalacin B, hay que copiar explcitamente el archivo de una instalacin a otra.

Internetproporciona un mecanismo para estas transferencias, a travs del programa protocolo de transferencias de archivos FTP (File Transfer Protocol).
Suponga que un usuario quiere copiar un archivo A1, que reside en la instalacin B, a un archivo A2 en la instalacin local A. Primero, el usuario debe invocar el programa FTP, el cual solicita al usuario la informacin siguiente: a) El nombre de la instalacin a partir de la cual se efectuar la transferencia del archivo (es decir la instalacin B). b) La informacin de acceso, que verifica que el usuario tiene los privilegios de acceso apropiados en la instalacin B. Una vez efectuada esta comprobacin, el usuario puede copiar el archivo A1 de B a A2 en A, ejecutando "get A1 to A2" En este esquema, la ubicacin del archivo no es transparente para el usuario; tiene que saber exactamente donde esta cada archivo. Adems los archivos no se comparten realmente, porque un usuario solo puede copiar un archivo de una instalacin a otra. Por lo tanto pueden existir varias copias del mismo archivo, lo que representa un desperdicio de espacio. As mismo, si se modifican, estas copias no sern consistentes. Los Sistemas Operativos de red son aquellos sistemas que mantienen a dos o ms computadoras unidas a travs de algn medio de comunicacin (fsico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red ms ampliamente usados son: Novell Netware, Personal Netware,

LAN Manager,

Windows NT Server, UNIX, LANtastic.


Sistemas operativos distribuidos. En un sistema operativo distribuido los usuarios pueden acceder a recursos remotos de la misma manera en que lo hacen para los recursos locales. La migracin de datos y procesos de una instalacin a otra queda bajo el control del sistema operativo distribuido.

Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es transparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se descompone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caractersticas de los Sistemas Operativos distribuidos:

Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y

software. Proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos.

Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.). Figura 7.- Sistema Operativo Distribuido. Sistemas operativos multiprocesadores. En los sistemas multiprocesador, los procesadores comparten la memoria y el reloj. Se incrementa la capacidad de procesamiento y la confiabilidad, son econmicos.

Multiprocesamiento simtrico: Cada procesador ejecuta una copia del sistema operativo. Multiprocesamiento asimtrico: Cada procesador tiene asignado una tarea especfica, existe un procesador

master que asigna tareas a los procesadores esclavos. Multiproceso: Las computadoras que tienen ms de un CPU son llamadas multiproceso. Un sistema operativo multiproceso coordina las operaciones de las computadoras multiprocesadores. Ya que cada CPU en una computadora de multiproceso puede estar ejecutando una instruccin, el otro procesador queda liberado para procesar otras instrucciones simultneamente. Al usar una computadora con capacidades de multiproceso incrementamos su velocidad de respuesta y procesos. Casi todas las computadoras que tienen capacidad de multiproceso ofrecen una gran ventaja. Los primeros Sistemas Operativos Multiproceso realizaban lo que se conoce como Multiproceso asimtrico. Una CPU principal retiene el control global de la computadora, as como el de los otros procesadores. Esto fue un primer paso hacia el multiproceso pero no fue la direccin ideal a seguir ya que la CPU principal poda convertirse en un cuello de botella. Multiproceso simtrico. En un sistema multiproceso simtrico, no existe una CPU controladora nica. La barrera a vencer al implementar el multiproceso simtrico es que los SO tienen que ser rediseados o diseados desde el principio para trabajar en un ambientemultiproceso. Las extensiones de UNIX, que soportan multiproceso asimtrico ya estn disponibles y las extensiones simtricas se estn haciendo disponibles. Windows NT de Microsoft soporta multiproceso simtrico. 5. Bibliografia

INTERRUPCIONES (FLIH)

La interrupcin es el mecanismo mediante el cual otros mdulos pueden interrumpir una secuencia normal de procesamiento.

Programa: por ejemplo divisin por cero

Temporizador: cuando se cumple un tiempo especfico

E/S: cuando hay algo que comunicar

Hardware: cuando ocurre una falla.

La gestin de interrupciones la realiza el manipulador (controlador) de interrupciones (FLIH, First Level Interrupt Handler).

El manipulador de interrupciones es la parte del sistema operativo responsable de proporcionar la respuesta adecuada a las seales procedentes tanto del exterior como del interior del sistema (interrupciones externas e internas).

Tema 1: Introduccin a los sistemas operativos. 1.- Qu es un S.O.? Son un conjunto de programas que actan como interface comunicacin hombre - mquina (hardware), ofreciendo un entorno necesario para que el usuario pueda ejecutar sus programas, pero que a la vez limita la capacidad de la mquina, pues no podemos utilizar todos los recursos. El S.O. tiene principalmente dos objetivos: informtico (el conjunto del hardware y software). Tambin podemos definir el S.O. como una parte importante de un sistema informtico, pudiendo dividir el software de este en varias capas, de la siguiente forma: Las utilidades y las herramientas sirven para dar soporte a otros programas y el software de aplicacin es el que soluciona problemas concretos y que est orientado a usuarios. CAPAS:


Ejemplos:

S.O: Mantiene un entorno necesario para la ejecucin de los programas de usuario. Herramientas: Son programas que nos ayudan. Proporcionan comodidad para el usuario en el uso de programas. Sistemas de gestin de bases de datos Intrpretes de ordenes (Shell): interface construido sobre el S.O., tiene ciertos interpretes sobre el S.O. Depuradores (Debugger): ayuda a corregir depurar programas. Programas de tratamiento de ficheros. Editores de texto (no procesadores): solo sirven para escribir. Comunicacin: compiladores. Traductores: interpretes. Software de aplicacin: Software construido para resolver problemas concretos (Ejemplo: Word Perfect).

Software de sistema: Software construido para la ayuda de otros problemas, no para la ayuda del usuario. Funciones del S.O.: usuario una mquina virtual que es ms fcil de programar que el hardware.

2.- Evolucin histrica. ETAPA 0: Slo existe hardware, no hay S.O. El programador escriba el programa y lo ejecutaba desde la consola del operador. El programa se cargaba manualmente en memoria, seguidamente se cargaba la direccin de inicio, en ese momento comenzaba la ejecucin del programa, el programador segua la misma mediante los pilotos de la consola. Poda corregir errores sobre la marcha, es decir, desde la misma consola. La salida se imprima, se grababa en cinta se perforaba en una tarjeta. Pero en esta etapa haba un grave problema y era el mtodo interactivo de reserva de tiempo de la C.P.U., ya que cada persona reservaba tiempo en una hoja de solicitud y este se calculaba a ojo. Si te faltaba tiempo, tenas que volver a continuar en otro momento, mientras que si te sobraba, la C.P.U. estaba inactiva. Por tanto el tiempo de preparacin para la resolucin de problemas era muy alto y como consecuencia, exista desperdicio de la C.P.U. No haba S.O., slo mquina trabajando * bajo uso de la C.P.U. ETAPA 1: Aparecen las cintas magnticas. Tendremos 2 ordenadores, uno que saca cintas magnticas (satlite) y otro (central). El central lee ms rpido. En esta etapa, lo que se intent solucionar sobre todo era el desperdicio de tiempo de la C.P.U., ya que cada trabajo implicaba un tiempo de preparacin considerable, por ejemplo, si queramos ejecutar un programa en Fortram los pasos a seguir eran los siguientes:

Cargar la cinta con el compilador de Fortram. Ejecutar el compilador de Fortram. Descargar la cinta del compilador.

Cargar la cinta del ensamblador, ya que el compilador de Fortram generaba una salida en lenguaje ensamblador que tena que ser ensamblada. Ejecucin del ensamblador. Descarga de la cinta del ensamblador. Carga del programa objeto.

Ejecucin del programa objeto. Y si tenas la desgracia de que se produjese un error en uno de los pasos, quizs tuvieras que empezar de nuevo. Para solucionar el desperdicio de tiempo se encontraron 2 soluciones: inalizado un trabajo, el operador poda iniciar el siguiente, por lo que haba dos personas encargadas del ordenador. se ejecutaban en el ordenador como un grupo. Una vez solucionado relativamente el desperdicio de tiempo, surga un nuevo problema cuando un trabajo se detena, ya que los operadores tenan que darse cuenta observando la consola, determinar porque se haba detenido la ejecucin del programa, realizar un volcado si era necesario, cargar la lectora de tarjetas cintas, etc., lo que haca que la C.P.U. permaneciera inactiva. Para eliminar este tiempo de inactividad se introdujo el secuenciamiento automtico de trabajos y con l se crearon los primeros y rudimentarios S.O.. Lo que se necesitaba era un procedimiento para la transferencia automtica del control de un trabajo al siguiente. As se creo un pequeo programa llamado Monitor Residente (ya que reside siempre en memoria). Al arrancar el ordenador el control estaba en el monitor residente, quien lo transfera al programa, hasta que se terminaba la ejecucin del mismo, momento en el que se devolva el control al monitor residente que continuaba con el programa siguiente. Era una forma de ejecutar secuencialmente todos los programas. Para guiar al monitor residente de que programas deba ejecutar, se introdujeron las tarjetas de control. Un ejemplo de ello es : Dndose cuenta que la C.P.U. quedaba inactiva el 93.7% del tiempo por culpa de los dispositivos de E/S (tarjetas perforadas), se medio solucion el problema pasando primero la informacin de las tarjetas a cintas magnticas: se pasaba la informacin de la tarjeta a la cinta, seguidamente se ejecutaba en el ordenador, la salida iba a otra cinta y por ltimo si se crea conveniente se pasaba de nuevo a tarjeta. Por tanto las lectoras de tarjetas y las impresoras de lnea eran operadas OFF - LINE, i.e., no por el ordenador principal. Para ello se necesitaba un pequeo ordenador que se dedicara a la tarea de copiar desde cinta en cinta. A ste se le llamaba Sistema Satlite y a la tcnica de realizar la lectura desde tarjetas de manera adelantada se le llama Spooling. ETAPA 2: Aparece el concepto de interrupciones y controladores. Los controladores solapan las operaciones de E/S. Se trata de acelerar al mximo el tiempo de C.P.U.. Aparece el concepto de Multiprogramacin que es un sistema para mantener ocupada el mayor tiempo posible la C.P.U., ya que existen varios procesos simultneamente en trabajos de un grupo de ellos, si por algn motivo (especialmente operaciones E/S o trmino del tiempo asignado en los sistemas ms modernos) hay que esperar, el S.O. cambiar a otro trabajo y lo ejecutar. Eso ocurrir con todos los trabajos. Exige planificar los trabajos. Multiproceso: son varios los procesos que pueden estar activos a la vez, pero solo los datos e instrucciones de uno de ellos est activo en Memoria principal (un ordenador que est realizando varios trabajos a la vez). Multiusuario: varios procesos pueden estar conectados a travs de terminales a una computadora (como en la Escuela).

Sistemas de tiempo compartido: Lo primeros sistemas Batch eran una agrupacin de trabajos similares, en los que haba que esperar que acabase un trabajo para que empezase otro. Los sistemas basados en cintas o tarjetas solo permitan el acceso secuencial a los programas y datos y solo poda utilizarse una aplicacin a la vez. Cuando se dispuso del almacenamiento en disco, i.e. acceso aleatorio, un S.O. Batch lee una serie de tareas diferentes, normalmente, cuando el trabajo se ha concluido imprime su salida. La caracterstica definitiva de un sistema Batch es la falta de interaccin entre el usuario y el trabajo, ya que este poda salir horas o incluso das ms tarde. Por tanto estos sistemas tienen una serie de inconvenientes que son:

El usuario no poda interaccionar en los procesos mientras se estaba ejecutando.

La depuracin de los programas se realizaba estticamente, a partir de vocablos puntuales. Un sistema informtico interactivo o Hands - on, facilita la comunicacin On - Line entre el usuario y el sistema. Los Sistemas de Tiempo Compartido son el resultado de la tentativa de obtener un funcionamiento interactivo de un sistema informtico. Utiliza la planificacin de la C.P.U. y la multiprogramacin para dotar al usuario de una pequea parte del ordenador compartido. Podemos trabajar con el ordenador aunque haya otros en la red. Este sistema permite que muchos usuarios compartan simultneamente el ordenador, compartiendo el tiempo con todos los programas que se estn ejecutando, siendo el tiempo de C.P.U. o de cambio de programas muy corto y el usuario no lo nota, cree que est slo trabajando con el ordenador. Estos sistemas necesitan introducir sistemas de seguridad, algn mecanismo de ejecucin concurrente de procesos y mecanismo de proteccin de memoria Sistemas en Tiempo Real: Este se utiliza frecuentemente como dispositivo de control en una aplicacin especializada, con sensores que proporcionan datos al ordenador y a la vez ste se encarga de ajustarlos correctamente. Tienen que garantizar un tiempo mnimo de respuesta. Normalmente es Monousuario y se construye para entornos donde puede haber muchos sucesos. La mayora de los sucesos son externos al S.O. y debera realizarse en un tiempo breve. Se construye porque existe un proceso que se va a encargar de cada suceso que tiene una cierta prioridad, depende de la importancia o de lo crtico que sea, se le da mayor prioridad. Capturar informacin, capturar recursos, necesita un soporte de memoria para que pueda comunicarse. ETAPA 3: Aparecen los Sistemas de Propsito General, en los cuales pueden ejecutarse cualquier tipo de aplicacin. Tenemos ordenadores que no slo hagan una cosa. Tambin aparecen los Sistemas Interactivos. Los Sistemas Multimodo, que son sistemas que aportan tanto el modo interactivo como el Batch. Debido a la complejidad de estos, se hace una estructuracin de los S.O.. Aparece el UNX. ETAPA 4: En esta etapa se desarrollan los microprocesadores y con ellos el ordenador personal (P.C.). Este ordenador personal monousuario necesitaba un S.O. y aparece el MS - DOS. Aparecen los Sistemas Distribuidos (las redes comunes). Importancia de los Sistemas de Gestin de Bases de Datos. 3.- Distintos aspectos de los S.O. Se va a determinar que requerimiento funcional y estructural de seguridad se va a requerir respecto a los siguientes puntos: Respecto al modo de trabajo del usuario: - LINE: Interactivo. Ests trabajando sobre l. Es un sistema de respuesta rpida, es decir, el usuario puede estar controlando el trabajo al mismo tiempo que se ejecuta. Pierde tiempo si el usuario est parado. - LINE: No interactivo o Batch. Mandas un proceso o trabajo. La C.P.U. no pierde tiempo si no le mandan un trabajo. Cuando no trabaja est parada. El usuario no puede seguir los pasos del programa o procesos, slo cuado termina puede ver el resultado. Se ahorra tiempo de usuario. Tiende a aprovechar los recursos de la mquina. Respecto al nmero de usuarios. Segn el nmero de usuarios se dividen en dos tipos: sistema de proteccin de los datos). Respecto al propsito. Existen 2 tipos: erminada tarea. OBJETIVOS PRINCIPALES: Son el tiempo de acceso y el tiempo de respuesta donde deben ser muy rpidos, para que todos los usuarios tengan las mismas oportunidades. SISTEMAS CON MS DE UNA C.P.U.: Segn la arquitectura existen 2 tipos:

Sistemas multiprocesadores o paralelos: Tienen la memoria y el reloj comn. Se ejecuta sobre el S.O. multiprocesador. Tiene ventajas como mayor potencia de computacin y fiabilidad. No se conoce un modelo general de S.O. multiprocesador. Un usuario nos es consciente de que hay ms de un usuario trabajando con el ordenador. Utiliza memoria mnima. El objetivo de estos sistemas es aumentar la productividad del sistema y para ello hay que obtener paralelismo de

tareas, es decir, ms de una C.P.U. destinada a una misma aplicacin. Y se ejecutan varias tareas que se reparten entre las distintas C.P.U..

Sistemas distribuidos: La memoria es local, es decir, no compartida. Los usuarios son conscientes de que hay varias mquinas. Hay 2 tipos de S.O._ Los de red: Los usuarios son conscientes de que hay varias mquinas. Cada nodo o cada mquina ejecuta su propio S.O. local. La comunicacin es remota por medio de protocolos, pudiendo elegir el usuario la mquina donde realizar la aplicacin, teniendo en cuenta que hay otros usuarios. Lo S.O. realmente o propiamente distribuidos: Aqu no son conscientes de que hay ms de un usuario. Permite que el programa se ejecute en distintas C.P.U. (Ejemplo: el Linux de la Escuela). 4.- Soporte Hardware de los S.O. DISTINTOS MODOS DE FUNCIONAMIENTO DE LOS PROCESOS: Estos modos de funcionamiento del procesador se van a almacenar en 1 ms bits del programa. Modo supervisor o Kernel (Bit de modo a 0):

o o o o o o

Tiene acceso completo a todas las direcciones. Puede ejecutar cualquier instruccin mquina. Puede cambiar el valor de cualquier sentencia de la C.P.U. Modo Usuario (Bit de modo a 1): Slo tiene acceso a un rango de direccin de memoria. No tiene acceso a las instrucciones privilegiadas. Activacin o desactivacin de las instrucciones. Slo puede cambiar los valores de algunos registros del procedimiento. Software de diagnstico. Programas que resuelven estadsticas: para comprobar el funcionamiento de la C.P.U. y hacer mejoras. Nota: Slo el S.O. puede usar la instruccin privilegiada de cambio de modo. INTERRUPCIONES Y EXCEPCIONES: Hardware: Mecanismo por el cual cuando se ha producido un problema o algo raro en el sistema, provoca el paso del control de la C.P.U. a una interrupcin que se almacena en una posicin de memoria Cuando se produce una interrupcin de hardware, los pasos que sigue el ordenador son los siguientes: Deshabilitar las interrupciones para que slo se produzca una cada vez (Opcional). Salvar el contador del programa y la palabra de estado (C.P. y P.S.W. respectivamente). Pasar a modo supervisor. Calcular el vector de interrupcin.

Pasar el control a la R.T.I. (Rutina de tratamiento de informacin; se carga la 1 rutina en el vector de interrupcin). Una vez ejecutada la R.T.I. restauramos el C.P. (contador de programa). Poner en modo usuario. Pasar el control al proceso que estaba en curso antes de que se produjera la interrupcin. Cuando se produce una interrupcin hay que controlar que no se produzca otra ya que al provocarse 2 interrupciones a la vez se puede quedar colgado. Para evitar que se ejecuten 2 interrupciones a la vez y que se quede colgado, existen dos posibles soluciones:

La ms burda, que consiste en deshabilitar las interrupciones nada ms producirse una para que no se produzcan ms (es decir, el paso 1). Enmascaramiento de interrupciones: es un proceso ms comn y menos burdo que el anterior. Nos clasifica las interrupciones por tipos (privilegios). En el momento de producirse una interrupcin, se deshabilitan las que sean de igual o menor privilegio. Las interrupciones se utilizan tambin para controlar unidades que operan aparentemente y para responder a condiciones concretas del procesador. Los tipos de interrupciones dependen de la arquitectura del procesador como por ejemplo: o Ejecucin de un programa (oveflow,...). o Temporizador o reloj. o Funciones de E/S. o Fallo de hardware. o Error en el direccionamiento. o Violacin de privilegios. o Acceso a instrucciones ilegales o privilegiadas. o Finalizacin de la tarea de un controlador.

Chequeo de la propia mquina. PROTECCIN: Este subapartado lo vamos a dividir en 3 partes claramente diferenciadas: Proteccin de E/S : Una proteccin de E/S se asegura haciendo que las instrucciones de E/S sean instrucciones mquina, i.e. que sean instrucciones privilegiadas. El hardware cuida de que dichas instrucciones se ejecuten slo en modos supervisor ya que si se hace tentativa de hacerlo en modo usuario, este no la ejecuta, la trata como ilegal. Siempre que se produce una interrupcin, el hardware cambia de modo usuario a supervisor y antes de devolver el control al programa se vuelve a pasar a modo usuario. Proteccin de memoria: En este caso debemos proteger a: La memoria que une el S.O. de los procesos de usuario. Con ello obtenemos la proteccin en la memoria Los procesos de usuarios entre ellos. Otro hardware subyacente, hardware que use memoria El vector de interrupciones de cualquier modificacin por parte del usuario (muy importante proteger esto). Las rutinas de servicio de interrupciones del supervisor residente ante una posible modificacin. Tenemos que asegurarnos que un programa de usuario nunca toma el control del ordenador en modo supervisor Proteccin de la C.P.U.: Se basa en garantizar que para cierto intervalo de tiempo se pasar el control al S.O., esto se realiza mediante un reloj que cada cierto intervalo de tiempo produce una interrupcin. Con esto tratamos de contrarrestar los bucles infinitos y que un proceso no controle la C.P.U. todo el tiempo. 5.- Visin externa de los S.O. Servicios de los S.O.: este apartado lo vamos a dividir en dos subapartados claramente diferenciables: Ayuda al usuario:

o o o o o

Aporta al usuario instrucciones para que este pueda ejecutar sus programas. Ejem.: ps Proceso que estaba activo en el sistema, el usuario sabe en que estado estn sus procesos. Operaciones de E/S, que no pueden ser ejecutadas por el usuario sino que es el S.O. el que proporciona las instrucciones en orden Manipulacin de archivos: abstraccin de archivos. El S.O. nos da el concepto de archivo. Respecto a la comunicacin entre procesos: cuando tenemos distintas mquinas. Tiene 2 implementaciones Memoria compartida. Puede usarse cuando 2 procesos estn en la misma memoria, que trabajan sobre la misma Paso de mensajes. Un proceso manda una seal a otro proceso (por ejemplo para sincronizarlos). Deteccin de errores: el S.O. debe ser capas de detectar y corregir cualquier tipo de error, tanto: Hardware: C.P.U., memoria, dispositivos, etc, Programas de usuario

bsicas:

variable.

Gestin del sistema: no son generalmente servicios para usuarios normales sino que son servicios que estn para los administradores. Correcto funcionamiento del S.O.: Realiza una asignacin de recursos.

Contabilidad: permite medir cuanto tiempo de C.P.U. ha consumido un determinado usuario (sobre todo se usa en redes). La contabilidad en este caso tiene 2 fines: Los contables propiamente dichos Los estadsticos. Relativos a proteccin: deben dar mecanismos para proteger a los usuarios entre ellos mismos. Usuario del lenguaje de rdenes (SHELL) Son los que obtienen servicios del S.O., tecleando rdenes desde su terminal o a travs de un trabajo por lotes. El interprete (traductor) de rdenes captura dichas rdenes introducidas por el usuario, las traduce y ejecuta las llamadas al sistema necesarias para recibir el servicio requerido por el usuario. Cuando el usuario est trabajando con el sistema, el intrprete de rdenes (SHELL) se desconecta mientras se ejecuta la orden. Cuando se ejecuta una orden en background (segundo plano), antes de que termine la ejecucin aparece el prompt del sistema en pantalla. Ejemplo: ls>fich & Background: Interactivamente, devuelve el prompt para seguir mientras hace algo. Foreground: El programa se espera hasta que finaliza una orden.

o o

Usuarios de las llamadas al S.O.: Son los que realizan las llamadas al S.O. en tiempo de ejecucin. Esta llamadas van a realizar una interface entre los programas de usuario en ejecucin y el S.O. Estas llamadas pueden ser mediante interrupciones o tambin mediante funciones que realizan los pasos necesarios para que hagan las llamadas al sistema. El mecanismo para iniciar una llamada al S.O. transcurre por los siguientes pasos: Ejecucin de una instruccin en Ensamblador. Ejemplo: int 12 (abrir un fichero). Llamada al sistema * Interrupcin SINCRONA. Interrupcin hardware * ASINCRONA. (se produce al hacer una llamada al sistema). Llamada a una funcin Si mientras yo hago una llamada al S.O. con una de las formas anteriores, si se produce un error, ello provoca una interrupcin. La informacin que se debe transmitir al S.O. es: Registro de la C.P.U. Zona de memoria. Pila (esto no lo puede hacer el propio usuario). A su vez el S.O. debe devolver el resultado y eso puede hacerse en alguno de los sitios anteriores. Para esto Unix tiene una instruccin que es trap. 6.- Estructura interna de un Sistema Operativo. Sistemas monolticos. Se caracterizan porque no tienen estructura o si la tienen est poco definida. Se trata de un conjunto de procedimientos, los cuales estn visibles entre ellos. No hay modularidad ni abstraccin de la informacin. Slo hay un programa objeto. Podemos ver en una pequea divisin que los sistemas monolticos se dividen en tres partes: Cualquier Procedimiento puede llamar a cualquier otro. Sistemas por capas o por niveles. Se trata de una degeneracin de los sistemas monolticos. Se dividen por capas y cada una de ellas tiene una funcin bien definida. Cada capa a su vez se puede dividir en un conjunto de mdulos. Las ventajas del sistema por capas respecto del anterior son las siguientes: Modularidad. Fcil mantenimiento. Fcil modificacin de alguna de las capas (los cambios no afectan a las otras capas). Fcil deteccin de errores. Las desventajas de los sistemas por capas o la dificultad aparece a la hora de crear dichas capas, al igual que la jerarqua de dichas capas, i.e. saber cual es superior o prioritaria y cual es inferior. La gestin de memoria no va con el hardware desnudo, sino que se has de planificar en procesos. Modificar cualquier procedimiento de una capa es muy fcil sin tener los interfaces de las capas anteriores. Tienen 6 capas: Situada sobre el hardware: se asigna al procesador y gestores de multiprogramacin Gestin y administracin de memoria y disco: contiene las direcciones de los procesos en memoria y disco. Comn: entre operador y procesos Manejadores o controladores de dispositivos E/S. Programas de usuario Proceso que se est ejecutando en ese momento. Ejemplo: el sistema THE. Sistemas cliente - servidor. Estos sistemas se basan en implementar partes del S.O. como procesos independientes y conservar un ncleo mnimo. Ventaja: al ejecutarse los servidores en modo usuario, si algo falla no tiene porque pararse la mquina ya que se ejecuta en modo usuario. Surge en este momento un problema que consiste en que si implemento el servidor de disco en modo usuario, no puede acceder a las operaciones de E/S y cosas parecidas. Este problema tiene 2 posibles soluciones: El ncleo se encarga de realizar las acciones en modo supervisor. Los servidores se encargan de la gestin.

Permitir que los servidores crticos se ejecuten en modo supervisor. Pero las comunicaciones con los clientes se realizan a travs del ncleo. As quedara: Cliente solicita un servicio * Ncleo * Servidor lo sirve Existen sistemas distribuidos que utilizan una arquitectura de cliente - servidor, como por ejemplo AMOEBA, MACA, etc.

NFS: Network File System Tema 2: Procesos 1.- Concepto de proceso Definicin: Es el programa en ejecucin y ms cosas, i.e. un proceso es una entidad activa, que est en ejecucin mientras que un programa es una entidad pasiva que no est en ejecucin. El S.O. se encarga de realizar una planificacin de la C.P.U. entre los distintos tipos de procesos de manera que parezca que cada proceso dispone de una C.P.U. virtual. Por tanto un proceso: Es un programa en ejecucin. Controla los datos y la pila. El contexto de un proceso incluye los valores activos del C.P., registros del procesador y variables del programa. Un proceso puede encontrarse en los siguientes estados: Ejecutndose o activo: Cuando utiliza la C.P.U. en un instante dado (slo puede ser un proceso a la vez).

o o o

Ejecutable, preparado o listo: Se encuentra detenido a la espera de que acabe de ejecutarse otro proceso para usar la C.P.U. Bloqueado: No se puede ejecutar debido a que se ha producido algn evento extrao. Los procesos son asncronos e independientes unos de otros. En la C.P.U. slo se ejecuta un proceso cada vez. Diagrama de transposicin de estados:

El proceso se bloquea en espera de datos: Esto ocurre cuando el proceso descubre que no puede continuar. En algunos sistemas hay que hacer una llamada al dem para pasar al estado de bloqueo. El planificador elige otro proceso: Esto se produce cuando el planificador decide que el proceso en ejecucin ya ha sido ejecutado el tiempo suficiente y que es hora de que otro proceso tenga tiempo de C.P.U. El planificador elige este proceso: Ocurre cuando los dems procesos han tenido su parte y este proceso vuelve a ejecutarse. Los datos estn disponibles: Se produce cuando ocurre el evento externo por el cual espera el proceso (ejemplo: entrada de datos nuevos). Si no existe otro proceso en ejecucin en ese momento se produce la transicin a ejecutndose de forma inmediata. Cuando a uno de los procesos se le retira la C.P.U., cada vez que pasa de bloqueado a ejecutable o al revs, el S.O. debe guardar toda la informacin necesaria del proceso que luego vuelve al mismo lugar donde estaba. Toda la informacin que debe guardar el S.O. lo hace en una tabla de procesos. En esta tabla hay una entrada por cada proceso que exista en el sistema y contiene la informacin relativa al estado del proceso. A cada una de estas entradas se le llama descriptor de proceso o P.C.B. En el se guarda la informacin necesaria para que cuando llamemos nuevamente a un proceso que previamente le hemos retirado la C.P.U. pueda continuar. A esto se le llama cambio de contexto. Este P.C.B. (Bloque de Control de Procesos) guarda:

P.I.D.: identificador de procesos que contiene Nombre del proceso. Nombre del usuario. U.I.D.(identidad del usuario). Estado actual del proceso: ejecutable, ejecutndose o bloqueado.

Guarda la lnea o el puntero al proceso padre o a los procesos hijos, lo que corresponda, en los sistemas con jerarqua de procesos. Los sistemas que asignen prioridad a los procesos guardarn dicha prioridad. Informacin relativa a la memoria propia del proceso, as como un puntero a dicha memoria. C.P., registros del proceso (valores). Procesador en el que se ejecuta (para sistema multiprocesadores). Informacin acerca de los recursos que usa el proceso: Ficheros que tiene abiertos. Peticiones de E/S pendientes o dispositivos de E/S que tiene asignados. Informacin estadstica: Tiempo de C.P.U. consumido por el proceso. Volumen de E/S. Tiempo bloqueado. Nota: una interrupcin no provoca un cambio de contexto. Cuando acaba la interrupcin se sigue con el proceso que estaba antes de dicha interrupcin. A cada clase de dispositivos de E/S se les asocia una localidad cercana a la parte inferior de la memoria, llamado vector de interrupciones que contiene la direccin del procedimiento de servicio a las interrupciones si se produce un cambio de contexto (ejemplo: interrupcin de disco).

Este cambio de contexto es una operacin que normalmente sufren los procesos y consiste en retirar la C.P.U. al proceso actual (guardando todos los registros en la tabla de procesos). Como variables globales se pasan el n de proceso activo y el apuntador de datos. Seguidamente la informacin depositada por la interrupcin se elimina de la pila y el apuntador de sta apunta a una pila temporal que utiliza el control del proceso. Por ltimo asignamos la C.P.U: a otro proceso (ejecutable) Hay dos tipos de procesos:

Limitados por E/S: son procesos que usan la C.P.U. en intervalos cortos y pocas veces y usan mucho E/S. Limitados por la C.P.U.: procesos que usan mucho la C.P.U. y poco E/S. Para obtener el mayor rendimiento posible del sistema, debemos mantener un equilibrio entre ambos tipos de procesos. 2.- Planificador de procesos. El planificador es el que se encarga de decidir por ejemplo que proceso se va a ejecutar con anterioridad si hay ms de uno ejecutable, es decir, es la parte del S.O. que planifica el orden de ejecucin de los programas y utiliza un algoritmo llamado algoritmo de planificacin. Dentro de este apartado vamos a ver varios subapartados: Tipos de planificadores. La actividad bsica del planificador consiste en controlar que trabajos entran en un sistema o que procesos interactivos se van a ejecutar en un momento dado. El objetivo principal es optimizar el rendimiento del sistema. Existen 3 tipos de planificadores:

Planificadores a largo plazo: son los que se encargan de trabajar con la cola de trabajos por lote (batch). Se encarga de admitir en el sistema los trabajo por lote. Se llama cuando un proceso finaliza o si no finaliza ninguno en un cierto tiempo. Planificadores a medio plazo: se encargan de procesar los trabajos que estn bloqueados y lo que va a insertar y quitarlo de memoria para ponerlos en la cola de ejecutables. Planificadores a corto plazo: de los procesos que estn en la cola de ejecutables, este planificador elige que proceso va a asignarlo a la cola de la C.P.U. Diagrama: El planificador a largo y medio plazo es el que se encarga de regular la carga del sistema mientras que el planificador a corto plazo es el que se encarga de planificar lo mismo. En los sistemas operativos pequeos slo existe el planificador a corto plazo.

Dispatcher o despachadores. Es el que se va a encargar realmente de mandar el control de la C.P.U. a un proceso de la cola de ejecutables. Se encarga del planificador a corto plazo y asigna procesos a la C.P.U. El funcionamiento de esto tiene varios pasos: Decide si se debe cambiar el proceso que est activo. Si se debe cambiar * Paso b. Si no se debe cambiar * Devuelve el control al proceso activo Salva el entorno voltil del proceso actual. Toma el primer proceso de la cola de preparados o ejecutables. Carga el entorno voltil del proceso elegido (el contenido del P.C.B.).

Cede el control al proceso y lo pone en modo usuario. La actuacin del despachador se invoca por alguna de las siguientes razones: o Un proceso finaliza. o El S.O. decide que el proceso activo no debe seguir ejecutndose. Ejemplo: E/S o espera a la finalizacin de los procesos hijos. o El proceso agota su quantum de tiempo. o Un proceso cambia de estado de bloqueado a ejecutable.

Polticas de planificacin de la C.P.U. Se implementa con vistas a conseguir el mayor rendimiento de la C.P.U. Consiste en un algoritmo para planificar o controlar la asignacin de la C.P.U., ya que puede haber varios usuarios pelendose por la C.P.U. y el planificador debe decidir que proceso es ms importante de los varios que estn en la cola de ejecutables. Los objetivos son dos: Obtener un buen rendimiento, i.e. que se haga el mejor trabajo til posible en el sistema.

Obtener un buen servicio. Con objeto de establecer si estamos obteniendo o no un buen servicio de manera objetiva establecemos unas medidas. Partamos de un proceso P1 que necesita un tiempo de servicio t. o T (tiempo de respuesta): tiempo transcurrido desde que se remite una solicitud hasta que se produce la primera respuesta. o M (tiempo de espera): tiempo que un proceso ha estado esperando en la cola de preparados (T-t).

P (penalizacin): tiempo que ha desperdiciado el proceso en cada rfaga (T/t). Si P es bajo mejor porque el proceso se va a ejecutar en menos t de C.P.U. o R (ndice de respuesta): es la fraccin de tiempo que el proceso P1 est recibiendo servicio (t/T). Si R se aproxima a 1 ser bueno mientras que si se aproxima a 0 ser malo. o Tiempo de ncleo: tiempo perdido por el ncleo del S.O. tomando decisiones de planificacin y cambio de contexto. Tpicamente tiene un valor de entre el 10% y el 30% del tiempo consumido. o Tiempo de inactividad: es el tiempo en que la cola de procesos ejecutables est vaca y no se realiza ningn trabajo productivo. Podemos clasificar los procesos en 2 tipos diferenciados:

Procesos cortos: aquellos procesos con fuerte demanda de E/S y baja demanda de C.P.U. Procesos largos: aquellos procesos con fuerte demanda de C.P.U. y baja demanda de E/S. No existe ninguna poltica de planificacin que favorezca a todos los procesos en general. Igualmente podemos clasificar los algoritmos de planificacin en 2 categoras:

No apropiativos o sin desplazamiento sin derecho preferente: son aquellos que mantienen el proceso al cual se le ha asignado la C.P.U. en sta hasta que se bloquee o finalice. Apropiativos o con desplazamiento o con derecho preferente: son aquellos que pueden retirarle la C.P.U. a un proceso aunque ste no se haya bloqueado o finalizado. A priori no podemos conocer cuanto va a durar la ejecucin de un proceso por lo que nicamente podemos realizar una estimacin. Se podra seguir una frmula de promedio exponencial que se va a basar en las longitudes ya medidas de las rfagas de C.P.U. anteriores: o TN: duracin real de la n - sima rfaga. o *n: valor estimado de la n - exima rfaga. o *: valor de ponderacin. 0 ***1 As pues nos quedara: Normalmente, *= 0.5. En el caso de que *=0 obtendramos que la historia reciente no influye y en el caso de que *=1 veramos que solo cuenta la rfaga actual. Otra forma de planificar los procesos en espera es mediante un algoritmos de prioridades, el cual le asigna un nmero entero que indica la prioridad del proceso. Hay dos formas de asignar las prioridades: o Internamente * S.O. * * Esttica o Externamente * Usuario * * Dinmica. Los algoritmos se pueden implementar de dos formas.

temporal.

Apropiativa: Permite que los procesos ejecutables (desde el punto de vista lgico) sean suspendidos de forma

No apropiativa: Se ejecuta el proceso seleccionado hasta que termine. Estos sistemas son fciles de implementar aunque no son adecuados para los sistemas de propsito general con varios usuarios. Problema: Puede pasar que con un algoritmo apropiativo, un proceso se bloquee indefinidamente. Solucin: El envejecimiento de los procesos. Se basa en aumentar la prioridad de un proceso ha medida que transcurra el tiempo para que de esta forma no se bloquee indefinidamente y no nos de problemas de inanicin. 3.- Operaciones sobre procesos.

Creacin: consiste en coger memoria principal y definir la estructura de datos del proceso as como asignar el espacio de direcciones propio. Primero se le asigna un nombra al proceso. Puede ser simplemente con un identificador de procesos (P.I.D.). Creacin del P.C.B. o desencriptacin de procesos. Inserta el proceso en la tabla de procesos. Asigna alguno de los valores a los contenidos del P.C.B.: Establece la prioridad inicial. Establece el estado inicial. Asigna recursos iniciales como memoria, archivos abierto, etc. El S.O. crea un proceso debido a 4 situaciones posibles: Recepcin y admisin de un nuevo trabajo (sistemas batch). La conexin del usuario provoca la creacin de un proceso que ejecute el SHELL (sistema interactivos). El S.O. crea un proceso en respuesta a una peticin del usuario. Un proceso puede solicitar la creacin de otro proceso. Existen S.O. que permiten jerarquas de procesos, i.e. se permite que un proceso genere otro proceso, creando una estructura en rbol de tal forma que el proceso que genera en l procesos se llama padre y los generados hijos. Cuando se produce una jerarqua de procesos, caben dos posibilidades: Los hijos obtienen recursos directamente del S.O. Los hijos comparten los recursos del padre.

o o

Una vez que el proceso padre ha creado a los hijos y este comienza a ejecutarse, esta forma de ejecucin puede ser: El proceso padre se bloquee hasta que finalicen sus hijos (foreground). Tanto el proceso padre como el hijo se ejecutan concurrentemente (UNIX). (background). ESPACIO DE DIRECCIONES:

Alternativa 1: Cuando se crea un proceso, existen sistemas donde el hijo es una copia exacta de la imagen del padre (UNIX: va ha hacer una llamada al sistema (fork), por tanto todos los recursos del padre van a pasar al hijo).

o o o

Alternativa 2: Se crea el hijo con un programa que carga el propio fichero hijo (VMS, que es un S.O.). Destruccin: un proceso puede terminar por: Ha finalizado. Es algo que el propio proceso se encarga de notificar al S.O. El proceso provoca la finalizacin de otro proceso. Esto es privilegio de los procesos padres sobre sus hijos. Eliminarlos del S.O. significa: Borrarlos de cualquier lista o tabla del S.O. Borrar el P.C.B. de la tabla de procesos. Desasignar los recursos que estaban activos. En un sistema de jerarquas de procesos como el anterior puede ocurrir: Llamada al sistema (exit) para eliminar los recursos del sistema. Dos casos posibles:

Si el proceso padre finaliza, tanto el proceso padre como el proceso hijo concluyen. La terminacin del padre * terminacin del hijo. Si el padre termina, los hijos continan ejecutndose de forma implcita. El hijo hereda los recursos del padre caso de estar compartindolos. Otra forma de terminacin del sistema es con abort. Un proceso puede finalizar por concluir una ejecucin o porque un proceso de jerarqua mayor realiza una llamada al sistema, pero acaba con l. 4.- Threads (hebras o hilos). Sera bueno tener unos flujos de control de procesos. Supongamos que el S.O. con servidor de ficheros sera un proceso que cuando recibe la solicitud de otro proceso, el servidor de ficheros debe darle paso mientras los otros procesos deben esperar (bloqueado). Esto se mejorara con varios flujos de control que comparten el mismo espacio de direccionamiento de forma que si se ejecuta un proceso y se bloquea uno, los dems pueden seguir ejecutndose por otro lado. Hebras o procesos ligeros: una hebra es un proceso que tiene sus propios o Contador de programa. o Pila. o Conjunto de registros. Una hebra se puede ver como un proceso de forma que el planificador trabajara con hebras. Esto mejora el cambio de contexto que sera cambio entre hebras, con lo que se mejorara el coste. Todas la hebras van a tener acceso a las divisiones del espacio de direcciones, no hay proteccin de memoria. Cada hebra comparte con una hebra par: o La seccin de cdigo. o La seccin de datos. o Recursos del S.O. Esto puede dar lugar a conflictos a la hora de ejecutarse procesos concurrentes. Tarea: Entorno clave donde se ejecutan varias hebras que comparten el espacio de direcciones. El proceso pesado o tradicional es un espacio de direcciones virtual con una nica hebra. Las hebras van a poder estar en los mismos estados que le preceden: o Ejecutndose. o Ejecutable. o Bloqueado. Esto es as porque en un sistema de hebras, se tratan las hebras como unidad bsica. Si cambiamos las tareas, empleamos el mismo coste que los procesos paralelos. Utilizar el mecanismo de hebras aporta ventajas como: o Mayor rendimiento. o Aumento de concurrencia (permite varios procesos paralelos concurrentemente). o Mejor servicio (para el usuario). Los sistemas de hebras son muy utilizados en sistemas distribuidos multiprocesador, ya que podemos ejecutar una hebra en cada procesador. Podemos observar varios niveles de hebras:

Hebras implementadas en el Kernel: el kernel tiene implementadas las rutinas necesarias para el tratamiento de las hebras. Entra en la C.P.U. una hebra u otra.

Hebras a nivel de usuario: las rutinas para trabajar con las hebras estn implementadas en libreras, no en el kernel. La C.P.U. se reparte entre las diferentes hebras. Tema 3: Comunicacin y sincronizacin 1.- Concurrencias. Procesos concurrentes: son aquellos procesos cuya ejecucin se solapa en el tiempo. Los procesos mantienen 2 tipos de relaciones:

Relacin de cooperacin: los procesos concurrentes forman parte de la misma aplicacin. Relacin de competicin: cuando los distintos procesos compiten por un recurso. El software que se ocupa de los procesos concurrentes es la programacin concurrente, que va a abarcar al conjunto de tcnicas y rotaciones necesarias para expresar el paralelismo potencial de un sistema concurrente y resolver los problemas de sincronizacin y comunicacin. Existe paralelismo cuando hay ms de una C.P.U. y seudo - paralelismo cuando solamente existe una C.P.U. Razones por las que se necesita concurrencia en un sistema:

Compartir recursos fsicos: pues estos son limitados en un sistema. Para dar servicio a varios usuarios los procesos han de compartir recursos si dichos procesos se ejecutan de forma simultanea. Compartir recursos lgicos: nos puede interesar que dos procesos compartan un fichero; para ello hay que utilizar los mecanismos necesarios que nos eviten problemas. Mayor velocidad de ejecucin: si tenemos un proceso que realiza una adecuacin de una lista de nmeros, se podra conseguir una ejecucin ms rpida si se divide el problema en 2 partes. En el caso de existir paralelismo real la ejecucin del proceso mediante la realizacin de divisiones de este ser ms rpida que de la otra forma. Por razones de modularidad: vamos a tener diversos procesos independientes que realizan sus propias tareas. Comodidad: desde el punto de vista del usuario, por poder realizar varias tareas simultaneas. Programas concurrentes: Existen varias secuencias que se ejecutan en paralelo, por tanto existen varios flujos de control. Existen lenguajes de programacin concurrente que permiten dicha programacin. Dentro de un sistema operativo se distinguen los siguientes procesos: o Procesos independientes: procesos que se ejecutan independientemente y no necesitan informacin compartida, esto es un proceso que no va a depender de otro o Procesos cooperativos: procesos que comparten informacin con otros. Su estado puede ser afectado por la ejecucin de otro. Ejemplo: proceso productor / consumidor. Ejemplo de procesos cooperativos: productor - consumidor Se dispone de un buffer en el cual introduce datos un proceso productor y un proceso consumidor retira los datos del mismo. Estos procesos son cooperativos porque se ejecutan de forma concurrente. Por ejemplo, si el proceso productor ha llenado el buffer, este proceso ha de esperar hasta que el proceso consumidor retire datos de este. El consumidor no puede retirar datos del buffer si previamente el productor no ha introducido nada. Es necesaria la introduccin de mecanismos de concurrencia y sincronizacin para controlar la ejecucin concurrente. Otra caracterstica de los procesos concurrentes ser por tanto la sincronizacin entre procesos que se ejecutan de dicha forma. Al modo en el que se ejecutan los procesos, esto es, la secuencia de instrucciones que se realizan durante la ejecucin de un proceso se denomina interfoliacin. Esta ser una caracterstica de los sistemas concurrentes. Ejemplo: supongamos que se ejecutan concurrentemente dos procesos P1 y P2, compartiendo ambos una variable comn x. X est inicialmente a uno. Qu valor tendr la variable x despus de que se hayan ejecutado ambos procesos? 0,1 2?. La clave est en que las instrucciones x := x + 1 y x := x - 1 no son indivisibles. Cada una se implementa en lenguaje mquina como:

o o o

Registro 1 y registro 2 son registros del procesador (incluso pueden ser el mismo fsicamente: un acumulador). Veamos distintas secuencias de ejecucin: a1 b1 a2 b2 a3 b3 Resultado: x=0. a1 a2 a3 b1 b2 b3 Resultado: x=1. a1 b1 b2 b3 a2 a3 Resultado: x=2. Conclusiones:

Debemos asegurarnos que la ejecucin de procesos concurrentes sea correcta independientemente del orden en que se ejecuten sus instrucciones (interfoliacin). No podemos hacer suposiciones de la velocidad a la que evoluciona cada proceso. Si no se utiliza un mecanismo especial no se pueden realizar suposiciones de ningn tipo. Necesitamos asegurar que slo un proceso en cada ocasin manipule la variable compartida. Para ello necesitamos algn tipo de sincronizacin de procesos, establecer un orden relativo dentro de la interfoliacin 2.- Sincronizacin. La sincronizacin es la paralizacin de una actividad mientras no se cumpla una determinada condicin.

Ejemplo: supongamos que queremos calcular la siguiente expresin y tras ello, escribir el valor de A. Podramos construir dos procesos concurrentes que realizaran lo siguiente: Se observa que B y C se pueden ejecutar concurrentemente pero D se ha de ejecutar despus. Hay que sincronizar P1 y P2, de tal forma que P2 ha de esperar hasta que P1 haya finalizado su ejecucin. Para la secuenciacin de las operaciones a realizar se utilizan grafos de precedencia, que son grafos dirigidos acclicos, en los cuales, los nodos representan las instrucciones. Dependiendo del problema al que nos enfrentemos tendremos una solucin u otra. As pues podemos distinguir 2 casos: o Memoria comn: usamos espera ocupada. Consiste en utilizar una variable booleana para que un proceso espere hasta que el otro acabe. As mismo podemos utilizar semforos cuyo procedimiento es el mismo pero estn predefinidos por el sistema. o Mensajes: cuando no se pueden compartir memoria. Problema de la exclusin mutua. Un problema particular de la sincronizacin se plantea cuando en un momento dado, dos o ms procesos intentan acceder a un recurso comn (datos compartidos). La solucin consiste en asegurarse que la secuencia de sentencias que acceden a datos compartidos se traten como una operacin indivisible. Seccin crtica: Secuencia de sentencias de un proceso que accede a datos compartidos. REQUERIMIENTOS QUE SE HAN DE SATISFACER DURANTE LA EJECUCIN DE LA SECCIN CRTICA:

Dos procesos no deben encontrarse al mismo tiempo dentro de sus secciones crticas * se debe respetar la exclusin mutua. Las secciones crticas deben ejecutarse como procesos individuales. No se deben hacer hiptesis sobre la velocidad de los procesos o el nmero de C.P.U.'s. Ningn proceso que est fuera de su seccin crtica puede bloquear a otros procesos.

Propiedad de vivacidad: debe haber una ausencia de inaccin, ningn proceso debe de quedarse retrasado indefinidamente. Ningn proceso debe esperar eternamente para entrar en su seccin crtica. Propiedad de equidad: todos los procesos deben avanzar con iguales condiciones.

Ausencia de interbloqueo: un interbloqueo es un estado en el cual todos los procesos se esperan unos a otros y el sistema se detiene. Ejemplo: el problema de los 5 filsofos. Soluciones para implementar la exclusin mutua: Soluciones software: Protocolo de entrada: antes de ejecutar las instrucciones de la seccin crtica se comprueba si se puede entrar a dicha seccin, atendiendo al problema de la exclusin mutua. Protocolo de salida: deja al proceso en un estado de tal forma que cualquier otro proceso puede acceder a su seccin crtica, esto es, a la seccin crtica del proceso que qued en este estado. Entre procesos que comparten datos o acceden a datos compartidos, existen condiciones de competencia. El resultado final de la ejecucin depender de que proceso se ejecute y de cmo realice su ejecucin. La solucin al problema de exclusin mutua es hacer que las operaciones se realicen de un solo paso, de forma indivisible. Al conjunto de instrucciones que se ejecutan de forma independiente se denomina seccin crtica. Slo un proceso puede entrar en un instante determinado en la seccin crtica. ALGORITMO 1: Alternancia estricta de una variable compartida. Desventajas: Espera ocupada (tiempo de C.P.U. desperdiciado). No cumple la condicin 3, pues procesos que se encuentran fuera de sus secciones crticas bloquean a otros. Alternancia estricta. ALGORITMO 2: Variables puerta de paso o de cerradura. Si de entrada hago c1 = c2 = 1 consigo equidad. c1 = 0 *P1 est dentro de su seccin crtica. c2 = 0 *P2 est dentro de su seccin crtica. c1 y c2 a la vez a cero * No entran en su seccin crtica. No resuelve el problema de la exclusin mutua. MODIFICACIN DEL ALGORITMO 2: Inicialmente c1 = c2 = 1. Ningn proceso entra en la seccin crtica, paro si soluciona el problema de la exclusin mutua. Pueden bloquearse ambos procesos * INTERBLOQUEO. ALGORITMO 3: Modificacin de los dos anteriores. Cambia las estrategias anteriores, utiliza una variable turno, que controla cuando 2 procesos intentan acceder a la vez a la seccin crtica. c1 y c2 indican que la seccin crtica est libre para P1 P2, esto es, si P1 est en la seccin crtica c1 est a cero y en caso contrario sale de la seccin crtica. Se cumple la condicin de la exclusin mutua.

o o o

Se cumple la condicin 3, esto es, ningn proceso puede bloquear a otro si no se encuentra en la seccin crtica. Cumple todas las condiciones.

Soluciones hardware:

Activacin - desactivacin de interrupciones Si se desactivan las interrupciones no se presenta el problema de la exclusin mutua porque al hacerlo impedimos que ningn otro proceso pueda parar al que ya est. Desventajas: o No se debe permitir a los procesos de usuario utilizar este mecanismo de exclusin mutua, que ser utilizado nicamente por procesos del S.O. o Excluye a todos los procesos del sistema, no slo a los procesos que poseen las condiciones de competencia. o Si existe un bloqueo en la seccin crtica se para el sistema debido a que se han desactivado las interrupciones. o Los mecanismos para implementar sincronizacin y comunicacin son de bajo nivel. o Si tenemos ms de un C.P.U. no nos sirve la activacin - desactivacin de interrupciones porque slo se realiza esto para un procesador y los dems no se ven afectados. Por tanto falla en sistemas multiprocesadores.

Instruccin test & set Cerradura inicialmente tiene asignado el valor falso. En este caso se dispone de una interrupcin llamada TEST & SET que se ejecuta de forma indivisible, realizando la devolucin de un valor booleano. Dado un parmetro, se actualiza devolviendo la variable objetivo y asignndole a sta el valor verdadero. Mientras TEST & SET sea `1' no se entra en las seccin crtica. Ventajas: soluciona el problema de la exclusin mutua en sistemas multiprocesadores. Inconvenientes: o si se bloquea en la seccin crtica, se bloquean todos los procesos: interbloqueo. o Utiliza la espera ocupada * perdemos eficiencia. Existe otra instruccin llamada TEST & SET BLOCK que a diferencia de la anterior realiza intercambio de variables. 3.- Semforos. Un semforo es un tipo de datos que slo puede tomar valores enteros positivos, incluido el cero. Sobre un semforo slo se pueden realizar 3 operaciones, las cuales se realizan de forma indivisible y por tanto no existen problemas de interfoliacin. Estas operaciones son: o Inicializacin: asignarle un valor entero positivo a un semforo. Slo se puede realizar una asignacin, lo que se hace al principio de la implementacin. o Sealizacin: comprueba si hay procesos bloqueados. Si los hubiera, desbloquea uno y en caso contrario incrementa el valor del semforo. o Wait: si el valor del semforo es cero, el proceso se bloquea. En caso contrario se decrementa en 1 el valor del semforo. Los semforos se utilizan para sincronizar y resolver el problema de la exclusin mutua. Propiedades:

Los semforos implementan correctamente el problema de la exclusin mutua para cualquier nmero de procesos y para cualquier nmero de procesadores. Puede ocurrir inanicin a menos que se siga un orden FIFO en la cola de procesos bloqueados. Un semforo que se utiliza para resolver exclusin mutua est sujeto a interbloqueos. La comunicacin de procesos queda bajo responsabilidad de los programas. Los semforos slo hacen su Ejemplo: Si S = 0 se bloquea el proceso. Signal (s) * Indica que se ha ejecutado la instruccin anterior. Tipo de semforos:

funcin.

Generales o contadores: son los vistos hasta el momento. Nos sirven como contadores. (Asignndole a S un valor de 10 tendremos un bucle que se repite 10 veces). Binarios: toman valores booleanos, 0 1. Implementacin de semforos: Necesitamos de una estructura de datos enteros donde se almacene el nmero del semforo y los punteros a los procesos en cada momento. Para almacenar los procesos bloqueados necesitamos un puntero a la cola de bloqueados y cada semforo poseer una cola de bloqueados. Una vez ejecutado Wait (s) se incorporara el proceso actual en la cola de bloqueados. Para gestionar dicha cola se utilizar una rutina de tratamiento, con un puntero a la rutina. Las rutinas de tratamiento pueden ser la siguientes: FIFO: facilidad de implementacin y manejo de la cola.

o o

PRIORIDADES: en caso de existir varios procesos con distinta prioridad que compartan informacin. LIFO: no se suele utilizar. Otra implementacin de semforos trata de conseguir que las operaciones Wait y Signal sean atmicas, esto es, las operaciones sobre semforos sean indivisibles. Esta atomicidad se puede conseguir de dos maneras: Sistemas monoprocesadores: se consigue activando y desactivando las interrupciones.

Sistemas multiprocesadores: mediante las instrucciones Test & set Test & set block si el sistema las permite. En caso contrario utilizaremos algoritmos software con espera ocupada. Tambin se puede conseguir sta mediante la centralizacin en un procesador de un planificador que gestiones sus semforos. Problemas:

o o o o
vaco.

Productor / consumidor con buffer ilimitado. Se explicar este problema utilizando un ejemplo que cuenta con dos procesos, uno productor y otro consumidor que cumplen: Un proceso, Productor, que continuamente introduce elementos en un buffer BUFF. Un procesos, Consumidor, que continuamente saca elementos de un buffer BUFF. Inicialmente: BUFF est vaco. i,j := 1 mutex := 1 (controla el problema del acceso mutuo a BUFF). vaco := 0 (controla que el proceso consumidor no intente leer de BUFF cuando est vaco). Se ha de cumplir las siguientes condiciones para los dos procesos anteriores: El proceso consumidor no puede coger datos de BUFF (buffer) si este est vaco. Esto se controla con la variable

Ambos procesos comparten datos comunes, presentando el problema de exclusin mutua, esto es, ambos no pueden acceder a la vez a datos compartidos (se soluciona con mutex). El proceso productor indicar que el buffer se est llenando mediante signal. El interbloqueo (deadlock) ocurre cuando se ejecutan procesos concurrentes. Es una situacin en la cual un conjunto de procesos se quedan bloqueados esperando que ocurra algn suceso que solamente un proceso de dicho conjunto puede provocar. Este interbloqueo se produce por el intento de acceder a datos compartidos.

o o o o o
vaco).

Productor / consumidor con buffer limitado. Suponemos que BUFF es un buffer con capacidad limitada a N elementos (implementado como una lista circular). Inicialmente: BUFF est vaco i,j := 1 mutex := 1 vaco := 0 espacio := N (controla que el proceso PRODUCTOR no introduzca ms elementos en BUFF si ste no est El PRODUCTOR no debe introducir ms datos en el buffer si este est lleno, pues se machacaran datos al ser el espacio limitado. Cuando se produce un elemento hay que comprobar si existe o no espacio para ello. Hay que tomar precauciones con las operaciones Wait dentro de la seccin crtica, pues puede producir un problema de interbloqueo. Limitaciones de los semforos:

Este tipo de semforos presupone la existencia de una memoria comn. No es una solucin viable la utilizacin de semforos para los sistemas distribuidos (tiempo de comunicacin elevados). Por esto se utilizan en sistemas centralizados. La comunicacin entre procesos concurrentes queda bajo la responsabilidad del programa de aplicacin. Esto es, de ello no se encargan los semforos. No asegura la buena utilizacin de Wait y Signal por lo que se dice que los semforos son un mecanismo no estructurado. La implementacin de semforos produce cdigo difcil de verificar. 4.- Mensajes. Definicin: Son un mecanismo sencillo en su implementacin que resuelve algunas limitaciones de los semforos. Se utilizan por ello tanto en sistemas centralizados como en sistemas distribuidos. Se utilizan para resolver problemas como sincronizacin, comunicacin y exclusin mutua. Otra definicin de mensajes: una coleccin de informacin intercambiada entre un proceso emisor y un proceso receptor. Formato:

o o

Cabecera: formato fijo. Cuerpo: opcional y de longitud variable. Operaciones: Enviar o SEND. Recibir o RECEIVE. Implementacin de mensajes: Designacin del emisor / receptor:

Directa: cada emisor designa al receptor especfico y viceversa. El receptor debe conocer el nombre del que enva el mensaje. Ventajas: no existen fallos de identificador, de receptor o de emisor. Desventajas: ha de conocer en todo momento todos sus posibles clientes.

Indirecta: Los mensajes son enviados y recibidos a travs de depsitos especiales llamados buzones. El emisor manda los mensajes a un buzn, que es un lugar que ha sido creado con anterioridad, tomando el receptor los mensajes de dicho buzn. El propio sistema ha de gestionar a los buzones, proporcionando instrucciones para mejorar estos. Es necesario disponer de servicios adicionales para el mantenimiento de los buzones: o Crear_buzn. o Borrar_buzn. Con este tipo de mensajes de designacin indirecta, la comunicacin podr ser: o 1 a 1. o 1 a muchos. o Muchos a 1. o Muchos a muchos. Un buzn es una cola donde se almacenan los mensajes.

Intercambio sncrono y asncrono de mensajes Sncrono: La comunicacin se realiza slo cuando ambos procesos, emisor y receptor, estn separados. Slo puede existir un mensaje pendiente como mximo en cada momento por cada par emisor - receptor. La operaciones Set y Receive van a ser bloqueantes. Si un proceso realiza una operacin enviar y otro proceso una operacin recibir sobre el mismo buzn, el primer proceso va a estar esperando hasta que el segundo reciba y viceversa. Ventajas: Fcil implementacin. Seguridad en la recepcin del mensaje. Inconvenientes: sincronizacin forzosa. Asncrono: El proceso emisor no se bloquea, aunque el proceso receptor no est preparado (no haya ejecutado una operacin recibir). El sistema operativo acepta y almacena temporalmente los mensajes pendientes hasta que se reciban (recargo adicional para el sistema). Aumenta la concurrencia. Por un mal uso, un proceso puede agotar la capacidad de almacenamiento intermedio (temporal) del sistema. Como el S.O. no posee espacio de almacenamiento, los procesos quedaran bloqueados. Problema comn: aplazamiento indefinido. Se produce por las siguientes causas: Se enva un mensaje y nadie lo recibe. Se bloquea en sncrono. Un mensaje nunca se enva. Se bloquea en sncrono y en asncrono. Esto se soluciona implementando la operacin recibir con otro parmetro, siguiendo la sintaxis: Recibir (buzn, mensaje, lmite de tiempo). El lmite de tiempo es el tiempo que va a esperar el proceso como mximo para recibir un mensaje (proceso receptor). Si el proceso receptor sobrepasa ese lmite de tiempo esperando un mensaje que no llega, dicho proceso se desbloquea y manda a su vez un mensaje informando que se ha sobrepasado el lmite de tiempo. PRODUCTOR CONSUMIDOR CON BUFFER LIMITADO: MENSAJES

o o

o o

Primitivas de comunicacion IPC (Comunicacin entre procesos)

Es una funcin bsica de los Sistemas operativos.

Los procesos pueden comunicarse entre s a travs de compartir espacios de memoria, ya sean variables compartidas o buffers, o a travs de las herramientas provistas por las rutinas de IPC.

La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre s. Normalmente a travs de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente.

La comunicacin se establece siguiendo una serie de reglas (protocolos de comunicacin). Los protocolos desarrollados para internet son los mayormente usados: protocolo de internet (capa de red), protocolo de control de transmisin (capa de transporte) y protocolo de transferencia de archivos , protocolo de transferencia de hipertexto (capa de aplicacin). Introduccin y Definiciones Sobre Procesos El concepto central de cualquier Sistema Operativo es el de proceso: una abstraccin de un programa en ejecucin tambin llamada tarea. No hay un acuerdo universal sobre una definicin de proceso, pero s algunas definiciones aceptadas

[7, Deitel]:

Un programa que se est ejecutando. Una actividad asincrnica. El emplazamiento del control de un procedimiento que est siendo ejecutado. Aquello que se manifiesta por la existencia en el Sistema Operativo de un bloque de control de proceso. Aquella entidad a la cual son asignados los procesadores.

La unidad despachable. En sistemas de multiprogramacin la cpu alterna de programa en programa, en un esquema de seudo paralelismo , es decir que la cpu ejecuta en cierto instante un solo programa, intercambiando muy rpidamente entre uno y otro. El paralelismo real de hardware se da en las siguientes situaciones:

En ejecucin de instrucciones de programa con ms de un procesador de instrucciones en uso simultneamente.

Con la superposicin de ejecucin de instrucciones de programa con la ejecucin de una o ms operaciones de entrada / salida. El objetivo es aumentar el paralelismo en la ejecucin. El modelo de procesos posee las siguientes caractersticas:

Todo el software ejecutable, inclusive el Sistema Operativo, se organiza en varios procesos secuenciales o procesos. Un proceso incluye al programa en ejecucin y a los valores activos del contador, registros y variables del mismo. Conceptualmente cada proceso tiene su propia cpu virtual.

Si la cpu alterna entre los procesos, la velocidad a la que ejecuta un proceso no ser uniforme, por lo que es necesario aclarar lo siguiente: o Que los procesos no deben programarse con hiptesis implcitas acerca del tiempo. o Que normalmente la mayora de los procesos no son afectados por la multiprogramacin subyacente de la cpu o las velocidades relativas de procesos distintos.

Un proceso es una actividad de un cierto tipo, que tiene un programa, entrada, salida y estado. Un solo procesador puede ser compartido entre varios procesos con cierto algoritmo de planificacin , el cual

determina cundo detener el trabajo en un proceso y dar servicio a otro distinto (ver Figura 2.1

[23, Tanenbaum]).

En cuanto a las jerarquas de procesos es necesario sealar que los Sistemas Operativos deben disponer de una forma de crear y destruir procesos cuando se requiera durante la operacin, teniendo adems presente que los procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo, pudiendo darse ejecucin en paralelo. Respecto de los estados del proceso deben efectuarse las siguientes consideraciones:

o o o o o

Cada proceso es una entidad independiente pero frecuentemente debe interactuar con otros procesos (ver Figura Los procesos pueden bloquearse en su ejecucin porque: Desde el punto de vista lgico no puede continuar porque espera datos que an no estn disponibles. El Sistema Operativo asign la cpu a otro proceso. Los estados [23, Tanenbaum] que puede tener un proceso son (ver Figura 2.3 [23, Tanenbaum]): En ejecucin: utiliza la cpu en el instante dado. Listo: ejecutable, se detiene en forma temporal para que se ejecute otro proceso. Bloqueado: no se puede ejecutar debido a la ocurrencia de algn evento externo. Son posibles cuatro transiciones entre estos estados.

2.2 [23, Tanenbaum]).

Estados de Procesos Durante su existencia un proceso pasa por una serie de estados discretos, siendo varias las circunstancias que pueden hacer que el mismo cambie de estado. Debido a ello se puede establecer una Lista de Listos para los procesos listos y una Lista de Bloqueados para los bloqueados. La Lista de Listos se mantiene en orden prioritario y la Lista de Bloqueados est desordenada, ya que los procesos se desbloquean en el orden en que tienen lugar los eventos que estn esperando. Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado en la ltima parte de la Lista de Listos. La asignacin de la cpu al primer proceso de la Lista de Listos se denomina Despacho, que es ejecutado por una entidad del Sistema Operativo llamada Despachador. El Bloqueo es la nica transicin de estado iniciada por el propio proceso del usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al proceso. La manifestacin de un proceso en un Sistema Operativo es un Bloque de Control de Proceso (PCB) con informacin que incluye [7, Deitel]:

Estado actual del proceso. Identificacin nica del proceso. Prioridad del proceso. Apuntadores para localizar la memoria del proceso. Apuntadores para asignar recursos. rea para preservar registros.

Cuando el Sistema Operativo cambia la atencin de la cpu entre los procesos, utiliza las reas de preservacin del PCB para mantener la informacin que necesita para reiniciar el proceso cuando consiga de nuevo la cpu. Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la prioridad, bloquear, despertar y despachar un proceso.

La creacin de un proceso significa:

Dar nombre al proceso. Insertar un proceso en la lista del sistema de procesos conocidos. Determinar la prioridad inicial del proceso. Crear el bloque de control del proceso. Asignar los recursos iniciales del proceso.

Un proceso puede crear un nuevo proceso, en cuyo caso el proceso creador se denomina proceso padre y el proceso creado proceso hijo y se obtiene una estructura jerrquica de procesos. La destruccin de un proceso implica:

Borrarlo del sistema. Devolver sus recursos al sistema. Purgarlo de todas las listas o tablas del sistema. Borrar su bloque de control de procesos.

Un proceso suspendido no puede proseguir hasta que otro proceso lo reanude. Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue suspendido. La destruccin de un proceso puede o no significar la destruccin de los procesos hijos, segn el Sistema Operativo. Generalmente se denomina Tabla de Procesos al conjunto de informacin de control sobre los distintos procesos. Procesamiento de Interrupciones Una interrupcin es un evento que altera la secuencia en que el procesador ejecuta las instrucciones; es un hecho generado por el hardware del computador [7,

Deitel].

Cuando ocurre una interrupcin, el Sistema Operativo:

Obtiene el control. Salva el estado del proceso interrumpido, generalmente en su bloque de control de procesos. Analiza la interrupcin. Transfiere el control a la rutina apropiada para la manipulacin de la interrupcin.

Una interrupcin puede ser iniciada por un proceso en estado de ejecucin o por un evento que puede o no estar relacionado con un proceso en ejecucin. Generalmente las interrupciones se pueden clasificar por tipos segn el siguiente detalle (ver Tabla 2.1 [7, Deitel]:

SVC (llamada al supervisor): es una peticin generada por el usuario para un servicio particular del sistema, por ejemplo, realizacin de Entrada / Salida u obtencin de ms memoria. Entrada / Salida: son iniciadas por el hardware de Entrada / Salida, indicando a la cpu que ha cambiado el estado de un canal o dispositivo, por ejemplo, finalizacin de Entrada / Salida u ocurrencia de un error. Externas: son causadas por distintos eventos, por ejemplo, expiracin de un cuanto en un reloj de interrupcin o recepcin de una seal de otro procesador en un sistema multiprocesador. De reinicio: ocurren al presionar la tecla de reinicio o cuando llega una instruccin de reinicio de otro procesador en un sistema multiprocesador. De verificacin de programa: son causadas por errores producidos durante la ejecucin de procesos, por ejemplo:

o o o

Un intento de dividir por cero. Un intento de un proceso de usuario de ejecutar una instruccin privilegiada. Un intento de ejecutar un cdigo de operacin invlido. De verificacin de mquina: son ocasionadas por un mal funcionamiento del hardware. Tipo de Interrupcin SVC Entrada / Salida Externa De Reinicio Descripcin Llamada al Sistema Operativo Cambio de estado de un canal o dispositivo Evento externo al sistema Reinicio del procesamiento

De Verificacin de Programa Errores de procesos De Verificacin de Mquina Errores de hardware

Tabla 2.1: Tipos de interrupciones. El Sistema Operativo incluye rutinas llamadas Manipuladores de Interrupciones (IH) para procesar cada tipo diferente de interrupcin. Cuando se produce una interrupcin el Sistema Operativo efecta las siguientes acciones:

Salva el estado del proceso interrumpido. Dirige el control al manipulador de interrupciones adecuado. Se aplica la tcnica de Cambio de Contexto .

Los Sistemas Operativos instrumentan informacin de control que puede aparecer como las Palabras de Estado de Programa (PSW), las cuales controlan el orden de ejecucin de las instrucciones y contienen informacin sobre el estado del proceso. Existen tres tipos de PSW, que son la actual, la nueva y la vieja. La PSW Actual almacena la direccin de la prxima instruccin que ser ejecutada e indica los tipos de instrucciones actualmente habilitadas e inhabilitadas. En un sistema uniprocesador existe:

Solo una PSW actual. Seis PSW nuevas (una para cada tipo de interrupcin). Seis PSW viejas (una para cada tipo de interrupcin).

La PSW nueva para un tipo de interrupcin dado contiene la direccin en el hardware donde reside el manipulador de interrupciones para este tipo especfico. Cuando ocurre una interrupcin para la cual el procesador no est inhabilitado, ocurren las siguientes acciones:

o o o o

El hardware cambia las PSW en los casos siguientes: Al almacenar la PSW actual en la PSW vieja, para este tipo de interrupcin. Al almacenar la PSW nueva en la PSW actual, para este tipo de interrupcin. Luego de este intercambio de PSW: La PSW actual contiene la direccin del manipulador de interrupcin adecuado. El manipulador de interrupciones procesa la interrupcin.

o o

Luego de procesar la interrupcin, la cpu es enviada al: Proceso que estaba en ejecucin en el momento de la interrupcin, o al Proceso de listo de ms alta prioridad. La accin precedente depende de si el proceso de interrupcin es: Apropiativo: obtiene la cpu solo si no hay procesos de listos. No apropiativo: obtiene de nuevo la cpu.

El Ncleo del Sistema Operativo El ncleo del Sistema Operativo controla todas las operaciones que implican procesos y representa solo una pequea porcin del cdigo de todo el Sistema Operativo pero es de amplio uso Generalmente permanece en el almacenamiento primario. El proceso de interrupciones se incluye en el ncleo ya que debe ser rpido (especialmente en sistemas multiusuario), para optimizar el uso de los recursos del sistema y proveer tiempos de respuesta aceptables a los usuarios interactivos. El ncleo inhabilita las interrupciones mientras responde a una interrupcin. Las interrupciones son habilitadas de nuevo despus de completar el proceso de una interrupcin. El ncleo del Sistema Operativo generalmente realiza las siguientes funciones:

[7, Deitel].

Manipulacin de interrupciones. Creacin y destruccin de procesos. Cambio de estados de procesos. Despacho. Suspensin y reanudacin de procesos. Sincronizacin de procesos. Comunicacin entre procesos. Manipulacin de bloques de control de proceso. Soporte de las actividades de Entrada / Salida. Soporte de la asignacin y desasignacin de almacenamiento. Soporte del sistema de archivos. Soporte de un mecanismo de llamada / regreso al procedimiento. Soporte de ciertas funciones contables (estadsticas) del sistema.

Planificacin de Procesos Cuando ms de un proceso es ejecutable desde el punto de vista lgico, el Sistema Operativo debe decidir cul de ellos debe ejecutarse en primer trmino. El Planificador es la porcin del Sistema Operativo que decide y el Algoritmo de Planificacin es el utilizado. Los principales criterios respecto de un buen algoritmo de planificacin [23, Tanenbaum] son la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento (ver Tabla 2.2

[23, Tanenbaum]).

Criterio Equidad

Descripcin Garantizar que cada proceso obtiene su proporcin justa de la cpu

Eficacia Tiempo de respuesta Tiempo de regreso Rendimiento

Mantener ocupada la cpu el ciento por ciento del tiempo

Minimizar el tiempo de respuesta para los usuarios interactivos

Minimizar el tiempo que deben esperar los usuarios por lotes (batch) para obtener sus resultados Maximizar el nmero de tareas procesadas por hora

Tabla 2.2: Criterios de un buen algoritmo de planificacin. Algunas de estas metas son contradictorias, por ejemplo, minimizar el tiempo de respuesta para los usuarios interactivos significara no ejecutar las tareas batch. Cada proceso es nico e impredecible, es decir que pueden requerir intensivamente operaciones de Entrada / Salida o intensivamente cpu; el planificador del Sistema Operativo no tiene la certeza de cunto tiempo transcurrir hasta que un proceso se bloquee, ya sea por una operacin de Entrada / Salida o por otra razn . Para evitar que un proceso se apropie de la cpu un tiempo excesivo, los equipos poseen un dispositivo que provoca una interrupcin en forma peridica, por ejemplo 60 hz, o sea sesenta veces por segundo. En cada interrupcin del reloj el Sistema Operativo decide si el proceso que se est ejecutando contina o si el proceso agot su tiempo de cpu y debe suspenderse y ceder la cpu a otro proceso. Los principales conceptos relacionados con Planificacin del Procesador son los siguiente:

Planificacin apropiativa: es la estrategia de permitir que procesos ejecutables (desde el punto de vista lgico) sean suspendidos temporalmente. Planificacin no apropiativa: es la estrategia de permitir la ejecucin de un proceso hasta terminar. Planificacin del procesador: determinar cundo deben asignarse los procesadores y a qu procesos, lo cual es responsabilidad del Sistema Operativo.

Niveles de Planificacin del Procesador Se consideran tres niveles importantes de planificacin, los que se detallan a continuacin (ver Figura 2.4

[7, Deitel]):

o o o o o

Planificacin de alto nivel: Tambin se denomina Planificacin de trabajos. Determina a qu trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificacin de admisin. Planificacin de nivel intermedio: Determina a qu procesos se les puede permitir competir por la cpu. Responde a fluctuaciones a corto plazo en la carga del sistema y efecta suspensiones y activaciones (reanudaciones) de procesos. o Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. Planificacin de bajo nivel: Determina a qu proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que despacha la cpu al proceso. o La efecta el Despachador del Sistema Operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento primario.

Los distintos Sistemas Operativos utilizan varias Polticas de Planificacin, que se instrumentan mediante Mecanismos de Planificacin.

Objetivos de la Planificacin Los objetivos de la planificacin del procesador son los siguientes e involucran a los conceptos detallados seguidamente [7,

Deitel]:
o o o o o o o o o o o o
Ser justa: Todos los procesos son tratados de igual manera. Ningn proceso es postergado indefinidamente. Maximizar la capacidad de ejecucin: Maximizar el nmero de procesos servidos por unidad de tiempo. Maximizar el nmero de usuarios interactivos que reciban unos tiempos de respuesta aceptables: En un mximo de unos segundos.

Ser predecible: Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema. Minimizar la sobrecarga: No suele considerarse un objetivo muy importante. Equilibrar el uso de recursos: Favorecer a los procesos que utilizarn recursos infrautilizados.

Equilibrar respuesta y utilizacin: La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan, pero la utilizacin total de recursos podr ser pobre. Evitar la postergacin indefinida: Se utiliza la estrategia del envejecimiento . Mientras un proceso espera por un recurso su prioridad debe aumentar, as la prioridad llegar a ser tan alta que el proceso recibir el recurso esperado. Asegurar la prioridad: Los mecanismos de planificacin deben favorecer a los procesos con prioridades ms altas.

Dar preferencia a los procesos que mantienen recursos claves: Un proceso de baja prioridad podra mantener un recurso clave, que puede ser requerido por un proceso de ms alta prioridad. o Si el recurso es no apropiativo, el mecanismo de planificacin debe otorgar al proceso un tratamiento mejor del que le correspondera normalmente, puesto que es necesario liberar rpidamente el recurso clave.

o o o
procesos.

Dar mejor tratamiento a los procesos que muestren un comportamiento deseable: Un ejemplo de comportamiento deseable es una tasa baja de paginacin. Degradarse suavemente con cargas pesadas: Un mecanismo de planificacin no debe colapsar con el peso de una exigente carga del sistema. Se debe evitar una carga excesiva mediante las siguientes acciones: No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. Dando servicio a la carga ms pesada al proporcionar un nivel moderadamente reducido de servicio a todos los

Muchas de estas metas se encuentran en conflicto entre s, por lo que la planificacin se convierte en un problema complejo. Criterios de Planificacin Para realizar los objetivos de la planificacin, un mecanismo de planificacin debe considerar lo siguiente [7, Deitel]:

La limitacin de un proceso a las operaciones de Entrada / Salida: cuando un proceso consigue la cpu, la utiliza solo brevemente antes de generar una peticin de Entrada / Salida?. La limitacin de un proceso a la cpu: cuando un proceso obtiene la cpu, tiende a usarla hasta que expira su tiempo?.

Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir inmediato servicio para garantizar buenos tiempos de respuesta.

Qu urgencia tiene una respuesta rpida?: por ejemplo, un proceso de tiempo real de un sistema de control que supervise una refinera de combustible requiere una respuesta rpida, ms rpida que la respuesta requerida por un proceso en lotes (batch) que deber entregarse al da siguiente.

La prioridad de un proceso: a mayor prioridad mejor tratamiento.

Frecuentemente un proceso genera fallos (carencias) de pgina: Probablemente los procesos que generan pocos fallos de pgina hayan acumulado sus conjuntos de trabajo en el almacenamiento principal. o Los procesos que experimentan gran cantidad de fallos de pgina an no han establecido sus conjuntos de trabajo. o Un criterio indica favorecer a los procesos que han establecido sus conjuntos de trabajo. o Otro criterio indica favorecer a los procesos con una tasa alta de fallos de pgina ya que rpidamente generarn una peticin de Entrada / Salida.

o o

Frecuentemente un proceso ha sido apropiado por otro de ms alta prioridad, lo cual significa lo siguiente: A menudo los procesos apropiados deben recibir un tratamiento menos favorable. Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar este proceso, el corto tiempo de ejecucin antes de la apropiacin no justifica la sobrecarga de hacer ejecutar al proceso en primer lugar. Cunto tiempo de ejecucin real ha recibido el proceso?: un criterio considera que debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu. Cunto tiempo adicional va a necesitar el proceso para terminar?: los tiempos promedio de espera pueden reducirse priorizando los procesos que requieren de un tiempo de ejecucin mnimo para su terminacin, pero pocas veces es posible conocer la cantidad de tiempo adicional que cada proceso necesita para terminar.

Planificacin Apropiativa Versus No Apropiativa Las Disciplinas de Planificacin pueden ser Apropiativas o No Apropiativas (ver Tabla 2.3 [23, Tanenbaum]).

Disciplina Apropiativa No Apropiativa

Descripcin Una vez que se le ha otorgado la cpu a un proceso, le puede ser retirada Una vez que se le ha otorgado la cpu a un proceso, no le puede ser retirada Tabla 2.3: Disciplinas de planificacin del procesador.

Las principales caractersticas de la planificacin apropiativa son las siguientes:

Es til cuando los procesos de alta prioridad requieren atencin rpida. Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido.

Tiene su costo en recursos, ya que el intercambio de contexto implica sobrecarga y adems requiere mantener muchos procesos en el almacenamiento principal, en espera de la cpu, lo que tambin implica sobrecarga. Las principales caractersticas de la planificacin no apropiativa son las siguientes: Significa que los trabajos largos hacen esperar a los trabajos cortos. Logra ms equidad en el tratamiento de los procesos.

Logra hacer ms predecibles los tiempos de respuesta puesto que los trabajos nuevos de prioridad alta no pueden desplazar a los trabajos en espera. El diseo de un mecanismo apropiativo hace necesario considerar las arbitrariedades de casi cualquier esquema de prioridades, en razn de que muchas veces las propias prioridades no son asignadas de forma significativa

[25,

Tanenbaum].
El mecanismo debera ser sencillo pero efectivo y significativo. Temporizador de Intervalos o Reloj de Interrupcin El proceso al cual est asignada la cpu se dice que est en ejecucin y puede ser un proceso de Sistema Operativo o de usuario.

El Sistema Operativo dispone de mecanismos para quitarle la cpu a un proceso de usuario para evitar que monopolice el sistema. El Sistema Operativo posee un reloj de interrupcin o temporizador de intervalos para generar una interrupcin, en algn tiempo futuro especfico o despus de un transcurso de tiempo en el futuro; la cpu es entonces despachada hacia el siguiente proceso [7, Deitel]. Un proceso retiene el control de la cpu hasta que ocurra alguna de las siguientes situaciones:

La libera voluntariamente. El reloj la interrumpe.

Alguna otra interrupcin atrae la atencin de la cpu. Si el reloj interrumpe un proceso de usuario, la interrupcin causa la ejecucin del Sistema Operativo, el que decide cul ser el proceso que obtendr la cpu. El reloj de interrupcin ayuda a garantizar tiempos de respuesta razonables a usuarios interactivos, ya que evita que el sistema se cuelgue a un solo usuario en un ciclo infinito y permite que los procesos respondan a eventos dependientes del tiempo. Asimismo, los procesos que necesitan una ejecucin peridica dependen del reloj de interrupcin Prioridades Las prioridades pueden ser de distinto tipo (ver Tabla 2.4 [7, Deitel]).

[22, Tanenbaum].

Tipos de prioridades Asignadas automticamente por el sistema Asignadas desde el exterior Dinmicas Estticas Asignadas racionalmente Asignadas arbitrariamente Tabla 2.4: Tipos de prioridades. En el caso de prioridades asignadas arbitrariamente, un mecanismo del sistema necesita distinguir entre procesos sin importarle cul es el ms importante. Las principales caractersticas de las prioridades estticas son las siguientes:

No cambian. Los mecanismos de implementacin son sencillos. Implican una sobrecarga relativamente baja.

No responden a cambios en el ambiente (contexto) que haran deseable ajustar alguna prioridad. Las principales caractersticas de las prioridades dinmicas son las siguientes: Responden al cambio. La prioridad inicial asignada a un proceso puede durar poco tiempo, luego se la reajusta a un mejor valor. Los mecanismos de implementacin son ms complicados que para prioridades estticas. Implican una sobrecarga mayor que para esquemas estticos.

Respecto de las prioridades adquiridas, se hace referencia al tratamiento especial que en situaciones excepcionales requiere un cierto proceso, lo que puede significar restar recursos a los dems procesos. Tipos de Planificacin Planificacin a Plazo Fijo Ciertos trabajos se planifican para ser terminados en un tiempo especfico o plazo fijo. Es una planificacin compleja debido a los siguientes factores:

El usuario debe suministrar anticipadamente una lista precisa de recursos necesarios para el proceso, pero generalmente no se dispone de dicha informacin. La ejecucin del trabajo de plazo fijo no debe producir una grave degradacin del servicio a otros usuarios. El sistema debe planificar cuidadosamente sus necesidades de recursos hasta el plazo fijo, lo que se puede complicar con las demandas de recursos de nuevos procesos que ingresen al sistema. La concurrencia de varios procesos de plazo fijo (activos a la vez) puede requerir mtodos sofisticados de optimizacin. La administracin intensiva de recursos puede generar una considerable sobrecarga adicional.

Planificacin Garantizada Se establecen compromisos de desempeo con el proceso del usuario, por ejemplo, si existen n procesos en el sistema, el proceso del usuario recibir cerca del 1 / n de la potencia de la cpu. El sistema debe tener un registro del tiempo de cpu que cada proceso ha tenido desde su entrada al sistema y del tiempo transcurrido desde esa entrada. Con los datos anteriores y el registro de procesos en curso de ejecucin, el sistema calcula y determina qu procesos estn ms alejados por defecto de la relacin 1 / n prometida y prioriza los procesos que han recibido menos cpu de la prometida. Planificacin del Primero en Entrar Primero en Salir (FIFO) Es muy simple, los procesos se despachan de acuerdo con su tiempo de llegada a la cola de listos. Una vez que el proceso obtiene la cpu, se ejecuta hasta terminar, ya que es una disciplina no apropiativa. Puede ocasionar que procesos largos hagan esperar a procesos cortos y que procesos no importantes hagan esperar a procesos importantes. Es ms predecible que otros esquemas. No puede garantizar buenos tiempos de respuesta interactivos. Suele utilizarse integrado a otros esquemas, por ejemplo, de la siguiente manera:

Los procesos se despachan con algn esquema de prioridad. Los procesos con igual prioridad se despachan FIFO.

Planificacin de Asignacin en Rueda (RR: Round Robin) Los procesos se despachan en FIFO y disponen de una cantidad limitada de tiempo de cpu, llamada divisin de tiempo o cuanto. Si un proceso no termina antes de expirar su tiempo de cpu ocurren las siguientes acciones: 1. 2. La cpu es apropiada. La cpu es otorgada al siguiente proceso en espera.

3. El proceso apropiado es situado al final de la lista de listos. Es efectiva en ambientes de tiempo compartido. La sobrecarga de la apropiacin se mantiene baja mediante mecanismos eficientes de intercambio de contexto y con suficiente memoria principal para los procesos. Tamao del Cuanto o Quantum La determinacin del tamao del cuanto es decisiva para la operacin efectiva de un sistema computacional

[7, Deitel].

Los interrogantes son: cuanto pequeo o grande?, cuanto fijo o variable? y cuanto igual para todos los procesos de usuarios o determinado por separado para cada uno de ellos?. Si el cuanto se hace muy grande, cada proceso recibe todo el tiempo necesario para llegar a su terminacin, por lo cual la asignacin en rueda (RR) degenera en FIFO. Si el cuanto se hace muy pequeo, la sobrecarga del intercambio de contexto se convierte en un factor dominante y el rendimiento del sistema se degrada, puesto que la mayor parte del tiempo de cpu se invierte en el intercambio del procesador (cambio de contexto) y los procesos de usuario disponen de muy poco tiempo de cpu. El cuanto debe ser lo suficientemente grande como para permitir que la gran mayora de las peticiones interactivas requieran de menos tiempo que la duracin del cuanto, es decir que el tiempo transcurrido desde el otorgamiento de la cpu a un proceso hasta que genera una peticin de Entrada / Salida debe ser menor que el cuanto establecido, de esta forma, ocurrida la peticin la cpu pasa a otro proceso y como el cuanto es mayor que el tiempo transcurrido hasta la peticin de Entrada / Salida, los procesos trabajan al mximo de velocidad, se minimiza la sobrecarga de apropiacin y se maximiza la utilizacin de la Entrada / Salida. El cuanto ptimo vara de un sistema a otro y con la carga, siendo un valor de referencia 100 mseg (cien milisegundos). Planificacin del Trabajo Ms Corto Primero (SJF) Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes de tiempo compartido. El proceso en espera con el menor tiempo estimado de ejecucin hasta su terminacin es el siguiente en ejecutarse. Los tiempos promedio de espera son menores que con FIFO. Los tiempos de espera son menos predecibles que en FIFO. Favorece a los procesos cortos en detrimento de los largos. Tiende a reducir el nmero de procesos en espera y el nmero de procesos que esperan detrs de procesos largos. Requiere un conocimiento preciso del tiempo de ejecucin de un proceso, lo que generalmente se desconoce. Se pueden estimar los tiempos en base a series de valores anteriores. Planificacin del Tiempo Restante Ms Corto (SRT) Es la contraparte apropiativa del SJF. Es til en sistemas de tiempo compartido. El proceso con el tiempo estimado de ejecucin menor para nalizar es el siguiente en ser ejecutado. Un proceso en ejecucin puede ser apropiado por un nuevo proceso con un tiempo estimado de ejecucin menor. Tiene mayor sobrecarga que la planificacin SJF. Debe mantener un registro del tiempo de servicio transcurrido del proceso en ejecucin, lo que aumenta la sobrecarga. Los trabajos largos tienen un promedio y una varianza de los tiempos de espera an mayor que en SJF.

La apropiacin de un proceso a punto de terminar por otro de menor duracin recin llegado podra significar un mayor tiempo de cambio de contexto (administracin del procesador) que el tiempo de finalizacin del primero. Al disearse los Sistemas Operativos se debe considerar cuidadosamente la sobrecarga de los mecanismos de administracin de recursos comparndola con los beneficios esperados. Planificacin el Siguiente con Relacin de Respuesta Mxima (HRN) Corrige algunas de las debilidades del SJF, tales como el exceso de perjuicio hacia los procesos (trabajos) largos y el exceso de favoritismo hacia los nuevos trabajos cortos. Es una disciplina no apropiativa. La prioridad de cada proceso est en funcin no slo del tiempo de servicio del trabajo, sino que tambin influye la cantidad de tiempo que el trabajo ha estado esperando ser servido. Cuando un proceso ha obtenido la cpu, corre hasta terminar. Las prioridades, que son dinmicas, se calculan segn la siguiente frmula, donde pr es la prioridad, te es el tiempo de espera y ts es el tiempo de servicio:

Planificacin por Prioridad Considera factores externos al proceso [23,

Tanenbaum].

Las ideas centrales son que cada proceso tiene asociada una prioridad y que el proceso ejecutable con mxima prioridad es el que tiene el permiso de ejecucin. Los procesos de alta prioridad podran ejecutar indefinidamente, ya que el planificador del sistema puede disminuir la prioridad del proceso en ejecucin en cada interrupcin del reloj. Las prioridades tambin pueden ser asignadas dinmicamente por el sistema para lograr ciertas metas relacionadas con el procesador o la Entrada / Salida. Los procesos limitados por la Entrada / Salida (requerimientos intensivos de Entrada / Salida) ocupan mucho de su tiempo en espera de operaciones de Entrada / Salida, por lo tanto:

Deben tener prioridad para usar la cpu y efectuar la siguiente peticin de Entrada / Salida, ya que se ejecutar (la operacin de Entrada / Salida) en paralelo con otro proceso que utilice la cpu. Si deben esperar mucho tiempo a la cpu estarn ocupando memoria por un tiempo innecesario. Un algoritmo sencillo consiste en establecer que la prioridad sea 1 / f, donde f es la fraccin del ltimo cuanto utilizado por el proceso. Un proceso que utilice 2 mseg (dos milisegundos) de su cuanto de 100 mseg (cien milisegundos) tendr prioridad 50 (cincuenta). Un proceso que se ejecut 50 mseg antes del bloqueo tendr prioridad 2. Un proceso que utiliz todo el cuanto tendr prioridad 1. Frecuentemente los procesos se agrupan en Clases de Prioridad, en cuyo caso se utiliza la Planificacin con Prioridades entre las clases y con Round Robin (RR) dentro de cada clase. Si las prioridades no se reajustan en algn momento, los procesos de las clases de prioridad mnima podran demorarse indefinidamente. Colas de Retroalimentacin de Niveles Mltiples Proporcionan una estructura para lograr los siguientes objetivos:

Favorecer trabajos cortos. Favorecer trabajos limitados por la Entrada / Salida para optimizar el uso de los dispositivos de Entrada / Salida.

Determinar la naturaleza de un trabajo lo ms rpido posible y planificar el trabajo (proceso) en consecuencia. Un nuevo proceso entra en la red de lnea de espera al final de la cola superior. Se mueve por esta cola FIFO hasta obtener la cpu. Si el trabajo termina o abandona la cpu para esperar por la terminacin de una operacin de Entrada / Salida o la terminacin de algn otro suceso, el trabajo abandona la red de lnea de espera. Si su cuanto expira antes de abandonar la cpu voluntariamente, el proceso se coloca en la parte trasera de la cola del siguiente nivel inferior. El trabajo recibe servicio al llegar a la cabeza de esta cola si la primera est vaca. Mientras el proceso contine consumiendo totalmente su cuanto en cada nivel, continuar movindose hacia el final de las colas inferiores. Generalmente hay una cola en la parte ms profunda a travs de la cual el proceso circula en asignacin de rueda hasta que termina. Existen esquemas en los que el cuanto otorgado al proceso aumenta a medida que el proceso se mueve hacia las colas de los niveles inferiores, en tal caso, cuanto ms tiempo haya estado el proceso en la red de lnea de espera, mayor ser su cuanto cada vez que obtiene la cpu y no podr obtener la cpu muy a menudo debido a la mayor prioridad de los procesos de las colas superiores. Un proceso situado en una cola dada no podr ser ejecutado hasta que las colas de los niveles superiores estn vacas. Un proceso en ejecucin es apropiado por un proceso que llegue a una cola superior. Es un mecanismo adaptable, es decir que se adapta a cargas variables. A los efectos de una revisin grfica de lo enunciado precedentemente, ver la figura 2.5 Poltica Versus Mecanismo de Planificacin Puede ocurrir que haya procesos con muchos procesos hijos ejecutndose bajo su control, por ejemplo, un proceso en un DBMS con procesos hijos atendiendo funciones especficas, tales como, anlisis de interrogantes, acceso a discos, etc. Es posible que el proceso principal (padre) pueda identificar la importancia (o criticidad) de sus procesos hijos, pero los planificadores analizados no aceptan datos de los procesos de usuario relativos a decisiones de planificacin. La solucin es separar el mecanismo de planificacin de la poltica de planificacin, para ello se parametriza el algoritmo de planificacin y los parmetros pueden ser determinados por medio de procesos del usuario; as el mecanismo est en el ncleo del Sistema Operativo pero la poltica queda establecida por un proceso del usuario. Planificacin de Dos Niveles Los esquemas analizados hasta ahora suponen que todos los procesos ejecutables estn en la memoria principal. Si la memoria principal es insuficiente, ocurrir lo siguiente

[7, Deitel].

[23, Tanenbaum]:

Habr procesos ejecutables que se mantengan en disco.

Habr importantes implicaciones para la planificacin, tales como las siguientes: El tiempo de alternancia entre procesos para traer y procesar un proceso del disco es considerablemente mayor que el tiempo para un proceso que ya est en la memoria principal. o Es ms eficiente el intercambio de los procesos con un planificador de dos niveles.

El esquema operativo de un planificador de dos niveles es como sigue: 1. 2. Se carga en la memoria principal cierto subconjunto de los procesos ejecutables. El planificador se restringe a ellos durante cierto tiempo.

3. Peridicamente se llama a un planificador de nivel superior para efectuar las siguientes tareas: 1. Eliminar de la memoria los procesos que hayan permanecido en ella el tiempo suficiente. 2. Cargar a memoria los procesos que hayan estado en disco demasiado tiempo. 4. El planificador de nivel inferior se restringe de nuevo a los procesos ejecutables que se encuentren en la memoria. 5. El planificador de nivel superior se encarga de desplazar los procesos de memoria a disco y viceversa. Los criterios que podra utilizar el planificador de nivel superior para tomar sus decisiones son los que se indican a continuacin:


sentido).

Cunto tiempo ha transcurrido desde el ltimo intercambio del proceso?. Cunto tiempo de cpu ha utilizado recientemente el proceso?. Qu tan grande es el proceso? (generalmente los procesos pequeos no causan tantos problemas en este

Qu tan alta es la prioridad del proceso?. El planificador de nivel superior podra utilizar cualquiera de los mtodos de planificacin analizados. Multiprocesamiento Introduccin Es una tendencia significativa en el campo de la computacin. Consiste en configurar un sistema de computacin con varios procesadores . No es un enfoque nuevo pero s posee grandes perspectivas en funcin del desarrollo de los microprocesadores. Se podran concebir sistemas construidos por cientos o miles de microprocesadores. Confiabilidad Si un procesador falla, los restantes continan operando, lo cual no es automtico y requiere de un diseo cuidadoso. Un procesador que falla habr de informarlo a los dems de alguna manera, para que se hagan cargo de su trabajo. Los procesadores en funcionamiento deben poder detectar el fallo de un procesador determinado. El Sistema Operativo debe percibir que ha fallado un procesador determinado y ya no podr asignarlo y tambin debe ajustar sus estrategias de asignacin de recursos para evitar la sobrecarga del sistema que est degradado. Explotacin del Paralelismo La mayora de los sistemas de multiprocesamiento tienen como meta principal el incremento de la capacidad de ejecucin. La programacin sigue siendo esencialmente secuencial y generalmente no se explota la concurrencia. Las principales razones son las siguientes:

Las personas piensan en forma secuencial.

Ningn lenguaje humano proporciona la expresin adecuada de paralelismo, pero existen lenguajes de computacin con soporte de concurrencia (por ejemplo, Ada, Pascal Concurrente, etc.). Ni el multiprocesamiento ha sido usado con amplitud para explotar el paralelismo. El hardware tradicional del computador est orientado hacia la operacin secuencial.

Es muy difcil depurar programas en paralelo. Los multiprocesadores no se utilizan a menudo para explotar el paralelismo ya que es muy escaso el software que explote el paralelismo. Lo deseable es que los Sistemas Operativos y compiladores puedan detectar e implementar el paralelismo automticamente. Paralelismo Masivo Se debe disponer de suficientes procesadores como para que todas las operaciones que puedan ser ejecutadas en paralelo puedan ser asignadas a procesadores separados [14, Pino

y Marrone].

Esto ofrece una forma de ejecutar un programa en el menor tiempo posible. La cuestin central es, disponiendo del paralelismo masivo, cul es el tiempo mnimo requerido para ejecutar un algoritmo determinado?. Metas de los Sistemas de Multiprocesamiento Las metas de los sistemas de multiprocesamiento generalmente son la confiabilidad y la disponibilidad muy altas, como as tambin el incremento del poder de computacin. El diseo modular proporciona una flexibilidad importante y facilita la expansin de la capacidad. Deteccin Automtica del Paralelismo Los multiprocesadores hacen posible la explotacin del paralelismo. Los sistemas de computacin obtienen los beneficios del procesamiento concurrente ms por la multiprogramacin de varios procesos y menos por la explotacin del paralelismo dentro de un solo proceso. La deteccin del paralelismo es un problema complejo y la puede efectuar el programador, el traductor del lenguaje, el hardware o el Sistema Operativo. El paralelismo dentro de los programas puede ser explcito o implcito. Las principales caractersticas del paralelismo explcito son las que se detallan a continuacin:

siguiente:

Es indicado de forma especfica por un programador mediante una construccin de concurrencia como la cobegin; proposicin 1; ................ proposicin n; coend;

Se pueden utilizar procesadores separados para ejecutar cada una de las proposiciones. Es susceptible de errores de programacin difciles de detectar y depurar.

El programador puede omitir tratar situaciones donde sera aplicable el paralelismo. Las principales caractersticas del paralelismo implcito son las que se detallan a continuacin: La verdadera esperanza est en la deteccin automtica del paralelismo implcito. Es el paralelismo intrnseco del algoritmo pero no establecido explcitamente por el programador.

Los compiladores explotan el paralelismo implcito mediante las tcnicas de distribucin de ciclos y de reduccin de la altura del rbol.

Distribucin de Ciclos Una estructura de ciclos o de repeticin implica la repeticin de una serie de proposiciones (cuerpo del ciclo) hasta que ocurre alguna condicin de terminacin, por ejemplo: For i = 1 to 3 Do

; El procesador secuencial realizar en secuencia lo siguiente:

En un sistema de multiprocesamiento con tres procesadores disponibles se podran ejecutar concurrentemente. Un compilador que detecte automticamente el paralelismo implcito puede convertir el ciclo del ejemplo 2.2 en lo siguiente: cobegin;

coend; Esta tcnica se denomina distribucin de ciclos. Reduccin de la Altura del Arbol Utilizando las propiedades asociativa, conmutativa y distributiva de la aritmtica, los compiladores pueden: 1. Detectar el paralelismo implcito en expresiones algebraicas. 2. Producir un cdigo objeto para multiprocesadores que indique las operaciones que se pueden realizar simultneamente. 3. Reordenar expresiones para que sean ms apropiadas para la computacin en paralelo. Se invierten ms tiempo y recursos durante la compilacin para reducir el tiempo de ejecucin, es decir que se busca optimizacin en el momento de la compilacin para lograr ejecucin en tiempo mnimo, lo que es aplicable especialmente cuando los sistemas pasan a produccin, no tanto cuando estn en desarrollo (ver Figura 2.6, Figura 2.7, Figura 2.8 y Figura 2.9 [7, Deitel]).

REGLA DE NUNCA ESPERAR: Es mejor darle a un procesador una tarea que puede llegar a no ser utilizada, que tenerlo ocioso. Organizacin del Hardware del Multiprocesador El problema clave es determinar los medios de conexin de los procesadores mltiples y los procesadores de Entrada / Salida a las unidades de almacenamiento [7, Deitel]. Los multiprocesadores se caracterizan por los siguientes aspectos:

Un multiprocesador contiene dos o ms procesadores con capacidades aproximadamente comparables.

Todos los procesadores comparten el acceso a un almacenamiento comn y a canales de Entrada / Salida, unidades de control y dispositivos. Todo est controlado por un Sistema Operativo que proporciona interaccin entre procesadores y sus programas en los niveles de trabajo, tarea, paso, archivo y elementos de datos. Las organizaciones ms comunes son las siguientes: Tiempo compartido o bus comn (conductor comn). Matriz de barras cruzadas e interruptores.

Almacenamiento de interconexin mltiple. Tiempo Compartido o Bus Comn (o Conductor Comn) Usa un solo camino de comunicacin entre todas las unidades funcionales (ver Figura 2.10

[7, Deitel]).

El bus comn es en esencia una unidad pasiva. Un procesador o procesador de Entrada / Salida que desee transferir datos debe efectuar los siguientes pasos:

1. Verificar la disponibilidad del conductor y de la unidad de destino. 2. Informar a la unidad de destino de lo que se va a hacer con los datos. 3. Iniciar la transferencia de datos. Las unidades receptoras deben poder reconocer qu mensajes del bus son enviados hacia ellas y seguir y confirmar las seales de control recibidas de la unidad emisora. Es una organizacin econmica, simple y flexible pero con una sola va de comunicacin, por lo cual:

El sistema falla totalmente si falla el bus. La tasa neta de transmisiones est limitada por la tasa neta de transmisin del conductor. La contencin por el uso del bus en un sistema sobrecargado puede ocasionar una seria degradacin.

Matriz de Barras Cruzadas e Interruptores En este caso existe un camino diferente para cada unidad de almacenamiento, por lo cual las referencias a dos unidades diferentes de almacenamiento no son bloqueantes sino simultneas y la multiplicidad de caminos de transmisin puede proporcionar tasas de transferencia muy altas (ver Figura 2.11

[7, Deitel]).

Almacenamiento de Interconexin Mltiple Se obtiene al sacar las lgicas de control, de conmutacin y de arbitraje de prioridades fuera del interruptor de barras cruzadas y se las coloca en la interfaz de cada unidad de almacenamiento (ver Figura 2.12

[7, Deitel]).

Cada unidad funcional puede acceder a cada unidad de almacenamiento, pero slo en una conexin de almacenamiento especfica, es decir que hay una conexin de almacenamiento por unidad funcional. El conexionado es ms complejo que en los otros esquemas. Se puede restringir el acceso a las unidades de almacenamiento para que no todas las unidades de procesamiento las accedan, en tal caso habr unidades de almacenamiento privadas de determinados procesadores (ver Figura 2.13 [7,

Deitel]).

Grados de Acoplamiento en Multiprocesamiento Los grados de acoplamiento en multiprocesamiento pueden clasificarse de ligeramente acoplados (ver Figura 2.14 [7,

Deitel]) o rgidamente acoplados (ver Figura 2.15 [7, Deitel]), segn las caractersticas que se detallan en la Tabla 2.5 [7, Deitel].

Grados de acoplamiento en multiprocesamiento

Descripcin

Ligeramente acoplado

Incluye la conexin de dos o ms sistemas independientes por medio de un enlace de comunicacin.

Cada sistema tiene su propio Sistema Operativo y almacenamiento. Los sistemas pueden funcionar independientemente y se comunican cuando sea necesario. Los sistemas separados pueden acceder a los archivos de los otros e intercambiar tareas a procesadores menos cargados. Utiliza un solo almacenamiento compartido por varios procesadores. Rgidamente acoplado Emplea un solo Sistema Operativo que controla todos los procesadores y el hardware del sistema. Tabla 2.5: Grados de acoplamiento en multiprocesamiento. Organizacin Maestro / Satlite Un procesador est diseado como el maestro y los otros como satlites. El procesador maestro es de propsito general y realiza operaciones de Entrada / Salida y computaciones. Los procesadores satlites slo realizan computaciones. Los procesos limitados por computacin pueden ejecutarse con efectividad en los satlites. Los procesos limitados por la Entrada / Salida ejecutados en los satlites generan frecuentes llamadas de servicios al procesador maestro, pudiendo resultar ineficientes. Si falla un satlite se pierde capacidad computacional pero el sistema no falla. Si falla el maestro el sistema falla al no poder efectuar operaciones de Entrada / Salida, por lo que un satlite debera asumir las funciones del maestro previo cambio de los perifricos y reinicio del sistema. En el multiprocesamiento simtrico todos pueden hacer Entrada / Salida. Sistema Operativo de Multiprocesadores Las capacidades funcionales de los Sistema Operativo de multiprogramacin y de multiprocesadores incluyen lo siguiente:

Asignacin y administracin de recursos. Proteccin de tablas y conjuntos de datos. Prevencin contra el interbloqueo del sistema. Terminacin anormal. Equilibrio de cargas de Entrada / Salida. Equilibrio de carga del procesador.

Reconfiguracin. Las tres ltimas son especialmente importantes en Sistemas Operativos de multiprocesadores, donde es fundamental explotar el paralelismo en el hardware y en los programas y hacerlo automticamente. Las organizaciones bsicas de los Sistemas Operativos para multiprocesadores son las siguientes:

Maestro / satlite. Ejecutivo separado para cada procesador.

Tratamiento simtrico (o annimo) para todos los procesadores. Maestro / Satlite Es la organizacin ms fcil de implementar. No logra la utilizacin ptima del hardware dado que slo el procesador maestro puede ejecutar el Sistema Operativo y el procesador satlite slo puede ejecutar programas del usuario.

Las interrupciones generadas por los procesos en ejecucin en los procesadores satlites que precisan atencin del Sistema Operativo deben ser atendidas por el procesador maestro y por ello pueden generarse largas colas de requerimientos pendientes. Ejecutivos Separados Cada procesador tiene su propio Sistema Operativo y responde a interrupciones de los usuarios que operan en ese procesador. Existen tablas de control con informacin global de todo el sistema (por ejemplo, lista de procesadores conocidos por el Sistema Operativo) a las que se debe acceder utilizando exclusin mutua. Es ms confiable que la organizacin maestro / satlite. Cada procesador controla sus propios recursos dedicados. La reconfiguracin de los dispositivos de Entrada / Salida puede implicar el cambio de dispositivos a diferentes procesadores con distintos Sistemas Operativos. La contencin sobre las tablas del Sistema Operativo es mnima. Los procesadores no cooperan en la ejecucin de un proceso individual, que habr sido asignado a uno de ellos. Tratamiento Simtrico Es la organizacin ms complicada de implementar y tambin la ms poderosa y confiable. El Sistema Operativo administra un grupo de procesadores idnticos, donde cualquiera puede utilizar cualquier dispositivo de Entrada / Salida y cualquiera puede referenciar a cualquier unidad de almacenamiento. El Sistema Operativo precisa cdigo reentrante y exclusin mutua. Es posible equilibrar la carga de trabajo ms precisamente que en las otras organizaciones. Adquieren significativa importancia el hardware y el software para resolucin de conflictos. Todos los procesadores pueden cooperar en la ejecucin de un proceso determinado. El procesador ejecutivo es el responsable (uno slo) en un momento dado de las tablas y funciones del sistema; as se evitan los conflictos sobre la informacin global. Rendimiento del Sistema de Multiprocesamiento An con multiprocesamiento completamente simtrico, la adicin de un nuevo procesador no har que la capacidad de ejecucin del sistema aumente segn la capacidad del nuevo procesador, siendo las causas las siguientes:

Hay sobrecarga adicional del Sistema Operativo. Se incrementa la contencin por recursos del sistema.

Hay retrasos del hardware en el intercambio y en el encaminamiento de las transmisiones entre un nmero mayor de componentes. Al incrementar el nmero de procesadores n similares en un multiprocesador, el incremento de la productividad no es lineal y tiende a disminuir cuando n crece. Recuperacin de Errores Una de las capacidades ms importantes de los Sistemas Operativos de multiprocesadores es la de soportar fallas de hardware en procesadores individuales y continuar su operacin. Debe existir el soporte correspondiente en el Sistema Operativo. Las tcnicas de recuperacin de errores incluyen los siguientes aspectos:

Los datos crticos (del sistema y de usuario) deben mantenerse en copias mltiples y en bancos de almacenamiento separados. El Sistema Operativo debe ejecutar efectivamente con la configuracin mxima y con subconjuntos ante fallas. Debe haber capacidad de deteccin y correccin de errores de hardware sin interferir con la eficiencia operacional del sistema. Se debe utilizar la capacidad ociosa del procesador para tratar de detectar posibles fallos antes de que se produzcan. El Sistema Operativo debe dirigir un procesador operativo para que tome el control de un proceso que se estaba ejecutando en un procesador que falla. Multiprocesamiento Simtrico (MPS) Cada procesador posee capacidades funcionales completas. Los dispositivos de Entrada / Salida pueden ser conectados a cada uno de los procesadores (ver Figura 2.16

[7, Deitel]).

Todas las llamadas al supervisor pueden ser ejecutadas en todos los procesadores, inclusive las de Entrada / Salida. Si un programa en ejecucin en un procesador pide una operacin de Entrada / Salida en un dispositivo conectado a un procesador diferente, el procesador puede continuar ejecutando el trabajo y la Entrada / Salida se coloca en una cola para su iniciacin por el procesador apropiado. Se considera procesador ejecutante al que est ejecutando un proceso determinado. Se considera procesador propietario al que est conectado a los diferentes dispositivos utilizados por el proceso. Es ms eficiente que la organizacin maestro / satlite, ya que los requerimientos de Entrada / Salida se encolan y no sobrecargan con intercambio de contexto y a que en la organizacin maestro / satlite las peticiones de Entrada / Salida en el satlite provocan un intercambio de contexto en el maestro. Cada procesador puede ejecutar el planificador para buscar el siguiente trabajo a ejecutar, de forma que un proceso determinado se ejecuta en diferentes procesadores en distintos momentos; adems, el MPS utiliza una sola cola de trabajos y cada procesador puede seleccionar trabajos de ella, con lo cual se equilibra la carga entre los procesadores. Para minimizar la contencin en el despacho de procesos, los relojes de los procesadores tienen oblicuidad, debido a ello las interrupciones de reloj ocurren en diferentes momentos. Tendencias de los Multiprocesadores Todo indica que el uso de los multiprocesadores se incrementar considerablemente en el futuro Las principales razones son las siguientes:

[7, Deitel].

La confiabilidad requerida es cada vez mayor. La reduccin de costos consecuencia de los avances en microelectrnica. El previsible desarrollo de lenguajes que permitan a los usuarios expresar el paralelismo explcitamente. El progreso en la deteccin automtica del paralelismo .

El hecho de que se estara llegando a los lmites del uniprocesador debido a la compactacin de componentes, es decir que se estara prximo a los lmites de longitud y de proximidad de los caminos electromagnticos (longitud del recorrido de la seal electromagntica); alcanzados los lmites mencionados, la nica posibilidad de incrementar capacidad de cmputo es mediante multiprocesamiento. Existen estudios de tendencias en arquitectura de computadoras que apuntan a los poliprocesadores, es decir, sistemas que combinan el multiprocesamiento, simtrico y asimtrico, para crear una jerarqua de procesadores dentro de un sistema.

Exclusin mutua (informtica)


De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda Para otros usos de este trmino, vase Exclusin mutua.

los algoritmos de exclusin mutua (mutex), un conjunto de algoritmos informticos utilizados para evitar el acceso simultaneo de recursos compartidos. 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. La mayor parte de estos recursos son las seales, contadores, colas y otros datos que se emplean en la comunicacin entre el cdigo que se ejecuta cuando se da servicio a una interrupcin y el cdigo que se ejecuta el resto del tiempo. Se trata de un problema de vital importancia porque, si no se toman las precauciones debidas, una interrupcin puede ocurrir entre dos instrucciones cualesquiera del cdigo normal y esto puede provocar graves fallos. La tcnica que se emplea por lo comn para conseguir la exclusin mutua es inhabilitar las interrupciones durante el conjunto de instrucciones ms pequeo que impedir la corrupcin de la estructura compartida (la seccin crtica). Esto impide que el cdigo de la interrupcin se ejecute en mitad de la seccin crtica. En un sistema multiprocesador de memoria compartida, se usa la operacin indivisible test-andset sobre una bandera, para esperar hasta que el otro procesador la despeje. La operacin testand-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador. As, cuando el cdigo deja la seccin crtica, se despeja la bandera. Esto se conoce como spin lock o espera activa. Algunos sistemas tienen instrucciones multioperacin indivisibles similares a las anteriormente descritas para manipular las listas enlazadas que se utilizan para las colas de eventos y otras estructuras de datos que los sistemas operativos usan comnmente. La mayora de los mtodos de exclusin mutua clsicos intentan reducir la latencia y espera activa mediante las colas y cambios de contexto. Algunos investigadores afirman que las pruebas indican que estos algoritmos especiales pierden ms tiempo del que ahorran. A pesar de todo lo dicho, muchas tcnicas de exclusin mutua tienen efectos colaterales. Por ejemplo, los semforos permiten interbloqueos (deadlocks) en los que un proceso obtiene un semforo, otro proceso obtiene el semforo y ambos se quedan a la espera de que el otro proceso

libere el semforo. Otros efectos comunes incluyen la Inanicin, en el cual un proceso esencial no se ejecuta durante el tiempo deseado, y la inversin de prioridades, en el que una tarea de prioridad elevada espera por otra tarea de menor prioridad, as como la latencia alta en la que la respuesta a las interrupciones no es inmediata. La mayor parte de la investigacin actual en este campo, pretende eliminar los efectos anteriormente descritos. Si bien no hay un esquema perfecto conocido, hay un interesante esquema no clsico de envo de mensajes entre fragmentos de cdigo que, aunque permite inversiones de prioridad y produce una mayor latencia, impide los interbloqueos. Algunos ejemplos de algoritmos clsicos de exclusin mutua son:

El algoritmo de Dekker. El algoritmo de Peterson.

[editar] Vase tambin


El algoritmo de Dekker es un algoritmo de programacin concurrente para exclusin mutua, que permite a dos procesos o hilos de ejecucin compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusin mutua inventados, implementado por Edsger Dijkstra. Si ambos procesos intentan acceder a la seccin crtica simultneamente, el algoritmo elige un proceso segn una variable turno. Si el otro proceso est ejecutando en su seccin crtica, deber esperar su finalizacin. Existen cinco versiones del algoritmo Dekker, teniendo ciertos fallos los primeros cuatro. La versin 5 es la que trabaja ms eficientemente, siendo una combinacin de la 1 y la 4.

Versin 1: Alternancia estricta. Garantiza la exclusin mutua, pero su desventaja es que acopla los procesos fuertemente, esto significa que los procesos lentos atrasan a los procesos rpidos. Versin 2: Problema interbloqueo. No existe la alternancia, aunque ambos procesos caen a un mismo estado y nunca salen de ah. Versin 3: Colisin regin crtica no garantiza la exclusin mutua. Este algoritmo no evita que dos procesos puedan acceder al mismo tiempo a la regin crtica. Versin 4: Postergacin indefinida. Aunque los procesos no estn en interbloqueo, un proceso o varios se quedan esperando a que suceda un evento que tal vez nunca suceda. shared int cierto = 1;

''/* Definicin de variables compartidas */ '' shared int bandera[2] = {0,0}; shared int turno = 0;

while (cierto) { bandera[proc_id] = cierto; while (bandera[1-proc_id] == cierto) { if (turno == 1-proc_id) { bandera[proc_id] = 0; while (turno == (1-proc_id)) /* espera a que sea su turno de intentar */; bandera[proc_id] = 1; } } /* ''Seccin crtica'' */ turno = 1-proc_id; bandera[proc_id] = 0; /* ''Seccin no crtica'' */ } /* es el turno del otro proceso */

Algoritmo de Peterson
De Wikipedia, la enciclopedia libre Saltar a navegacin, bsqueda El algoritmo de Peterson, tambin conocido como solucin de Peterson, es un algoritmo de programacin concurrente para exclusin mutua, que permite a dos o ms procesos o hilos de ejecucin compartir un recurso sin conflictos, utilizando slo memoria compartida para la comunicacin. Peterson desarroll el primer algoritmo (1981) para dos procesos que fue una simplificacin del algoritmo de Dekker para dos procesos. Posteriormente este algoritmo fue generalizado para N procesos.

[editar] Algoritmo para dos procesos


bandera[0] = 0 bandera[1] = 0 turno =0 p1: bandera[1] = 1 turno = 0 while( bandera[0] && turno == 0 ); //no hace nada; espera. // seccin crtica

p0: bandera[0] = 1 turno = 1

while( bandera[1] && turno == 1 ); //no hace nada; espera. // seccin crtica

// fin de la seccin crtica bandera[0] = 0

// fin de la seccin crtica bandera[1] = 0

Los procesos p0 y p1 no pueden estar en la seccin crtica al mismo tiempo: si p0 est en la seccin crtica, entonces bandera[0] = 1, y ocurre que bandera[1] = 0, con lo que p1 ha terminado la seccin crtica, o que la variable compartida turno = 0, con lo que p1 est esperando para entrar a la seccin crtica. En ambos casos, p1 no puede estar en la seccin crtica.

[editar] Algoritmo para N procesos (pseudo-codigo)


// Variables compartidas bandera: array[0..N-1] of -1..n-2; /* inicializada a 1 */ turno: array[0..N-2] of 0..n-1; /* inicializada a 0 */

// Protocolo para Pi ( i=0,...,N-1 ) j:0..N-2; /* variable local indicando la etapa */ for j = 0 to N-2 { bandera[i] = j; turno[j] = i;

while [( k i : bandera[k] j) (turno[j] == i)] do; } <seccin crtica> bandera[i] = -1;

Sincronizacin entre procesos


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
En los Introduccin Representacin de los procesos Hilos de ejecucin o thread Sincronizacin y comunicacin entre procesos Seccin crtica Modelo de sincronizacin mutex (mutual exclusin object) exclusin mutua Modelo de sincronizacin por semforos Modelo de sincronizacin por mensajes Problemas de sincronizacin Los clsicos problemas de la sincronizacin de procesos Interbloqueo Recursos reutilizables Recursos consumibles Bibliografa

INTRODUCCIN

sistemas operativos multiprogramados surge el concepto de proceso, asociado a la ejecucin de un programa. En general, un proceso es por un contador de programa, y su contexto de ejecucin, que puede ser ms o menos amplio. As, un proceso incluye en su contexto el estado de la pila, el estado de la memoriay el estado de la E/S, mientras que un threadtpico tiene como contexto propio poco ms que la pila. En algunos sistemas es posible determinar el contexto propio de un proceso en el momento de su creacin, como ocurre con la llamada al sistema clone() de Linux. En adelante, sin perder generalidad, utilizaremos siempre el trmino proceso, independientemente de cul sea su contexto.
un flujo de ejecucin, representado bsicamente Uno de los posibilitan la comparticin del recurso un periodo de

objetivos del sistema operativoes la representacin de los procesosy el soporte de los cambios de contexto entre procesos, que CPU. El acceso a otros recursos compartidos y la comunicacinentre procesos relacionados (por ejemplo, de tiempo, realiza alguna operacin de E/S, y vuelve a requerir la CPU, repitindose este ciclo hasta la finalizacin del programa. El proceso pasa por

una misma aplicacin) hacen necesaria la utilizacin de mecanismos de sincronizacin dentro del sistema operativo. Tpicamente, un proceso requiere la CPU durante diversos estados entre los que se definen transiciones, como representa, en su forma ms sencilla, el grafo de la Figura siguiente.

objetivo del sistema operativo multiprogramado es la planificacindel uso del (de los) recurso(s) de proceso. Los criterios que se siguen para la planificacin y las polticasque se usan se estudiarn mas adelante en el desarrollode la presente investigacin.
Cada vez que un proceso pasa al estado preparado, est compitiendo por el recurso CPU. Un segundo Para realizar el estudio de dichas polticas se realiza una sintetizada referencia a la representacin de los procesos, para luego definir hilos de ejecucin o threads, estableciendo diferencias entre procesos y hilos de ejecucin, sus ventajas desventajas, estados, sincronizacin y tipos, para luego empezar a estudiar el fenmeno de la

modelo, propiedades de la seccin critica, as como la descripcin detallada de algunos de los principales modelosde sincronizacin tales como el de exclusin mutua (mutex), semforos y mensajes, para despus describir los diferentes problemas de sincronizacin tales como; el fumador de cigarrillos, la panadera de Lamport, los filsofosque cenan (sabios), el barbero dormiln, lectores y escritores, y productor consumidor y finalmente se estudia el interbloqueo estableciendo su definicin, caractersticas,
sincronizacin de procesos, estableciendo su definicin y caractersticas, se esboza la definicin, condiciones necesarias y suficientes para su existencia, en cuanto a su deteccin y recuperacin.

Representacin de los procesos


Para representar los procesos, un sistema operativo multiprogramado debe almacenar

informacinen base a la cual:

Identificar cada proceso. Se utiliza un identificador del proceso, que suele ser un entero. Representar el estado de cada proceso para mantener el grafo de transicin de estados. Normalmente los estados se representan mediante colas de procesos. Planificar el siguiente proceso que entre en la CPU (scheduling). Se requiere informacin que permita aplicar los criterios de planificacin (prioridad, quantum, etc).

Contabilizar el uso de recursos por el proceso (tiempo consumido de CPU, tiempo de ejecucin del proceso, tiempos mximos asignados, identificador de usuario). Parte de esta informacin puede ser til para la planificacin. Gestionar el contexto de los procesos. Por cada proceso hay que almacenar el estado del entrada/salida). En un

procesador, de la pila y de los otros recursos (memoria y cambio de contexto hay que guardar el contexto del proceso que abandona la ejecucin y restaurar el contexto del proceso planificado.

Gestionar la memoria. Punteros a tablas de pginas y otra informacin de la que hablaremos en su momento. Soportar la entrada/salida. Peticiones pendientes, dispositivos asignados, tabla de canales, etc. Esta informacin no tiene por qu estar concentrada en una

estructura de datosnica para cada proceso. Cmo se almacene depender de la estructura del Controldel Proceso o PCB (Process Control Block), que almacena la informacin del proceso. disciplina de acceso a los PCBs puede ser

sistema operativo. Por ejemplo, en los sistemas por capas, la informacin de un proceso estar segmentada a travs de las capas. Sin embargo, conceptualmente podemos suponer una estructura, que denominaremos Bloque de

Los PCBs se enlazan para formar listas encadenadas (Figura B), por lo que el PCB incluye uno o ms apuntadores. La diversa (FCFS, en base a la prioridad, etc). As, la

gestinde procesos en el sistema operativo se puede representar mediante un conjunto de colas de PCBs. Habr

una cola para los procesos que estn en estado preparado para ejecucin, una cola para cada condicin de bloqueo, e incluso, para generalizar, se puede considerar una cola de procesos en ejecucin (por cada CPU).

Figura B Una lista de PCBs de encadenado simple De esta forma, podemos definir el sistema operativo como un modelo de procesos que se representa mediante un sistema de colas, segn se continuacin.

muestra a

Hilos de ejecucin o thread

sistemasoperativos, es una caracterstica que permite a una aplicacin realizar varias tareas concurrentemente. Los recursostales como el espacio de memoria, los archivosabiertos, situacin de autenticacin, etc. Esta tcnica permite simplificar el diseode una aplicacin que debe llevar a cabo distintas funciones simultneamente.
Un hilo de ejecucin o thread , en distintos hilos de ejecucin comparten una serie de Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un ejecucin de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar stos. Cuando un hilo modifica un dato en

proceso. El hecho de que los hilos de la

memoria, los otros hilos acceden e ese dato modificado inmediatamente a en la siguiente figura podemos observar un ejemplo de un hilo de ejecucin.
Lo que es propio de cada hilo es el contador de

programa, la pila de ejecucin y el estado de la CPU (incluyendo el valor de los registros).

El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga activo. Cuando el proceso es terminado, todos sus hilos de ejecucin tambin lo son. Asimismo en el

momento en el que todos los hilos de ejecucin finalizan, el proceso no existe ms y todos sus recursos son liberados.

programacintienen caractersticas de diseo expresamente creadas para permitir a los programadores lidiar con hilos de ejecucin Java). Otros (la mayora) desconocen la existencia de hilos de ejecucin y stos deben ser creados mediante llamadas de bibliotecaespeciales que dependen del sistema operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del C++).
Algunos lenguajes de (como

tener un hilo atento a la interfaz grfica (iconos, botones, ventanas), mientras otro hilo hace una larga operacin interaccincon el usuario. Tambin pueden ser utilizados por una aplicacin servidora para dar servicio a mltiples clientes de procesos.
Un ejemplo de la utilizacin de hilos es internamente. De esta manera el programa responde de manera ms gil a la Diferencias entre hilos y procesos Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante interactan slo a travs de mecanismos de

informacinde estados, e comunicacin dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos

directamente. En muchos de los sistemas operativos que proveen facilidades para los hilos, es ms rpido cambiar de un hilo a otro dentro del mismo proceso, que

datosy espacios de direcciones, mientras que los procesos al ser independientes no lo hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de modo (mode switch), en este caso pasar del estadode Running al estado de Waiting o Bloqueado y
cambiar de un proceso a otro. Este fenmeno se debe a que los hilos comparten colocar el nuevo proceso en Running. En los hilos como pertenecen a un mismo proceso al realizar un cambio de hilo este overhead es casi despreciable. Sistemas operativos como

Windows NT, OS/2 y Linux(2.5 o superiores) han dicho tener hilos 'baratos', y procesos 'costosos' mientras que en otros sistemas problemas de compartimiento de recursos. eficienciadel uso del procesador.

no hay una gran diferencia. Funcionalidad de los hilos Al igual que los procesos, los hilos poseen un estado de ejecucin y pueden sincronizarse entre ellos para evitar Generalmente, cada hilo tiene una tarea especifica y determinada, como forma de aumentar la Estados de un hilo

Los principales estados de los hilos son: Ejecucin, Listo y Bloqueado. No tiene sentido asociar estados de suspensin de hilos ya que es un En todo caso, si un proceso est expulsado de la memoria principal ( proceso. Cambio de estados

conceptode proceso. ram), todos sus hilos debern estarlo ya que todos comparten el espacio de direcciones del

Creacin:Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso. El hilo tendr su propio contexto y su propio espacio de pila, y pasara a la cola de listas. Bloqueo:Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros). Ahora el procesador podr pasar a ejecutar otro hilo que est en la cola de Listos mientras el anterior permanece bloqueado. Desbloqueo: Cuando el suceso por el que el hilo se bloque se produce, el mismo pasa a la cola de Listos. Terminacin: Cuando un hilo finaliza se liberan tanto su contexto como sus

pilas.

Ventajas de los hilos contra procesos Si bien los hilos son generados a partir de la creacin de un proceso, podemos decir que un proceso es un hilo de ejecucin, conocido como Monohilo. Pero las ventajas de los hilos se dan cuando hablamos de Multihilos, que es cuando un proceso tiene mltiples hilos de ejecucin los cuales realizan actividades distintas, que pueden o no ser

cooperativasentre s. Los beneficios de los hilos se derivan de las implicaciones de rendimiento.


Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un proceso. Algunas

1.

investigacionesllevan al

resultado que esto es as en un factor de 10. 2. Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se elimina un proceso se debe eliminar el BCP del mismo, mientras que un hilo se elimina su contexto y pila. 3. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso Los hilos aumentan la eficiencia de la comunicacin entre

4.

procesos debe intervenir el ncleo para ofrecer proteccin de los recursos y realizar

programasen ejecucin. En la mayora de los sistemas en la comunicacin entre la comunicacinmisma. En cambio, entre hilos pueden

comunicarse entre s sin la invocacin al ncleo. Por lo tanto, si hay una aplicacin que debe implementarse como un conjunto de unidades de ejecucin relacionadas, es ms eficiente hacerlo con una coleccin de hilos que con una coleccin de procesos separados. Sincronizacin de hilos Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos. Cualquier modificacin de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan

estructurasde datos. velocidad en sistemas de computadores con mltiples CPUs (sistemas grupo de mquinas) ya que los hilos del programa se prestan verdaderamente para la ejecucin concurrente. En tal caso el

Una ventaja de la programacin multihilo es que los programas operan con mayor multiprocesador o a travs de

programador necesita ser cuidadoso para evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos alteran datos que otros tambin estn usando), y otros comportamientos no intuitivos. Los hilos generalmente requieren reunirse para procesar los datos en el orden correcto. Es posible que los hilos requieran de

operaciones atmicas para impedir que los datos comunes sean cambiados o ledos mientras estn siendo modificados, para lo que usualmente

se utilizan los semforos. El descuido de esto puede generar interbloqueo. Formas de multihilos Los sistemas operativos generalmente implementan hilos de dos maneras:

Multihilo apropiativo:permite al sistema operativo determinar cundo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede

hacer un cambio de contexto en un momento inadecuado, causando un fenmeno conocido como Multihilo cooperativo: depende del mismo hilo abandonar el

inversin de prioridades y otros problemas.

control cuando llega a un punto de detencin, lo cual puede traer problemas cuando el Pentium4, bajo el nombre de

hilo espera la disponibilidad de un recurso. El soporte de hardware para multihilo desde hace poco se encuentra disponible. Esta caracterstica fue introducida por Intel en el HyperThreading. Usos ms comunes Trabajo interactivo y en segundo plano

hoja de clculoun hilo puede estar visualizando los mens y leer la entrada del usuario mientras que otro hilo ejecuta las rdenes y actualiza la hoja de clculo. Esta medida suele aumentar la velocidad que se percibe en la aplicacin, permitiendo que el programa pida la orden
Por ejemplo, en un programa de siguiente antes de terminar la anterior. Procesamiento asncrono Los elementos asncronos de un programa se pueden implementar como hilos. Un ejemplo es como los softwares de procesamiento de temporales cuando se est trabajando en dicho programa. Se crea un hilo que tiene como operacin de

texto guardan archivos funcin guardar una copia de respaldo mientras se contina con la

escritura por el usuario sin interferir en la misma.

Aceleracin de la ejecucin Se pueden ejecutar, por ejemplo, un lote mientras otro hilo lee el lote siguiente de un dispositivo. Estructuracin modular de los programas Puede ser un mecanismo eficiente para un programa que ejecuta una gran variedad de actividades, teniendo las mismas bien separadas mediante a hilos que realizan cada una de ellas.

Implementaciones Hay dos grandes categoras en la implementacin de hilos:

Hilos a nivel de usuario Hilos a nivel de Kernel

Tambin conocidos como ULT (User Level Thread) y KLT (Kernel Level Thread) Hilos a nivel de usuario (ULT) En una aplicacin ULT pura, todo

posible programar una aplicacin como multihilo mediante una biblioteca de hilos. La misma contiene el y datos entre hilos, para planificar la ejecucin de hilos y para salvar y restaurar el contexto de los hilos.

el trabajo de gestinde hilos lo realiza la aplicacin y el ncleo o kernel no es consciente de la existencia de hilos. Es cdigopara crear y destruir hilos, intercambiar mensajes

Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un mismo proceso. El kernel continua planificando el proceso como una unidad y asignndole un nico estado (Listo, bloqueado, etc.). Ventajas de los ULT

El intercambio de los hilos no necesita los privilegios del modo kernel, por que todas las estructuras de datos estn en el espacio de direcciones de usuario de un mismo proceso. Por lo tanto, el proceso no debe cambiar a modo kernel para gestionar hilos. Se evita la sobrecarga de cambio de modo y con esto el sobrecoste o overhead. Se puede realizar una

planificacin especfica. Dependiendo de que aplicacin sea, se puede decidir por una u otra planificacin segn sus

ventajas.

Los ULT pueden ejecutar en cualquier sistema operativo. La biblioteca de hilos es un conjunto compartido.

Desventajas de los ULT En la mayora de los

sistemas operativoslas llamadas al sistema (System calls) son bloqueantes. Cuando un hilo realiza una llamada al

sistema, se bloquea el mismo y tambin el resto de los hilos del proceso. En una

estrategiaULT pura, una aplicacin multihilo no puede aprovechar las ventajas de los multiprocesadores. El ncleo asigna un solo

proceso a un solo procesador, ya que como el ncleo no interviene, ve al conjunto de hilos como un solo proceso. Una solucin al bloqueo mediante a llamadas al sistema es usando la tcnica de jacketing, que es convertir una llamada bloqueante en no bloqueante. Hilos a nivel de ncleo (KLT)

trabajo de gestin de hilos lo realiza el kernel. En el rea de la aplicacin no hay cdigo de gestin de hilos, nicamente un API (interfaz de programas de aplicacin) para la gestin de hilos en el ncleo. Windows 2000, Linux y OS/2 utilizan este mtodo. Linux utiliza un
En una aplicacin KLT pura, todo el mtodo muy particular en que no hace diferencia entre procesos e hilos, para linux si varios procesos creados con la llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales el sistema operativo los trata como hilos y lgicamente son manejados por el kernel. Ventajas de los KLT


Algunos

El kernel puede planificar simultneamente mltiples hilos del mismo proceso en mltiples Si se bloquea un hilo, puede planificar otro del mismo proceso. Las propias funciones del kernel pueden ser multihilo

procesadores.

Desventajas de los KLT El paso de control de un hilo a otro precisa de un cambio de modo.

Combinaciones ULT y KLT

sistemas operativos ofrecen la combinacin de ULT y KLT, como Solaris.

La creacin de hilos, as como la mayor parte de la planificacin y sincronizacin de los hilos de una aplicacin se realiza por completo en el espacio de usuario. Los mltiples ULT de una sola aplicacin se asocian con varios KLT. El programador puede ajustar el nmero de KLT para cada aplicacin y mquina para obtener el mejor resultado global.

Sincronizacin y Comunicacin entre procesos


La comunicacin entre procesos: necesaria si se desea que varios procesos puedan colaborar para realizar una misma tarea. Sincronizacin === funcionamiento coordinado en la resolucin de una tarea encomendada. El SO ofrece mecanismos bsicos de comunicacin, que permiten transferir cadenas de bytes. Deben ser los procesos que se comunican quienes interpreten el significado de las cadenas transferidas para su labor coordinada. Los mecanismos de comunicacin y sincronizacin son dinmicos. Es decir, cuando se necesita un mecanismo de este estilo, se crea, usa y destruye, de forma que no se establezca de forma definitiva ningn mecanismo de comunicacin, ya que ellos podran producir efectos indeseados. Es decir, la comunicacin es algo puntual. Los

servicios bsicos de comunicacin son:


a. b. c. d. crear: el proceso solicita la creacin del mecanismo enviar o escribir: el proceso emisor enva informacin al proceso receptor recibir o leer: el proceso receptor recibe informacin destruir: el proceso solicita la destruccin del mecanismo de comunicacin

La comunicacin puede ser sincrona y asncrona: a. sncrona: los dos procesos han de ejecutar servicios de forma simultnea. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.

b.

asncrona: el emisor hace el envo y prosigue su ejecucin. El SO ofrece un

almacenamiento intermedio para guardar la informacin enviada,

hasta que el receptor la solicite. Esquema de Sincronizacin Sincrona

En un sistema operativo multiprogramado los procesos compiten por el acceso a los recursos compartidos o cooperan dentro de una misma aplicacin para comunicar informacin. Ambas situaciones son tratadas por el sistema operativo mediante mecanismos de sincronizacin que permiten el acceso exclusivo de forma coordinada a los recursos y a los elementos de comunicacin compartidos. Segn el

modelode sistema operativo descrito anteriormente, basado en colas de procesos y

transiciones de estados, los procesos abandonan la CPU para pasar a estado bloqueado cuando requieren el acceso a algn dispositivo, generalmente en una operacin de E/S, pasando a estado preparado cuando la operacin ha concluido y eventualmente volver a ejecucin. La gestin de estos cambios de estado, es decir, los cambios de contexto, es un ejemplo de seccin

crtica de cdigo dentro del sistema operativo que debe ser ejecutada por ste en exclusin mutua. Otros ejemplos de cdigo variables de

que debe protegerse como seccin crtica incluyen la programacin de los dispositivos de E/S y el acceso a estructuras de datos y buffers compartidos. Dentro del dentro del ncleo del sistema operativo, el espacio de direcciones es nico, por lo que la comunicacin se resuelve mediante el uso de

memoria compartida. Como contrapartida a la agilidad de este esquema, es necesario utilizar mecanismos explcitos de sincronizacin para garantizar acceso exclusivo a las variables compartidas. Si se definen buffers o colas compartidas a las que se proporciona acceso exclusivo, se pueden utilizar esquemas de comunicacin ms elaborados, como es el caso del productor-

clientes producen peticiones que son consumidas por el servidor de un determinado recurso. Un sistema operativo con

consumidor. El esquema cliente-servidores un caso particular del productor-consumidor donde los estructuracliente-servidor resulta

atractivo por la claridad de su diseo. Cuando los procesos que se comunican mediante estos esquemas no comparten el espacio de direcciones, lo que sucede en particular en sistemas basados en micro ncleo, se requieren primitivas de comunicacin por paso de mensajes, que, al gestionar implcitamente la sincronizacin, simplifican la programacin de la comunicacin. En los apartados siguientes vamos a tratar el problema de la seccin crtica y sus

soluciones. La seccin crtica no es el nico problema a resolver en un sistema

operativo. Aunque se utilicen esquemas de comunicacin elaborados, las interacciones en el uso de los recursos pueden conducir a interbloqueos, problema que se tratar ms adelante.

Seccin crtica
En programacin concurrente, se define como a la porcin de cdigo de un programa de

computadorel cual accede a un recurso compartido (estructura de

datos dispositivo) que no debe de ser accedido por mas de un hilo en ejecucin (thread). La seccin crtica por lo general termina en un tiempo determinado y el hilo, proceso tarea solo tendr que esperar un perodo determinado de tiempo para entrar. Se necesita de un mecanismo de sincronizacin en la entrada y salida de la seccin crtica para asegurar la utilizacin exclusiva del recurso, por ejemplo un

semforo. impresora, puede ser accedida por un solo proceso a la vez.

El acceso concurrente se controla teniendo cuidado de las variables que se modifican dentro y fuera de la seccin crtica. La seccin crtica se utiliza por lo general cuando un programa multihilo actualiza mltiples variables sin un hilo de ejecucin separado que lleve los cambios conflictivos a esos datos. Una situacin similar, la seccin crtica puede ser utilizada para asegurarse de que un recurso compartido, por ejemplo, una

La manera en como se implementan las secciones puede variar dependiendo de los diversos sistemas operativos. Slo un proceso puede estar en una seccin crtica a la vez. Modelo de seccin crtica El modelo de seccin crtica que vamos a utilizar sigue el siguiente Entrar_SC(esta_SC) /* Solicitud de ejecutar esta_SC */ /* cdigo de esta_SC */ Dejar_SC(esta_SC) /* Otro proceso puede ejecutar esta_SC */ Es decir, cuando un proceso quiere entrar a la seccin crtica: (1) ejecuta Entrar_SC(), y si la seccin crtica est ocupada el proceso espera; (2) ejecuta la seccin crtica; (3) ejecuta Dejar_SC(), permitiendo que entre uno de los procesos en espera. La decisin de qu proceso es el seleccionado para entrar en el paso (3) puede tener consecuencias importantes, como se comentar ms adelante. En general, puede asumirse

protocolo genrico:

disciplina FIFO. muestraun ejemplo de utilizacin de una seccin crtica para implementar

Un aspecto fundamental es cmo se realiza la espera en Entrar_SC(), lo que determina el tipo de mecanismo de sincronizacin que se debe utilizar. Esto depender del tiempo que el proceso deba esperar para entrar a la seccin crtica. La Figura C sincronizacin productor-consumidor. Hay que advertir que este ejemplo slo es vlido para un productor y un consumidor. Con n productores y m consumidores se produciran condiciones de carrera. Se propone como ejercicio la modificacin de este cdigo para el caso general.

Figura C. Una implementacin del productor-consumidor (slo vlido para un productor y un consumidor). Si se va a esperar durante un tiempo que compense el coste de los cambios de contexto asociados a bloquear y desbloquear el proceso, la exclusin mutua se implementa como de largo plazo. La espera por bloqueado resulta entonces ms eficiente que la espera activa o mucho menos restrictiva que la inhibicin de interrupciones. Un ejemplo de exclusin mutua de largo plazo es el acceso a un driver de un dispositivo, como el de disco. Vamos a abordar a continuacin los mecanismos de sincronizacin en los sistemas operativos, tanto los de corto plazo, que se basan en la espera por ocupado (incluyendo inhibicin de interrupciones y cerrojos de espera activa), como los de espera por bloqueado (primitivas de dormir/despertar y semforos), adems de un

mecanismo de comunicacin de alto nivel semntico como es el paso de mensajes. Existen otros mecanismos, como regiones crticas y a desarrollar en la siguiente

monitores, que no vamos

investigacin.

Antes de ello es preciso revisar las propiedades que deben cumplir estos mecanismos. Propiedades del acceso exclusivo a secciones crticas: Como criterios de validez de un mecanismo de sincronizacin nos referiremos al cumplimiento de las siguientes condiciones enunciadas por Dijkstra para el acceso exclusivo a una seccin crtica. a. SC. Exclusin mutua. No puede haber ms de un proceso simultneamente en la No interbloqueo. Ningn proceso fuera de la SC puede impedir que otro entre a la SC. No inanicin. Un proceso no puede esperar por tiempo indefinido para entrar a la SC. Independencia del hardware. No se pueden hacer suposiciones acerca del nmero de procesadores o de la velocidad relativa de los procesos.

b. c. d. e.

Suposicin inicial adicional: las instrucciones del

Lenguaje Mquina son atmicas y se ejecutan secuencialmente.

calidad del mecanismo y que fundamentalmente se refieren a su rendimiento, como son la productividad (nmero de operaciones de sincronizacin por unidad de tiempo que el mecanismo es capaz de soportar) y el tratamiento equitativo entre los procesos (por ejemplo, siguiendo una poltica FIFO para entrar a la seccin crtica).
Adems, existen otros criterios que determinan la Espera por ocupado La espera por ocupado engloba una serie de mecanismos de sincronizacin que proporcionan acceso a secciones crticas de corto plazo. El ms sencillo y ms utilizado en los sistemas operativos clsicos es la inhibicin de interrupciones. En multiprocesadores es necesario utilizar cerrojos de espera activa. Inhibicin de interrupciones Las secciones crticas protegidas por interrupciones se especifican de la siguiente forma: s= inhibir() /* Inhibe interrupciones */ /* Seccin crtica */ desinhibir(s) /* Restaura estado anterior de interrupciones */ Este mecanismo lleva asociadas importantes restricciones. No cumple la condicin de

independencia del hardware, ya que en un multiprocesador slo UNIXclsicos todo el cdigo de las llamadas al sistema se

se inhiben las interrupciones en el procesador que ejecuta la inhibicin, restringindose por tanto a las implementaciones monoprocesador. Por otra parte, en monoprocesadores, un proceso que utilizase la inhibicin de interrupciones como forma de acceso exclusivo a secciones crticas de duracin arbitrariamente larga impedira a los dems procesos ejecutar cdigo alguno, an ajeno a la seccin crtica. En los sistemas Cerrojos de espera activa Un mecanismo ms general que la inhibicin de interrupciones es la utilizacin de una variable cerrojo para proteger la seccin crtica. El proceso que quiere entrar a la seccin crtica consulta el cerrojo. Si est libre (cerrojo==0), el proceso lo echa (cerrojo=1) y entra a la seccin crtica. Si est echado, ejecuta una espera activa consultando su valor hasta que est libre. Cuando un proceso deja la seccin crtica, libera el cerrojo (cerrojo=0). Este esquema tan sencillo presenta importantes problemas de implementacin. Como se puede comprobar, la operacin de consulta y modificacin del cerrojo constituye a su vez una seccin crtica que hay que resolver previamente; si no dos procesos podran leer simultneamente un valor cero y ambos entrar a la seccin crtica, violando la condicin exclusin mutua. Existen ejecuta como seccin crtica, lo que hace a estos sistemas poco adecuados para aplicaciones de tiempo real, ya que es difcil acotar los tiempos de respuesta.

algoritmos bastante sofisticados que permiten una implementacin software(Decker y Lamport, vase el siguiente ejemplo), pero los

procesadores actuales integran mecanismos a nivel de lenguaje mquina que permiten implementar consulta y modificacin atmica sobre variables en memoria. Algoritmo de Dekker (1965) Para 2 procesos {Pi, Pj}. int pet[2]; /* inicialmente pet[i]=0 para todo i */ int turno; Entrar_SC (para un proceso Pi): pet[i]= 1; while (pet[j]) if (turno==j) { pet[i]= 0; while (turno==j) NOP; /* espera activa */ pet[i]= 1; } Dejar_SC (para un proceso Pi): turno= j; pet[i]= 0; a. Proporciona exclusin mutua: Pi slo entra si pet[i]. Si tambin pet[j], entonces uno de los dos procesos espera por turno. b. No interbloqueo y no inanicin: Slo un proceso quedar esperando por turno, y en este caso el otro estar en la SC, por lo que el primero entrar cuando el segundo cambie el turno al salir. c. No garantiza un orden FIFO.

Algoritmo de la panadera de Lamport (1974) Para n procesos {P0, P1, ..., Pn-1}. int num[n]; /* inicialmente num[i]=0 para todo i */ int mirando[n]; /* inicialmente mirando[i]=0 para todo i */ Entrar_SC (para un proceso Pi): mirando[i]= 1; num[i]= maximo(num) + 1; /* coger numero */ mirando[i]= 0; for (j=0; j<n; j++) { while (mirando[j]) NOP; /* esperar */ while (num[j] && esta_antes(j, i)) NOP; /* esperar */ } Dejar_SC (para un proceso Pi): num[i]= 0; a. b. c. Proporciona exclusin mtua: Si Pi est esperando para entrar y existe algn Pk que ha mirado el nmero, entonces esta_antes(i, k). No interbloqueo y no inanicin: Se sigue una disciplina FIFO.

d. Dos procesos pueden haber cogido el mismo nmero. Entonces esta_antes() debe resolver. Por ejemplo, si num[i]==num[j], si i<j entonces esta_antes(i, j). Ntese que i y j no pueden ser iguales. Las instrucciones mquina de consulta y modificacin atmica (read-modify-write) proporcionan acceso exclusivo a memoria en una operacin atmica de consulta y modificacin que bloquea el acceso al R <- cerrojo cerrojo <- 1 Dejando en el

bus. El ejemplo ms simple es la instruccin mquina Test&Set, que ejecuta atmicamente la secuencia:

registro R el valor previo de cerrojo. Representaremos esta instruccin como una funcin que devuelve el valor de cerrojo:

BOOL test_and_set(cerrojo) El acceso a una seccin crtica se implementa haciendo una espera activa (spin-lock) sobre el cerrojo, mediante primitivas de echar el cerrojo (lock) y liberar el cerrojo (unlock): lock (tipo_cerrojo cerrojo) { while (test_and_set(cerrojo)) NOP;4 } unlock (tipo_cerrojo cerrojo) { cerrojo= 0; } Una seccin crtica se protege de la siguiente forma: lock(cerrojo); /* Seccin crtica */ unlock(cerrojo); Los procesadores modernos cuentan con instrucciones mquina anlogas a Test&Set que permiten implementar la espera activa ms eficientemente, reduciendo la contencin en el acceso al bus de memoria. Algunos sistemas operativos utilizan cerrojos condicionales, proporcionando una primitiva de echar el cerrojo condicionalmente (cond_lock()) que, en vez de dejar al proceso esperando, devuelve un cdigo de estado si el cerrojo est ocupado, lo que es til para tratar de evitar interbloqueos, como se ver ms adelante. La espera activa es un mecanismo adecuado para multiprocesadores. En monopocesadores, sin embargo, una espera activa por entrar a la seccin crtica podra impedir, dependiendo de la poltica de planificacin, que el proceso que ocupa la seccin crtica acceda al procesador para liberarla, y en el mejor de los casos retardara su entrada6. En cualquier caso, an en multiprocesadores, es adecuado combinar el mecanismo de espera activa con una planificacin que incremente la prioridad del proceso que ejecuta la seccin crtica. Espera por bloqueado La espera por bloqueado se utiliza para implementar exclusin mutua de largo plazo y se proporciona, en su forma ms simple, mediante primitivas que producen un cambio de estado en el sistema operativo, dormir o sleep para bloquear al proceso que la ejecuta, y despertar o wake-up para desbloquear a un conjunto de procesos. Estas primitivas permiten manejar

eventos que sirven para gestionar el acceso a recursos compartidos.

Primitivas de dormir y despertar Un evento se implementa mediante una variable booleana o flag y la cola asociada de procesos bloqueados en l. Los procesos que ejecutan dormir sobre un flag activado pasan a estado bloqueado, provocando un cambio de contexto. Cuando otro proceso o el propio sistema operativo ejecuta despertar sobre ese flag, desbloquea a todos los procesos dormidos en ese flag. Con dormir y despertar pueden construirse primitivas de exclusin mutua de largo plazo, lock_lp y unlock_lp. Una implementacin de lock_lp y unlock_lp es la siguiente: lock_lp (tipo_flag flag)

{ lock(mutex); while (flag) dormir(flag); flag= 1; unlock(mutex); } unlock_lp (tipo_flag flag) { lock(mutex); flag= 0; despertar(flag); unlock(mutex); } El cdigo es de acceso exclusivo y, como se observa, se protege con una seccin crtica de corto plazo mediante un cerrojo ("mutex"; hemos utilizado un cerrojo de exclusin mutua nico comn, que llamamos mutex(de mutual exclusin) el cual explicaremos mas adelante). Pero un proceso no puede quedarse dormido dentro de la seccin crtica de corto plazo en lock_lp, ya que no permitira la ejecucin de despertar por otro proceso. Sin embargo, como ocurre en la prctica en los sistemas operativos, dormir() puede encargarse de liberar los cerrojos de los procesos, y despertar() de restaurarlos. En otras palabras, los procesos en estado bloqueado se consideran fuera de toda seccin crtica. Un problema del esquema dormir/despertar es que despertar desbloquea a todos los procesos dormidos en el flag y slo uno de ellos acceder a la seccin crtica. Esto es especialmente preocupante en multiprocesadores, ya que produciran contencin en el acceso al cerrojo. Sin embargo, la limitacin fundamental del manejo de eventos con este mecanismo deriva de que la primitiva de despertar no almacena el evento; lo que introduce la posibilidad de condiciones de carrera en una secuencia de dormir y despertar sobre un flag (importa el orden en que se ejecutan).

Modelo de Sincronizacin Mutex (Mutual EXCLUSIN Object) Exclusin Mutua


Los algoritmos de exclusin mutua (comnmente abreviada como mutex por mutual exclusion) se usan en programacin concurrente para evitar que fragmentos de cdigo conocidos como secciones crticas accedan al mismo tiempo a recursos que no deben ser compartidos. a mayor parte de estos recursos son las

seales, contadores, colas y otros datos que se emplean en la comunicacin entre el cdigo que se ejecuta cuando se da

servicio a una interrupcin y el cdigo que se ejecuta el resto del tiempo. Se trata de un problema de vital importancia porque, si no se toman las precauciones debidas, una interrupcin puede ocurrir entre dos instrucciones cualesquiera del cdigo normal y esto puede provocar graves fallos. La tcnica que se emplea por lo comn para conseguir la exclusin mutua es inhabilitar las interrupciones durante el conjunto de instrucciones ms pequeo que impedir la

corrupcin de la estructura compartida (la seccin crtica). Esto impide que el cdigo de la interrupcin se ejecute en mitad de la seccin crtica.

En un sistema multiprocesador de memoria compartida, se usa la operacin indivisible test-and-set sobre una bandera, para esperar hasta que el otro procesador la despeje. La operacin test-and-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador. As, cuando el cdigo deja la seccin crtica, se despeja la bandera. Esto se conoce como spin lock o espera activa. Algunos sistemas tienen instrucciones multioperacin indivisibles similares a las anteriormente descritas para manipular las listas enlazadas que se utilizan para las colas de eventos y otras estructuras de datos que los sistemas operativos usan comnmente.

mtodos de exclusin mutua clsicos intentan reducir la latencia y espera activa mediante las colas y cambios de contexto. Algunos investigadores afirman que las pruebas indican que estos algoritmos especiales pierden ms tiempo del que ahorran.
La mayora de los A pesar de todo lo dicho, muchas que un proceso obtiene un sem

tcnicas de exclusin mutua tienen efectos colaterales. Por ejemplo, los semforos permiten interbloqueos (deadlocks) en los foro, otro proceso obtiene el semforo y ambos se quedan a la espera de que el otro proceso libere el semforo. Otros efectos

comunes incluyen la inanicin, en el cual un proceso esencial no se ejecuta durante el tiempo deseado, y la inversin de prioridades, en el que una tarea de prioridad elevada espera por otra tarea de menor prioridad, as como la latencia alta en la que la respuesta a las interrupciones no es inmediata. La mayor parte de

hay un interesante esquema no clsico de envo de mensajes entre fragmentos de cdigo que, aunque permite latencia, impide los interbloqueos. Algunos ejemplos de algoritmos clsicos de exclusin mutua son:

la investigacinactual en este campo, pretende eliminar los efectos anteriormente descritos. Si bien no hay un esquema perfecto conocido, inversiones de prioridad y produce una mayor

recurso sin

El algoritmo de Dekker.

El algoritmo de Dekker es un

algoritmode programacin concurrente para exclusin mutua, que permite a dos procesos o hilos de ejecucin compartir un

conflictos. Fue uno de los primeros algoritmos de exclusin mutua inventados, implementado por Edsger Dijkstra.

Si ambos procesos intentan acceder a la seccin crtica simultneamente, el algoritmo elige un proceso segn una variable turno. Si el otro proceso est ejecutando en su seccin crtica, deber esperar su finalizacin. /* Definicin de variables compartidas */ shared int bandera[2] = {0,0}; shared int turno = 0; while (cierto) { bandera[proc_id] = cierto; while (bandera[1-proc_id] == cierto)

{ if (turno == 1-proc_id) { bandera[proc_id] = 0; while (turno == (1-proc_id)) /* espera a que sea su turno de intentar */; bandera[proc_id] = 1; } /* Seccin crtica */ turno = 1-proc_id; /* es el turno del otro proceso */ bandera[proc_id] = 0; /* Seccin no crtica */ } }

Algoritmo

El algoritmo de Peterson.

El algoritmo de Peterson es un algoritmo de programacin concurrente para exclusin mutua, que permite a dos o ms procesos o hilos de ejecucin compartir un recurso sin conflictos, utilizando slo memoria compartida para la comunicacin.

bandera[0] = 0 bandera[1] = 0 turno = 0 p0: bandera[0] = 1 p1: bandera[1] = 1 turno = 1 turno = 0 while( bandera[1] && turno == 1 ); while( bandera[0] && turno == 0 ); //no hace nada. espera. //no hace nada. espera. // seccin crtica // seccin crtica ... ... // fin de la seccin crtica // fin de la seccin crtica bandera[0] = 0 bandera[1] = 0

ejecucin. Algoritmo

Algoritmo de la panadera de Lamport

Es un algoritmo de

computacincreado por el cientfico en computacin Dr Leslie Lamport, para implementar la exclusin mutua de N procesos o hilos de

El algoritmo de la panadera toma su nombre de la costumbre de las panaderas y tiendas en general, donde las personas al entrar al local obtienen un nmero de turno (nico) y lo utilizan para el dependiente les vaya atendiendo en orden de llegada. El cliente obtiene su nmero de turno usando una cinta de papel que ofrece boletos con nmeros consecutivos. El dependiente slo puede atender a una

persona al mismo tiempo, lo que concuerda con el uso de un recurso de forma exclusiva: el recurso es el dependiente y

la seccin crtica de un cliente es lo que realiza mientras es atendido. El sistema mantiene un nmero (variable global) que refleja el nmero de turno del cliente que se est atendiendo en el instante actual. Los clientes deben esperar en una cola hasta que llega su turno. Una vez que se acaba con un cliente, la variable global se incrementa en uno y el cliente que tenga un boleto con ese nmero pasa a ser atendido. Cuando termina una compra, el cliente se desprende de su boleto y se dedica a realizar cualquier otra actividad libremente (guardar

el dineroen la

billetera, retirarse, etc.), ya que no se encuentra ms en su seccin crtica. Si ms tarde quiere volver a comprar, tendr que obtener un nuevo nmero. El modelo algortmico que se propone, cada cliente es un hilo, identificado con un nmero nico i. Los hilos se deben coordinar para decidir en cada momento qu hilo tiene derecho a ejecutar su cdigo de seccin crtica. En la vida real, el sistema de los boletos funciona perfectamente, pero en un sistema informtico la obtencin del boleto es problemtica: varios hilos pueden obtener el mismo nmero de turno. En el algoritmo de Lamport se permite que varios hilos obtengan el mismo nmero. En este caso, se aplica un algoritmo de desempate, que garantiza que slo un hilo entra en seccin crtica. El desempate se realiza as: si dos o ms hilos tienen el mismo nmero de turno, tiene ms prioridad el hilo que tenga el identificador con un nmero ms bajo. Como no puede haber dos hilos con el mismo identificador, nunca se da el caso de que dos hilos evalen al mismo tiempo que tienen derecho a ejecutar su seccin crtica. Entrada en seccin crtica Cuando un hilo quiere entrar en su seccin crtica, primero obtiene su nmero de turno, que calcula como el mximo de los turnos de los otros hilos, ms uno. (Si varios hilos realizan el clculo al mismo tiempo, puede ocurrir que dos o ms hilos obtengan el mismo turno). Antes de entrar en seccin crtica, el hilo debe asegurarse de que tiene el nmero de turno ms bajo. En caso de empate, decidir el identificador de hilo ms bajo. Cuando el hilo abandona la seccin crtica, pone su nmero de turno a un valor especial que indique su no intencin de entrar en seccin crtica (en este algoritmo, se usa el valor cero). Implementacin Este es el pseudocdigo del algoritmo de la panadera.

Modelo de Sincronizacin por Semforos


introduccin del concepto de semforobinario. Est tcnica permite resolver la mayora de los problemas de sincronizacin entre procesos y forma parte del diseo de muchos sistemas operativos y de lenguajes de programacin concurrentes.
Dijkstra dio en 1968 una solucin al problema de la exclusin mutua con la

forobinario es un indicador (S) de condicin que registra si un recurso est disponible o no. Un semforo binario slo puede tomar dos valores: 0 y 1. Si, para un semforo binario, S = 1 entonces el recurso est disponible y la tarea lo puede utilizar; si S = 0 el recurso no est disponible y el procesodebe esperar.
Un sem Los semforos se implementan con una cola de tareas o de condicin a la cual se aaden los procesos que estn en espera del recurso. Slo se permiten tres - Inicializar - Espera (wait) - Seal (signal) En algunos textos, se utilizan las notaciones P y V para las operaciones de espera y seal respectivamente, ya que sta fue la notacin empleada originalmente por Dijkstra para referirse a las operaciones. As pues, un semforo binario se puede definir como un tipo de slo tres operaciones para actuar sobre l. Las operaciones pueden describirse como sigue: inicializa (S: SemaforoBinario; v: integer) Poner el

operacionessobre un semforo

datosespecial que slo puede tomar los valores 0 y 1, con una cola de tareas asociada y con

valor del semforo S al valor de v (0 o 1)

espera (S) if S = 1 then S := 0 elsesuspender la tarea que hace la llamada y ponerla en la cola de tareas seal (S) if la cola de tareas est vaca then S := 1 elsereanudar la primera tarea de la cola de tareas Las operaciones son

procedimientos que se implementan como acciones indivisibles y por ello la comprobacin y cambiode valor del indicador se

efecta de manera real como una sola operacin, lo cual hay que tener presente a la hora de disear el planificador de tareas. En sistemas con un nico

procesadorbastar simplemente con inhibir las interrupciones durante la ejecucin de las operaciones del semforo. En los sistemas multiprocesador, sin embargo, este mtodo no resulta ya que las instrucciones de los procesadores se pueden entrelazar de cualquier forma. La solucin est en utilizar instrucciones hardwareespeciales, si se dispone de ellas, o en introducir soluciones software como las vistas anteriormente, que ya indicamos, que
servan tanto para sistemas uniprocesador como para sistemas multiprocesador. La operacin inicializase debe llevar a cabo antes de que comience la ejecucin concurrente de los procesos ya que su semforo. Un proceso que corre la operacin esperay encuentra el semforo a 1, lo pone a 0 y prosigue su ejecucin. Si el semforo est a 0 el proceso queda en un semforo no est en ejecucin ni listo para pasar a dicho estado puesto que no tiene la Tampoco es vlido

funcin exclusiva es dar un valor inicial al estado de

esperahasta que el semforo se libera. Dicho estado se debe considerar como uno ms de los posibles de un proceso. Esto es as debido a que un proceso en espera de

CPU ni puede pasar a tenerla mientras que no se lo indique el semforo. el estado suspendido, ya que este estado est pensado para que lo utilicen llamadas al sistema operativopara suspender o reactivar un proceso que no tiene por qu tener una conexin con los semforos. El diagramade transicin de estados de la figura se puede ampliar con un nuevo
estado que denominamos de espera, figura E. Figura E Transiciones para el estado de espera Cuando se ejecuta la operacin sealpuede haber varios procesos en la lista o cola, el proceso que la dejar para pasar al estado listo depender del esquema de

gestinde la cola de tareas suspendidas que se haya implementado en el diseo del semforo, por ejemplo: prioridades, FIFO, etc. Si no hay ningn proceso en
espera del semforo este se deja libre (S := 1) para el primero que lo requiera.

Modelo de Sincronizacin de Exclusin Mutua Con Semforos


La exclusin mutua se realiza fcilmente utilizando semforos. La operacin de espera se usar como

procedimientode bloqueo antes de acceder a una

seccin crtica y la operacin seal como procedimiento de desbloqueo. Se utilizarn tantos semforos como clases de secciones crticas se establezcan.

El proceso P1 de la seccin anterior ahora toma la forma: process P1 begin loop espera (S) ; Seccin Crtica seal (S) ; Suspendido Durmiente Listo Espera Ejecucin Espera Seal (* resto del proceso *) end end P1;

Modelo de Sincronizacin por Mensajes


Los mensajes proporcionan una solucin al problema de la concurrencia de procesos que integra la sincronizacin y la de ellos se utilicen como base para todas las computadores. La comunicacin mediante mensajes necesita siempre de un proceso emisor y de uno receptor as como de operaciones bsicas para comunicacin mediante mensajes que proporciona todo sistema operativo son: Enviar(mensaje ) y recibir (mensaje). Las acciones de transmisin de informacin y de sincronizacin se ven como actividades inseparables. La comunicacin por mensajes requiere que se establezca un enlaceentre el receptor y el emisor, la forma del cual puede variar grandemente de sistema a sistema. Aspectos importantes a tener en cuenta en los enlaces son: como y cuantos enlaces se pueden establecer entre los procesos, la capacidad de mensajes del enlace y tipo de los mensajes. Su implementacin vara dependiendo de tres aspectos: 1- El modo de nombrar los procesos. 2- El 3-

comunicacinentre ellos y resulta

adecuado tanto para sistemas centralizados como distribuidos. Esto hace que se incluyan en prcticamente todos los sistemas operativos modernos y que en muchos

comunicacionesdel sistema, tanto dentro del computador como en la comunicacin entre informacin que intercambiarse. Por ello, las

modelo de sincronizacin.

Almacenamiento y estructura del mensaje.

MODOS DE NOMBRAR LOS MENSAJES El proceso de denominacin de las tareas para la comunicacin por mensajes se puede realizar de dos formas distintas: directa e indirectamente. En la comunicacin directa ambos procesos, el que enva y el que recibe, nombran de forma explcita al proceso con el que se comunican. Las operaciones de enviar y recibir toman la forma: enviar(Q, mensaje): enva un mensaje al proceso Q recibir(P, mensaje): recibe un mensaje del proceso P

seguridad en el intercambio de mensajes, ya que cada proceso debe conocer la identidadde su pareja en la comunicacin, pero, por lo mismo, no resulta muy adecuado para implementar rutinas de servicio
Este mtodo de comunicacin establece un enlace entre dos procesos que desean comunicar, proporcionando de un sistema operativo. En la comunicacin indirecta los mensajes se envan y reciben a travs de una entidad intermedia que recibe el nombre de buzn o puerto . Como su nombre indica, un buzn es un objeto en el que los procesos dejan mensajes y del cual pueden ser tomados por otros procesos. Ofrecen una mayor versatilidad que en el caso de nombramiento directo, ya que permiten comunicacin de uno a uno, de uno a muchos, de muchos a uno y de muchos a muchos. Cada buzn tiene un identificador que lo distingue. En este caso las operaciones bsicas de comunicacin toman la forma: enviar(buznA, mensaje): enva un mensaje al buzn A recibir(buznA, mensaje): recibe un mensaje del buzn A. El buzn establece un enlace que puede ser utilizado por ms de dos procesos y permite que la comunicacin de un proceso con otro se pueda realizar mediante distintos buzones. En el caso de que haya varios procesos que recogen informacin del mismo buzn se plantea el problema de quien debe recoger un mensaje. Se pueden dar distintas soluciones: permitir que un buzn slo pueda ser compartido por dos procesos, permitir que cada vez slo un proceso pueda ejecutar una operacin de recibir y, por ltimo, que el sistema identifique al receptor del mensaje. Adems de las operaciones bsica mencionadas, los buzones. MODELOS DE SINCRONIZACIN Las diferencias en los

sistemas operativos suelen proporcionar operaciones adicionales como las de crear y eliminar

modelosusados para la sincronizacin de los procesos se debe a las distintas formas que puede adoptar la operacin de envo del mensaje.

a) Sncrona. El proceso que enva slo prosigue su tarea cuando el mensaje ha sido recibido. b) Asncrona. El proceso que enva un mensaje sigue su ejecucin sin preocuparse de si el mensaje se recibe o no. a. Invocacin remota. El proceso que enva el mensaje slo prosigue su ejecucin cuando ha recibido una respuesta del receptor.

El mtodo sncrono necesita de que ambos procesos, el emisor y el receptor, se "junten" para realizar una comunicacin, por lo que se suele denominar encuentro( "rendezvous"). Si no se ha emitido una seal de recibir cuando se ejecuta la operacin de enviar, el proceso emisor se suspende hasta que la ejecucin de una operacin de recibir le saca de ese estado. Cuando el proceso que enva el mensaje contina sabe que su mensaje ha sido recibido. De este modo una pareja emisorreceptor no puede tener ms de un mensaje pendiente en cada momento. En el modelo asncrono el sistema operativo se encarga de recoger el mensaje del emisor y almacenarlo en espera de que una operacin de recibir lo recoja. Normalmente este tipo de comunicacin tiene limitado la cantidad de comunicacin indirecta, para evitar as que un uso descontrolado pudiera agotar la cantidad de almacenamiento temporal del sistema. A la invocacin remota tambin se le conoce como encuentro extendido, ya que el receptor puede realizar un nmero arbitrario de cmputos antes de enviar la respuesta. La operacin de recibir, tanto en los

memoria que puede utilizar una pareja en comunicacin directa o un buzn en

mtodos de nominacin directa como indirecta, se suele implementar de modo que el proceso que ejecuta la cdigode error. Otra solucin ms adecuada consiste en

operacin toma un mensaje si este est presente y se suspende si no lo est. Sin embargo, este modo de funcionamiento plantea el problema de una espera indefinida en el caso de que un fallo impida que llegue un mensaje. Una solucin consiste en proporcionar una operacin de recibir sin bloqueo, que en algunos sistemas se denomina aceptar, de modo que si el mensaje est presente se devuelve, y si no lo est se devuelve un especificar en la sentencia de recibir un

tiempo mximo de espera del mensaje. Si transcurre el tiempo especificado el sistema operativo desbloquea al proceso

suspendido y le enva un mensaje o cdigo de error indicando el agotamiento del tiempo de espera. Por ejemplo, en un sistema con nominacin indirecta la operacin de recibir puede tener la forma: recibir(buzn, mensaje, tiempo_espera). Aunque la especificacin del tiempo de espera se podra realizar tambin en la operacin de envo, resulta suficiente implementarla en la operacin de recibir, por lo que es esto lo habitual en la mayora de los

sistemas operativos. Se pueden relacionar las distintas formas de enviar un mensaje. Dos operaciones

asncronas pueden constituir una relacin sncrona si se enva una seal de reconocimiento. As, si dos procesos, P y Q, se comunican de forma directa asncrona se puede establecer la sincronizacin entre ellos mediante las operaciones: P enviar(Q, mensaje) recibir(P, reconocimiento) Q recibir(P, mensaje) enviar(P,reconocimiento) El proceso P enva el mensaje a Q y despus se suspende en espera de un mensaje de reconocimiento por parte de Q. Cuando el mensaje Q recibe el mensaje enva un mensaje de reconocimiento a P que hace que este pueda proseguir su ejecucin. La operacin de envo con buzn tambin puede ser sncrona si se implementa de modo que el remitente se suspende hasta que el mensaje ha sido recibido. La invocacin remota se puede construir a partir de dos comunicaciones sncronas: P enviar(Q, mensaje) recibir(P, respuesta) Q recibir(P, mensaje) ....... construye respuesta ....... enviar(P,respuesta) Como una seal de envo asncrona se puede utilizar para construir los otros dos modos se podra argumentar que este mtodo es ms flexible y es el que debera implementarse en todos los casos. Sin embargo adolece del inconveniente de que al no saberse cuando se recibe el mensaje la mayora se programan para recibir un mensaje de reconocimiento, es decir, se hacen sncronas; tambin son ms difciles de depurar. ALMACENAMIENTO Y ESTRUCTURA DEL MENSAJE En la transferencia de informacin en un enlace se deben tener en cuenta la forma en la que esta se produce y la capacidad o nmero de mensajes que admite el enlace. A su vez, el intercambio de informacin se puede realizar de dos formas: por valor o por referencia. En la transferencia por valor se realiza una copia del mensaje del espacio de direcciones del emisor al espacio de direcciones del receptor, mientras que en la transferencia por referencia se pasa un puntero al mensaje. La transferencia por valor tiene la ventaja de que mantiene el desacoplo en la informacin que maneja el emisor y el receptor, lo que proporciona mayor seguridad en la integridad de la informacin. Tiene el inconveniente del gasto de memoria y tiempo que implica la copia, que adems se suelen ver incrementados por el uso de una memoria intermedia. Estos inconvenientes son justamente los convenientes de la transmisin por referencia que tiene como aspecto negativo el necesitar mecanismos adicionales de seguridad para compartir la informacin entre los procesos. El mtodo de sincronizacin de la invocacin remota utiliza necesariamente la transferencia por valor, mientras que los mtodos sncrono y asncrono pueden utilizar ambos modos. Los sistemas operativos tienen asociado a cada enlace una cola en la cual mantienen los mensajes pendientes de ser recibidos. En la comunicacin sncrona la cola se puede considerar que tiene una longitud nula ya que, como se ha indicado, los dos procesos deben encontrarse para proceder al intercambio del mensaje. En este caso se dice tambin que la transferencia se realiza sin utilizacin de una memoria intermedia. Sin embargo, en la comunicacin asncrona y en la invocacin remota la implementacin de la cola se realiza normalmente con una capacidad de mensajes finita mayor que cero, m. Cuando el proceso emisor enva un mensaje, si la cola no est llena, se copia el mensaje y el proceso contina su ejecucin. Si la cola est llena el proceso se suspende hasta que queda espacio libre en la cola. Si el mensaje se pasa por referencia la cola guarda los punteros a los mensajes y los valores de esto si el paso es por valor. En algunos casos se considera que la capacidad de la cola es ilimitada, de manera que un proceso nunca se suspende cuando enva un mensaje.

Atendiendo a la estructura de los mensajes estos se pueden considerar divididos en tres tipos: a) Longitud fija b) Longitud variable c) De tipo definido El primer tipo resulta en una implementacin

fsicaque permite una asignacin sencilla y eficaz principalmente en las transferencias por valor. Por el contrario

dificulta la tarea de la programacin. Los mensajes de longitud variable son ms adecuados en los sistemas donde la transferencia se realiza por punteros, ya que la longitud del mensaje puede formar parte de la propia informacin transmitida. La programacin en este caso resulta ms sencilla a expensas de una mayor dificultad en la implementacin fsica. Por ltimo, los mensajes con definicin del tipo son adecuados en la comunicacin con buzones. A cada buzn que utilice un proceso se le puede asignar el tipo de dato adecuado para dicho mensaje y slo mensajes con esa estructura pueden ser enviados por ese enlace. Por ejemplo, en un

lenguajede programacin con declaracin explcita de buzones se podra tener la sentencia

buznA: mailbox[p] of dato; para declarar un buzn con el identificador buznA con una capacidad de p elementos del tipo dato. Ejemplo Este ejemplo

muestra como se puede utilizar la comunicacin por mensajes para implementar un semforo binario. Se supone que se utiliza un buzn asncrono
type mensaje = record .... ; const nulo = ....;

con una cola ilimitada conocido tanto por el procedimiento de espera como por el de seal. module semaforo;

procedure espera(var S:integer); var temp: mensaje; begin recibir(Sbuzon,temp); S := 0; end espera;

procedure seal(var S: integer); begin enviar(Sbuzon,nulo); end seal;

procedure inicializa(var S:integer; valor:boolean); begin if valor = 1 then enviar(Sbuzon,nulo); end; S := valor; end inicializa; begin crear_buzon(Sbuzon); end {semaforo} El buzn creado se identifica de forma exclusiva con el semforo. El mensaje que se transmite es irrelevante ya que el paso de mensajes tiene la nica

misin de

sincronizar tareas, por ello se utiliza un mensaje nulo. El semforo est libre cuando hay un mensaje en la cola. En este caso, si un proceso ejecuta una seal de espera (lo que equivale a una operacin de recibir) puede proseguir su ejecucin. Cualquier otro proceso que ejecute una operacin de espera no podr leer ningn mensaje ya que la cola est vaca y, por lo tanto, se suspender hasta que es sealado (enviado un mensaje) por otro proceso. El que emita la seal de espera depender de la inicializacin que se haya hecho del semforo. Si se inicializa con un valor de 1 se enva un mensaje al buzn y el primer proceso en acceder al semforo podr leer el mensaje y pondr, por lo tanto, al semforo en ocupado. Si se inicializa a 0, el buzn esta inicialmente vaco y el semforo aparece como ocupado, luego un proceso que ejecute la operacin de espera se suspende hasta que se ejecute una operacin de seal por otro proceso. Para que el semforo pueda funcionar es necesario suponer que slo hay un mensaje circulando a la vez y que este slo puede ser conseguido por uno de los procesos que estn en la espera.

comportamiento del primer proceso

Problemas de Sincronizacin

En los sesentas Edsger Dijkstra y cinco de sus colegas desarrollaron uno de los primeros sistemas operativos que soportaban la multiprogramacin. El sistema fue diseado en la

UniversidadTecnolgica de Eindhoven en Holanda, y fue llamado sistema multiprogramacin THE, (debido al nombre de la Universidad en

alemn.). Una de las principales aportaciones de este sistema fue la incorporacin del concepto de semforos, como herramienta para implementacin de la exclusin mutua. Por ese mismo tiempo Dijkstra escribi un artculo sobre la cooperacin de procesos. Este papel mostraba como utilizar los semforos para resolver una variedad de problemas de sincronizacin, como el de los productores/consumidores, los filsofos que cenan (sabios) y el del barbero dormiln. En su papel sobre

monitoresTony Hoare [Hoa74] introdujo el concepto de semforos binarios separados y muestra cmo usarlos para implementar monitores. filsofos que cenan. Una de las soluciones utiliza asimetra para evitar el interbloqueo (i.e. que

Sin embargo Dikstra, fue el que tiempo despus le dio un nombre a la tcnica e ilustro su uso general. Ms concretamente Dijkstra, mostro como implementar semforos generales usando solo semforos binarios. Es posible encontrar diferentes soluciones para el problema de los dos filsofos se bloqueen entre ellos). Es decir un filsofo toma el tenedor en orden diferente que los otros. Tambin se podra definir un orden en el que los filsofos de nmero impar tomen un tenedor en ese orden, y que los filsofos de nmero par lo toman en otro orden. Una segunda forma de evitar el interbloqueo es permitir que a lo mas cuatro filsofos puedan tomar tenedores, (i.e. permitir que a lo mas cuatro filsofos se sienten en la mesa.). Una tercera solucin es tener a los filsofos tomando tenedores al mismo tiempo, dentro de una seccin crtica, sin embargo esto puede llevar a un problema de inanicin (i.e. algn filosofo podr quedarse sin cenar). Mani Chandy y Jay Misra proponen una cuarta solucin, basada en el paso de

fichas entre los filsofos, (esta solucin es apropiada para sistemas distribuidos).

Las anteriores soluciones son determinsticas, (i.e. cada proceso ejecuta un conjunto predecible de acciones). Lehman y Rabin, presentan una interesante solucin probabilstica que es perfectamente simtrica. La idea base es que cada filosofo usa lanzamientos de monedas para determinar el orden en el cual trataran de tomar los tenedores, y si dos filsofos desean utilizar el mismo tenedor, el filosofo que ms recientemente utilizo el tenedor le da preferencia al otro. Courtois, Heymans y Parnas introdujeron el problema de los lectores escritores y presentaron dos soluciones usando semforos. En una de ellas se le da preferencia a los lectores y en la otra a los escritores.

Los CLSICOS problemas de la SINCRONIZACIN de Procesos


El del fumador de cigarros, Considere un sistema con tres procesos fumadores y un proceso agente. Cada fumador est continuamente enrollando y fumando

tabaco, papel, y fsforos. Uno de los procesos fumadores tiene papel, otro tiene el tabaco y el tercero los fsforos. El agente tiene una cantidad infinita de los tres materiales. El agente coloca dos de los ingredientes sobre la
cigarrillos. Sin embargo, para enrollar y fumar un cigarrillo, el fumador necesita tres ingredientes: mesa. El fumador que tiene el ingrediente restante enrolla un cigarrillo y se lo fuma, avisando al agente cuando termina. Entonces, el agente coloca dos de los tres ingredientes y se repite el ciclo. La panaderia de Lamport, en este problema una panadera tiene una variedad de panes y pasteles vendidos por n vendedores. Cada uno de los cuales toma un nmero al entrar. El

clienteespera hasta or su nmero. Cuando el vendedor se desocupa, llama al siguiente numero.

Los filsofos que cenan (sabios), Hay cinco filsofos chinos que se pasan sus vidas pensando y comiendo. Comparten una mesa circular, alrededor de la cual se sientan. En su centro se encuentra con una provisin infinita de arroz, y sobre ella hay cinco palitos, uno de cada lado de los filsofos. Cuando un filsofo piensa, no interacta con sus colegas. De vez en cuando, un filsofo tiene hambre y trata de levantar los dos palitos ms cercanos a l. Un filosofo puede levantar un palito a la vez, y no puede tomar un palito que ya est en la mano de un vecino. Cuando un filsofo tiene ambos palitos, puede comer. Cuando termino de hacerlo, deja sus dos palitos y comienza a pensar de nuevo. El barbero dormiln, Una peluquera tiene un barbero, una silla de peluquero y n sillas para que se sienten los

clientesen espera, si es que los hay. Si no hay

clientes presentes, el barbero se sienta en su silla de peluquero y se duerme. Cuando llega un cliente, este debe despertar al barbero dormiln. Si llegan ms clientes mientras el barbero corta el cabello de un cliente, estos deben esperar sentados (si hay sillas desocupadas) o salirse de la peluquera (si todas las sillas estn ocupadas). El problema consiste en programar al barbero y los clientes sin entrar en condicin de Lectores y escritores, imaginemos una enorme

competencia.

base de datos, como por ejemplo un sistema de reservaciones de en una lnea area, con muchos procesos

en competencia, que intentan leer y escribir en ella. Se puede aceptar que varios procesos lean la base de datos al mismo tiempo, pero si uno de los procesos est escribiendo, (es decir modificando) la base de datos, ninguno de los dems procesos deber tener acceso a esta, ni siquiera los lectores. El problema es como programar a los lectores y escritores. Productor/Consumidor, Tambin conocido como bounded buffer problem o problema del buffer limitado. Dos procesos comparten un tamao fijo. Uno de ellos, el productor, coloca informacin en el almacn (buffer) mientras que el otro, el

almacn(buffer) de

consumidor, la obtiene de l. Si el productor desea

colocar un nuevo elemento, y el almacn se encuentra lleno, este deber irse a \dormir". El consumidor despertara al productor cuando elimine un elemento del almacn. De forma anloga, si el almacn esta vacio y el consumidor desea eliminar un elemento del almacn, este debe \dormirse" hasta que el productor coloque algo en el almacn. Soluciones a algunos problemas A continuacin se presentan soluciones algunos de los problemas discutidos anteriormente. Como toda solucin, no es la nica, es posible que el lector encuentre otra. Solucin al problema productor consumidor con semforos La solucin utiliza tres semforos. La solucin es presentada en un lenguaje cercano a C. semaforo mutex = 1; semaforo vacio = N; semaforo lleno = 0; productor() { while (TRUE) { produce_item();

P(vacio); P(mutex); introducir_item(); V(mutex); V(lleno); } consumidor() { while (TRUE) { produce_item(); P(lleno); P(mutex); retirar_item(); V(mutex); V(vacio); consume_item(); } Solucin productor consumidor con monitores Un ejercicio interesante para el lector es el de comparar esta solucin con la presentada en la seccin anterior. La solucin es presentada en un lenguaje muy cercano a

Pascal.
monitor ProductorConsumidor condition vacio, lleno; integer count; procedure producir; begin if (count = N) then wait(lleno); introducir_item; count=count+1; if (count = 1) then signal(vacio); end procedure consumir; begin if (count = 0) then wait(vacio); retirar_item; count=count-1; if (count = N-1) then signal(lleno); end; count=0; end

monitor;

procedure productor begin while (true) do begin producir_item; ProductorConsumidor.producir end end procedure consumidor begin while (true) do

begin ProductorConsumidor.consumir; consumir_item; end end Solucin al problema de la cena de los filsofos La solucin utiliza un arreglo state para llevar un

los vecinos no estn comiendo. Los vecinos del i-simo filsofo se definen en los As mismo el #define N 5 #define LEFT (i-1)%N #define RIGHT (i+1)%N #define THINKING 0 #define HUNGRY 1 #define EATING 2 int state[N]; semaforo mutex = 1; semaforo s[N]; filosofo() { while (TRUE) { think(); toma_tenedor(i); come(); libera_tenedor(i); } } toma_tenedor(int i) { P(mutex); state[i]=HUNGRY; test(i); V(mutex); P(s[i]); } libera_tenedor(int i) { P(mutex); state[i]=THINKING; test(LEFT); test(RIGHT); V(mutex); } test(int i) {

registrode la actividad de un filosofo: si est comiendo, pensando o hambriento. Un filsofo solo puede comer si macrosLEFT y RIGHT. En otras palabras si i = 2 entonces LEFT = 1 y RIGHT = 3.

programa utiliza un arreglo de semforos, uno por cada filosofo, de manera que los filsofos hambrientos pueden bloquearse si los tenedores

necesarios estn ocupados.

if (state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] != EATING) { state[i] = EATING; V(s[i]); } } Solucin problema lectores/escritores semaforo mutex = 1; semaforo db = 1;

int rc = 0; lector() { while (TRUE) { P(mutex); rc = rc+1; if (rc == 1) P(db); V(mutex) leer_datos(); P(mutex); rc = rc+1; if (rc == 0) V(db); V(db); procesamiento_datos(); } escritor() { while (TRUE) { analizando_dato(); P(db); escribir_datos(); V(db); } Solucin problema barbero dormiln #define CHAIRS 5 semaforo clientes=0; semaforo barberos=0; semaforo mutex=1; int waiting = 0; barbero() { P(clientes); P(mutex) waiting = waiting - 1; V(barberos) V(mutex); cortar_pelo(); } cliente() { P(mutex); if (waiting < CHAIRS) { waiting = waiting + 1; V(clientes); V(mutex); P(barberos); tomar_barbero(); } else V(mutex); }

Interbloqueo
Definicin: El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los

recursosdel sistema o bien se comunican unos

con otros. Un proceso esta interbloqueado si est esperando por un evento determinado que nunca va a ocurrir. No existe una solucin eficiente para el caso general. Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o ms procesos. El bloqueo es permanente hasta que el sistema realice una operacin extraordinaria, como puede ser matar a uno o ms procesos u obligar a uno o ms procesos a retrazar su ejecucin. El nterbloqueo puede involucrar a recursos tanto consumibles como reutilizables. Un recursos consumible es aquel que se destruye al ser adquirido por un proceso; por ejemplo los mensajes, la informacin de los buffers de e/s. Un recurso reutilizable es aquel que no se destruyo o se desgasto con el uso como ser un canal de e/s o zona de memoria. MTODOS PARA EL TRATAMIENTO DE INTERBLOQUEO

PRINCIPIOS DEL INTERBLOQUEO: Un ejemplo clsico de nter bloqueo es el nter bloque de trfico. La Figura siguiente la cual muestra una situacin en la que cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro cuadrantes de la interseccin son los recursos compartidos sobre los que se los cuatro coches desean atravesar el cruce, las necesidades de recursos son las siguientes. El coche que va hacia el norte necesita los cuadrantes 1 y 2 El coche que va hacia el oeste necesita los cuadrantes 2 y 3 El coche que va hacia el sur necesita los cuadrantes 3 y 4 El coche que va hacia el este necesita los cuadrantes 4 y 1 Representacin del nter bloqueo La forma ms habitual en la carretera es que un coche en un cruce de cuatro caminos debe ceder el paso que est a su derecha. Esta norma funciona si solo hay dos o tres coches en el cruce. Si los cuatro coches llegan al mismo tiempo, ms o menos, cada un se abstendr de entrar en el cruce, provocando nter bloqueo. Si todos los coches ignoran las

demanda control; si

normasy entran (con cuidado) en el cruce, cada coche obtendr un recurso (un cuadrante) pero no podr continuar porque el segundo recurso que necesita ya ha
sido invadido por otro coche. De nuevo, se tiene nter bloqueo.

RECURSOS REUTILIZABLES:
Un recurso reutilizable es aquel que puede ser usado con seguridad por un proceso y no se agota con el uso. Los procesos obtienen unidades de recursos que liberan posteriormente para que otros procesos las reutilicen. Ejemplo, los procesadores, canales E/S, memoria principal y secundaria, dispositivos y

estructuras de datos tales como archivos, bases de datos y semforos. archivoD del disco y una unidad de

Como ejemplo de nter bloqueo con recursos reutilizables, considrese dos procesos que compiten por el acceso exclusivo a un

cinta T. El nter bloqueo se produce si cada proceso retiene un recurso y solicita el otro. Por ejemplo, se produce nter bloqueo si el sistema multiprogramado itera la ejecucin de los dos procesos de la siguiente forma: p0p1q0q1p2q2 El diseo de un programa concurrente entraa gran dificultad. Se producen nter bloqueos como este y la causa esta frecuentemente en la complejidad de la del programa, haciendo ms difcil su deteccin. Una posible sobre el orden en el que se solicitan los recursos.

lgica

estrategia para resolver estos nter bloqueos es imponer restricciones en el diseo del sistema
RECURSOS CONSUMIBLES:

Un recurso consumible es aquel que puede ser creado (producido) y destruido (consumido). Normalmente, no hay lmite en el nmero de recursos consumibles de un tipo en particular. Un proceso productor que no est bloqueado puede liberar cualquier nmero de recursos consumibles. Como ejemplos de recursos consumibles estn las interrupciones,

seales, mensajes e informacin en buffers de E/S.

Como ejemplo de nter bloqueo con recursos consumibles, considrese el siguiente par de procesos, en el que cada proceso intenta recibir un mensaje de otro y, despus, enviar un mensaje a otro. El nter bloqueo se produce si el Recieve es bloqueante (por ejemplo, el proceso receptor est bloqueado hasta que recibe el mensaje). La causa del nter bloqueo es un error de diseo. Estos errores pueden ser bastante sutiles y difciles de detectar. Un programa puede funcionar durante un periodo de tiempo considerable, incluso aos, antes de que el problema se manifieste. No hay ninguna estrategia sencilla y efectiva que pueda solucionar todas las clases de nter bloqueo. Antes de examinar cada uno ellos, se explicaran las condiciones de nter bloqueo. Por ejemplo, supongamos que se tienen dos procesos P1 y P2 que desean acceder a dos Recurso (

impresora y disco, por ejemplo) a los que slo puede acceder un

proceso cada Vez. Suponemos que los recursos estn protegidos por los semforos S1 y S2. Si los procesos acceden a los recursos en el mismo orden no hay ningn problema: P1 ...... espera(S1)

espera(S2) .. .. seal(S2) seal(S1) end P1 P2 ...... espera(S1) espera(S2) .. .. seal(S2) seal(S1) end P2 El primer proceso que toma S1 tambin toma S2 y posteriormente libera los recursos en el orden inverso a como se tomaron y permite al otro proceso acceder a ellos. Sin embargo, si uno de los procesos desea utilizar los recursos en orden inverso, por ejemplo: P1 ...... espera(S1) espera(S2) .. .. seal(S2) seal(S1) end P1 P2 ...... espera(S2) espera(S1) .. .. seal(S1) seal(S2) end P2 Podra ocurrir que P1 tomara el primer recurso (semforo S1) y P2 el segundo recurso (semforo S2) y se quedarn ambos en espera de que el otro liberar el recurso que posee. Este error no ocurre con demasiada frecuencia pero sus consecuencias suelen ser devastadoras. En algunas ocasiones puede resultar fcil darse cuenta de la posibilidad de que ocurra el interbloqueo, pero la mayora de las veces resulta realmente complicado detectarlo. CONDICIONES DE INTERBLOQUEO: Deben darse tres condiciones para que pueda producirse un nter bloqueo: 1. 2. 3. EXCLUSIN MUTUA: Solo un proceso puede usar un recurso cada vez. RETENCIN Y ESPERAR: Un proceso puede retener unos recursos asignados mientras espera que se le asignen otros. NO APROPIACIN: Ningn proceso puede ser forzado a abandonar un recurso que retenga.

En la mayora de los casos, estas condiciones son bastantes necesarias. Por ejemplo, la exclusin mutua hace falta asegurar la consistencia de resultados y la integridad de la base de datos. La apropiacin no se puede aplicar arbitrariamente, y cuando se encuentran involucrados recursos de datos debe estar acompaada de un mecanismo de recuperacin y reanudacin, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso pueda finalmente repetir sus acciones.

4. CRCULO VICIOSO DE ESPERA:existe una cadena cerrada de procesos, cada uno de los cuales retiene, al menos, un recurso que necesita el siguiente proceso de la cadena. Las tres primeras condiciones son necesarias, pero no suficientes, para que exista nter bloqueo. La cuarta condicin es, una consecuencia potencial de las tres primeras. Dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de

eventos que desemboque en un crculo vicioso de espera irresoluble. Un circulo de espera irresoluble es, la definicin de nter bloqueo.
En resumen, las cuatro condiciones en conjunto constituyen una condicin necesaria y suficiente para el nter bloqueo. EXCLUSIN MUTUA:

En general, la primera de las cuatro condiciones no puede anularse. Si el acceso a un recurso necesita exclusin mutua, el sistema operativo debe soportar la exclusin mutua. Algunos recursos, como los archivos, pueden permitir varios accesos para bloqueo si ms de un proceso necesita permiso de escritura. RETENCIN Y ESPERA: La condicin de retencin y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan concederse simultneamente. Esta solucin resulta ineficiente. En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que se concedan todas sus solicitudes de recursos, cuando de hecho podra haber avanzado con solo algunos de los recursos. En segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos. Esta tambin el problema prctico creado por el uso de programacin modular o estructuras multihilo en una aplicacin. Para NO APROPIACIN: La condicin de no apropiacin puede prevenirse de varias formas. Si a un proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso deber liberar sus recursos anteriores y solicitarlos de nuevo, cuando sea necesario, junto con el recurso adicional. Si un proceso solicita un recurso que actualmente esta retenido por otro proceso, el sistema operativo puede expulsar al segundo proceso y exigirle que libere sus recursos. Este ltimo esquema evitara el nter bloqueo solo si no hay dos procesos que posean la misma prioridad. Esta tcnica es prctica solo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse mas tarde de una forma fcil, como es el caso de un procesador. CIRCULO VICIOSO DE ESPERA: La condicin de crculo vicioso de espera puede prevenirse definiendo una ordenacin lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces solo podr realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenacin. Para comprobar el funcionamiento de esta estrategia, se asocia un ndice a cada tipo de recurso. En tal caso, el recurso Ri antecede a Rj en la ordenacin si i < j. Supngase que dos procesos A y B, estn nter bloqueados, porque A ha adquirido Ri y solicitado Rj, mientras que B ha adquirido Rj y solicitado Ri. Esta condicin es posible porque implica que i < j y j < i. Como en la retencin y espera, la prevencin del crculo vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.

lectura, pero solo accesos exclusivos para escritura. Se puede produce nter

poderhacer esta peticin

simultnea, una aplicacin necesitara conocer todos los recursos que va a necesitar en todos los niveles o en todos los mdulos.

ALGORITMO DE DETECCIN DEL INTERBLOQUEO


El Control del nter bloqueo suele realizarse de forma frecuente tanto como las solicitudes de recurso o una frecuencia menos dependiendo esta de la ocurrencia del nter bloqueo, por lo tanto la comprobacin de cada una de las solicitudes de recurso posee ventajas como: la conduccin a una pronta deteccin y el Algoritmo es relativamente simple, puesto que est basado en cambios de aumentos del estado del sistema. De otra forma, tal frecuencia de comprobaciones consume un tiempo de procesador considerable. Un algoritmo de deteccin utilizado frecuentemente es uno donde utilizamos una

matrizde asignaciones, un vector de recursos disponibles adems de emplear

otra matriz de solicitud (Q) definida tal que representa la cantidad de recursos del tipo J solicitados por el proceso i. Dicho algoritmo funciona marcando los procesos que no estn nter bloqueados. Al inicio de todos los procesos estn sin marcar por lo tanto para su cancelacin se debe llevar una serie de pasos: 1 Se

marcacada proceso que tiene la columna asignacin.

A cero. 2 Se inicia al vector temporal W con el vector disponible 3 Se busca un ndice i tal que el proceso i no este marcado y la columna i-csigma de Q sea menor o igual que W sea Qk < W para i< k < m. Si no se encuentra el algoritmo ha Terminado. 4 Si se encuentra la columna. Se marca el proceso i y se Sema la columna correspondiente de la matriz asignacin W osea Wk = Wk + Ak para i < K< M.Se vuelve al paso 3

RECUPERACIN
Una vez detectado el nter bloqueo hace falta alguna estrategia de recuperacin basndonos en la idea de que para romper el nter bloqueo de un sistema hay que anular una amas de las condiciones necesarias (esperar por exclusin mutua no apropiatividad espera circular) que se dan para el nter bloqueo, anticipando la perdida que sufrirn algunos procesos de todo lo realizado hasta el momento. Las

tcnicasdiferentes son diferentes puntos de enfoque segn su orden decreciente de sostificacin:

1 Abortar los procesos nter bloqueados. Es la solucin ms comn que adopta un S.O. 2 Retroceder cada proceso hasta algn punto de control definido, Previamente volver a ejecutar cada proceso. Es necesario que se tenga disponible mecanismo de retroceso y de reinicio de sistema. El

riesgo de tal solucin se basa en que se podra repetir el nter bloqueo principal. No obstante el no determinismo de procesamiento concurrente asegura la

mayora de los casos que esto no va a pasar. 3 Abortar sucesivamente los procesos nter bloqueados hasta que deje de haber nter bloquea; el orden en que se eligieran los procesos seguir un criterio de mnimo coste. Luego de abortar cada proceso se debe ejecutar de nuevo el algoritmo de deteccin para ver si existe todava nter bloqueo. 4 Apropiacin de recursos sucesivamente hasta que deje de haber nter bloqueo de igual forma que el punto anterior la decisin se basa en el mnimo coste y luego se ejecutara el algoritmo de deteccin despus de cada apropiacin. Un proceso de apropiacin debe retroceder hasta un momento anterior a la adquisicin de tal recurso. Para los dos puntos anteriores el criterio de

seleccin podra basarse:

a-La menor cantidad de procesador consumido hasta ahora b-El mayor nmero de lneas de salidas producidas hasta ahora. c-El mayor tiempo restante estimado. d-El menor nmero total de recursos asignados hasta ahora. e-La prioridad ms baja.

BIBLIOGRAFA
Referencias Chandy K.M., and Misra J. The drinking philosphers problem ACM Trans. on Prog. Languages and Systems 6, 4(October), pp. 632-646. Courtois P.J., Heymans F., y Parnas D.L. Concurrent Control with Readers and Writers, Comm. of the ACM, vol. 10, pp. 667-668, Oct. 1971 Dijkstra E.W. Hierarchical Ordering of Sequential Processes Acta Informatica, Volume 1, Number 2 (1971), pp. 115-138; reprinted in [Hoare and Perrot 1972], pp. 7293. Hoare C.A.R. Monitors: an operating system structuring concept Comm. of the ACM 17,10 (October), 549-557. Lamport L., A New Solution to Dijkstra's Concurrent Programming Problem, Comm. of the ACM, vol 17, pp. 453-455, Ago. 1974 Lehmann D., y Rabin M.O., A symmetric and fully distributed solution to the dining philosophers problem. Prco. Eighth ACM Symp. on Princ. of Prog, Languages, January 1981, pp. 133-138 Tanenbaum A., Modern Operating Systems, 1992 Prentice Hall.

Monitor (concurrencia)
En la programacin paralela, los monitores son objetos destinados a ser usados sin peligro por ms de un hilo de ejecucin. La caracterstica que principalmente los define es que sus mtodos son ejecutados con exclusin mutua. Lo que significa, que en cada momento en el tiempo, un hilo como mximo puede estar ejecutando cualquiera de sus mtodos. Esta exclusin mutua simplifica el razonamiento de implementar monitores en lugar de cdigo a ser ejecutado en paralelo. En el estudio y uso de los semforos se puede ver que las llamadas a las funciones necesarias para utilizarlos quedan repartidas en el cdigo del programa, haciendo difcil corregir errores y asegurar el buen funcionamiento de los algoritmos. Para evitar estos inconvenientes se desarrollaron los monitores. El concepto de monitor fue definido por primera vez por Charles Antony Richard Hoare en un artculo del ao 1974. La estructura de los monitores se ha implementado en varios lenguajes de programacin, incluido Pascal concurrente, Modula-2, Modula-3 y Java, y como biblioteca de programas.

Contenido
o o

1 Componentes 2 Exclusin mutua en un monitor 3 Tipos de monitores 3.1 Tipo Hoare 3.2 Tipo Mesa 4 Vase tambin

Componentes
Un monitor tiene cuatro componentes: inicializacin, datos privados, procedimientos del monitor y cola de entrada.

Inicializacin: contiene el cdigo a ser ejecutado cuando el monitor es creado

Datos privados: contiene los procedimientos privados, que slo pueden ser usados desde dentro del monitor y no son visibles desde fuera Procedimientos del monitor: son los procedimientos que pueden ser llamados desde fuera del monitor. Cola de entrada: contiene a los hilos que han llamado a algn procedimiento del monitor pero no han podido adquirir permiso para ejecutarlos an.

Exclusin mutua en un monitor


Los monitores estn pensados para ser usados en entornos multiproceso o multihilo, y por lo tanto muchos procesos o threads pueden llamar a la vez a un procedimiento del monitor. Los monitores garantizan que en cualquier momento, a lo sumo un thread puede estar ejecutando dentro de un monitor. Ejecutar dentro de un monitor significa que slo un thread estar en estado de ejecucin mientras dura la llamada a un procedimiento del monitor. El problema de que dos threads ejecuten un mismo procedimiento dentro del monitor es que se pueden dar condiciones de carrera, perjudicando el resultado de los clculos. Para evitar esto y garantizar la integridad de los datos privados, el monitor hace cumplir la exclusin mutua implcitamente, de modo que slo un procedimiento est siendo ejecutado a la vez. De esta forma, si un thread llama a un procedimiento mientras otro thread est dentro del monitor, se bloquear y esperar en la cola de entrada hasta que el monitor quede nuevamente libre. Aunque se la llama cola de entrada, no debera suponerse ninguna poltica de encolado. Para que resulten tiles en un entorno de concurrencia, los monitores deben incluir algn tipo de forma de sincronizacin. Por ejemplo, supngase un thread que est dentro del monitor y necesita que se cumpla una condicin para poder continuar la ejecucin. En ese caso, se debe contar con un mecanismo de bloqueo del thread, a la vez que se debe liberar el monitor para ser usado por otro hilo. Ms tarde, cuando la condicin permita al thread bloqueado continuar ejecutando, debe poder ingresar en el monitor en el mismo lugar donde fue suspendido. Para esto los monitores poseen variables de condicin que son accesibles slo desde adentro. Existen dos funciones para operar con las variables de condicin:

cond_wait(c): suspende la ejecucin del proceso que la llama con la condicin c. El monitor se convierte en el dueo del lock y queda disponible para que otro proceso pueda entrar cond_signal(c): reanuda la ejecucin de algn proceso suspendido con cond_wait bajo la misma condicin c. Si hay varios procesos con esas caractersticas elige uno. Si no hay ninguno, no hace nada. Ntese que, al contrario que los semforos, la llamada a cond_signal(c) se pierde si no hay tareas esperando en la variable de condicin c. Las variables de condicin indican eventos, y no poseen ningn valor. Si un thread tiene que esperar que ocurra un evento, se dice espera por (o en) la variable de condicin correspondiente. Si otro thread provoca un evento, simplemente utiliza la funcin cond_signal con esa condicin como parmetro. De este modo, cada variable de condicin tiene una cola asociada para los threads que estn esperando que ocurra el evento correspondiente. Las colas se ubican en el sector de datos privados visto anteriormente.

La poltica de insercin de procesos en las colas de las variables condicin es la FIFO, ya que asegura que ningn proceso caiga en la espera indefinida, cosa que s ocurre con la poltica LIFO (puede que los procesos de la base de la pila nunca sean despertados) o con una poltica en la que se desbloquea a un proceso aleatorio.

[editar] Tipos de monitores


Antes se dijo que una llamada a la funcin cond_signal con una variable de condicin haca que un proceso que estaba esperando por esa condicin reanudara su ejecucin. Ntese que el thread que reanuda su ejecucin necesitar obtener nuevamente el lock del monitor. Surge la siguiente pregunta: qu sucede con el thread que hizo el cond_signal? pierde el lock para drselo al thread que esperaba? qu thread contina con su ejecucin? Cualquier solucin debe garantizar la exclusin mutua. Segn quin contina con la ejecucin, se diferencian dos tipos de monitores: Hoare y Mesa.

[editar] Tipo Hoare En la definicin original de Hoare, el thread que ejecuta cond_signal le cede el monitor al thread que esperaba. El monitor toma entonces el lock y se lo entrega al thread durmiente, que reanuda la ejecucin. Ms tarde cuando el monitor quede libre nuevamente el thread que cedi el lock volver a ejecutar.
Ventajas:

El thread que reanuda la ejecucin puede hacerlo inmediatamente sin fijarse si la condicin se cumple, porque desde que se ejecut cond_signal hasta que lleg su turno de ejecutar ningn proceso puede cambiarla. El thread despertado ya estaba esperando desde antes, por lo que podra suponerse que es ms urgente ejecutarlo a seguir con el proceso despertante. Desventajas:

Si el proceso que ejecuta cond_signal no termin con su ejecucin se necesitarn dos cambios de contexto para que vuelva a tomar el lock del monitor. Al despertar a un thread que espera en una variable de condicin, se debe asegurar que reanude su ejecucin inmediatamente. De otra forma, algn otro thread podra cambiar la condicin. Esto implica que la planificacin debe ser muy fiable, y dificulta la implementacin. [editar] Tipo Mesa Butler W. Lampson y David D. Redell en 1980 desarrollaron una definicin diferente de monitores para el lenguaje Mesa que lidia con las desventajas de los monitores de tipo Hoare y aade algunas caractersticas. En los monitores de Lampson y Redell el thread que ejecuta cond_signal sobre una variable de condicin contina con su ejecucin dentro del monitor. Si hay otro thread esperando en esa variable de condicin, se lo despierta y deja como listo. Podr intentar entrar el monitor cuando ste quede libre, aunque puede suceder que otro thread logre entrar antes. Este nuevo thread puede cambiar la condicin por la cual el primer thread estaba durmiendo. Cuando reanude la

ejecucin el durmiente, debera verificar que la condicin efectivamente es la que necesita para seguir ejecutando. En el proceso que durmi, por lo tanto, es necesario cambiar la instruccin if por while, para que al despertar compruebe nuevamente la condicin, y de no ser cierta vuelva a llamar a cond_wait. Adems de las dos primitivas cond_wait(c) y cond_signal(c), los monitores de Lampson y Redell poseen la funcin cond_broadcast(c), que notifica a los threads que estn esperando en la variable de condicin c y los pone en estado listo. Al entrar al monitor, cada thread verificar la condicin por la que estaban detenidos, al igual que antes. Los monitores del tipo Mesa son menos propensos a errores, ya que un thread podra hacer una llamada incorrecta a cond_signal o a cond_broadcast sin afectar al thread en espera, que verificar la condicin y seguir durmiendo si no fuera la esperada.

Concurrencia E Interbloqueo Deadlock


DEADLOCK Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados. Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso est parado, concediendo que otro proceso sea ejecutado; en el estado de ejecucin, un proceso est utilizando algn recurso; y en el estado de bloqueo, el proceso est parado y no se ejecutar mientras algo lo restaure. Una condicin comn no deseable es descripta como deadlock, que es cuando dos procesos estn en un estado de ejecucin, y requieren intercambiar recursos entre s para continuar. Ambos procesos estn esperando por la liberacin del recurso requerido, que nunca ser realizada; como no hay ningn resultado, tomar un camino que llevar a un estado de deadlock. Muchos escenarios han sido construidos para ilustrar las condiciones de deadlock, siendo el ms popular el Problema de Comida de los Filsofos. Cinco filsofos tienen cinco platos de fideos enfrente suyo y cinco tenedores, uno a cada lado del plato. Los filsofos necesitan

ambos tenedores (derecha e izquierda) para comer. Durante la comida realizarn solo dos operaciones mutuamente excluyentes, pensar o comer. El problema es un paralelismo simplista entre procesos (los filsofos) tratando de obtener recursos (tenedores); mientras estn en estado de ejecucin (comiendo) o de lectura (pensando). Una condicin posible de deadlock puede ocurrir, si todos los filsofos quieren coger el tenedor de la derecha y, a la vez, el de la izquierda: la comida terminar en estado de deadlock. Se dice que dos procesos se encuentran en estado de deadlock (interbloqueo, bloqueo mutuo o abrazo mortal) cuando estn esperando por condiciones que nunca se van a cumplir. Se podra hablar de deadlock como el estado permanente de bloqueo de un conjunto de procesos que estn compitiendo por recursos del sistema. PRINCIPIOS DEL INTERBLOQUEO El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestin concurrente de procesos, no existe una solucin eficiente para el caso general. Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o ms procesos. EJEMPLOS DE INTERBLOQUEO Ejemplo 1: Interbloqueo de trfico Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro cuadrantes de la interseccin son los recursos compartidos sobre los que se demanda control; por tanto, si los coches desean atravesar el cruce, las necesidades de recursos son las siguientes: - - El coche que va hacia el norte necesita los cuadrantes 1 y 2. - - El coche que va hacia el oeste necesita los cuadrantes 2 y 3. - - El coche que va hacia el sur necesita los cuadrantes 3 y 4. - - El coche que va hacia el este necesita los cuadrantes 4 y 1.

La norma mas habitual en la carretera es que un coche en un cruce de cuatro caminos debe ceder el paso al coche que est a su derecha. Esta norma funciona si solo hay dos o tres coches en el cruce. Por ejemplo, si solo llegan al cruce los coches del norte y del oeste, el coche del norte esperar hasta que el del oeste pase. Sin embargo, si los cuatro coches llegan al mismo tiempo cada uno se abstendr de entrar en el cruce, provocando interbloqueo. Si todos los coches ignoran las normas y entran (con cuidado) en el cruce, cada coche obtendr un recurso (un cuadrante) pero no podr continuar porque el segundo recurso que necesita ya ha sido invadido por otro coche. De nuevo, se tiene interbloqueo. Ejemplo 2: Cruce en un puente (es parecido al interbloqueo de trafico) En una carretera de dos direcciones, donde en un determinado cruce con la va del ferrocarril, se ha construido un puente que solo deja pasar vehculos en un solo sentido. El bloqueo ocurre cuando dos carros intentan pasar por el puente al mismo tiempo. Una manera de resolver el bloqueo es: el conductor situado en uno de los extremos es lo suficientemente educado que deja pasar en primer lugar al del otro extremo y luego pasa l. Este ejemplo nos muestra como sucede el interbloqueo en nuestra vida diaria. Ejemplo 3: Dos procesos desean imprimir cada uno un enorme archivo en cinta. El proceso A solicita el permiso para utilizar la impresora, el cual se le concede. Es entonces cuando el proceso B solicita permiso para utilizar la unidad de cinta y se le otorga. El proceso A solicita entonces la unidad de cinta, pero la solicitud es denegada hasta que B la libere. Por desgracia, en este momento, en vez de liberar unidad de cinta, B solicita la impresora. Los procesos se bloquean en ese momento y permanecen as por siempre. RECURSOS Un sistema se compone de un numero finito de recursos que se distribuyen entre varios tipos: - - Fsicos: Ciclo de cpu, espacio en memoria, dispositivos de e/s (impresoras, unidades de cinta, etc.) - - Lgicos: Ficheros, tablas del sistemas, semforos. Por lo general, una computadora tiene distintos recursos que pueden ser otorgados. Algunos recursos podrn tener varias instancias idnticas, como es el caso de tres unidades de cinta.

Si se tienen disponibles varias copias de un recurso, cualquiera de ellas se pude utilizar para satisfacer cualquier solicitud del recurso. Un recurso es cualquier cosa que solo puede ser utilizada por un nico proceso en un instante dado. Los recursos son de dos tipos: - - Apropiable - - No apropiables Un recurso apropiable es aquel que se puede tomar del proceso que lo posee sin efectos dainos. La memoria es un ejemplo de recurso apropiable. Por el contrario, un recurso no apropiable, es aquel que no se puede tomar de su poseedor activo sin provocar un fallo de calculo. Si un proceso comienza a imprimir una salida, se toma la impresora y se le da a otro proceso, el resultado ser una salida incomprensible. Las impresoras no son apropiables. Los interbloqueos se relacionan con los recursos no apropiables. Lo usual es que los bloqueos asociados a recursos apropiables se pueden resolver, mediante la reasignacin de recursos de un proceso a otro. La secuencia de eventos necesaria para utilizar un recurso es: - - Solicitar el recurso - - Utilizar el recurso - - Liberar el recurso Si el recurso no esta disponible cuando se le solicita, el proceso solicitante debe esperar. En algunos sistemas operativos, el proceso se bloquea de manera automtica al fallar una solicitud de un recurso y se despierta cuando dicho recurso esta disponible. En otros sistemas la solicitud falla con un cdigo de error y el proceso solicitante debe esperar un poco e intentar de nuevo. Un proceso cuya solicitud de un recurso ha sido denegada entra por lo general en un ciclo, en el cual solicita el recurso, duerme e intenta de nuevo.

Aunque este proceso no esta bloqueado, para todos los efectos esta como bloqueado, puesto que no puede hacer ninguna labor til. El interbloque se puede definir entonces de la siguiente forma: Un conjunto de procesos se encuentra en estado de interbloqueo cuando cada uno de ellos espera un suceso que solo puede originar otro proceso del mismo conjunto. En la mayora de los casos, el evento que espera cada proceso es la liberacin de cierto recurso que posee por el momento otro miembro del conjunto. En otras palabras, cada miembro del conjunto de procesos bloqueados espera un recurso posedo por un proceso bloqueado. Ninguno de los procesos puede continuar su ejecucin, ni liberar recursos, y puede ser despertado. CONDICIONES PARA PRODUCIR INTERBLOQUEO En la poltica del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo: 1- 1- Condicin de exclusin mutua: Cada recurso esta asignado a un nico proceso o esta disponible. 2- 2- Condicin de posesin y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos. 3- 3- Condicin de no apropiacin: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explicita. En la mayora de los casos, estas condiciones son bastantes necesarias. La exclusin mutua hace falta para asegurar la consistencia de resultados y la integridad de la base de datos. De forma similar, la apropiacin no se puede aplicar arbitrariamente y, cuando se encuentran involucrados recursos de datos, debe estar acompaada de un mecanismo de recuperacin y reanulacin, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso puede finalmente repetir sus acciones. Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condicin:

4- 4- Condicin de espera circular (o circulo vicioso de espera): Debe existir una cadena circular de dos o mas procesos, cada uno de los cuales espera un recurso posedo por el siguiente miembro de la cadena. Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. La cuarta condicin es, en realidad, una consecuencia potencial de las tres primeras. Es decir, dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un circulo vicioso de espera irresoluble. El circulo de espera de la condicin 4 es irresoluble porque se mantienen las tres primeras condiciones. Las cuatro condiciones en conjunto constituyen una condicin necesaria y suficiente para el interbloqueo. PREVENCIN DEL INTERBLOQUEO La estrategia bsica de la prevencin del interbloqueo consiste, a grandes rasgos, en disear su sistema de manera que est excluida, a priori, la posibilidad de interbloqueo. Los mtodos para prevenir el interbloqueo son de dos tipos: - - Los mtodos indirectos que consisten en impedir la aparicin de alguna de las tres condiciones necesarias para que se de el interbloqeo. - - Los mtodos directos que consisten en evitar la aparicin del circulo vicioso de espera. Exclusin mutua.-Si ningn recurso se puede asignar de forma exclusiva, no se producir interbloqueo. Sin embargo, existen recursos para los que no es posible negar la condicion de exclusin mutua. No obstante, es posible eliminar esta condicion en algunos procesos. Por ejemplo, una impresora es un recurso no compatible pues si se permite que dos procesos escriban en la impresora al mismo tiempo, la salida resulta catica. Pero con el spooling de salida varios procesos pueden generar salida al mismo tiempo. Puesto que el spooler nunca solicita otros recuersos, se elimina el bloqueo originado por la impresora. El inconveniente es que no todos los recursos pueden usarse de esta forma (por ejemplo, la tabla de procesos no se presenta al spooling y, ademas, la implementacion de esta tcnica puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco finita) Retencion y espera.-La condicion de retencion y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y

bloqueando el proceso hasta que todos los recursos puedan concederse simultneamente. Esta solucion resulta ineficiente por dos factores: - - En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que concedan todas sus solicitudes de recursos, cuando de hecho podria haber avanzado con solo algunos de los recursos. - - Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos. No apropiacin.-La condicin de no apropiacin puede prevenirse de varias formas. Primero, si a un proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso deber liberar sus recursos anteriores y solicitarlos d eneuvo, cuando sea necesario, junto con el recurso adicional. Por otra parte, si un proceso solicita un recurso que actualmente esta retenido por otro proceso, el sistema operativo debe expulsar al segundo proceso y exigirle que libere sus recursos. Este ultimo esquema evitar el interbloqueo slo si nho hay dos procesos que posean la misma prioridad. Esta tcnica es prctica slo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse ms tarde de una forma facil, como es el caso de un procesador. Circulo vicioso de espera.-La condicin del circulo vicioso de espera puede prevenirse definiendo una ordenacin lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces slo podr realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenacin. Para comprobar el funcionamiento de esta estrategia, se asocia un ndice a cada tipo de recurso. En tal caso, el recurso Ri antecede a Rj en la ordenacin si i<j. Entonces, supngase que dos procesos A y B, estn interbloqueados, porque A ha adquirido Ri y solicitado Rj, mientras que B ha adquirido Rj y solicitado Ri. Esta condicin es imposible porque implica que i<j y j<i. Como en la retencin y espera, la prevencin del circulo vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos innecesariamente. PREDICCIN DEL INTERBLOQUEO Una forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevencin, es la prediccin del interbloqueo. En la prevencin de interbloqueo, se obligaba

a las solicitudes de recursos a impedir que sucediera , por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la aparicin de una de las tres condiciones necesarias (exclusin mutua, retencin y espera, no apropiacin) o directamente, impidiendo la aparicin de un circulo viciosos de espera. Se llega as a un uso ineficiente de los recursos y una ejecucin ineficiente de los procesos. Con prediccin del interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La prediccin, por lo tanto, permite ms concurrencia que la prevencin. Con prediccin del interbloqueo, se decide dinmicamente si la peticin actual de asignacin de un recurso podra, de concederse, llevar potencialmente a un interbloqueo. La prediccin del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos. Enfoques para la prediccin del interbloqueo: - - No iniciar un proceso si sus demandas pueden llevar a interbloqueo. - - No conceder una solicitud de incrementar los recursos de un proceso si esta asignacin puede llevar a interbloqueo. Negativa de iniciacin de procesos.-Confedrese un sistemas de n procesos y m tipos diferentes de recursos. Se definen los vectores y matrices siguientes: Recursos = (R1, R2, Rm) cantidad total de cada recurso en el sistema Disponible = (D1, D2, Dm) cantidad total de cada recurso sin asignar a los procesos Demanda = exigencias de recursos para cada proceso Asignacin = asignacin actual La matriz Demanda indica las exigencias mximas de recursos para cada proceso, con una fila para cada uno. Es decir, Cij = demanda del recurso j por parte del proceso i. Esta informacin debe declararse por adelantado para que funcione la prediccin de interbloqueo. De forma similar, Aij = asignacin del recurso j al proceso i. Se puede ver que se cumplen las siguientes relaciones:

1. Para todo i, Ri = Di + Aki : todos los recursos estn asignados o disponibles. 2. Para todo k e i, Cki <= Ri: ningn proceso puede demandar ms recursos que la cantidad total de recursos del sistema 3. Para todo k e i, Aki <= Cki: ningn proceso tiene asignados ms recursos de cualquier tipo que los que ha declarado necesitar. Con estas tres cantidades, se puede definir una poltica de prediccin del interbloqueo que rechace iniciar un nuevo proceso si sus exigencias de recursos pueden conducir a un intebloqueo. Un nuevo proceso Pn+1 comenzar slo si: Ri >= C(n+1)i + Cki, para todo i Es decir, un proceso comenzar slo si puede servirse la demanda mxima de todos los procesos actuales ms la del nuevo proceso. Esta estrategia es poco ptima, puesto que asume el caso peor: que todos los procesos expresen su demanda mxima a la vez. Negativa de asignacin de recursos.-La estrategia de negar la asignacin de recursos, denominada algoritmo del banquero, fue propuesta por primera vez por Dijkstra, que us este nombre por la analoga de este problema con el de un banco cuando los clientes quieren obtener dinero prestado. Los clientes sera los procesos y el dinero a prestar, los recursos. Si se enuncia de esta manera, el banco tiene una reserva limitada de dinero para prestar y un conjunto de clientes con lneas de crdito. Un cliente puede elegir pedir dinero a cargo de la lnea de crdito en un instante dado y no hay garanta de que el cliente realice ninguna reposicin hasta despus de sacar la cantidad mxima. El banquero puede rechazar un prstamo a un cliente si hay riesgo de que el banco no tenga fondos suficientes para hacer prstamos futuros que los clientes finalmente repondrn. Para empezar se definen los conceptos de estado y de estado seguro. Considrese un sistema con un nmero fijo de procesos. As pues, el estado estar formado por los dos vectores, Recursos y Disponible, y las dos matrices, Demanda y Asignacin, definidas anteriormente. Un estado seguro es un estado en el cual existe al menos una secuencia que no lleva al interbloqueo ( es decir, todos los procesos pueden ejecutarse hasta el final). Un estado inseguro es, naturalmente, un estado que no es seguro. El algoritmo del banquero usa una tabla de recursos para saber cuntos recursos tiene de todo tipo. Tambin requiere que los procesos informen del mximo de recursos que va a usar de cada tipo. Cuando un proceso pide un recurso, el algoritmo verifica si asignndole

ese recurso todava le quedan otros del mismo tipo para que alguno de los procesos en el sistema todava se le pueda dar hasta su mximo. Si la respuesta es afirmativa, el sistema se dice que est en estado seguro y se otorga el recurso. Si la respuesta es negativa, se dice que el sistema est en estado inseguro y se hace esperar a ese proceso. Los algoritmos siguientes muestran una versin abstracta de la logica de prediccin del interbloqueo. Con el estado del sistema definido por la estructura de datos estado, solicitud [*] es un vector que define los recursos pedidos por el proceso i. En primer lugar, se hace una comprobacin para asegurar que la solicitud no excede la demanda inicial del proceso. Si la solicitud es vlida, el paso siguiente es determinar si es posible satisfacer la solicitud, esto es, si hay suficientes recursos disponibles. Si no es posible, el proceso se suspende. Si es posible, el paso final es determinar si es seguro satisfacer la solicitud. Para hacer esto, se prueba a asignar los recursos al proceso i desde nuevo_estado. Despus, se realiza un test d seguridad usando el algoritmo del banquero. Estructura de datos globales struct estado { int recursos [m]; int disponible [m]; int demada [n] [m]; int asignacin [n] [m]; } Algoritmo de asignacin de recursos if (asignacin[i, ] + solicitud [*] > demanda [I, *]) { < error >; /*-- solicitud total > demanda */

} else if (solicitud [*] > disponible [*]) { < suspender proceso > ; } else /*-- simular asignacin */ { < definir nuevo_estado como: asignacin[i, ] = asignacin[i, ] + solicitud [*]: disponible [*] = disponible [*] solicitud [*] >; } if (seguro (nuevo_estado)) { < realizar asignacin >; } else { < restaurar estado original >; < suspender proceso >; }

Algoritmo de comprobacin de estado seguro (algoritmo del banquero) booleano seguro (estado S) { int disponible_actual [m]; proceso resto [< nmero de procesos >]; disponible_actual = disponible; resto = {todos los procesos}; posible = true; while (posible) { encontrar un PK en resto tal que demanda [k, *] asignacin [k, *] < = disponible_actual; if (encontrado) /*-- simular ejecucin de P */ { disponible_actual = dispible_actual + asignacin [k, *]; resto = resto {PK}; } else posible = falso; }

seguro (resto = = null); } La prediccin del interbloqueo tiene la ventaja de que no es necesario expulsar y hacer retroceder procesos, como en la deteccin del interbloqueo, y es menos restrictiva que la prevencin. Sin embargo, su uso supone una serie de restricciones como las siguientes: - - Se debe presentar la mxima demanda de recursos por anticipado. - - Los procesos a considerar deben ser independientes, es decir, que el orden en que se ejecuten no debe estar forzado por condiciones de sincronizacin. - - Debe haber un nmero fijo de recursos a repartir y un nmero fijo de procesos. - - Los procesos no pueden finalizar mientras retengan recursos. DETECCIN DEL INTERBLOQUEO Las estrategias de prevencin de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de deteccin de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso. Con la deteccin del interbloqueo, se concedern los recursos que los procesos necesiten siempre que sea posible. Peridicamente, el S. O. ejecuta un algoritmo que permite detectar la condicin de circulo vicioso de espera. La deteccin del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en l. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace una verificacin para observar si existe algn ciclo. Este mtodo est basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados, se liberarn en el momento que otro proceso lo requiera. Algoritmo de deteccin del interbloqueo .-Una comprobacin para interbloqueo puede hacerse con igual o menor frecuencia que cada solicitud de recursos, dependiendo de que tan probable es que ocurra un interbloqueo. Comprobar cada solicitud de recursos tiene dos

ventajas: Conduce a la deteccin temprana y el algoritmo es simple, de manera relativa porque se basa en cambios crecientes al estado del sistema. Adems, las comprobaciones frecuentes consumen un tiempo considerable de procesador. Los algoritmos de deteccin de bloqueos implican cierta sobrecarga en tiempo de ejecucin: surge el siguiente interrogante: compensa la sobrecarga implicita en los algoritmos de deteccin de bloqueos, el ahorro potencial de localizarlos y romperlos ?. El empleo de algoritmos de deteccin de interbloqueo implica cierto gasto extra durante la ejecucin. As pues, se presenta de nuevo la cuestin de costeabilidad, tan habitual en los sistemas operativos. Los algoritmos de deteccin de interbloqueo determinan por lo general si existe una espera circular. RECUPERACIN DE INTERBLOQUEO Cuando se ha detectado que existe un interbloqueo, podemos actuar de varias formas. Una posibilidad es informar al operador que ha ocurrido un interbloqueo y dejar que el operador se ocupe de l manualmente. La otra posibilidad es dejar que el sistema se recupere automticamente del interbloqueo. Dentro de esta recuperacin automtica tenemos dos opciones para romper el interbloqueo: Una consiste en abortar uno o ms procesos hasta romper la espera circular, y la segunda es apropiar algunos recursos de uno o ms de los procesos bloqueados. La recuperacin despus de un interbloqueo se complica porque puede no estar claro que el sistema se haya bloqueado. Las mayoras de los Sistemas Operativos no tienen los medios suficientes para suspender un proceso, eliminarlo del sistema y reanudarlo ms tarde. Actualmente, la recuperacin se suele realizar eliminando un proceso y quitndole sus recursos. El proceso eliminado se pierde, pero gracias a esto ahora es posible terminar. Algunas veces es necesario, eliminar varios procesos hasta que se hayan liberado los recursos necesarios para que terminen los procesos restantes. Los procesos pueden eliminarse de acuerdo con algn orden de prioridad, aunque es posible que no existan prioridades entre los procesos bloqueados, de modo que el operador necesita tomar una decisin arbitraria para decidir que procesos se eliminarn.

Recuperacin Manual Est forma de recuperacin consiste en avisarle al administrador o al operador del sistema que se ha presentado un interbloqueo, y ser el administrador el que solucione dicho problema de la manera ms conveniente posible, de modo que su decisin no afecte demasiado a al usuario del proceso en conflicto, y sobre todo que no afecte a los dems usuarios del sistema. Abortar los Procesos Para eliminar interbloqueos abortando un proceso, tenemos dos mtodos; en ambos, el sistema recupera todos los recursos asignados a los procesos terminados. 1 ) Abortar todos los procesos interbloqueados. Esta es una de las soluciones ms comunes, adoptada por Sistemas Operativos. Este mtodo romper definitivamente el ciclo de interbloqueo pero con un costo muy elevado, ya que estos procesos efectuaron clculos durante mucho tiempo y habr que descartar los resultados de estos clculos parciales, para quiz tener que volver a calcularlos ms tarde. 2 ) Abortar un proceso en cada ocasin hasta eliminar el ciclo de interbloqueo. El orden en que se seleccionan los procesos para abortarlos debe basarse en algn criterio de costo mnimo. Despus de cada aborto, debe solicitarse de nuevo el algoritmo de deteccin, para ver si todava existe el interbloqueo. Este mtodo cae enmucho tiempo de procesamiento adicional. Quiz no sea fcil abortar un proceso. Si ste se encuentra actualizando un archivo, cortarlo a la mitad de la operacin puede ocasionar que el archivo quede en un mal estado. Si se utiliza el mtodo de terminacin parcial, entonces, dado un conjunto de procesos bloqueados, debemos determinar cul proceso o procesos debe terminarse para intentar romper el interbloqueo. Se trata sobre todo de una cuestin econmica, debemos abortar los procesos que nos representen el menor costo posible. Existen muchos factores que determinan el proceso que se seleccionar, siendo los principales los siguientes: 1. La prioridad del proceso. Se elimina el proceso de menor prioridad. 2. Tiempo de procesador usado. Se abortar aquel proceso que haya utilizado menos tiempo el procesador, ya que se pierde menos trabajo y ser ms fcil recuperarlo ms tarde. 3. Tipos de recursos utilizados. Si los recursos son muy necesarios y escasos ser preferible liberarlos cuanto antes.

4. Cuntos recursos ms necesita el proceso. Es conveniente eliminar a aquellos procesos que necesitan un gran nmero de recursos. 5. Facilidad de suspensin / reanudacin. Se eliminarn aquellos procesos cuyo trabajo perdido sea ms fcil de recuperar. Apropiacin de Recursos Para eliminar interbloqueos utilizando la apropiacin de recursos, vamos quitando sucesivamente recursos de los procesos y los asignamos a otros hasta romper el ciclo de interbloqueo. Si se utiliza la apropiacin de recursos para tratar los interbloqueos, hay que considerar tres aspectos: - - Seleccin de la vctima - - Retroceso - - Bloqueo indefinido La deteccin y recuperacin es la estrategia que a menudo se utiliza en grandes computadoras, especialmente sistemas por lote en los que la eliminacin de un proceso y despus su reiniciacin suele aceptarse. UNA ESTRATEGIA INTEGRADA DE INTERBLOQUEO Puede ser mas eficiente usar diferente estrategias en diferentes situaciones, una de ellas sugiere lo siguiente: - Agrupar los recursos en un numero de clases diferentes. - - Usar la estrategia de ordenacin lineal definida anteriomente para la prevencin de circulo viciosos de espera e impedir el interbloqueo entre clases de recursos. - - Dentro de cada clase de recursos, emplear el algoritmo mas apropiado para dicha clase. Como ejemplo de esta tcnica, considrense las siguientes clases de recursos: - - Espacio intercambiable: bloques de memoria en almacenamiento secundario para el intercambio de procesos.

- - Recursos de procesos: dispositivos asignables, como unidades de cintas y archivos. - - Memoria principal: asignable a los procesos en paginas o segmentos. - - Recursos internos: como canales de E / S. El orden en que se encuentran estas clases de recursos es el orden en que se asignan. El orden es razonable, teniendo en cuenta la secuencias de pasos que un proceso debe seguir durante su vida. En cada clase se pueden usar las siguientes estrategias : - - Espacio Intercambiable: puede aplicarse la prevencin de interbloqueos, pidiendo que todos los recursos sean asignados de una vez, como la estrategia de prevencin de retencin y espera. Esta estrategia es razonable si se conoce los requisitos mximo de almacenamiento, lo que suele ser habitual. Otra posibilidad es la prediccin de interbloqueos. - - Recursos de Procesos: la prediccin es a menudo efectiva en esta categora, puesto que es razonable esperar que los procesos declaren por anticipados los recursos de esta clase que necesitaran. Tambin es posible en esta clase la prevencin mediante la ordenacin de recursos. - - Memoria Principal: la prevencin por apropiacin parece ser la estrategia mas adecuada para la memoria principal. Cuando se expulsa un proceso, simplemente es trasladado a la memoria secundaria - - Recursos Internos: puede usarse la prevencin por ordenacin de recursos. EL PROBLEMA DE LA CENA DE LOS FILOSOFOS Haba una vez cinco filsofos que vivan juntos. La vida de cada filsofo consista principalmente en pensar y comer y, tras aos de pensar, todos los filsofos se haban puesto de acuerdo en que la nica comida que contribua a sus esfuerzos eran los espaguetis. Los preparativos de la comida eran simples : una mesa redonda en la que haba una gran fuente de espaguetis, cinco platos, uno para cada filsofo y cinco tenedores. Un filsofo que quisiera comer ira a su lugar asignado en la mesa y, usando los dos tenedores de cada

lado del plato, cogera los espaguetis y se los comera. El problema es lo siguiente : inventar un ritual (algoritmo) que permita comer a los filsofos. El algoritmo debe satisfacer la exclusin mutua (dos filsofos no pueden emplear el mismo tenedor a la vez), adems de evitar el interbloqueo y la inanicin (en este caso, este ultimo termino tiene un significado literal adems del algortmico). Este problema, propuesto por Dijkstra, puede no parecer importante o relevante por si mismo. Sin embargo, sirve para ilustrar los problemas bsicos del interbloqueo y la inanicin. Es ms, intentar desarrollar una solucin revela muchas de las dificultades de la programacin concurrente. Adems, el problema de la cena de los filsofos puede verse como un caso representativo de los problemas relacionados con la coordinacin sobre recursos compartidos, que se produce cuando una aplicacin incluye hilos de ejecucin concurrentes. Por consiguiente, este problema es un caso de prueba estndar para examinar soluciones a la sincronizacin. Una primera solucin al problema de la cena de los filsofos es: /* program cena_filsofos */ semforo tenedor[5] = {1}; int i; void filosofo(int i) { while (cierto) { pensar ( ); wait (tenedor [i]); wait (tenedor [(i + 1)mod 5]; comer ( );

signal (tenedor [(i + 1) mod 5]); wait (tenedor [1]); } } void main ( ) { parbegin (filosofo (0), filosofo (1), filosofo (2), filosofo (3), filosofo (4)); } Sugiere una solucin por medio de semforos. Cada filosofo toma 1 el tenedor de su izquierda , y despus el de su derecha. Cuando un filosofo termina de comer, devuelve los dos tenedores a la mesa. Esta solucin, desafortunadamente, produce nterbloqueo: si todos los filsofos estn hambriento al mismo tiempo, todos se sientan, todos toman el tenedor de su izquierda y todos intentan tomar el otro tenedor que no estar. Esta solucin es poco decorosa, pues todos los filsofos pasan hambre.Para superar el riesgo de nter bloqueo se podran adquirir 5 tenedores adicionales ( una solucin mas saludable), o ensear a los filsofos a comer espaguetis con un solo tenedor. Como otra solucin posible , se podra considerar incorporar un sirviente que permita pasar solo a 4 cuatro filsofos a la vez al comedor. Con un mximo de 4 filsofos sentados, al menos uno de los filsofos tendr acceso a los dos tenedores. En esta figura se muestra con semforos. Esta solucin esta libre de nter bloqueo e inanicin. /* program cena_filsofos */ semforo tenedor[5] = {1}; semforo habitacin = {4}; int i;

void filosofo (int i) { while (cierto) pensar ( ); wait (habitacin); wait (tenedor [i]); wait (tenedor [(i + 1) mod 5]); comer ( ); signal (tenedor [(i +1) mod 5]); wait (tenedor [i]); signal (habitacin); } void main ( ) { parbegin (filosofo (0), filosofo (1), filosofo (2), filosofo (3), filosofo (4)); } MECANISMOS DE CONCURRENCIA EN UNIX Los distintos mecanismos ms importantes que ofrece UNIX para la comunicacin entre procesos y la sincronizacin son los siguientes: - - Tubos

- - Mensajes - - Memoria Compartida - - Semforos - - Seales Los tubos, los mensajes y la memoria compartida brindan un medio de comunicacin de datos entre procesos, mientras que los semforos y las seales se utilizan para provocar acciones en otros procesos. Tubos Es un buffer circular que permite a dos procesos comunicarse segn el modelo productor/consumidor. Cuando se crea un tubo, se le da un tamao fijo en bytes. Cuando un proceso intenta escribir en el tubo, la solicitud de escritura se ejecuta inmediatamente si hay suficiente espacio; de otro modo, el proceso se bloquea. De la misma manera, un proceso lector se bloquea si intenta leer mas bytes de los que tiene disponible en ese momento. El sistema operativo es el encargado de la exclusin mutua, es decir, al tubo solo puede accederlo un proceso por vez. Hay dos tipos de tubos: con nombre y sin nombre. Los tubos sin nombre pueden ser compartidos por procesos afines y los tubos con nombre pueden ser compartidos por procesos no afines. Mensajes Es un bloque de texto con un tipo asociado. UNIX proporciona las llamadas al sistema msgsnd y msgrcv para que los procesos puedan enviarse mensajes. Cada proceso tiene asociada una cola de mensajes, que funciona como un buzn de correos. El emisor del mensaje especifica el tipo de mensaje en cada envo y el receptor puede usarlo como criterio de seleccin. El receptor puede recuperar los mensajes tanto en orden FIFO como por el tipo asociado. Un proceso se suspender cuando intente leer de una cola vaca. Si un proceso intenta leer un mensaje de cierto tipo y falla, el proceso no se suspender. Memoria Compartida Es la forma ms rpida de comunicacin entre procesos que brinda UNIX, se trata de un bloque comn de memoria virtual compartido por varios procesos. Los procesos pueden leer y escribir en la memoria compartida usando las mismas

instrucciones que la maquina que emplea para leer y escribir en otras partes de su espacio de direcciones virtual. Los permisos de un proceso son solo lectura o lectura-escritura, segn el proceso. Las limitaciones de exclusin mutua no forman parte del servicio de memoria compartida, sino que las debe proporcionar el proceso que hace uso del mismo. Semforos Las llamadas al sistema para semforos en el UNIX Versin V son una generalizacin de las primitivas wait y signal, en estas se pueden realizar conjuntamente varias operaciones y los incrementos y disminuciones pueden ser valores mayores que 1. El ncleo ejecuta atmicamente todas las operaciones solicitadas; ningn otro proceso puede acceder al semforo hasta que todas las operaciones hayan culminado. Un semforo consta de los siguientes elementos: - - Valor actual del semforo. - - ID del ultimo proceso que opero con el semforo. - - Numero de procesos esperando a que el valor del semforo sea mayor que su valor actual. - - Numero de procesos esperando a que el valor del semforo sea cero Asociadas con cada semforo existen colas de procesos suspendidos. Los semforos, se crean por conjuntos, en el cual, un conjunto tiene uno o ms semforos. Hay una llamada al sistema semctl que permite dar valores a todos los semforos del conjunto al mismo tiempo. Adems, hay una llamada al sistema sem-op que recibe como argumento una lista de operaciones sobre semforos, cada una de ellas definida sobre uno de los semforos del conjunto. Cuando se genera esta llamada, el ncleo realiza las operaciones indicadas una a una. Para cada operacin, se especifica la funcin real por medio del valor sem_op. Existen las siguientes posibilidades: - - Si sem_op es mayor que 0, el ncleo incrementa el valor del semforo y despierta a los procesos que esperaban a que el valor del semforo se incrementase. - - Si sem_op es igual a 0, el ncleo comprueba el valor del semforo. Si el semforo es 0, contina con las otras operaciones de la lista; en caso contrario, incrementa el nmero de procesos esperando a que este semforo sea igual a 0 y suspende el proceso hasta que el valor del semforo sea 0.

- - Si sem_op es negativo y su valor absoluto es menor o igual que el valor del semforo, el ncleo suma sem_op (un nmero negativo) al valor del semforo. Si el resultado es 0, el ncleo despierta a todos los procesos que esperan a que el valor del semforo sea igual a 0. - - Si sem_op es negativo y su valor absoluto es mayor que el valor del semforo, el ncleo suspende al proceso, caso de que el valor del semforo se incremente. Esta generalizacin de los semforos ofrece una considerable flexibilidad para realizar sincronizacin y coordinacin de procesos. Seales Es un mecanismo de software que informa a un proceso que se ha producido un suceso asncrono. Una seal es similar a una interrupcin de hardware, pero no emplea prioridades. Es decir, todas las seales se tratan de igual manera; las seales que se producen en un mismo momento se presentan al proceso en el mismo instante, sin una ordenacin en particular. Los procesos pueden enviarse seales entre si y el ncleo puede enviar seales internas. Una seal se entrega actualizando un campo de la tabla de procesos del proceso al que se le enva. Dado que cada seal se mantiene como un nico bit, las seales de un tipo en particular no pueden colocarse en la cola. Una seal se procesa en el instante despus de que el proceso despierte para ejecutarse o cuando el proceso este dispuesto a volver de una llamada al sistema. Un proceso puede responder a una seal ejecutando alguna accin por omisin (por ejemplo, terminar), ejecutando una funcin de gestin de la seal o ignorando la seal. Esta tabla enumera algunas de las seales definidas en el UNIX SVR4 Valor Nombre Descripcin 01 Sighup Colgar; se le enva a un proceso cuando el ncleo supone que el usuario de ese proceso no est realizando un trabajo til. 02 Sigint Interrumpir. 03 Sigquit Salir; la enva el usuario para provocar una parada del proceso y la genracin de un volcado de memoria. 04 Sigill Instruccin ilegal.

05 Sigtrap Seguimiento de cepo (trap); provoca la ejecucin de un cdigo de seguimiento del proceso. 06 Sigiot Ejecucin de la instruccin IOT. 07 Sigemt Ejecucin de la instruccin MT. 08 Sigfpt Excepcin de coma flotante. 09 Sigkill Matar; terminacin del proceso. 10 Sigbus Error de bus. 11 Sigsev Violacin de segmento; un proceso intenta accedet a una posicin fuera de su espacio de direcciones virtual 12 Sigsys Argumentos incorrectos en una llamada al sistema. 13 Sigpipe Escritura en un tubo que no tiene lectores asociados. 14 Sigalarm Alarma de relog 15 Sigterm Terminacin por software 16 Sigusr1 Seal 1 definida por el usuario. 17 Sigusr2 Seal 2 definida por el usuario. 18 Sigcld Muerte de un hijo. 19 Sigpwr Corte de energa. PRIMITIVAS DE SINCRONIZACIN DE HILOS EN SOLARIS Adems de los mecanismos de concurrencia de UNIX SVR4, Solaris soporta cuatro primitivas de sincronizacin de hilos: - - Cierres de exclusin mutua (mutex, mutual exclucin).

- - Semforos. - - Cierre de mltiples lectores, un escritor (lectoress escritores). - - Variables de condicin. Solaris implementa estas primitivas para los hilos de ncleo dentro del ncleo; tambien las ofrece en la biblioteca de hilos para los hilos de usuario. La ejecucin de una primitiva crea una estructura de datos que contiene parmetros especificados por el hilo creador (figura 6.13). Una vez que est creado el objeto de sincronizacin, hay dos operaciones, fundamentalmente, que se puedan realizar: entrar(adquirir, bloquear) y salir (desbloquear). El ncleo o la biblioteca de hilos no incluyen mecanismos para hacer cumplir la exclusin mutua o prevenir el interbloqueo. Si un hilo intenta accder a datos un fragmento de cdigo o que se supone protegido pero no utiliza la primitiva de sincronizacin correspondiente, se produce ese acceso. Si un hilo bloquea un objeto y, despus, falla al desbloquearlo, el ncleo no hace nada. (a) Cierre MUTEX (b) Cierre de lectores/escritores Semforo (d) Variable de condicin Cierre de exclusin mutua Un cierre mutex impide que ejecute ms de un hilo cuando el cierre est activo. El hilo que bloquea el mutex debe ser el que lo desbloquea. Un hilo intenta adquirir un cierre mutex ejecutando la primitiva mutex_enter. Si mutex_enter no puede activar el cierre (debido a que ya est activado por otro hilo), la accin mediante la que se bloquea el hilo depende de la informacin especfica de tipo almacenada en el objeto mutex. La poltica de bloqueo por defecto es un cierre circular, un hilo bloqueado comprueba el estado del cierre mientras ejecuta en un bucle de espera. Opcionalmente se aplica un mecanismo de bloqueo basado en interrupciones. En este ltimo caso, el mutex un id de torno que identifica una cola de hilos dormidos en este cierre. Las primitivas asociadas a un cierre mutex son: mutex_enter() Adquiere el cierre; potencialmente se bloquea si ya est adquirido.

mutex_exit() Libera el cierre; potencialmente desbloquea a uno que espera. mutex_tryenter() Adquiere el cierre si an no est adquirido. La primitiva mutex_tryenter() proporciona un modo no bloqueador de ejecutar la funcin de exclucin mutua. Esto permite al programador utilizar un metodo de espera activa para hilos de usuario, lo que evita que se bloquee el proceso completo debido al bloqueo de un hilo. Semforos Solaris ofrece semforos enteros clsicos, con las siguientes primitivas: sema_p () Disminuye el semforo, potencialmente bloquea el hilo. sema_v () Incrementa el semforo, potencialmente desbloquea un hilo que espera. sema_tryp () Si nos es necesario bloquearse, disminuye el semforo. De nuevo, la primitiva sema_tryp () permite espera activa. Cierre lectores/escritores El cierre lectores/escritores permite a mltiples hilos tener accesos slo-lectura simultneos a un objeto protegido por el cierre. Tambin permite a un solo hilo acceder, en un instante dado, al objeto pra escritura, excluyendo a todos los lectores. Cuando se adquiere el cierre para escritura, pasa al estado de cerradura-escritura. todos los hilos que intenten acceder para leer o escribir deben esperar. Si uno o ms lectores adquieren el cierre, su estado pasa a cerrado-lectura. Las primitivas son como sigue: rw_enter() Intenta adquirir un cierre como lector o escritor. rw_exit() Libera un cierre como lector escritor. rw_tryenter() Si no es necesario bloquearse, adquiere el cierre. rw_downgrade() Un hilo que ha adquirido un cierre de escritura lo convierte en cierre de lectura. Cualquier escritor que estuviese esperando contina esperando hasta que el hilo libere el cierre. Si no hay escritores esperando, la primitiva despierta a los lectores que esperan. rw_tryupgrade() Intenta convertir un cierre de lectura en un cierre de escritura.

Variables de condicin Una variable de condicin se utiliza para esperar hasta que sea cierta una determinada condicin. Las variables de condicin deben usarse junto con un cierre mutex. Las primitivas son como sigue: c_wait() Bloquea hasta que se sealiza la condicin. cv_signal() Despierta un hilo bloqueado en en c_wait(). cv_broadcast() Despierta todos los hilos bloqueados en c_wait() c_wait() libera el mutex asociado antes de bloquearse y lo readquiere antes de retornar. Puesto que la readquisiscin del mutex puede estar bloqueada por otro hilo que espera en el mutex, se debe reevaluar la condicin de espera, de este modo un uso habitual es el siguiente: mutex_enter(&m); . . . while (alguna condicin) { cv_wait (&cv , &m); } . . . mutex_exit (&m); Esto permite que la condicin sea una expresin compleja, puesto que est protegida por el mutex.

MECANISMOS DE CONCURRENCIA EN WINDOWS 2000 Windows 2000 (W2K) ofrece sincronizacin entre los hilos como parte de la arquitectura de objetos. El mecanismo usado por el ejecutor de W2K para implementar los servicios de sincronizacin es la familia de objetos de sincronizacin, que esta formada por los siguientes: - - Proceso. - - Hilo. - - Archivo. - - Entrada de consola. - - Notificacin de cambio de archivo. - - Mutante. - - Semforo. - - Suceso. - - Temporizador. Cada caso de objeto de sincronizacin puede estar en estado sealizado o no sealizado. Un hilo puede estar suspendido por un objeto en estado no sealizado: el hilo es liberado cuando el objeto pasa a estado sealizado. El mecanismo es sencillo: un hilo genera una solicitud de espera al ejecutor de W2K por medio del descriptor (handle) del objeto de sincronizacin. Cuando un objeto pasa a estado sealizado, el ejecutor de W2K libera todos los objetos hilo que estaban esperando por dicho objeto de sincronizacin. El objeto mutante se utiliza para hacer cumplir la exclusin mutua en el acceso a un recurso, permitiendo que slo un objeto hilo obtenga el acceso en cada instante. Por lo tanto, funciona como un semforo binario. Cuando el objeto mutante pasa a estado sealizado, slo se libera uno de los hilos que esperan. Los objetos mutante pueden utilizarse para sincronizar hilos que ejecutan en distintos procesos.

Al igual que los mutantes, hilos de diferentes procesos pueden compartir semforos. El semforo de W2K es un semforo entero clsico. El temporizador en esencia, seala determinado momento o intervalos regulares. Objetos de sincronizacin de Windows 2000 (Resume los sucesos que hacen que cada tipo de objetos pase a estado sealizado y el efecto que tiene en los hilos que esperan) Tipo de objeto Definicin Pasa a estado sealado cuando Efectos sobre los hilos que esperan Proceso Invocacin a un programa, incluyendo el espacio de direcciones y los recursos Termina el ultimo hilo Todos se liberan Hilo Entidad ejecutable dentro de un proceso Termina el hilo Todos se liberan Archivo Caso particular de un archivo abierto o de un dispositivo de E/S Se completa la operacin de E/S Todos se liberan Entrada de consola Un buffer de pantalla para ventana de texto (por ejemplo, se utiliza para gestionar una pantalla de E/S de una aplicacin MS-DOS) La entrada esta disponible Se libera un hilo Notificacin de cambio de archivo
Una notificacin de que cambia cualquier sistema de archivos. El cambio se produce en un sistema de archivos que asocia un criterio de filtrado a ese objeto Se libera un hilo

Mutante Mecanismo que proporciona exclusin mutua a los entornos Win32 y OS/2 El hilo propietario u otro hilo libera al mutante Se libera un hilo Semforo Contador que regula el numero de hilos que pueden emplear un recurso El contador del semforo llega a cero Todos se liberan Suceso Anuncio de que ha ocurrido un suceso del sistema Un hilo activa el suceso Todos se liberan

Temporiza-dor Contador que registra el paso del tiempo Llega el tiempo de activacin o expira el intervalo de guarda

NIVELES DE PLANIFICACIN Se consideran tres niveles importantes de planificacin, los que se detallan a continuacin: Planificacin de alto nivel: Se encarga de llevar procesos de disco a memoria y viceversa. Seleccionando los trabajos que deben admitirse en el sistema. oTambin se denomina Planificacin de trabajos. oDetermina a qu trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificacin de admisin. oAdministrar todos los recursos del sistema excepto el CPU. oMantiene las colas de procesos bloqueados y suspendidos. oControla la creacin de procesos. oManeja el nivel de multiprogramacin. Planificacin de nivel intermedio: En algunos casos, en especial cuando el sistema est sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramacin, y por lo tanto, permitir que los trabajos se completen mas aprisa. Este subadministrador controla los trabajos que se intercambian hacia fuera y de regreso. oDetermina a qu procesos se les puede permitir competir por la cpu. oEfecta suspensiones y activaciones (reanudaciones) de procesos. oDebe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. oEquilibrar la administracin de trabajos en el sistema con la asignacin del CPU a dichos procesos. oNivelar la carga del sistema (procesos activos y pasivos). Planificacin de bajo nivel: Se encarga de pasar de un proceso a otro en memoria principal. Determinando a cul proceso listo se le asignar el CPU cuando ste se encuentra disponible. oDetermina a qu proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que despacha la cpu al proceso. OBJETIVOS DE PLANIFICACIN

Los objetivos de la planificacin del procesador son los siguientes e involucran a los conceptos detallados seguidamente: Ser justa: oTodos los procesos son tratados de igual manera. oNingn proceso es postergado indefinidamente. Maximizar la capacidad de ejecucin: oMaximizar el nmero de procesos servidos por unidad de tiempo. Maximizar el nmero de usuarios interactivos que reciban unos tiempos de respuesta aceptables: oEn un mximo de unos segundos. Ser predecible: oUn trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema. Minimizar la sobrecarga: oNo suele considerarse un objetivo muy importante. Equilibrar el uso de recursos: oFavorecer a los procesos que utilizarn recursos infrautilizados. Equilibrar respuesta y utilizacin: oLa mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan, pero la utilizacin total de recursos podr ser pobre. Evitar la postergacin indefinida: oSe utiliza la estrategia del envejecimiento . oMientras un proceso espera por un recurso su prioridad debe aumentar, as la prioridad llegar a ser tan alta que el proceso recibir el recurso esperado. Asegurar la prioridad: oLos mecanismos de planificacin deben favorecer a los procesos con prioridades ms altas. Dar preferencia a los procesos que mantienen recursos claves: oUn proceso de baja prioridad podra mantener un recurso clave, que puede ser requerido por un proceso de ms alta prioridad. oSi el recurso es no apropiativo, el mecanismo de planificacin debe otorgar al proceso un tratamiento mejor del que le correspondera normalmente, puesto que es necesario liberar rpidamente el recurso clave. Dar mejor tratamiento a los procesos que muestren un comportamiento deseable: oUn ejemplo de comportamiento deseable es una tasa baja de paginacin.

Degradarse suavemente con cargas pesadas: oUn mecanismo de planificacin no debe colapsar con el peso de una exigente carga del sistema. oSe debe evitar una carga excesiva mediante las siguientes acciones: No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. Dando servicio a la carga ms pesada al proporcionar un nivel moderadamente reducido de servicio a todos los procesos. CRITERIOS DE PLANIFICACIN -Equidad Garantizar que cada proceso obtiene su proporcin justa de la cpu. -Eficacia Mantener ocupada la cpu el ciento por ciento del tiempo. -Tiempo de respuesta Minimizar el tiempo de respuesta para los usuarios interactivos. -Tiempo de regreso Minimizar el tiempo que deben esperar los usuarios por lotes(batch) para obtener sus resultados. -Rendimiento Maximizar el nmero de tareas procesadas por hora.

Tcnicas de administracin del planificador


Las disciplinas de planificacin pueden ser: Expropiativas No expropiativas Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que haya tomar una decisin, el planificador debe decidir cul de los procesos que compiten por la posesin de un determinado recursos lo recibir.

Los algoritmos (tcnicas) tienen distintas propiedades segn los criterios en los que se basen para su construccin, lo cual se refleja en qu tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la eleccin de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseo elegido. Algunos de estos son: a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilizacin. Aunque puede parecer lgico intentar mantener este parmetro prximo al 100%, con un valor tan elevado otros aspectos importante de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera. b) Rendimiento: Es una medida del numero de procesos completados por unidad de tiempo. Por ejemplo 10 procesos por segundo. c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un proceso se crea o presenta hasta que completa por el sistema. d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador. Puede resultar una medida mas adecuada de la eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo. e) Tiempo de respuesta a un evento: Se denomina as el intervalo de tiempo que transcurre desde que se seala un evento hasta que se ejecuta la primera instruccin de la rutina de servicio de dicho evento. El criterio de seleccin de un algoritmo se suele basar en la maximizacin o minimizacin de una funcin de los parmetros anteriores.

Fifo

FIFO: First In First Out Mecanismo de scheduling en el cual los procesos se ordenan en una fila, en la cual se ejecutan cada uno de los procesos hasta su finalizacion secuencialmente. Es tremendamente ineficiente. Cuando se tiene que elegir a qu proceso asignar la CPU se escoge al que llevara ms tiempo listo. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente. Para implementar el algoritmo slo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sita el ltimo de la cola. FIFO

FIFO es el acrnimo ingls de First In, First Out (primero en entrar, primero en salir). Un sinnimo de FIFO es FCFS, acrnimo ingls de First Come First Served ( primero en llegar, primero en ser servido). Es un mtodo utilizado en estructuras de datos, contabilidad de costes y teora de colas. Guarda analoga con las personas que esperan en una cola y van siendo atendidas en el orden en que llegaron, es decir, que la primera persona que entra es la primera persona que sale. Informtica Esquema de funcionamiento de una cola FIFO.FIFO se utiliza en estructuras de datos para implementar colas. La implementacin puede efectuarse con ayuda de arrays o vectores, o bien mediante el uso de punteros y asignacin dinmica de memoria. Si se implementa mediante vectores el nmero mximo de elementos que puede almacenar est limitado al que se haya establecido en el cdigo del programa antes de la compilacin (cola esttica) o durante su ejecucin (cola pseudoesttica). Sea cual sea la opcin elegida, el nmero de elementos que podr almacenar la cola quedar determinado durante toda la ejecucin del programa. El sistema debe reservar el tamao de memoria necesario para acoger todos los datos, sea cual sea el nmero de elementos usados, lo que en algunas aplicaciones supone un despilfarro de la memoria. Sin embargo, si se usan punteros, el nmero mximo no est declarado sino que se hace un uso dinmico de la memoria, adaptndose al tamao necesario en cada momento en funcin de los elementos que hay en la cola. Uno de los usos de las colas es la exploracin en anchura de un rbol de bsqueda. Otro uso tpico de las colas, es la gestin de descargas de una aplicacin p2p. Como ejemplo de banderas de estado FIFO, se pueden enumerar: full (lleno), empty (vacio), almost full (casi lleno) o almost empty (casi vacio). FIFO FULL (LLENO)/EMPTY (VACIO) [editar]En el hardware FIFO se usa para propsitos de sincronizacin. Comportndose como una cola circular . Tiene dos punteros: 1. Puntero de Lectura/Registro de Direccin de Lectura 2. Puntero de Escritura/Registro de Direccin de Escritura

Las direcciones de lectura y escritura estn ambas inicialmente en la primer ubicacin de la memoria y la cola FIFO est Vaca. FIFO Vaca: Cuando registro de direccin de lectura alcanza al registro de direccin de escritura, la cola FIFO dispara la seal Vacio. FIFO Llena: Cuando el registro de direccin de escritura alcanza al registro de direccin de lectura, la cola FIFO dispara la seal LLENO.

SJF
Al igual que en el algoritmo FIFO las rfagas se ejecutan sin interrupcin, por tanto, slo es til para entornos batch. Su caracterstica es que cuando se activa el planificador, ste elige la rfaga de menor duracin. Es decir, introduce una nocin de prioridad entre rfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecucin de los procesos Nota: Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes del tiempo compartido. El proceso en espera con el menor tiempo estimado de ejecucin hasta su terminacin es el el siguiente en ejecutarse. Los tiempos promedio de espera son menores que con FIFO. Una vez que un proceso ejecuta no deja de hacerlo hasta que voluntariamente cambia de estado (no hay interrupcin por tiempo). Asocia a cada proceso el tiempo de CPU que habr de usar en su prxima vuelta y va a decidir por el ms pequeo. Si hubiera ms de uno utiliza FCFS para desempatar. El mayor problema de este algoritmo radica en el clculo de tiempo de uso de CPU. Este se puede aproximar a: Tn+1=a .tn+(1-a )Tn 0<a <1 Tiempo calculado en la vuelta n Prximo uso de CPU Tiempo usado en la vuelta n

El problema de este algoritmo es que el tiempo de espera para los procesos largos puede ser demasiado largo. Constantemente se estn entregando los procesos mas cortos y el ms grande nunca ser ejecutado. El FJS se puede subdividir en 2 tipos de algoritmos: PREEMPTIVO o NO PREEMPTIVO Preemptivo significa que si mientras un proceso se esta ejecutando, entra a la cola de ready un proceso mas corto, el proceso en la cola de ready se apropia de la CPU y comienza su ejecucin. La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalizacin promedio, como puede verse en el siguiente ejemplo: Supongamos que en un momento dado existen tres rfagas listos R1, R2 y R3, sus tiempos de ejecucin respectivos son 24, 3 y 3 ms. El proceso al que pertenece la rfaga R1 es la que lleva ms tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3. FIFO F = (24 + 27 + 30) / 3 = 27 ms. SJF F = (3 + 6 + 30) / 3 = 13 ms Priority Schedulling Asocia a cada proceso una prioridad. Luego selecciona el proceso con ms prioridad para desempatar. En caso de que hubiera dos o ms procesos con la misma prioridad, se usa FCFS para desempatar. Hay dos tipo de prioridad en los procesos: la prioridad externa definidas a travs del sistema operativo y la prioridad interna definida por el tiempo de uso de la CPU, el control de E/S, etc. Este algoritmo tambin se puede ejecutar de dos maneras: preemptivo y no preemptivo. El algoritmo soluciona el problema del looping pero el problema es que los procesos con prioridad muy baja tienen chance de no ejecutarse nunca. Para solucionar este problema de espera infinita el envejecimiento de un proceso eleva su prioridad.

Rr
Cada proceso tiene asignado un intervalo de tiempo de ejecucin, llamado cuantum o cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum tambin se alterna el uso de la CPU.

El round robin es muy fcil de implementar. Todo lo que necesita el planificador es mantener una lista de los procesos listos.

QUEVES MULTINIVEL
Un algoritmo de planificacin multinivel particiona la cola de listos en colas separadas. Se asignan en forma permanente los trabajos a una cola, generalmente, basndose en alguna propiedad del mismo (requerimientos de memoria, tipo de trabajo), teniendo cada cola su propio algoritmo. Por ejemplo, la cola interactiva podra planificarse usando RR y la batch FIFO. Ningn trabajo en una cola de baja prioridad puede ejecutarse si las colas con mayor prioridad no estn vacas. Si algn trabajo entra en una cola de mayor prioridad, el trabajo de otras colas es interrumpido.

MULTINIVEL FEEDBACK QUEVES

En colas multinivel realimentadas los trabajos pueden moverse dentro de distintas colas. La idea es separar procesos con distintos tipos de interrupciones de la CPU. Si un trabajo consume mucho tiempo de CPU, ser movido a una cola con menor prioridad. En forma similar, si un proceso espera demasiado tiempo en una cola de baja prioridad, lo moveremos a una cola de mayor prioridad. En general un planificador de este tipo esta definido por los siguientes parmetros: 1. El nmero de colas. 2. El tipo de algoritmo de planificacin de cada cola. 3. Un mtodo de determinacin de cuando mover un trabajo a una cola de mayor prioridad. 4. Un mtodo de determinacin de cuando mover un trabajo a una cola de menor prioridad.

5. Un mtodo de determinacin de a qu cola se enviar un trabajo cuando necesita servicio.

Administracin de la Memoria
La parte del sistema operativo que administra la memoria se llama administrador de la memoria. Para ello existen diferentes esquemas de administracin de memoria desde los mas simples hasta los mas elaborados entre los cuales se ubican: Administracin de la memoria sin intercambio o paginacin. Los sistemas de administracin de memoria se pueden clasificar en dos tipos. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecucin (intercambio y paginacin) y aquellos que no. Monopogramacin sin intercambio o paginacin. Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa, esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice. Multiprogramacin y uso de la memoria. La multiprogramacin facilita la programacin de una aplicacin al dividirla en dos o mas procesos. La mayora de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S. Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilstico dado por la frmula : Uso de la CPU = 1 pn Multiprogramacin con particiones fijas El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solucin posible sera dividir la memoria en n partes al inicio de una sesin de uso de la mquina, pero an as se obtiene el desperdicio de particiones grandes con una tarea pequea, la respuesta puede ser tener particiones pequeas tambin. Las tareas que van llegando se forman hasta que una particin adecuada est disponible, en cuyo momento la tarea se carga en esa particin y se ejecuta hasta terminar.

Intercambio En un sistema por lotes la organizacin de la memoria en particiones fijas es adecuado pero en un ambiente multiusuario la situacin es distinta con el tiempo compartido, ya que existen mas usuarios de los que puede albergar la memoria, por lo que es conveniente albergar el exceso de los procesos en disco., por supuesto para ser ejecutados estos procesos deben ser trasladados a la memoria principal. Al traslado de procesos de disco a memoria y viceversa se le llama intercambio. Multiprogramacin con particiones variables. Mediante un algoritmo de administracin de memoria las particiones variables varan de forma dinmica durante el uso de la mquina, evitando desperdicio de memoria Otros mtodos de administracin de memoria que tenemos son: la administracin de memoria con mapa de bits la memoria se divide en unidades de asignacin, a cada asignacin le corresponden un bit en el mapa de bits, un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria. la administracin de memoria con listas ligadas otra forma de mantener un registro en memoria es mediante una lista ligada donde cada entrada de la lista especfica un hueco o un proceso. la administracin de memoria con el sistema de los asociados basado en el sistema binario o utiliza para las direcciones. Memoria Virtual El mtodo diseado por Fotheringham en 1961 se conoce como Memoria Virtual, la idea es que el tamao combinado de la pila, programa y datos puede exceder la memoria fsica disponible para ello. El S.O. mantiene en memoria aquellas partes del programa que se deben permanecer en memoria y el resto lo deja en disco, las partes entre el disco y la memoria se intercambian de modo que se vayan necesitando.

Paginacin El espacio de direcciones de cada proceso se divide en bloques de tamao uniforme llamados pginas, los cuales se pueden colocar dentro de cualquier para pgina marco disponible en memoria. Cuando las tablas de pginas son muy grandes se puede utilizar un esquema de paginacin de varios niveles para que las pginas se paginen a s mismas. Existen distintos niveles de paginacin y a su vez distintos modelos de computadoras han trabajado con ellas. Paginacin de nivel 1: PDP11 Paginacin de 2 niveles: la VAX Paginacin de 3 niveles: la SPARC Paginacin de 4 niveles: la 68030 Memoria asociativa En los algoritmos de paginacin las tablas de pginas se mantienen en la memoria debido a su gran tamao, en potencia este diseo tiene un efecto enorme en el rendimiento. Algoritmos de reemplazo de pginas. Cuando ocurre un fallo de pgina el sistema operativo debe elegir una pgina para retirarla de la memoria y hacer un espacio para la pgina por recuperar. Si la pgina por eliminar fue modificada mientras estaba en memoria, debe escribirla en el disco para mantener actualizada la copia del disco, si por el contrario la pgina no ha sido modificada la copia del disco ya est actualizada por lo que no es necesario volver a escribir, la pgina por leer slo escribe encima de la pgina por retirar. Aunque es posible elegir una pgina al azar para el reemplazo relacionado con un fallo de pgina, el rendimiento del sistema es mucho mejor si se elige una pgina de poco uso. Algoritmo de reemplazo de pginas optimo Mejor algoritmo posible para reemplazo de pginas pero irrealizable en la prctica.

Al momento de ocurrir un fallo de pgina cierto conjunto de pginas se encuentran en la memoria, en la siguiente instruccin se har referencia a una de estas pginas, otras pginas no se utilizaran sino hasta mucho despus, cada pgina puede ejecutarse con el nmero de instrucciones ejecutadas antes de la primera referencia a esa pgina, el algoritmo dice que se elimine la pgina con la mayor etiqueta; si una pgina no va a utilizase sino hasta mucho despus que otra la eliminacin de la primera retrasa el fallo de pgina lo mas posible, el nico problema de este algoritmo es que es irrealizable. Al momento del fallo de pgina el S.O. no tiene forma de saber a qu pgina se hace referencia. Algoritmo de pgina de uso no muy reciente. En un fallo de pgina , el sistema operativo inspecciona todas las pginas y las divide en cuatro categoras segn los valores actuales de los bits R y M Clase 0: No se ha hecho referencia ni ha sido modificada Clase 1: No se ha hecho referencia pero ha sido modificada Clase 2: Se ha hecho referencia pero no ha sido modificada Clase 3: Se ha hecho referencia y ha sido modificada El algoritmo NRU implica una hiptesis que indica que es mejor eliminar una pgina modificada sin referencias al menos por lo general un intervalo de reloj, este algoritmo es fcil de comprender, de implantacin eficiente y con un rendimiento que, an sin ser el ptimo si es adecuado en muchos casos. Algoritmo de reemplazo primero en entrar, primero en salir FIFO El sistema operativo tiene una lista de todas las pginas que se encuentran en memoria, siendo la primera pgina la mas antigua y la ltima la mas reciente, en un fallo de pgina, se elimina la primera pgina y se aade la nueva al final de la lista. Algoritmo de reemplazo de pginas de la segunda oportunidad Una modificacin simple del FIFO que evita deshacerse de una pgina de uso frecuente inspecciona el bit R de la pgina mas antigua, busca una pgina antigua sin referencias durante el anterior intervalo de tiempo.

Algoritmo de reemplazo de pginas del reloj Aunque el anterior algoritmo es razonable un mejor enfoque es mantener las pginas en una lista circular con la forma de un reloj, una manecilla apunta hacia la mas antigua. Al ocurrir un fallo de pgina se inspecciona la pgina a la que apunta la manecilla si su bit R=0 se retira de la memoria, se inserta la nueva pgina en su lugar en el reloj y la manecilla avanza una posicin, si R=1 la manecilla avanza una posicin y el bit se limpia, esto continua hasta encontrar una pgina con R=0. Segmentacin Una memoria segmentada tiene otras ventajas como hacer mas sencilla la administracin de las estructuras de datos que crecen o se reducen, si cada procedimiento ocupa un segmento independiente con la posicin inicial cero el ligado independiente de los procesos compilados es mucho mas sencillo. Bit que se activa si se hace referencia a la pgina en cuestin Bit que se activa si se modifica la pgina.

POLITICA Y FILOSOFIA
Filosofa: La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamao. Cada localidad de almacenamiento tiene asignada una direccin que la identifica. Una de las funciones bsicas que debe implementar un SO es la Administracin de la Memoria para tener un control sobre los lugares donde estn almacenados los procesos y datos que actualmente se estn utilizando. Sea cual sea es esquema de organizacin del almacenamiento que se adopte para un sistema especfico, es necesario decidir que estrategias se deben utilizar para obtener un rendimiento ptimo .las estrategias de administracin del almacenamiento determinan el comportamiento de la administracin de memoria cuando se siguen ciertas polticas:

Cundo se toma un nuevo programa para colocarlo en memoria? Se toma el programa cuando el sistema lo solicita especficamente o se intenta anticiparse alas particiones del sistema? En que lugar del almacenamiento principal se coloca el programa por ejecutar? Se colocan los programas lo ms cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mnimo el
desperdicio de espacio, o se colocan los programas lo ms rpido posible para reducir al mnimo el tiempo de ejecucin?

Si se necesita colocar un nuevo programa en el almacenamiento principal y ste est lleno, Cul de los otros programas se desaloja? Se han realizado sistemas que utilizan cada una de estas estrategias de administracin. Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario. Unix permite procesos mltiples y en un proceso puede generar otro fcilmente. La planificacin del procesador usa un algoritmo basado en prioridades. La administracin de memoria es un algoritmo de regiones variables con intercambios. Inicialmente los algoritmos realizados se eligieron por sencillez, no por velocidad ni complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeo de memoria. Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX intercambiaba el contenido en memoria de los procesos. POLTICAS. FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La poltica FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una poltica de prioridades y hay procesos con la misma prioridad, a estos se les podra aplicar FIFO.

Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos. SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podran llegar a rezagarse mucho tiempo e incluso nunca ejecutarse. SRT (Sortest remaining time scheduling Tiempo restante ms corto): En SJF una vez que un proceso comienza su ejecucin continua hasta terminar. En SRT, un proceso en ejecucin puede ser desposedo por uno nuevo de menor tiempo de ejecucin. HRN: (highest response ratio next Prioridad de la tasa de respuesta ms alta): Poltica no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para as no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en funcin del tiempo de servicio sino tambin del tiempo que ha esperado para ser atendido.

MEMORIA REAL La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la informacin contenida en ella es de ms rpido acceso. Solo la memoria cache es ms rpida que la principal, pero su costo es a su vez mayor. 1.2.2.- Administracin de la memoria con mapas de bits Este tipo de administracin divide la memoria en unidades de asignacin, las cuales pueden ser tan pequeas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignacin le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad est libre y 1 si est ocupada (o viceversa). La figura 6 muestra una parte de la memoria y su correspondiente mapa de bits. Fig. 6. Ejemplo de un mapa de bits para la administracin de la memoria.

Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamao del mapa slo depende del tamao de la memoria y el tamao de la unidad de asignacin. 1.2.3.- Administracin de la memoria con listas ligadas Otra forma de mantener un registro de la memoria es mediante una lista ligada de los segmentos de memoria asignados o libres, en donde un segmento puede ser un proceso o un hueco entre dos procesos. La memoria de la figura 7(a) est mostrada como una lista ligada de segmentos en la figura 7(b). Cada entrada de la lista especifica un hueco (H) o un proceso (P), la direccin donde comienza, su longitud y un apuntador a la siguiente entrada. Fig. 7. Ejemplo de listas ligadas. En este ejemplo, la lista de segmentos est ordenada por direcciones, lo que da la ventaja de que al terminar o intercambiar un proceso, la actualizacin de la lista es directa. 1.2.4.- Asignacin del hueco de intercambio En algunos sistemas, cuando el proceso se encuentra en la memoria, no hay un hueco en el disco asignado a l. Cuando deba intercambiarse, se deber asignar un hueco para l en el rea de intercambio del disco. Los algoritmos para la administracin del hueco de intercambio son los mismos que se utilizan para la administracin de la memoria principal. En otros sistemas, al caerse un proceso, se le asigna un hueco de intercambio en el disco. Cuando el proceso sea intercambiado, siempre pasar al hueco asignado, en vez de ir a otro lugar cada vez. Cuando el proceso concluya, se libera el hueco de intercambio. La nica diferencia es que el hueco en disco necesario para un proceso debe representarse como un nmero entero de bloques del disco. Por ejemplo, un proceso de 13.5 K debe utilizar 14K (usando bloques de 1K).

ADMINISTRACION ALMACENAMIENTO

Si hay una cosa que toma la mayor parte del da de un administrador de sistemas, esto es la administracin del almacenamiento. Pareciera que los discos nunca tienen espacio suficiente, que se sobrecargan con actividad de E/S o que fallan repentinamente. Por eso es

vital tener un conocimiento prctico slido del almacenamiento en disco para poder ser un administrador de sistemas exitoso. Una vista general del hardware de almacenamiento Antes de administrar el almacenamiento, primero es necesario entender el hardware en el que estn almacenados los datos. A menos que posea un algn conocimiento sobre la operacin de los dispositivos de almacenamiento masivo, quizs se encuentre en una situacin donde tenga un problema relacionado al almacenamiento pero le falte el conocimiento de fondo para si quiera entender lo que ve. Al tener un entendimiento sobre la forma en que opera el hardware subyacente, podr ms fcilmente determinar si el subsistema de almacenamiento de su computador est funcionando correctamente. La gran mayora de los dispositivos de almacenamiento masivo utilizan alguna forma de media de rotacin y soportan el acceso aleatorio de los datos en esa media. Esto significa que los componentes siguientes estn presentes en alguna forma dentro de casi todos los dispositivos de almacenamiento masivo:

Plato del disco Dispositivo de lectura/escritura de datos Brazos de acceso

Las secciones siguientes exploran con ms detalles cada uno de estos componentes. Platos de discos La media rotativa utilizada por casi todos los dispositivos de almacenamiento masivo estn en la forma de uno o ms platos planos y de forma circular. El plato puede estar compuesto de cualquier nmero de materiales diferentes, tales como aluminio, vidrio y policarbonatos. La superficie de cada plato se trata de forma que permita el almacenamiento de datos. La naturaleza exacta del tratamiento va a depender de la tecnologa de almacenamiento de datos utilizada. La tecnologa de almacenamiento de datos ms comn est basada en la propiedad de magnetismo; en estos casos los platos se cubren con un compuesto que presenta buenas caractersticas magnticas. Otra tecnologa de almacenamiento de datos comn est basada en principios pticos; en estos casos, los platos se cubren con materiales cuyas propiedades pticas pueden ser modificadas, y en consecuencia, permitiendo almacenar datos pticamente[1].

Sin importar la tecnologa de almacenamiento utilizada, los platos del disco se giran , causando que su superficie completa barra ms all de otro componente - el dispositivo de lectura/escritura. Dispositivo de lectura/escritura de datos El dispositivo de lectura/escritura es el componente que toma los bits y bytes en los que opera un sistema computacional y los convierte en las variaciones magnticas u pticas necesarias para interactuar con los materiales que cubren la superficie de los platos de discos. Algunas veces las condiciones bajo las cuales estos dispositivos deben operar son difciles. Por ejemplo, en un almacenamiento masivo basado en magnetismo, los dispositivos de lectura/escritura (conocidos como cabezales), deben estar muy cerca de la superficie del plato. Sin embargo, si el cabezal y la superficie del plato del disco se tocan, la friccin resultante provocara un dao severo tanto al cabezal como al plato. Por lo tanto, las superficies tanto del cabezal como del plato son pulidas cuidadosamente y el cabezal utiliza aire a presin desarrollado por los platos que giran para flotar sobre la superficie del plato, flotando a una altitud no menor que el grueso de un cabello humano. Por eso es que las unidades de discos magnticos son muy sensibles a choques, cambios drsticos de temperaturas y a la contaminacin del aire. Los retos que enfrentan los cabezales pticos son de alguna manera diferentes de aquellos para los cabezales magnticos - aqu, el ensamblado de la cabeza debe permanecer a una distancia relativamente constante de la superficie del plato. De lo contrario, los lentes utilizados para enfocarse sobre el plato no producen una imagen lo suficientemente definida. En cualquier caso, las cabezas utilizan una cantidad muy pequea del rea de superficie del plato para el almacenamiento de datos. A medida que el plato gira por debajo de las cabezas, esta rea de superficie toma la forma de una lnea circular muy delgada. Si es as como los dispositivos de almacenamiento masivo funcionan, significa que ms del 99% de la superficie del plato se desperdiciara. Se pueden montar cabezas adicionales sobre el plato, pero para utilizar completamente el rea de superficie del plato se necesitan ms de mil cabezales. Lo que se requiere es algn mtodo de mover los cabezales sobre la superficie del plato. Brazos de acceso

Utilizando una cabeza conectada a un brazo que sea capaz de barrer sobre la superficie completa del plato, es posible utilizar completamente el plato para el almacenamiento de datos. Sin embargo, el brazo de acceso debe ser capaz de dos cosas:

Moverse rpidamente Moverse con gran precisin

El brazo de acceso se debe mover lo ms rpido posible, pues el tiempo que se pierde moviendo el cabezal desde una posicin a la otra es tiempo perdido. Esto se debe a que no se pueden leer o escribir datos hasta que el brazo se detenga[2]. El brazo de acceso debe ser capaz de moverse con gran precisin porque, como se mencion anteriormente, el rea de superficie utilizada por los cabezales es muy pequea. Por lo tanto, para usar eficientemente la capacidad de almacenamiento del plato, es necesario mover las cabezas solamente lo suficiente para asegurar que cualquier datos escrito en la nueva posicin no sobreescribe los datos escritos en la posicin previa. Esto tiene el efecto de dividir conceptualmente la superficie del plato en miles o ms aros concntricos o pistas. El movimiento del brazo de acceso desde una pista a la siguiente a menudo se conoce como bsqueda y el tiempo que toma el brazo de acceso para moverse de una pista a otra se le conoce como tiempo de bsqueda. Cuando existen mltiples platos (o un plato que con ambas superficies utilizadas para almacenamiento de datos), se apilan los brazos para cada superficie, permitiendo que se pueda acceder a la misma pista en cada superficie simultneamente. Si se pueden visualizar las pistas para cada superficie con el acceso estacionario sobre una pista dada, apareceran como que estn apiladas una sobre la otra, haciendo una forma cilndrica; por tanto, el conjunto de pistas accesibles en una posicin dada de los brazos de acceso se conocen como cilindro.

JERARQUIA Se conoce como jerarqua de memoria a la organizacin piramidal de la memoria en niveles, que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basndose en el principio de cercana de referencias. Los puntos bsicos relacionados con la memoria pueden resumirse en:

Cantidad Velocidad

Coste

La cuestin de la cantidad es simple, cuanto ms memoria haya disponible, ms podr utilizarse. La velocidad ptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre clculo y clculo, utilizados para traer operandos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible. Como puede esperarse los tres factores compiten entre s, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son vlidas:

A menor tiempo de acceso mayor coste A mayor capacidad mayor coste A mayor capacidad menor velocidad.

Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercana de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria ms rpida. Los niveles que componen la jerarqua de memoria habitualmente son:

Nivel 0: Registros Nivel 1: Memoria cach Nivel 2: Memoria principal Nivel 3: Disco duro (con el mecanismo de memoria virtual)

Nivel 4: Redes(Actualmente se concidera un nivel mas de la jerarquia de memorias)

Administracion de memoria
La administracin de memoria se refiere a los distintos mtodos y operaciones que se encargan de obtener la mxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible. Para poder lograrlo, la operacin principal que realiza es la de trasladar la informacin que deber ser ejecutada por el procesador, a la memoria principal. Actualmente esta administracin se conoce como Memoria Virtual ya que no es la memoria fsica del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria ms extensa teniendo la misma memoria real, con lo que esta se puede utilizar de

manera ms eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario. Las tcnicas que existen para la carga de programas en la memoria son: particin fija, que es la divisin de la memoria libre en varias partes (de igual o distinto tamao) y la particin dinmica, que son las particiones de la memoria en tamaos que pueden ser variables, segn la cantidad de memoria que necesita cada proceso. Entre las principales operaciones que desarrolla la administracin de memoria se encuentran la reubicacin, que consiste en trasladar procesos activos dentro y fuera e la memoria principal para maximizar la utilizacin del procesador; la proteccin, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de cdigos y datos, con lo que el mecanismo de proteccin permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en comn

pregunta 1
Filosofa: La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamao. Cada localidad de almacenamiento tiene asignada una direccin que la identifica. Una de las funciones bsicas que debe implementar un SO es la Administracin de la Memoria para tener un control sobre los lugares donde estn almacenados los procesos y datos que actualmente se estn utilizando. Sea cual sea es esquema de organizacin del almacenamiento que se adopte para un sistema especfico, es necesario decidir que estrategias se deben utilizar para obtener un rendimiento ptimo .las estrategias de administracin del almacenamiento determinan el comportamiento de la administracin de memoria cuando se siguen ciertas polticas: Cundo se toma un nuevo programa para colocarlo en memoria? Se toma el programa cuando el sistema lo solicita especficamente o se intenta anticiparse alas particiones del sistema? En que lugar del almacenamiento principal se coloca el programa por ejecutar? Se colocan los programas lo ms cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mnimo el

desperdicio de espacio, o se colocan los programas lo ms rpido posible para reducir al mnimo el tiempo de ejecucin?

Si se necesita colocar un nuevo programa en el almacenamiento principal y ste est lleno, Cul de los otros programas se desaloja? Se han realizado sistemas que utilizan cada una de estas estrategias de administracin. Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario. Unix permite procesos mltiples y en un proceso puede generar otro fcilmente. La planificacin del procesador usa un algoritmo basado en prioridades. La administracin de memoria es un algoritmo de regiones variables con intercambios. Inicialmente los algoritmos realizados se eligieron por sencillez, no por velocidad ni complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeo de memoria. Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos, por lo que UNIX intercambiaba el contenido en memoria de los procesos. POLTICAS. FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La poltica FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una poltica de prioridades y hay procesos con la misma prioridad, a estos se les podra aplicar FIFO. Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos. SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podran llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.

SRT (Sortest remaining time scheduling Tiempo restante ms corto): En SJF una vez que un proceso comienza su ejecucin continua hasta terminar. En SRT, un proceso en ejecucin puede ser desposedo por uno nuevo de menor tiempo de ejecucin. HRN: (highest response ratio next Prioridad de la tasa de respuesta ms alta): Poltica no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para as no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en funcin del tiempo de servicio sino tambin del tiempo que ha esperado para ser atendido.

Memoria real administracion de almacenamiento jerarquia estrategia de admministracion de memoria asignacion contigua vs no contigua multiprogramacion de particion fija

Paginacin Anticipada El S. O. intenta predecir las pginas que un proceso va a necesitar y a continuacin precarga estas pginas cuando hay espacio disponible [7, Deitel]. Mientras el proceso ejecuta sus pginas actuales, el sistema carga pginas nuevas que estarn disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecucin de un proceso se puede reducir.

Inicio:

Fin:

Liberacin de Pgina y Tamao de Pgina


Liberacin de Pgina

Un proceso usuario puede emitir una liberacin voluntaria de pgina para liberar el marco de pgina cuando ya no necesitara esa pgina [7, Deitel]. Se puede eliminar el desperdicio y acelerar la ejecucin. El inconveniente es que la incorporacin de mandatos de liberacin de pginas dentro de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones. Los compiladores y S. O. deberan detectar automticamente situaciones de liberacin de pgina mucho antes de lo que es posible con estrategias de conjuntos de trabajo.

Inicio:

Fin:

Tamao de Pgina Generalmente el almacenamiento real se divide en marcos o celdas de pgina de tamao fijo [7, Deitel]. Los interrogantes tienen que ver con el tamao de las pginas, si todas las pginas tendrn igual tamao, si en caso de utilizar pginas de diferente tamao las pginas mayores deben ser o no mltiplos enteros de las menores, etc. Algunas consideraciones para determinar el tamao de pgina son las siguientes: Cuanto ms pequeo sea el tamao de una pgina, ms pginas y marcos de pginas habr y mayores sern las tablas de pginas: El desperdicio de almacenamiento debido al tamao excesivo de las tablas de pgina se llama fragmentacin de tablas. Esto indica la necesidad de pginas ms grandes. Con pginas grandes, grandes cantidades de informacin que nunca llegara a ser referenciada, se paginarn hacia el almacenamiento primario: Esto indica la necesidad de pginas ms pequeas. Debido a que las transferencias de e / s del disco (paginacin) consumen bastante tiempo, se debe minimizar la paginacin que un proceso requiera: Esto indica la necesidad de pginas grandes. Los programas tienden a mostrar la propiedad de localidad de referencia y esta localidad tiende a ser pequea: Esto indica la necesidad de pginas pequeas. Los procedimientos y datos rara vez comprenden un nmero entero de pginas, por lo que los sistemas de paginacin experimentan una fragmentacin interna: El desperdicio promedio es de 1 / 2 pgina no usada por segmento (grupo) de pginas, que estar en la ltima pgina del segmento. Esto indica la necesidad de pginas pequeas. Los tamaos de pagina mas utilizados son: 512 b, 1 kb, 2 kb, 4 kb.

Inicio:

Fin:

Comportamiento de un Programa en la Paginacin


Respecto del porcentaje de las pginas de un proceso tpico referenciadas desde el momento de iniciarse su ejecucin [7, Deitel]: Un proceso tiende a hacer referencia a una parte significativa de sus pginas inmediatamente despus de iniciar su ejecucin. El proceso puede concluir sin haber referenciado a algunas de sus pginas, correspondientes a rutinas que atienden errores que no se produjeron. Respecto de variar el tamao de la pgina manteniendo constante la cantidad de almacenamiento primario: El nmero de fallos de pginas experimentados por un proceso en ejecucin tiende a aumentar con el tamao de la pgina, debido a que se traen al almacenamiento primario un mayor nmero de procedimientos y datos que no sern referenciados, restando lugar para los que s lo sern. Respecto de cmo el promedio de tiempo interfallos (tiempo entre fallos de pgina) vara al aumentar el nmero de marcos de pgina asignados al proceso: Cuanto ms marcos de pgina tenga un proceso, mayor ser el tiempo entre los fallos de pginas. El punto de inflexin se da cuando el proceso tiene todo su conjunto de trabajo en el almacenamiento primario. Asignar marcos de pgina adicionales ms all del punto de inflexin no produce efectos significativos sobre el tiempo interfallos. Respecto del porcentaje de instrucciones de una pgina que son ejecutadas antes de transferirse el control a otra pgina, los valores experimentales obtenidos indican un mximo de 200 instrucciones por pgina de 1 kb (ver Figura 3.39 [7, Deitel]). ADMINISTRACIO ADMINISTRACION DE ENTRADA Y SALIDA El subsistema de administracin de E/S controla todas las entradas y salidas del sistema informtico. Para la seguridad, las tareas ms importantes que lleva a cabo el subsistema de administracin de E/S son: 1.- administrar la transferencia de datos. 2.- aplicar los controles de acceso (los mecanismos DAC) a los datos mientras se estn transfiriendo.

DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos: Dispositivos de interfaz de usuario. Se llama as a los dispositivos que permiten la comunicacin entre los usuarios y la computadora. Dentro de este grupo se incluyen todos los dispositivos que sirven para proporcionar interfaz con el usuario, tanto para entrada (ratn, teclado, etc.) como para salida (impresoras, pantalla, etc.). Existen perifricos menos habituales, pero ms sofisticados, tales como un escner, lectores de huella digital, lectores de cinta magntica, instrumentos musicales digitales (MIDI), etc. Dispositivos de almacenamiento. Se usan para proporcionar almacenamiento no voltil de datos y memoria. Su funcin primordial es abastecer de datos y almacenamiento a los programas que se ejecutan en la UCP. Segn su capacidad y la inmediatez con que se puede acceder a los datos almacenados en estos dispositivos, se pueden dividir en almacenamiento secundario (discos y disquetes) y terciario (cintas) Dispositivos de comunicaciones. Permiten conectar a la computadora con otras computadoras a travs de una red. Los dos tipos de dispositivos ms importantes de esta clase son los mdem, para comunicacin va red telefnica, y las tarjetas de interfaz a la red, para conectar la computadora a una red de rea local. El sistema de E/S es la parte del sistema operativo que se ocupa de facilitar el manejo de los dispositivos de E/S ofreciendo una visin lgica simplificada de los mismos que pueda ser usada por otros componentes del sistema operativo (como el sistema de archivos) o incluso por el usuario. Mediante esta visin lgica se ofrece a los usuarios un mecanismo de abstraccin que oculta todos los detalles relacionados con los dispositivos fsicos, as como del funcionamiento real de los mismos. El sistema operativo debe controlar el funcionamiento de todos los dispositivos de E/S para alcanzar los siguientes objetivos: Facilitar el manejo de los dispositivos de E/S. Para ello debe ofrecer una interfaz entre los dispositivos y el resto del sistema que sea sencilla y fcil de utilizar. Optimizar la E/S del sistema, proporcionando mecanismos de incremento de prestaciones donde sea necesario. Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de dispositivo fsico sin que sea necesario remodelar el sistema de E/S del sistema operativo. Permitir la conexin de dispositivos nuevos de E/S, solventando de forma automtica su instalacin usando mecanismos del tipo plug&play. Conexin de un dispositivo de E/S a una computadora En la siguiente figura se muestra el esquema general de conexin de perifricos a una computadora. En el modelo de un perifrico se distinguen dos elementos:

Perifricos o dispositivos de E/S. Elementos que se conectan a la unidad central de proceso a travs de las unidades de entrada/salida. Son el componente mecnico que se conecta a la computadora. Controladores de dispositivos o unidades de E/S. Se encargan de hacer la transferencia de informacin entre la memoria principal y los perifricos. Son el componente electrnico a travs del cual se conecta el dispositivo de E/S. Tienen una conexin al bus de la computadora y otra para el dispositivo (generalmente mediante cables internos o externos). Para empezar una operacin de E/S, la UCP tiene que escribir sobre los registros anteriores los datos de la operacin a travs de una direccin de E/S o de memoria asignada nicamente al controlador. Segn se haga de una u otra forma, se distingue entre dispositivos conectados por puertos o proyectados en memoria. El modelo de dispositivos por puertos es clsico en las arquitecturas de Intel. En ellas, cuando se instala un dispositivo, a su controlador se le asigna un puerto de E/S, una interrupcin hardware y un vector de interrupcin. Para efectuar una operacin de E/S la UCP ejecuta operaciones por o portout con la direccin de puerto del dispositivo y con parmetros para indicar qu registro se quiere manipular. Todas las operaciones de entrada/salida (pantalla grfica, impresoras, ratn, discos, etc.) se realizan usando esas dos instrucciones de lenguaje mquina con los parmetros adecuados. El problema de este tipo de direccionamiento es que exige conocer las direcciones de E/S y programar las instrucciones especiales de E/S, lo que es significativamente distinto del modelo de memoria de la computadora. El otro modelo de direccionamiento de E/S es el modelo proyectado en memoria. Este modelo, tpico de las arquitecturas de Motorola, asigna a cada dispositivo de E/S un rango de direcciones de memoria a travs de las cuales se escribe sobre los registros del controlador. En este modelo no hay instrucciones especficas de E/S, sino que las operaciones se llevan a cabo mediante instrucciones mquina de manejo de memoria, lo que permite gestionar un mapa nico de direcciones de memoria. Sin embargo, para no tener conflictos con otros accesos a memoria y para optimizar las operaciones, se reserva una zona de memoria fsica para asignar las direcciones de E/S. Los dispositivos de almacenamiento secundario y terciario manejan la informacin en unidades de tamao fijo, denominadas bloques, por lo que a su vez se denominan dispositivos de bloques. Estos bloques se pueden direccionar de manera independiente, lo que permite leer o escribir un bloque con independencia de los dems. Los dispositivos de bloque lo son porque el hardware fuerza la existencia de accesos de un tamao determinado. Un disco, por ejemplo, se divide en sectores de 512 bytes o de 1 KB, siendo un sector la unidad mnima de transferencia que el controlador del disco puede manejar. Los dispositivos de caracteres, como los terminales, impresoras, tarjetas de red, mdems, etctera, no almacenan informacin en bloques de tamao fijo. Gestionan flujos de caracteres de forma lineal y sin ningn tipo de estructura de bloque. Un teclado es un buen ejemplo de estos dispositivos. Est conectado a una UART (Universal Asynchronous Receiver/Transmiter) que recibe un carcter del teclado cada vez que se pulsa una tecla. No es posible leer un bloque de teclas de un golpe o buscar dentro del dispositivo por ninguna unidad. Un terminal por lnea serie tambin es un dispositivo de caracteres. Su controlador se limita a enviar al perifrico el flujo de caracteres que debe representar en la pantalla y a recibir del mismo los caracteres tecleados por el usuario.

Un controlador de dispositivo (llamado normalmente controlador, o, en ingls, driver) es un programa informtico que permite al sistema operativo interactuar con un perifrico, haciendo una abstraccin del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica cmo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podra usar el hardware. Existen tantos tipos de controladores como tipos de perifricos, y es frecuente encontrar ms de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la pgina web del fabricante), se pueden encontrar tambin los proporcionados por el sistema operativo, o tambin versiones no oficiales hechas por terceros. Estos controladores pueden ser genricos (vlidos para ms de un modelo del mismo perifrico) o especficos para cada modelo. Tambin se distribuyen actualizaciones a nuevas versiones, que pueden dar un mejor funcionamiento. Normalmente son los fabricantes del hardware quienes escriben sus controladores, ya que conocen mejor el funcionamiento interno de cada aparato, pero tambin se encuentran controladores libres, por ejemplo en los sistemas operativos libres. En este caso, los creadores no son de la empresa fabricante, aunque a veces hay una cooperacin con ellos, cosa que facilita el desarrollo. Si no la hay, el procedimiento necesita de ingeniera inversa y otros mtodos difciles o con riesgos legales. Los controladores son muy variados, casi tanto como los dispositivos de E/S. Muchos de ellos, como los de disco, pueden controlar mltiples dispositivos. Otros, como los de canales de E/S, incluyen su propia UCP y bus para controlar la E/S por programa y evitar interrupciones en la UCP de la computadora. De cualquier forma, en los ltimos aos ha existido un esfuerzo importante de estandarizacin de los dispositivos, lo que permite usar un mismo controlador para dispositivos de distintos fabricantes. Un buen ejemplo lo constituyen los dispositivos SCSI (Srna Il? Computer Svstern interftice), cuyos controladores ofrecen una interfaz comn independientemente de que se trate de un disco, una cinta, un CD-ROM, etc. Otro buen ejemplo son los controladores IDE (In tegrated Drive Electronics), que suelen usarse para conectar los discos en todas las computadoras personales. En cualquier caso, y sea como sea el controlador, su misin es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a travs de una interfaz de programacin bien definida. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categoras o clases: Adaptadores de audio (tarjetas de sonido). Dispositivos de comunicacin (infrarrojos, mdems, etc). Dispositivos de visualizacin; pantallas (displays). Teclados. Ratn (mouse y otros sealadores grficos). Dispositivos multimedia.

Dispositivos de Red. Impresoras. Almacenamiento

mecanismos y funciones de los manejadores de dispositivos (device drivers)

El controlador es el componente ms importante desde el punto de vista del sistema operativo, ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde la UCP. El S. O. generalmente trabaja con el controlador y no con el dispositivo. Los modelos ms frecuentes de comunicacin entre la cpu y los controladores son: -Para la mayora de las micro y mini computadoras: Modelo de bus del sistema. -Para la mayora de los mainframes: Modelo de varios buses y computadoras especializadas en e/s llamadas canales de e/s. La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel: -La comunicacin es mediante un flujo de bits en serie que: Comienza con un prembulo. Sigue con una serie de bits (de un sector de disco, por ej.). Concluye con una suma para verificacin o un cdigo corrector de errores. -El prembulo: Se escribe al dar formato al disco. Contiene el nmero de cilindro y sector, el tamao de sector y otros datos similares. El controlador debe: -Convertir el flujo de bits en serie en un bloque de bytes. -Efectuar cualquier correccin de errores necesaria. -Copiar el bloque en la memoria principal. Cada controlador posee registros que utiliza para comunicarse con la cpu: Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria. Pueden utilizar un espacio de direcciones especial para la e/s, asignando a cada controlador una parte de l. El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parmetros de los comandos tambin se cargan en los registros de los controladores. Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca una interrupcin para permitir que el S. O.: -Obtenga el control de la cpu. Verifique los resultados de la operacin. La cpu obtiene los resultados y el estado del dispositivo al leer uno o ms bytes de informacin de los registros del controlador. Su programacin se lleva a cabo mediante una interfaz de muy bajo nivel que proporciona acceso a una serie de registros del controlador, incluidos en el mapa de E/S de la computadora, que se pueden acceder mediante instrucciones de mquina de E/S. Hay tres registros importantes en casi todos los controladores: registro de datos, estado y control. El registro de datos sirve para el intercambio de datos. En l ir el controlador cargando los datos ledos y de l ir extrayendo los datos para su escritura en el perifrico. Un bit del registro de estado sirve para indicar que el controlador puede transferir una palabra. En las operaciones de lectura esto significa que ha cargado en el registro de datos un nuevo valor, mientras que en las de escritura significa que necesita un nuevo dato. Otros bits de este registro sirven para que el controlador indique los problemas que ha encontrado en la ejecucin de la ltima operacin de E/S. El registro de control sirve para indicarle al controlador las operaciones que ha de realizar. Los distintos bits de este

registro indican distintas acciones que ha de realizar el perifrico. Para empezar una operacin de E/S, la UCP tiene que escribir sobre los registros anteriores los datos de la operacin a travs de una direccin de E/S o de memoria asignada nicamente al controlador. Este modelo vale tanto para los terminales o la pantalla como para los discos. Las caractersticas del controlador son muy importantes, ya que definen el aspecto del perifrico para el sistema operativo. Atendiendo a las caractersticas del hardware de los dispositivos, se pueden observar los siguientes aspectos distintivos: Direccin de E/S. En general hay dos modelos de direccionamiento de E/S, los que usan puertos y los que proyectan los registros en memoria. Unidad de transferencia. Los dispositivos suelen usar unidades de transferencia de tamao fijo. Hay dos modelos clsicos de dispositivos: de caracteres y de bloques. Interaccin computadora-controlador. La computadora tiene que interaccionar con la computadora para realizar las operaciones de E/S y saber cundo terminan. Un controlador de dispositivo o unidad de E/S se encarga de controlar uno o ms dispositivos del mismo tipo y de intercambiar informacin entre ellos y la memoria principal o unidad central de proceso de la computadora. El controlador debe encargarse adems de sincronizar la velocidad del procesador con la del perifrico y de detectar los posibles errores que se produzcan en el acceso a los perifricos. En el caso de un controlador de disco, ste debe encargarse de convertir un flujo de bits procedente del disco a un bloque de bytes detectando y corrigiendo, si es posible, los errores que se produzcan en esta transferencia. Una vez obtenido el bloque y comprobado que se encuentra libre de errores, deber encargarse de transferirlo a memoria principal. La informacin entre los controladores de dispositivo y la unidad central de proceso o memoria principal se puede transferir mediante un programa que ejecuta continuamente y lee o escribe los datos del (al) controlador. Con esta tcnica, que se denomina E/S programada, la transferencia de informacin entre un perifrico y el procesador se realiza mediante la ejecucin de una instruccin de E/S. Con esta tcnica, es el procesador el responsable de extraer o enviar datos entre el procesador y el controlador de dispositivo, lo que provoca que el procesador tenga que esperar mientras se realiza la transferencia entre el perifrico y el controlador. Dado que los perifricos son sensiblemente ms lentos que el procesador, ste deber esperar una gran cantidad de tiempo hasta que se complete la operacin de E/S. En este caso no existe ningn tipo de concurrencia entre la E/S y el procesador ya que ste debe esperar a que finalice la operacin. Aunque esta tcnica es muy antigua, ya que proviene del tiempo en que los controladores no tenan interrupciones, actualmente los canales de E/S y algunos multiprocesadores usan esta tcnica para evitar que lleguen a la UCP de la computadora muchas interrupciones de E/S. En ambos casos, la tcnica es la misma: dedicar una UCP especial para la E/S. La forma de hacerlo es muestrear continuamente los registros de estado de los controladores para ver si estn disponibles y, en ese caso, leer o escribir los registros. Imagine un canal de E/S al que hay conectados mltiples buses de E/S que, a su vez, tienen mltiples dispositivos de E/S. Si la UCP quiere escribir en uno de ellos, debe mirar su registro de estado hasta que los bits indiquen que no est ocupado. Cuando esto ocurra, escribir un bloque en los registros del controlador y esperar hasta que los bits de estado indiquen que est disponible. Imagine que quiere leer de otro controlador, deber esperar a que los bits de estado le indiquen que est disponible, programar la operacin y esperar a que se indique que los

datos estn disponibles. Evidentemente, incluso aunque la UCP est controlando varios dispositivos de E/S, siempre existe prdida de ciclos debido a la existencia de las esperas. Sin embargo, existen situaciones en que esto no es as. Hay que recalcar que el controlador al ser una parte crtica del sistema operativo, el fallo de un controlador puede ser ms grave que otros errores de software, pudiendo bloquear el ordenador o incluso daar el hardware. Debido a que el hardware es (necesariamente) indeterminista, encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no slo hay que monitorizar el programa, sino tambin el propio dispositivo.

Estructuras de datos para manejo de dispositivos.

Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Cuando un proceso solicita una operacin de E/S, el sistema operativo prepara dicha operacin y bloquea al proceso hasta que se recibe una interrupcin del controlador del dispositivo indicando que la operacin est completa. Las peticiones se procesan de forma estructurada en las siguientes capas: Manejadores de interrupcin. Manejadores de dispositivos o drivers. Software de EIS independiente de los dispositivos. Este software est formado por la parte de alto nivel de los manejadores, el gestor de cache, el gestor de bloques y el servidor de archivos. Interfaz del sistema operativo. Llamadas al sistema que usan las aplicaciones de usuario. El sistema operativo estructura el software de gestin de E/S de esta forma para ofrecer a los usuarios una serie de servicios de E/S independientes de los dispositivos. Esta independencia implica que deben emplearse los mismos servicios y operaciones de E/S para leer datos de un disquete, de un disco duro, de un CD-ROM o de un teclado. Manejadores de interrupcin Los manejadores de interrupcin se encargan de tratar las interrupciones que generan los controladores de dispositivos una vez que stos estn listos para la transferencia de datos o bien han ledo o escrito los datos de memoria principal en caso de acceso directo a memoria. Para tratar dicha interrupcin se ejecuta el correspondiente manejador de interrupcin cuyo efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecucin de un proceso (que no tiene por qu ser el interrumpido). Los manejadores de interrupcin suelen hacer algo ms que comunicar el evento al manejador de dispositivo. Cuando una interrupcin ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de informacin a transferir es muy pequea, caso del teclado, sera muy costoso comunicar siempre el evento al manejador de dispositivo asociado. En estos casos, el propio

manejador de interrupcin registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulacin de caracteres en un buffer del teclado. La notificacin al manejador se hace nicamente cada cierto nmero de ocurrencias del evento, en el caso del reloj, o activando unflag que indica que hay datos en el buffer del teclado. Manejadores de dispositivos Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo. Dicho manejador incluye: cdigo independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el cdigo dependiente del dispositivo necesario para programar el controlador del dispositivo a travs de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del cdigo de E/S independiente del dispositivo, traducir dichas peticiones a trminos que entienda el controlador, enviar al mismo las rdenes adecuadas en la secuencia correcta y esperar a que se cumplan. La siguiente figura muestra un diagrama de flujo con las operaciones de un manejador. Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores. El manejador explora la lista de peticiones, extrae una peticin pendiente y ordena su ejecucin. La poltica de extraccin de peticiones de la lista es dependiente de manejador y puede ser FIFO. Una vez enviada la peticin al controlador, el manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando una interrupcin. Para los rpidos (pantalla, discos RAM, etctera) responde inmediatamente. Despus de recibir el fin de operacin, controla la existencia de errores y devuelve al nivel superior el estado de terminacin de la operacin. Si tiene operaciones pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le toque ejecutar despus de la operacin de E/S. En caso contrario se bloquea. Software de E/S independiente del dispositivo La mayor parte del sistema de E/S es software independiente de dispositivo. Este nivel incluye el sistema de archivos y el de gestin de red, el gestor de bloques, la cache de bloques y una parte de los manejadores de dispositivo. La principal funcin de esta capa de software es ejecutar las funciones de E/S que son comunes a todos los dispositivos a travs de una interfaz uniforme. Internamente, en este nivel se proporciona acceso a nivel de bloques o caracteres, almacenamiento intermedio, gestin de los dispositivos, planificacin de la E/S y control de errores. El tamao de acceso a nivel de bloques se hace usando tamaos de bloque de acceso comunes para todo un sistema de archivos, lo que permite ocultar que cada dispositivo puede tener distinto tamao de sector y distinta geometra. Estos detalles quedan ocultos por la capa de software independiente de dispositivo que ofrece una interfaz sobre la base de bloques lgicos del sistema de archivos. Lo mismo ocurre con los dispositivos de caracteres, algunos de los cuales trabajan con un carcter cada vez, como el teclado, mientras otros trabajan con flujos de caracteres, como el modem o las redes.

Para optimizar la E/S y para armonizar las peticiones de usuario, que pueden ser de cualquier tamao, con los bloques que maneja el sistema de archivos, el software de E/S proporciona almacenamiento intermedio en memoria del sistema operativo. Esta facilidad se usa para tres cosas: Optimizar la E/S evitando accesos a los dispositivos. Ocultar las diferencias de velocidad con que cada dispositivo y usuario manejan los datos. Facilitar la implementacin de la semntica de comparticin, al existir una copia nica de los datos en memoria. El sistema de E/S mantiene buffers en distintos componentes. Por ejemplo, en la parte del manejador del teclado independiente del dispositivo existe un buffer para almacenar los caracteres que teclea el usuario hasta que se pueden entregar a los niveles superiores. Si se usa una lnea serie para leer datos de un sistema remoto y almacenarlos en el disco, se puede usar un buffer para guardar temporalmente los datos hasta que tengan una cierta entidad y sea rentable escribirlos a disco. Si se est leyendo o escribiendo un archivo, se guardan copias de los bloques en memoria para no tener que acceder al disco si se vuelven a leer. La gestin de los dispositivos agrupa a su vez tres servicios: nombrado, proteccin y control de acceso. El nombrado permite traducir los nombres de usuario a identificadores del sistema. Por ejemplo, en UNIX, cada dispositivo tiene un nombre (p. ej.: /dev/cdrom) que se traduce en un nico identificador interno (o nodo-i), que a su vez se traduce en un nico nmero de dispositivo principal (clase de dispositivo) y secundario (elemento de la clase). Cada dispositivo tiene asociada una informacin de proteccin (en UNIX mediante 3 bits para dueo, grupo y mundo) y este nivel de software asegura que los requisitos de proteccin se cumplen. Adems proporciona control de acceso para que un dispositivo dedicado, como una impresora, sea accedido por un nico usuario cada vez. Una de las funciones principales del sistema de E/S es la planificacin de la E/S de los distintos componentes. Para ello se usan colas de peticiones para cada clase de dispositivo, de las que se extraen las peticiones de cada dispositivo en particular. Cada una de estas colas se ordena siguiendo una poltica de planificacin, que puede ser distinta en cada nivel. Imagine el caso de LINUX, donde existe una cola global de peticiones de E/S, ordenadas en orden FIFO, para los discos instalados. Cuando un manejador de disco queda libre, busca la cola global para ver si hay peticiones para l y, si existen, las traslada a su cola de peticiones particular ordenadas segn la poltica SCAN, por ejemplo. Este mecanismo permite optimizar la E/S al conceder a cada mecanismo la importancia que, ajuicio de los diseadores del sistema operativo, se merece. En el caso de Windows NT, por ejemplo, el ratn es el dispositivo de E/S ms prioritario del sistema. La razn que hay detrs de esta poltica es conseguir un sistema muy interactivo. En otros sistemas, como UNIX, las operaciones de disco son ms prioritarias que las del ratn para poder desbloquear rpidamente a los procesos que esperan por la E/S. Sea cual sea el criterio de planificacin, todos los sistemas de E/S planifican las actividades en varios lugares.

Por ltimo, este nivel proporciona gestin de errores para aquellos casos que el manejador de dispositivo no puede solucionar. Un error transitorio de lectura de un bloque se resuelve en el manejador reintentando su lectura. Un error permanente de lectura no puede ser resuelto y debe ser comunicado al usuario para que tome las medidas adecuadas. En general, todos los sistemas operativos incluyen alguna forma de control de errores internos y de notificacin al exterior en caso de que esos errores no se puedan resolver. Imagine, por ejemplo, que una aplicacin quiere leer de un dispositivo que no existe. El sistema de E/S ver que el dispositivo no est y lo notificar a los niveles superiores hasta que el error llegue a la aplicacin. Sin embargo, es importante resaltar que los sistemas operativos son cada vez ms robustos y cada vez incluyen ms control y reparacin de errores, para lo cual usan mtodos de paridad, checksums, cdigos correctores de error, etc. Adems, la informacin que proporcionan cuando hay un error es cada vez mayor.

Operaciones de Entrada / Salida. En computacin, entrada/salida, tambin abreviado E/S o I/O (del original en ingls input/output), es la coleccin de interfaces que usan las distintas unidades funcionales (subsistemas) de un sistema de procesamiento de informacin para comunicarse unas con otras, o las seales (informacin) enviadas a travs de esas interfaces. Las entradas son las seales recibidas por la unidad, mientras que las salidas son las seales enviadas por sta. El trmino puede ser usado para describir una accin; "realizar una entrada/salida" se refiere a ejecutar una operacin de entrada o de salida. Los dispositivos de E/S los usa una persona u otro sistema para comunicarse con una computadora. De hecho, a los teclados y ratones se los considera dispositivos de entrada de una computadora, mientras que los monitores e impresoras son vistos como dispositivos de salida de una computadora. Los dispositivos tpicos para la comunicacin entre computadoras realizan las dos operaciones, tanto entrada como salida, y entre otros se encuentran los mdems y tarjetas de red. Es importante notar que la designacin de un dispositivo, sea de entrada o de salida, cambia al cambiar la perspectiva desde el que se lo ve. Los teclados y ratones toman como entrada el movimiento fsico que el usuario produce como salida y lo convierten a una seal elctrica que la computadora pueda entender. La salida de estos dispositivos son una entrada para la computadora. De manera anloga, los monitores e impresoras toman como entrada las seales que la computadora produce como salida. Luego, convierten esas seales en representaciones inteligibles que puedan ser interpretadas por el usuario. La interpretacin ser, por ejemplo, por medio de la vista, que funciona como entrada. En arquitectura de computadoras, a la combinacin de una unidad central de procesamiento (CPU) y memoria principal (aqulla que la CPU puede escribir o leer directamente mediante instrucciones individuales) se la considera el corazn de la computadora y cualquier movimiento de informacin desde o hacia ese conjunto se lo considera entrada/salida. La CPU y su circuitera complementaria proveen mtodos de entrada/salida que se usan en programacin de bajo nivel para la implementacin de controladores de dispositivos.

Los sistemas operativos y lenguajes de programacin de ms alto nivel brindan conceptos y primitivas de entrada/salida distintos y ms abstractos. Por ejemplo, un sistema operativo brinda aplicativos que manejan el concepto de archivos. El lenguaje de programacin C define funciones que les permiten a sus programas realizar E/S a travs de streams, es decir, les permiten leer datos desde y escribir datos hacia sus programas. Una alternativa para las funciones primitivas especiales es la mnada de E/S, que permite que los programas describan su E/S y que las acciones se lleven a cabo fuera del programa. Esto resulta interesante, pues las funciones de E/S introduciran un efecto colateral para cualquier lenguaje de programacin, pero ahora una programacin puramente funcional resultara prctica.

[editar] Dispositivos de entrada y salida


Entrada: Teclado Ratn Joystick Lpiz ptico Micrfono Webcam Escner Escner de cdigo de barras Salida: Monitor Altavoz Auriculares Impresora Plotter Proyector Entrada/salida: Unidades de almacenamiento CD DVD Mdem Fax Memory cards USB Router Pantalla tctil

Tanto en la E/S programada como la basada en interrupciones, la UCP debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Una mejora importante para incrementar la concurrencia entre la UCP y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos, liberando de este trabajo a la UCP, e interrumpir a la UCP slo cuando haya terminado la operacin completa de EIS. Esta tcnica se denomina acceso directo a memoria (DMA, Direct Memory Access). Cuando se utiliza acceso directo a memoria, es el controlador el que se encarga directamente de transferir los datos entre el perifrico y la memoria principal, sin requerir intervencin alguna por parte del procesador. Esta tcnica funciona de la siguiente manera: cuando el procesador desea que se imprima un bloque de datos, enva una orden al controlador indicndole la siguiente informacin: Tipo de operacin: lectura o escritura. Perifrico involucrado en la operacin. La direccin de memoria desde la que se va a leer o a la que va a escribir directamente con el controlador de dispositivo (direccin). El nmero de bytes a transferir (contador). Donde el campo Operacin corresponde al cdigo de operacin de las instrucciones mquina normales. Especifica la operacin que debe realizar la CCW. La unidad de control decodifica este campo y enva las seales adecuadas de control al dispositivo. Existen varias operaciones, las ms importantes son las siguientes: Lectura: el canal transfiere a memoria principal un bloque de palabras de tamao especificado en el campo n de palabras, en orden ascendente de direcciones, empezando en la direccin especificada en el campo direccin del dato. Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operacin de lectura. Control: se utiliza esta orden para enviar instrucciones especficas al dispositivo de E/S, como rebobinar una cinta magntica, etc. Bifurcacin: cumple en el programa de canal la misma funcin que una instruccin de salto en un programa normal. El canal ejecuta las CCW en secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo direccin del dato como la direccin de la siguiente CCW a ejecutar. Flags: Los bits de este campo indican lo siguiente: CC (Encadenamiento de comando): cuando este bit est a 1, indica al canal que la siguiente CCW especifica una nueva operacin de E/S que debe realizarse con el mismo dispositivo. El canal ejecuta primero la operacin de E/S especificada en la CCW que tiene a 1 el flag CC. Despus ejecuta la siguiente sobre el mismo dispositivo. Desde el punto de vista del dispositivo, las dos operaciones resultantes de la primera y segunda CCW aparecen como dos comandos de E/S separados.

CD (Encadenamiento de datos): una CCW con el bit CD a 1, indica al canal que la siguiente CCW contiene una nueva direccin del dato y un nuevo n de palabras. stos deben utilizarse para transferir un segundo bloque de datos hacia o desde el dispositivo de E/S, mediante la orden especificada por la CCW actual. Cuando el canal termina la transferencia de datos especificada en la CCW con el bit CD a 1, no corta la conexin con el dispositivo de E/S, contina la transferencia utilizando la direccin y el n de palabras de la siguiente CCW. SKIP (Salto): este bit, cuando est a 1, hace que el programa de canal salte un nmero de palabras igual al especificado en el campo n de palabras. Cuando se utiliza con la orden de lectura, este flag hace que los datos se lean del dispositivo sin que se transfieran a la memoria principal. PCI (Interrupcin controlada por programa): el canal produce una interrupcin cuando ejecuta una CCW con el flag PCI a 1. Si esta CCW va precedida por otra CCW con encadenamiento de comandos, la interrupcin se genera despus de que hayan concluido todas las transferencias de datos. Una vez emitida la orden, el procesador contina realizando otro trabajo sin necesidad de transferir el bloque de datos. Es el propio controlador el que se encarga de transferir el bloque de datos del perifrico a memoria. La transferencia se realiza palabra a palabra. Cuando el controlador ha completado la transferencia, genera una interrupcin que activa la rutina de tratamiento correspondiente, de tal manera que se sepa que la operacin ha concluido. Utilizando acceso directo a memoria el procesador nicamente se ve involucrado al inicio y al final de la transferencia. Por tanto, cuando el sistema operativo despierta al proceso que pidi la E/S, no tiene que copiar el bloque a memoria porque ya est all. El DMA requiere una etapa de almacenamiento intermedio en el controlador del dispositivo para armonizar la velocidad del dispositivo de EIS con la copia de los datos en memoria principal. La razn para este almacenamiento intermedio reside en que una vez que el dispositivo empieza la transferencia de datos, sta debe hacerse a velocidad constante para evitar transferencias parciales y nuevas esperas de posicionamiento del dispositivo sobre los datos (latencia). Una vez transferidos los datos a la memoria del controlador, ste los copia en memoria principal aprovechando el ancho de banda libre del bus. Los pasos a seguir en una operacin de E/S con DMA son los siguientes: 1. Programacin de la operacin de E/S. Se indica al controlador la operacin, los datos a transferir y la direccin de memoria sobre la que se efectuar la operacin. 2. El controlador contesta aceptando la peticin de E/S. 3. El controlador le ordena al dispositivo que lea (para operacin de lectura) una cierta cantidad de datos desde una posicin determinada del dispositivo a su memoria interna. 7.3. 4. Cuando los datos estn listos, el controlador los copia a la posicin de memoria que tiene en sus registros, incrementa dicha posicin de memoria y decrementa el contador de datospendientes de transferir. 5. Los pasos 3 y 4 se repiten hasta que no quedan ms datos por leer.

6. Cuando el registro de contador est a cero, el controlador interrumpe a la UCP para in dicar que la operacin de DMA ha terminado. Inicio y control de los programas de canal Hemos visto como se utilizan los programas de canal para realizar operaciones de E/S. Estos programas residen en la memoria principal del computador y se ejecutan en el canal. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las operaciones de E/S, es decir, el programa de canal. En el IBM S/370 existen cuatro instrucciones mquina que la CPU puede utilizar para estos fines. Son las siguientes: START I/O Inicia una operacin de E/S. El campo de direccin de la instruccin seemplea para especificar el canal y el dispositivo de E/S que participa en la operacin. HALT I/O Finaliza la operacin del canal. TEST CHANNEL Prueba el estado del canal. TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S. Una operacin de E/S se inicia con la instruccin START I/O. La ubicacin del programa de canal en la memoria principal viene definida en la palabra de direccin de canal (CAW: Channel A ddress word), que siempre est almacenada en la posicin 72 de la memoria principal.

SISTEMAS DE ARCHIVOS

En computacin, un sistema de archivos es un mtodo para el almacenamiento y organizacin de archivos de computadora y los datos que estos contienen, para hacer ms fcil la tarea encontrarlos y accederlos. Los sistemas de archivos son usados en dispositivos de almacenamiento como discos duros y CD-ROM e involucran el mantenimiento de la localizacin fsica de los archivos. Ms formalmente, un sistema de archivos es un conjunto de tipo de datos abstractos que son implementados para el almacenamiento, la organizacin jerrquica, la manipulacin, el acceso, el direccionamiento y la recuperacin de datos. Los sistemas de archivos comparten mucho en comn con la tecnologa de las bases de datos. En general, los sistemas operativos tienen su propio sistema de archivos. En ellos, los sistemas de archivos pueden ser representados de forma textual (ej.: el shell de DOS) o grficamente (ej.: Explorador de archivos en Windows) utilizando un gestor de archivos.

El software del sistema de archivos se encarga de organizar los archivos (que suelen estar segmentados fsicamente en pequeos bloques de pocos bytes) y directorios, manteniendo un registro de qu bloques pertenecen a qu archivos, qu bloques no se han utilizado y las direcciones fsicas de cada bloque. Los sistemas de archivos pueden ser clasificados en tres categoras: sistemas de archivo de disco, sistemas de archivos de red y sistemas de archivos de propsito especial. Ejemplos de sistemas de archivos son: FAT, UMSDOS, NTFS, UDF, ext2, ext3, ext4, Reiser FS?, XFS, etc. Y el termino de wikipedia Los sistemas de archivos (filesystem en ingls), estructuran la informacin guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego ser representada ya sea textual o grficamente utilizando un gestor de archivos. La mayora de los sistemas operativos poseen su propio sistema de archivos. Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamao, a veces llamados sectores, usualmente de 512 bytes de longitud. El software del sistema de archivos es responsable de la organizacin de estos sectores en archivos y directorios y mantiene un registro de qu sectores pertenecen a qu archivos y cules no han sido utilizados. En la prctica, un sistema de archivos tambin puede ser utilizado para acceder a datos generados dinmicamente, como los recibidos a travs de una conexin de red (sin la intervencin de un dispositivo de almacenamiento). Los sistemas de archivos tradicionales proveen mtodos para crear, mover, renombrar y eliminar tanto archivos como directorios, pero carecen de mtodos para crear, por ejemplo, enlaces adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (.. en Unix). El acceso seguro a sistemas de archivos bsicos puede estar basado en los esquemas de lista de control de acceso o capacidades. Las listas de control de acceso hace dcadas que demostraron ser inseguras, por lo que los sistemas operativos experimentales utilizan el acceso por capacidades. Los sistemas operativos comerciales an funcionan con listas de control de acceso.

Los sistemas de archivos o ficheros (en ingls:filesystem), estructuran la informacin guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego ser representada ya sea textual o grficamente utilizando un gestor de archivos. La mayora de los sistemas operativos manejan su propio sistema de archivos.[1] Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamao, a veces llamados sectores, usualmente de 512 bytes de longitud. El software del sistema de archivos es responsable de la organizacin de estos

sectores en archivos y directorios y mantiene un registro de qu sectores pertenecen a qu archivos y cules no han sido utilizados. En la prctica, un sistema de archivos tambin puede ser utilizado para acceder a datos generados dinmicamente, como los recibidos a travs de una conexin de red (sin la intervencin de un dispositivo de almacenamiento). Los sistemas de archivos tradicionales proveen mtodos para crear, mover, renombrar y eliminar tanto archivos como directorios, pero carecen de mtodos para crear, por ejemplo, enlaces adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (".." en Unix). El acceso seguro a sistemas de archivos bsicos puede estar basado en los esquemas de lista de control de acceso o capacidades. Las listas de control de acceso hace dcadas que demostraron ser inseguras, por lo que los sistemas operativos experimentales utilizan el acceso por capacidades. Los sistemas operativos comerciales an funcionan con listas de control de acceso.[cita requerida]

Rutas y nombre de archivos


Normalmente los archivos y carpetas se organizan jerrquicamente. La estructura de directorios suele ser jerrquica, ramificada o "en rbol", aunque en algn caso podra ser plana. En algunos sistemas de archivos los nombres de archivos son estructurados, con sintaxis especiales para extensiones de archivos y nmeros de versin. En otros, los nombres de archivos son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente. En los sistemas de archivos jerrquicos, usualmente, se declara la ubicacin precisa de un archivo con una cadena de texto llamada "ruta" o path en ingls. La nomenclatura para rutas vara ligeramente de sistema en sistema, pero mantienen por lo general una misma estructura. Una ruta viene dada por una sucesin de nombres de directorios y subdirectorios, ordenados jerrquicamente de izquierda a derecha y separados por algn carcter especial que suele ser una diagonal ('/') o diagonal invertida ('\') y puede terminar en el nombre de un archivo presente en la ltima rama de directorios especificada.

[editar] Ejemplo de 'ruta' en un sistema Unix As, por ejemplo, en un sistema tipo Unix como GNU/Linux, la ruta para la cancin llamada "cancin.ogg" del usuario "lvaro" sera algo como:
/home/lvaro/msica/cancin.ogg

donde: '/' representa el directorio raz donde est montado todo el sistema de archivos.

'home/lvaro/msica/' es la ruta del archivo. 'cancin.ogg' es el nombre del archivo. que se establece como nico.

[editar] Ejemplo de 'ruta' en un sistema Windows Un ejemplo anlogo en un sistema de archivos de Windows (especficamente en Windows XP) se vera como:
C:\Documents and Settings\alvaro\Mis Documentos\Mi Msica\cancin.ogg

donde: 'C:' es la unidad de almacenamiento en la que se encuentra el archivo. '\Documents and Settings\alvaro\Mis Documentos\Mi Msica\' es la ruta del archivo. 'cancin' es el nombre del archivo. '.ogg' es la extensin del archivo, este elemento, parte del nombre, es especialmente relevante en los sistemas Windows, ya que sirve para identificar qu aplicacin est asociada con el archivo en cuestin, es decir, con qu programa se puede editar o reproducir el archivo.

[editar] Resumen de caractersticas de los sistemas de Archivos


Seguridad o permisos listas de control de acceso (ACLs) UGO (Usuario, Grupo, Otros, o por sus siglas en ingls, User, Group, Others) Capacidades granuladas Atributos extendidos (ej.: slo aadir al archivo pero no modificar, no modificar nunca, etc.) Mecanismo para evitar la fragmentacin Capacidad de enlaces simblicos o duros Integridad del sistema de archivos (Journaling) Soporte para archivos dispersos Soporte para cuotas de discos Soporte de crecimiento del sistema de archivos nativo

[editar] Tipo de sistemas de archivos


[editar] Sistemas de archivos de disco Un sistema de archivo de disco est diseado para el almacenamiento de archivos en una unidad de disco, que puede estar conectada directa o indirectamente a la computadora.
Otros sistemas de archivos -HFS. HFS es el Sistema de Archivo de Mac. Se usa en todo tipo de medio de almacenamiento, desde CD y DVD hasta el Disco Duro.

-HFS+. HFS+ es la variante moderna de HFS con soporte para una mayor capacidad de almacenamiento, unicode y mucho ms. (ver Anexo:Sistemas de archivos de disco)

[editar] Sistemas de archivos de red Un sistema de archivos de red es el que accede a sus archivos a travs de una red. Dentro de esta clasificacin encontramos dos tipos de sistemas de archivos: los sistemas de archivos distribuidos (no proporcionan E/S en paralelo) y los sistemas de archivos paralelos (proporcionan una E/S de datos en paralelo).
(ver Anexo:Sistemas de archivos de red)

[editar] Sistemas de archivos de propsito especial (Special purpose file system). Aquellos tipos de sistemas de archivos que no son ni sistemas de archivos de disco, ni sistemas de archivos de red. Ejemplos: acme (Plan 9), archfs, cdfs, cfs, devfs, udev, ftpfs, lnfs, nntpfs, plumber (Plan 9), procfs, ROMFS, swap, sysfs, TMPFS, wikifs, LUFS, etc.

ARCHIVO REAL Y VIRTUAL


La mayora de usuarios de computadoras comprendern con mucha facilidad el trmino archivo relacionndolo directamente con ejemplos tales como los archivos de texto que se pueden generar con cualquier procesador de texto. Una caracterstica de este tipo de archivos es que a mayor texto que almacena el archivo, mayor es el espacio en disco que consume dicho archivo. Por ejemplo, una lnea corta de texto ocupa menos espacio en disco que esa misma lnea copiada cien veces. Sin embargo al hablar de archivos virtualeslas cosas son diferentes, pues este tipo de archivos no consumen espacio en el disco duro, sino que se almacenan en la memoria voltil, es decir aquel tipo de memoria cuya informacin se pierde al interrumpirse el flujo de corriente elctrica, esto es, la memoria RAM.

COMPONENTES DE UN SISTEMA DE ARCHIVOS Los componentes del sistema de archivos y de programacin permiten interactuar con los recursos del sistema de archivos y de directorio y provocar eventos en intervalos programados. Las instancias del componente File System Watcher permiten inspeccionar cambios en los directorios y archivos y reaccionar cuando se producen. El componente Timer permite configurar programaciones simples de produccin de eventos y ejecutar el procesamiento asociado.

Componentes de un sistema operativo


Gestin de procesos Un proceso es simplemente, un programa en ejecucin que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de: Crear y destruir los procesos. Parar y reanudar los procesos. Ofrecer mecanismos para que se comuniquen y sincronicen. Componentes del Sistema Operativo. La gestin de procesos podra ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y despus las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas ms antiguas.

Gestin de la memoria principal La Memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una direccin nica. Este almacn de datos de rpido accesos es compartido por la CPU y los dispositivos de E/S, es voltil y pierde su contenido en los f allos del sistema. El SO es el responsable de: Conocer qu partes de la memoria estn siendo utilizadas y por quin. Decidir qu procesos se cargarn en memoria cuando haya espacio disponible. Asignar y reclamar espacio de memoria cuando sea necesario. Gestin del almacenamiento secundario Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es

voltil y adems muy pequea para almacenar todos los programas y datos. Tambin es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de: Planificar los discos. Gestionar el espacio libre. Asignar el almacenamiento. Verificar que los datos se guarden en orden El sistema de E/S Consiste en un sistema de almacenamiento temporal (cach), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S. Los archivos son colecciones de informacin relacionada, definidas por sus creadores. stos almacenan programas (en cdigo fuente y objeto) y datos tales como imgenes, textos, informacin de bases de datos, etc. El SO es responsable de:

Construir y eliminar archivos y directorios. Ofrecer funciones para manipular archivos y directorios. Establecer la correspondencia entre archivos y unidades de almacenamiento. Realizar copias de seguridad de archivos. Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la informacin que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT3, NTFS, XFS, etc. Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los sistemas de ficheros FAT32 y NTFS, que se utilizan

fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base de datos con bastante informacin ya que el tamao mximo de un fichero con un Sistema de Archivos FAT32 est limitado a 4 gigabytes, sin embargo, en un sistema NTFS el tamao es considerablemente mayor.

Sistemas de proteccin Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de: Distinguir entre uso autorizado y no autorizado. Especificar los controles de seguridad a realizar. Forzar el uso de estos mecanismos de proteccin. Sistema de comunicaciones Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envo y recepcin de informacin a travs de las interfaces de red. Tambin hay que crear y mantener puntos de comunicacin que sirvan a las aplicaciones para enviar y recibir informacin, y crear y mantener conexiones virtuales entre aplicaciones que estn ejecutndose localmente y otras que lo hacen remotamente.

Programas de sistema Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de l. Ofrecen un entorno til para el desarrollo y ejecucin de programas, siendo algunas de las tareas que realizan: Manipulacin y modificacin de archivos. Informacin del estado del sistema. Soporte a lenguajes de programacin. Comunicaciones. Gestor de recursos Como gestor de recursos, el Sistema Opera{tivo administra:

La CPU (Unidad Central de Proceso, donde est alojado el microprocesador). Los dispositivos de E/S (entrada y salida) La memoria principal (o de acceso directo). Los discos (o memoria secundaria). Los procesos (o programas en ejecucin). y en general todos los recursos del sistema.

ORGANIZACION LOGICA Y FISICA


En esta parte vamos a usar el trmino organizacin de archivos para referirnos a la estructura lgica de los registros determinada por la manera en que se accede a ellos. La organizacin fsica del archivo en almacenamiento secundario depende de la estrategia de agrupacin y de la estrategia de asignacin de archivos. Para seleccionar una organizacin de archivos hay diversos criterios que son importantes:

Acceso Rpido para recuperar la informacin Fcil actualizacin Economa de almacenamiento Mantenimiento simple Fiabilidad para asegurar la confianza de los datos

La prioridad relativa de estos criterios va a depender de las aplicaciones que va a usar el archivo. El nmero de alternativas de organizacin de archivos que se han implementado o propuesto es inmanejable, incluso para un libro dedicado a los sistemas de archivos. La mayor parte de las estructuras empleadas en los sistemas reales se encuadran en una de estas categoras o puede implementarse como una combinacin de estas: <<<<<<< Pilas Archivos secuenciales Archivos Secuenciales indexados Archivos indexados Archivos directos o de dispersin

MECANISMOS DE ACCESO A LOS ARCHIVOS


Tipos: Metodo de Acceso Secuencial: El acceso secuencial significa que un grupo de elementos es accedido en un predeterminado orden secuencial. El acceso secuencial es a veces la nica forma

de acceder a los datos, por ejemplo en una cinta de cassette. Tambin puede ser el mtodo de acceso elegido, para simplemente procesar una secuencia de datos en orden. Fuente Metodo de Acceso Secuencial Indexado: Mtodo de acceso secuencial indexado. Mtodo comn de acceso a disco que almacena datos en forma secuencial, al tiempo que mantiene un ndice de campos claves para todos los registros en el archivo para acceso directo. El orden secuencial sera el ms comnmente usado para el procesamiento por lotes y la impresin (nmero de cuenta, nombre, etc.). Metodo de Acceso Indexado: Los archivos secuenciales indexados retienen la limitacin del archivo secuencial: la eficacia en el procesamiento se limita al basado en un nico campo del archivo. Cuando es necesario buscar un registro basndose en algn otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. En algunas aplicaciones esta flexibilidad es deseable. Para alcanzar esta flexibilidad, se necesita una estructura que utilice mltiples ndices, uno para cada tipo de campo que pueda ser objeto de la bsqueda. Se suelen utilizar dos tipos de ndices. Un ndice exhaustivo contiene una entrada para cada registro del archivo principal. Otro ndice parcial contendr entradas a los registros donde este el campo de inters. Con registros de longitud variable, algunos registros no contendrn todos los campos. Los archivos indexados son muy utilizados en aplicaciones donde es critica la oportunidad de la informacin y donde los datos son rara vez procesados de forma exhaustiva. Metodo de Acceso Hashed: Pendiente la definicion. Otras Definiciones Creo Mas Mejores y Exactas ya que se Refiere al Sistema de Archivos. Fuente Bibliografica Archivos Secuenciales La forma mas comn de estructura de archivo es el archivo secuencial. En este tipo de archivo, un formato fijo es usado para los registros. Todos los registros tienen el mismo tamao, constan del mismo numero de campos de tamao fijo en un orden particular. Como se conocen la longitud y la posicin de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre del campo y longitud de cada campo son atributos de la estructura de archivos. Un campo particular, generalmente el primero de cada registro se conoce como el campo clave. El campo clave identifica unvocamente al registro. as, los valores de la clave para registros diferentes son siempre diferentes. Los archivos secuenciales son tpicamente utilizados en aplicaciones de proceso de lotes Y son ptimos para dichas aplicaciones si se procesan todos los registros. La organizacin secuencias de archivos es la nica que es fcil de usar tanto en disco como en cinta. Para las aplicaciones interactivas que incluyen peticiones o actualizaciones de registros individuales, los archivos secuenciales ofrecen un rendimiento pobre.

Normalmente un archivo secuencial se almacena en bloques, en un orden secuencial simple de los registros. La organizacin fsica del archivo en una cinta o disco se corresponde exactamente con la ubicacin lgica del archivo. En este caso, el procedimiento para ubicar los nuevos registros en un archivo de pila separado, llamado archivo de registro (log file) o archivo de transacciones. Peridicamente, se realiza una actualizacin por lotes que mezcla el archivo de registro con el archivo maestro para producir un nuevo archivo en secuencia correcta de claves. Archivos Secuenciales indexados Un mtodo popular para superar las desventajas de los archivos secuenciales es el del archivo secuencias indexado. El archivo secuencial indexado mantiene las caracteristicas bsicas de los archivos secuenciales: los registros estn organizados en una secuencia basada en un campo. Dos caractersticas se aaden: un ndice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento ( overflow ). El indice provee una capacidad de bsqueda para llegar rapidamente a las proximidades de un registro deseado. El archivo de desbordamiento (overflow) es similar al archivo de registro usado en un archivo secuencial, pero esta intregrado de forma que los registros del archivo de desbordamiento se ubican en la direccin de un puntero desde su registro precedente. En la estructura secuencial indexada mas simple, se usa un solo nivel de indexacion. El indice, en este caso, es un archivo secuencial simple. Cada registro del archivo indice tiene dos campos: un campo clave, que es el mismo que el campo clave del archivo principal y un puntero al archivo principal. Para encontrar un campo especifico se busca en el indice hasta encontrar el valor mayor de la clave que es igual o precede al valor deseado de la clave. La busqueda continua en el archivo principal a partir de la posicin indicada por el puntero. Archivos Indexados Los archivos secuenciales indexados retienen la limitacin del archivo secuencial: la eficacia en el procesamiento se limita al basado en un nico campo del archivo. Cuando es necesario buscar un registro basndose en algn otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. En algunas aplicaciones esta flexibilidad es deseable. Para alcanzar esta flexibilidad, se necesita una estructura que utilice mltiples ndices, uno para cada tipo de campo que pueda ser objeto de la bsqueda. Se suelen utilizar dos tipos de ndices. Uno indice exhaustivo contiene una entrada par cada registro del archivo principal. Otro ndice parcial contendr entradas a los registros donde este el campo de inters. Con registros de longitud variable, algunos registros no contendran todos los campos. Los archivos indexados son muy utilizados en aplicaciones donde es critica la oportunidad de la informacion y donde los datos son rara vez procesados de forma exhaustiva. Archivos Directos o de Dispersin (Hashed) Los archivos directos explotan la capacidad de los discos para acceder directamente a cualquier bloque de direccin conocida. Como en los archivos secuenciales y secuenciales indexados, se

requiere un campo clave en cada registro. Sin embargo, aqu no hay concepto de ordenamiento secuencial.

MANEJO DE ESPACIO EN MEMORIA SECUNDARIA

5.6.-

MANEJO DE ESPACIO EN MEMORIA SECUNDARIA.

El sistema de archivos se ocupa primordialmente de administrar el espacio de almacenamiento secundario, sobre todo el espacio en disco. El manejo del espacio libre en disco se lleva a cabo de la siguiente manera:
* Vector de bits * Lista ligada (lista libre) * Por conteo (agrupacin)

Vector de bits El espacio libre en disco es frecuentemente implementado como un mapa de bits, donde cada sector es representado por un bit y si el sector es libre el bit es cero de lo contrario est asignado. Lista ligada Existe una cabecera en la que se tiene la direccin del primer sector vacio, ese sector a su vez, tiene un apuntador al siguiente sector, y as sucesivamente hasta que se encuentre una marca indicando que ya no hay espacio libre. Por conteo Aqu, por cada conjunto de sectores contiguos que estn vacios, se tiene por cada apuntador, un nmero de inicio y el tamao del grupo de sectores vacios. Mtodos de asignacin de espacio en disco Un mtodo de asignacin de espacio en disco determina la manera en que un Sistema Operativo controla los lugares del disco ocupados por cada archivo de datos.
* Contigua * Ligada * Indexada

Asignacin contigua Este mtodo consiste en asignar el espacio en disco de tal manera que las direcciones de todos los bloques correspondientes a un archivo definen un orden lineal. Asignacin ligada

En este mtodo, cada archivo es una lista ligada de bloques de disco. En el directorio hay un apuntador al bloque de inicio y un apuntador al bloque final para cada archivo. En cada uno de los bloques donde se encuentra un archivo hay un apuntador al siguiente bloque de la lista. Asignacin indexada Cada archivo tiene su bloque ndice, El cual es un arreglo de direcciones de bloques de disco. La isima entrada en el bloque ndice apunta al i-simo bloque que conforma el archivo.

Modelo Jerarquico Memoria Secundaria


Tanenbaum y Woodhull (1997) definen lo siguiente en su investigacin: La cuestin de la cantidad es simple, cuanto ms memoria haya disponible, ms podr utilizarse. La velocidad ptima para la memoria es la velocidad a la que el procesador puede trabajar, de modo que no haya tiempos de espera entre clculo y clculo, utilizados para traer operandos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para que sea factible construir un equipo accesible. Como puede esperarse los tres factores compiten entre s, por lo que hay que encontrar un equilibrio. Las siguientes afirmaciones son vlidas: 1. A menor tiempo de acceso mayor coste 2. A mayor capacidad mayor coste 3. A mayor capacidad menor velocidad. Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercana de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria ms rpida.

Memoria (informtica) En informtica, la memoria (tambin llamada almacenamiento) se refiere a parte de los componentes que forman parte de una computadora, Son dispositivos que retienen datos informticos durante algn intervalo de tiempo. Las memorias de computadora proporcionan unas de las principales funciones de la computacin moderna, la retencin o almacenamiento de informacin. Es uno de los componentes fundamentales de todas las computadoras modernas que, acoplados a una unidad central de procesamiento (CPU por su sigla en ingls, central processing unit), implementa lo fundamental del modelo de computadora de Arquitectura de von Neumann, usado desde los aos 1940.

En la actualidad, memoria suele referirse a una forma de almacenamiento de estado slido conocido como memoria RAM (memoria de acceso aleatorio, RAM por sus siglas en ingls random access memory) y otras veces se refiere a otras formas de almacenamiento rpido pero temporal. De forma similar, se refiere a formas de almacenamiento masivo como discos pticos y tipos de almacenamiento magntico como discos duros y otros tipos de almacenamiento ms lentos que las memorias RAM, pero de naturaleza ms permanente. Estas distinciones contemporneas son de ayuda porque son fundamentales para la arquitectura de computadores en general. Adems, se refleja una diferencia tcnica importante y significativa entre memoria y dispositivos de almacenamiento masivo, que se ha ido diluyendo por el uso histrico de los trminos "almacenamiento primario" (a veces "almacenamiento principal"), para memorias de acceso aleatorio, y "almacenamiento secundario" para dispositivos de almacenamiento masivo. Esto se explica en las siguientes secciones, en las que el trmino tradicional "almacenamiento" se usa como subttulo por conveniencia. Propsitos del almacenamiento Los componentes fundamentales de las computadoras de propsito general son la CPU, el espacio de almacenamiento y los dispositivos de entrada/salida. Simplificando mucho, si se elimina el almacenamiento, el aparato sera una simple calculadora en lugar de una computadora. La habilidad para almacenar las instrucciones que forman un programa de computadora y la informacin que manipulan las instrucciones es lo que hace verstiles a las computadoras diseadas segn la arquitectura de programas almacenados Una computadora digital representa toda la informacin usando el sistema binario. Texto, nmeros, imgenes, sonido y casi cualquier otra forma de informacin puede ser transformada en una sucesin de bits, o dgitos binarios, cada uno de los cuales tiene un valor de 1 0. La unidad de almacenamiento ms comn es el byte, igual a 8 bits. Una determinada informacin puede ser manipulada por cualquier computadora cuyo espacio de almacenamiento es suficientemente grande como para que quepa el dato correspondiente o la representacin binaria de la informacin. Por ejemplo, una computadora con un espacio de almacenamiento de ocho millones de bits, o un megabyte, puede ser usado para editar una novela pequea. Se han inventado varias formas de almacenamiento basadas en diversos fenmenos naturales. No existen ningn medio de almacenamiento de uso prctico universal y todas las formas de almacenamiento tienen sus desventajas. Por tanto, un sistema informtico contiene varios tipos de almacenamiento, cada uno con su propsito individual, como se muestra en el diagrama. 1 Memoria (informtica) Almacenamiento primario

La memoria primaria est directamente conectada a la CPU de la computadora. Debe estar presente para que la CPU funcione correctamente. El almacenamiento primario consiste en tres tipos de almacenamiento: Los registros del procesador son internos de la CPU. Tcnicamente, es el sistema ms rpido de los distintos tipos de almacenamientos de la computadora, siendo transistores de conmutacin integrados en el chip de silicio del microprocesador (CPU) que funcionan como "flip-flop" electrnicos. La memoria cach es un tipo especial de memoria interna usada en muchas CPU para mejorar su eficiencia o rendimiento. Parte de la informacin de la memoria principal se duplica en la memoria cach. Comparada con los registros, la cach es ligeramente ms lenta pero de mayor capacidad. Sin embargo, es ms rpida, aunque de mucha menor capacidad que la memoria principal. Tambin es de uso comn la memoria cach multi-nivel la cach primaria" que es ms pequea, rpida y cercana al dispositivo de procesamiento; la "cach secundaria" que es ms grande y lenta, pero ms rpida y mucho ms pequea que la memoria principal. La memoria principal contiene los programas en ejecucin y los datos con que operan. Se puede transferir informacin muy rpidamente entre un registro del microprocesador y localizaciones del almacenamiento principal. En las computadoras modernas se usan memorias de acceso aleatorio basadas en electrnica del estado slido, que est directamente conectada a la CPU a travs de buses de direcciones, datos y control. Almacenamiento secundario La memoria secundaria requiere que la computadora use sus canales de entrada/salida para acceder a la informacin y se utiliza para almacenamiento a largo plazo de informacin persistente. Sin embargo, la mayora de los sistemas operativos usan los dispositivos de almacenamiento secundario como rea de intercambio para incrementar artificialmente la cantidad aparente de memoria principal en la computadora.(A esta utilizacin del almacenamiento secundario se le denomina memoria virtual). La memoria secundaria tambin se llama "de almacenamiento masivo". Un disco duro es un ejemplo de almacenamiento secundario. Habitualmente, la memoria secundaria o de almacenamiento masivo tiene mayor capacidad que la memoria primaria, pero es mucho ms lenta. En las computadoras modernas, los discos duros suelen usarse como dispositivos de almacenamiento masivo. El tiempo necesario para acceder a un byte de informacin dado almacenado en un disco duro de platos magnticos es de unas milsimas de segundo (milisegundos). En cambio, el tiempo para acceder al mismo tipo de informacin en una memoria de acceso aleatorio (RAM) se mide en mil-millonsimas de segundo (nanosegundos). Esto ilustra cuan significativa es la diferencia entre la velocidad de las memorias de estado slido y la velocidad de los dispositivos rotantes de almacenamiento magntico u ptico: los discos duros son del orden de un milln de veces ms lentos que la memoria (primaria). Los dispositivos

rotantes de almacenamiento ptico (unidades de CD y DVD) son incluso ms lentos que los discos duros, aunque es probable que su velocidad de acceso mejore con los avances tecnolgicos. Por lo tanto, el uso de la memoria virtual, que es cerca de un milln de veces ms lenta que memoria verdadera, ralentiza apreciablemente el funcionamiento de cualquier computadora. Muchos sistemas operativos implementan la memoria virtual usando trminos como memoria virtual o "fichero de cach". La principal ventaja histrica de la memoria virtual es el precio; la memoria virtual resultaba mucho ms barata que la memoria real. Esa ventaja es menos relevante hoy en da. Aun as, muchos sistemas operativos siguen implementndola, a pesar de provocar un funcionamiento significativamente ms lento. 2 Memoria (informtica) Almacenamiento terciario La memoria terciaria es un sistema en el que un brazo robtico montar (conectar) o desmontar (desconectar) un medio de almacenamiento masivo fuera de lnea (vase el siguiente punto) segn lo solicite el sistema operativo de la computadora. La memoria terciaria se usa en el rea del almacenamiento industrial, la computacin cientfica en grandes sistemas informticos y en redes empresariales. Este tipo de memoria es algo que los usuarios de computadoras personales normales nunca ven de primera mano. Almacenamiento fuera de lnea El almacenamiento fuera de lnea es un sistema donde el medio de almacenamiento puede ser extrado fcilmente del dispositivo de almacenamiento. Estos medios de almacenamiento suelen usarse para transporte y archivo de datos. En computadoras modernas son de uso habitual para este propsito los disquetes, discos pticos y las memorias flash, incluyendo las unidades USB. Tambin hay discos duros USB que se pueden conectar en caliente. Los dispositivos de almacenamiento fuera de lnea usados en el pasado son cintas magnticas en muchos tamaos y formatos diferentes, y las bateras extrables de discos Winchester. Almacenamiento de red

El almacenamiento de red es cualquier tipo de almacenamiento de computadora que incluye el hecho de acceder a la informacin a travs de una red informtica. Discutiblemente, el almacenamiento de red permite centralizar el control de informacin en una organizacin y reducir la duplicidad de la informacin. El almacenamiento en red incluye: El almacenamiento asociado a red es una memoria secundaria o terciaria que reside en una computadora a la que otra de stas puede acceder a travs de una red de rea local, una red de rea extensa, una red privada virtual o, en el caso de almacenamientos de archivos en lnea, internet. Las redes de computadoras son computadoras que no contienen dispositivos de almacenamiento secundario. En su lugar, los documentos y otros datos son almacenados en un dispositivo de la red. Caractersticas de las memorias La divisin entre primario, secundario, terciario, fuera de lnea se basa en la jerarqua de memoria o distancia desde la unidad central de proceso. Hay otras formas de caracterizar a los distintos tipos de memoria. Volatilidad de la informacin La memoria voltil requiere energa constante para mantener la informacin almacenada. La memoria voltil se suele usar slo en memorias primarias. La memoria RAM es una memoria voltil, ya que pierde informacin en la falta de energa elctrica. La memoria no voltil retendr la informacin almacenada incluso si no recibe corriente elctrica constantemente, como es el caso de la memoria ROM. Se usa para almacenamientos a largo plazo y, por tanto, se usa en memorias secundarias, terciarias y fuera de lnea. La memoria dinmica es una memoria voltil que adems requiere que peridicamente se refresque la informacin almacenada, o leda y reescrita sin modificaciones. 3

Memoria (informtica) Habilidad para acceder a informacin no contigua Acceso aleatorio significa que se puede acceder a cualquier localizacin de la memoria en cualquier momento en el mismo intervalo de tiempo, normalmente pequeo. Acceso secuencial significa que acceder a una unidad de informacin tomar un intervalo de tiempo variable, dependiendo de la unidad de informacin que fue leda anteriormente. El dispositivo puede necesitar buscar (posicionar correctamente el cabezal de lectura/escritura de un disco), o dar vueltas (esperando a que la posicin adecuada aparezca debajo del cabezal de lectura/escritura en un medio que gira continuamente). Habilidad para cambiar la informacin Las memorias de lectura/escritura o memorias cambiables permiten que la informacin se reescriba en cualquier momento. Una computadora sin algo de memoria de lectura/escritura como memoria principal sera intil para muchas tareas. Las computadora modernas tambin usan habitualmente memorias de lectura/escritura como memoria secundaria. La memorias de slo lectura retienen la informacin almacenada en el momento de fabricarse y la memoria de escritura nica (WORM) permite que la informacin se escriba una sola vez en algn momento tras la fabricacin. Tambin estn las memorias inmutables, que se utilizan en memorias terciarias y fuera de lnea. Un ejemplo son los CD-ROMs. Las memorias de escritura lenta y lectura rpida son memorias de lectura/escritura que permite que la informacin se reescriba mltiples veces pero con una velocidad de escritura mucho menor que la de lectura. Un ejemplo son los CD-RW. Direccionamiento de la informacin

En la memoria de localizacin direccionable, cada unidad de informacin accesible individualmente en la memoria se selecciona con su direccin de memoria numrica. En las computadoras modernas, la memoria de localizacin direccionable se suele limitar a memorias primarias, que se leen internamente por programas de computadora ya que la localizacin direccionable es muy eficiente, pero difcil de usar para los humanos. En las memorias de sistema de archivos, la informacin se divide en Archivos informticos de longitud variable y un fichero concreto se localiza en directorios y nombres de archivos "legible por humanos". El dispositivo subyacente sigue siendo de localizacin direccionable, pero el sistema operativo de la computadora proporciona la abstraccin del sistema de archivos para que la operacin sea ms entendible. En las computadora modernas, las memorias secundarias, terciarias y fuera de lnea usan sistemas de archivos. En las memorias de contenido direccionable (content-addressable memory), cada unidad de informacin legible individualmente se selecciona con una valor hash o un identificador corto sin relacin con la direccin de memoria en la que se almacena la informacin. La memoria de contenido direccionable pueden construirse usando software o hardware; la opcin hardware es la opcin ms rpida y cara. Capacidad de memoria Memorias de mayor capacidad son el resultado de la rpida evolucin en tecnologa de materiales semiconductores. Los primeros programas de ajedrez funcionaban en mquinas que utilizaban memorias de base magntica. A inicios de 1970 aparecen las memorias realizadas por semiconductores, como las utilizadas en la serie de computadoras IBM 370. La velocidad de los computadores se increment, multiplicada por 100.000 aproximadamente y la capacidad de

memoria creci en una proporcin similar. Este hecho es particularmente importante para los programas que utilizan tablas de transposicin: a medida que aumenta la velocidad de la computadora se necesitan memorias de capacidad proporcionalmente mayor para mantener la cantidad extra de posiciones que el programa est buscando. 4 Memoria (informtica) Se espera que la capacidad de procesadores siga aumentando en los prximos aos; no es un abuso pensar que la capacidad de memoria continuar creciendo de manera impresionante. Memorias de mayor capacidad podrn ser utilizadas por programas con tablas de Hash de mayor envergadura, las cuales mantendrn la informacin en forma permanente. Minicomputadoras: se caracterizan por tener una configuracin bsica regular que puede estar compuesta por un monitor, unidades de disquete, disco, impresora, etc. Su capacidad de memoria vara de 16 a 256 kbytes. Macrocomputadoras: son aquellas que dentro de su configuracin bsica contienen unidades que proveen de capacidad masiva de informacin, terminales (monitores), etc. Su capacidad de memoria vara desde 256 a 512 kbytes, tambin puede tener varios megabytes o hasta gigabytes segn las necesidades de la empresa. Microcomputadores y computadoras personales: con el avance de la microelectrnica en la dcada de los 70 resultaba posible incluir todos los componente del procesador central de una computadora en un solo circuito integrado llamado microprocesador. sta fue la base de creacin de unas computadoras a las que se les llam microcomputadoras. El origen de las microcomputadoras tuvo lugar en los Estados Unidos a partir de la comercializacin de los primeros microprocesadores (INTEL 8008, 8080). En la dcada de los 80 comenz la

verdadera explosin masiva, de los ordenadores personales (Personal Computer PC) de IBM. Esta mquina, basada en el microprocesador INTEL 8008, tena caractersticas interesantes que hacan ms amplio su campo de operaciones, sobre todo porque su nuevo sistema operativo estandarizado (MS-DOS, Microsoft Disk Operating Sistem) y una mejor resolucin ptica, la hacan ms atractiva y fcil de usar. El ordenador personal ha pasado por varias transformaciones y mejoras que se conocen como XT(Tecnologa Extendida), AT(Tecnologa Avanzada) y PS/2... Tecnologas, dispositivos y medios Memorias magnticas Las memorias magnticas usan diferentes patrones de magnetizacin sobre una superficie cubierta con una capa magnetizada para almacenar informacin. Las memorias magnticas son no voltiles. Se llega a la informacin usando uno o ms cabezales de lectura/escritura. Como el cabezal de lectura/escritura solo cubre una parte de la superficie, el almacenamiento magntico es de acceso secuencial y debe buscar, dar vueltas o las dos cosas. En computadoras modernas, la superficie magntica ser de alguno de estos tipos: Disco magntico. Disquete, usado para memoria fuera de lnea. Disco duro, usado para memoria secundario. Cinta magntica, usada para memoria terciaria y fuera de lnea. En las primeras computadoras, el almacenamiento magntico se usaba tambin como memoria principal en forma de

memoria de tambor, memoria de ncleo, memoria en hilera de ncleo, memoria pelcula delgada, memoria de Twistor o memoria burbuja. Adems, a diferencia de hoy, las cintas magnticas se solan usar como memoria secundaria. Memoria de semiconductor La memoria de semiconductor usa circuitos integrados basados en semiconductores para almacenar informacin. Un chip de memoria de semiconductor puede contener millones de minsculos transistores o condensadores. Existen memorias de semiconductor de ambos tipos: voltiles y no voltiles. En las computadoras modernas, la memoria principal consiste casi exclusivamente en memoria de semiconductor voltil y dinmica, tambin conocida como memoria dinmica de acceso aleatorio o ms comnmente RAM, su acrnimo ingls. Con el cambio de siglo, ha habido un crecimiento constante en el uso de un nuevo tipo de memoria de semiconductor no voltil llamado memoria flash. Dicho crecimiento se ha dado, principalmente en el campo de las memorias fuera de lnea en 5 Memoria (informtica) computadoras domsticas. Las memorias de semiconductor no voltiles se estn usando tambin como memorias secundarias en varios dispositivos de electrnica avanzada y computadoras especializadas y no especializadas. Memorias de disco ptico Las memorias en disco ptico almacenan informacin usando agujeros minsculos grabados con un lser en la superficie de un disco circular. La informacin se lee iluminando la superficie con un diodo lser y observando la reflexin. Los discos pticos son no voltil y de acceso secuencial. Los siguientes formatos son de uso comn:

CD, CD-ROM, DVD: Memorias de simplemente solo lectura, usada para distribucin masiva de informacin digital (msica, vdeo, programas informticos). CD-R, DVD-R, DVD+R: Memorias de escritura nica usada como memoria terciaria y fuera de lnea. CD-RW, DVD-RW, DVD+RW, DVD-RAM: Memoria de escritura lenta y lectura rpida usada como memoria terciaria y fuera de lnea. Blu-ray: Formato de disco ptico pensado para almacenar vdeo de alta calidad y datos. Para su desarrollo se cre la BDA, en la que se encuentran, entre otros, Sony o Phillips. HD DVD Se han propuesto los siguientes formatos: HVD Discos cambio de fase Dual Memorias de discos magneto-pticos Las Memorias de disco magneto ptico son un disco de memoria ptica donde la informacin se almacena en el estado magntico de una superficie ferromagntica. La informacin se lee pticamente y se escribe combinando mtodos magnticos y pticos. Las memorias de discos magneto pticos son de tipo no voltiles, de acceso secuencial, de escritura lenta y lectura rpida. Se usa como memoria terciaria y fuera de lnea. Otros mtodos iniciales Las tarjetas perforadas fueron utilizados por primera vez por Basile Bouchon para el control de telares textiles en Francia.[1] En 1801 el sistema de Bouchon fue perfeccionado por Joseph Marie Jacquard, quien desarroll un telar automtico, conocido como telar de Jacquard.[2] Herman Hollerith desarroll la tecnologa de procesamiento de datos de tarjetas perforadas para el censo de Estados Unidos de 1890 y posteriormente fund la Tabulating Machine Company, una de las precursoras de IBM. IBM desarroll la tecnologa

de la tarjeta perforada como una potente herramienta para el procesamiento de datos empresariales y produjo una lnea extensiva de mquinas de registro que utilizaban papel perforado para el almacenamiento de datos y su procesado automtico. En el ao 1950, las tarjetas IBM y las unidades mquinas de registro IBM se haban vuelto indispensables en la industria y el gobierno estadounidense. Durante los aos 1960, las tarjetas perforadas fueron gradualmente Tarjetas perforadas en un telar de Jacquard. reemplazadas por las cintas magnticas, aunque su uso fue muy comn hasta medidados de los aos 1970 con la aparicin de los discos magnticos. La informacin se grababa en las tarjetas perforando agujeros en el papel o la tarjeta. La lectura se realizaba por sensores elctricos (ms tarde pticos) donde una localizacin particular poda estar agujereada o no. 6 Memoria (informtica) Para almacenar informacin, los tubos Williams usaban un tubo de rayos catdicos y los tubos Selectrn usaban un gran tubo de vaco. Estos dispositivos de memoria primaria tuvieron una corta vida en el mercado ya que el tubo de Williams no era fiable y el tubo de Selectron era caro. La memoria de lnea de retardo usaba ondas sonoras en una sustancia como poda ser el Mercurio para guardar informacin. La memoria de lnea de retardo era una memoria dinmica voltil, ciclo secuencial de lectura/escritura. Se usaba como memoria principal. Otros mtodos propuestos La memoria de cambio de fase usa las fases de un material de cambio de fase para almacenar informacin. Dicha informacin se lee observando la resistencia elctrica variable del material. La memoria de cambio de fase sera una memoria de lectura/escritura no voltil, de acceso aleatorio podra ser usada como memoria primaria, secundaria y

fuera de lnea. La memoria hologrfica almacena pticamente la informacin dentro de cristales o fotopolmeros. Las memorias hologrficas pueden utilizar todo el volumen del medio de almacenamiento, a diferencia de las memorias de discos pticos, que estn limitadas a un pequeo nmero de superficies en capas. La memoria hologrfica podra ser no voltil, de acceso secuencial y tanto de escritura nica como de lectura/escritura. Puede ser usada tanto como memoria secundaria como fuera de lnea. La memoria molecular almacena la informacin en polmeros que pueden almacenar puntas de carga elctrica. La memoria molecular puede ser especialmente interesante como memoria principal. Recientemente se ha propuesto utilizar el spin de un electrn como memoria. Se ha demostrado que es posible desarrollar un circuito electrnico que lea el spin del electrn y lo convierta en una seal elctrica.[cita requerida]

5.8.- MCANISMOS DE RECUPERACION EN CASO DE FALLAS.


Debido a que los archivos se mantienen tanto en memoria principal como en el disco, debemos asegurarnos de que un fallo del sistema no de por resultado la perdida de datos o inconsistencia en los mismos.

La destruccin de la informacin, ya sea accidental o intencional, es una realidad y tiene distintas causas: Fallas de hardware y de software Fenmenos meteorolgicos atmosfricos Fallas en el suministro de energa Incendios e inundaciones Robos, vandalismo (incluso terrorismo)

Esta posible destruccin de la informacin debe ser tenida en cuenta por: Los sistemas operativos en general Los sistemas de archivos en particular Una tcnica muy usada para asegurar la disponibilidad de los datos es realizar respaldos peridicos:

1. Hacer con regularidad una o ms copias de los archivos y colocarlas en lugar seguro 2. Todas las actualizaciones realizadas luego del ltimo respaldo pueden perderse Otra tcnica es pasar todas las transacciones a un archivo, copindolas en otro disco: Genera una redundancia que puede ser costosa En caso de fallas en el disco principal, puede reconstruirse todo el trabajo perdido si el disco de reserva no se da tambin Tambin existe la posibilidad del respaldo incremental: Durante una sesin de trabajo los archivos modificados quedan marcados. Cuando un usuario se retira del sistema (deja de trabajar), un proceso del sistema efecta el respaldo de los archivos marcados. Se debe tener presente que es muy difcil garantizar una seguridad absoluta de los archivos. El mtodo correcto de manejar fallos consiste bsicamente en detectarlos a tiempo y de forma correcta. La inclusin de equipos de test en el sistema es esencial para mantener esta capacidad de monitorizacin. En cualquier caso, la cada total o parcial del sistema se puede subsanar en parte si hay puntos de restauracin del sistema (chkpt). Esta posibilidad aumenta la disponibilidad de recuperacin en caso de fallos.

Mecanismos de Proteccin Dominios de Proteccin Muchos objetos del sistema necesitan proteccin, tales como la cpu, segmentos de memoria, unidades de disco, terminales, impresoras, procesos, archivos, bases de datos, etc. Cada objeto se referencia por un nombre y tiene habilitadas un conjunto de operaciones sobre l. Un dominio es un conjunto de parejas (objeto, derechos): Cada pareja determina: o Un objeto. o Un subconjunto de las operaciones que se pueden llevar a cabo en l. Un derecho es el permiso para realizar alguna de las operaciones. Es posible que un objeto se encuentre en varios dominios con distintos derechos en cada dominio. Un proceso se ejecuta en alguno de los dominios de proteccin: Existe una coleccin de objetos a los que puede tener acceso. Cada objeto tiene cierto conjunto de derechos.

Los procesos pueden alternar entre los dominios durante la ejecucin. Una llamada al S. O. provoca una alternancia de dominio. En algunos S. O. los dominios se llaman anillos. Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a cada dominio es mediante una matriz : Los renglones son los dominios. Las columnas son los objetos. Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio, por ej.: leer, escribir, ejecutar. Listas Para Control de Acceso Las matrices de proteccin son muy grandes y con muchos lugares vacos Desperdician espacio de almacenamiento. Existen mtodos prcticos que almacenan solo los elementos no vacos por filas o por columnas. La lista de control de acceso (ACL: access control list): Asocia a cada objeto una lista ordenada con: o Todos los dominios que pueden tener acceso al objeto. o La forma de dicho acceso (ej: lectura , grabacin (w), ejecucin (x)). Una forma de implementar las ACL consiste en: Asignar tres bits (r, w, x) para cada archivo, para: o El propietario, el grupo del propietario y los dems usuarios. Permitir que el propietario de cada objeto pueda modificar su ACL en cualquier momento: o Permite prohibir accesos antes permitidos. Posibilidades La matriz de proteccin tambin puede dividirse por renglones Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso. Se le indican las operaciones permitidas en cada uno. Esto define su dominio. La lista de objetos se denomina lista de posibilidades y los elementos individuales se llaman posibilidades. Cada posibilidad tiene: Un campo tipo: o Indica el tipo del objeto.

Un campo derechos: o Mapa de bits que indica las operaciones bsicas permitidas en este tipo de objeto. Un campo objeto: o Apuntador al propio objeto (por ej.: su nmero de nodo-i).

6.

proteccion y seguridad

Los mecanismos de proteccin proporcionan un acceso controlado limitando los tipos de acceso a archivos que los diferentes usuarios pueden efectuar. Tambin se requiere proteccin para asegurar que slo los procesos que hayan obtenido la autorizacin debida del sistema operativo puedan operar no slo con los archivos sino tambin con los segmentos de memoria, UCP y otros recursos. La proteccin se proporciona con un mecanismo que controla el acceso de los programas, proceso o usuarios a los recursos definidos por el sistema que se impondrn, y hacer cumplir las restricciones. El sistema de seguridad impide el acceso no autorizado a un sistema, que podra dar pie a la destruccin o alteracin mal intencionada de los datos. La seguridad se encarga de validar a los usuarios del sistema para proteger la integridad de la informacin almacenada en el sistema, as como los recursos fsicos del sistema de computacin.

6.1

concepto y objetivos de proteccion

La proteccin es un mecanismo control de acceso de los programas, procesos o usuarios al sistema o recursos. Hay importantes razones para proveer proteccin. La ms obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las polticas fijadas para el uso de esos recursos. Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la proteccin proveen maneras de distinguir entre uso autorizado y desautorizado. Objetivos de la Proteccin Inicialmente proteccin del SO frente a usuarios poco confiables. Proteccin: control para que cada componente activo de un proceso slo pueda acceder a los recursos especificados, y slo en forma congruente con la poltica establecida. La mejora de la proteccin implica tambin una mejora de la seguridad. Las polticas de uso se establecen:

o Por el hardware. o Por el administrador / SO. o Por el usuario propietario del recurso. Principio de separacin entre mecanismo y poltica: a la proteccin. o Poltica es el conjunto de decisiones que se toman para especificar cmo se usan esos elementos de proteccin. La poltica puede variar o dependiendo de la aplicacin, o a lo largo del tiempo. La proteccin no slo es cuestin del administrador, sino tambin del usuario. 6.2 Funciones del sistema de proteccion

FUNCIONES DE UN SISTEMA DE PROTECCIN. Dado que los sistemas de computo se han venido haciendo cada vez ms sofisticados en sus aplicaciones, la necesidad de proteger su integridad, tambin ha crecido. Los aspectos principales de proteccin en un Sistema Operativo son: 1. Proteccin de los procesos del sistema contra los procesos de usuario. 2. Proteccin de los procesos de usuario contra los de otros procesos de usuario. 3. Proteccin de Memoria. 4. Proteccin de los dispositivos. 6.3 Implantacion de matrices de acceso

Qu es el Dominio de Proteccin? Un sistema computacionael esta compuesto por procesos y objetos, los Objetos involucran Hardware y Software, cada objeto tiene un nombre nico que lo diferencia y cada objeto puede ser accesado solamente mediante operaciones bien definidas. Ejemplo: El CPU se utiliza solamente para ejecucin. Los segmentos de memoria se pueden leer y escribir. Un archivo puede ser ledo, escrito, ejecutado y borrado. 6.4 Proteccion basada en el lenguaje

La proteccin que se ofrece en los sistemas de computacin existentes casi siempre se ha logrado con la ayuda del ncleo de un sistema operativo, que acta como agente de seguridad que

inspecciona y valida cada intento por acceder a un recurso protegido. Puesto que la validacin de todos los accesos puede dar pie a un gasto extra considerable, debemos apoyarla con hardware para reducir el costo de cada validacin o bien debemos aceptar que el diseador del sistema podra inclinarse por sacrificar los objetivos de la proteccin. Es difcil satisfacer todos estos objetivos si los mecanismos de soporte con que se cuenta restringen la flexibilidad para implementar diversas polticas de proteccin. A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de ms alto nivel con el usuario, lo objetivos de la proteccin se han vuelto mucho ms refinados. En esta refinacin observamos que los diseadores de los sistemas de proteccin se han apoyado mucho en ideas que se originaron en los lenguajes de programacin y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de proteccin ahora se ocupan no slo de la identidad de un recurso al cual se intenta acceder, sino tambin de la naturaleza funcional de ese acceso. En los sistemas de proteccin ms nuevos, el inters en la funcin que se invocar se extiende ms all de un conjunto de funciones definidas por el sistema, como los mtodos de acceso a archivos estndar, para incluir funciones que tambin podran ser definidas por el usuario. Las polticas para el uso de recursos tambin podran variar, dependiendo de la aplicacin, y podran cambiar con el tiempo. Por estas razones, la proteccin ya no puede considerarse como un asunto que slo concierne al diseador de un sistema operativo; tambin debe estar disponible como herramienta que el diseador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicacin contra intervenciones o errores. Aqu es donde los lenguajes de programacin entran en escena. Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una declaracin acerca del recurso. Este tipo de declaracin se puede integrar en un lenguaje mediante una extensin de su mecanismo de tipificacin. Si se declara la proteccin junto con la tipificacin de los datos, el diseado de cada subsistema puede especificar sus necesidades de proteccin as debera darse directamente durante la redaccin del programa, y en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene varias ventajas importantes: 1. Las necesidades de proteccin se declaran de forma sencilla en vez de programarse como una secuencia de llamadas a procedimientos de un sistema operativo. 2. Las necesidades de proteccin pueden expresarse independientemente de los recursos que ofrezca un sistema operativo en particular. 3. El diseador de un subsistema no tiene que proporcionar los mecanismos para hacer cumplir la proteccin. 4. Una notacin declarativa es natural porque los privilegios de acceso estn ntimamente relacionados con el concepto lingstico de tipo de datos. Hay diversas tcnicas que una implementacin de lenguaje de programacin puede utilizar para hacer cumplir la proteccin, pero cualquiera de ellas deber depender hasta cierto punto del grado de soporte de una mquina subyacente y su sistema operativo. Qu ventajas relativas tiene entonces el cumplimiento basado exclusivamente en un ncleo, en comparacin con el cumplimiento forzado en gran medida por un compilador?

Seguridad: La obligacin del cumplimiento por un ncleo ofrece un mayor grado de seguridad del sistema de proteccin mismo, que el que ofrece la generacin de cdigo de verificacin de proteccin por un compilador. En un esquema apoyado por compilador, la seguridad depende de lo correcto que sea el traductor, de algn mecanismo subyacente de gestin de almacenamiento que proteja los segmentos desde los cuales se ejecuta el cdigo compilador y, en ltima instancia, de la seguridad de los archivos desde los que se carga el programa. Flexibilidad: Hay lmites a la flexibilidad de un ncleo de proteccin para implementar una poltica definida por el usuario, aunque podra proporcionar recursos suficientes para que el sistema haga cumplir sus propias polticas. Con un lenguaje de programacin, se puede declarar la poltica de proteccin y hacerse cumplir segn sea necesario en una implementacin- Eficiencia: Se logra la eficiencia mxima cuando hardware apoya directamente el cumplimiento de la proteccin. En la medida en que se requiera soporte de software, el cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento del acceso esttico fuera de lnea en el momento de la compilacin. En sntesis, la especificacin de la proteccin en un lenguaje de programacin permite describir un alto nivel de polticas de asignacin y uso de recursos. 6.5 Concepto de seguridad

La seguridad est definida en el diccionario como el conjunto de medidas tomadas para protegerse contra robos, ataques, crmenes y espionajes o sabotajes. La seguridad implica la cualidad o estado de estar seguro, es decir, la evitacin de exposiciones a situaciones de peligro y la actuacin para quedar a cubierto frente a contingencias adversas. El uso creciente y la confianza en los computadores en todo el mundo ha hecho surgir una preocupacin legtima con respecto a la seguridad informtica. El uso de los computadores ha extendido en ambientes comerciales, gubernamentales, militares e incluso en los hogares. Grandes cantidades de datos vitales sensibles se estn confiando y almacenado cada vez ms en computadores. Entre ellos se incluyen registros sobre individuos, negocios y diferentes registros pblicos y secretos gubernamentales y militares. Grandes transacciones monetarias tienen lugar diariamente en forma de transferencia electrnicas de fondos. Ms recientemente, informaciones tales como notificaciones de propiedad intelectual y datos comerciales estratgicos son tambin almacenados, procesados y diseminados mediante computadores. Entre ellos se incluyen diseos de ventas, contratos legales y muchos otros. La seguridad, no solo requiere un sistema de proteccin apropiado, sino tambin considerar el entorno externo en el que el sistema opera. La proteccin interna no es til si la consola del operador est al alcance de personal no autorizado, o si los archivos se pueden sacar simplemente del sistema de computacin y llevarse a un sistema sin proteccin. Estos problemas de seguridad son esencialmente de administracin, no problemas del sistema operativo. La informacin almacenada en el sistema, as como los recursos fsicos del sistema de computacin, tienen que protegerse contra acceso no autorizado, destruccin o alteracin mal intencionada, y la introduccin accidental de inconsistencia.

6.6

Clasificacion de la seguridad

**Clasificacin de seguridad**-Es decir que la clasificacin de los sistemas de computacin segn sus requerimientos de la seguridad ha sido ampliamente discutida de la seguridad del sistema. En esta clasificacin especifica, hay cuatro niveles de seguridad: a, b, c y d a continuacin, se describen estos niveles de seguridad y las caractersticas de cada uno. Nivel D es el Sistemas con proteccin mnima o nula no pasan las pruebas de seguridad mnima. MS-DOS y Windows 3. 1 son sistemas de nivel d. Puesto que estn pensados para un sistema mono proceso y mono usuario, no proporcionan ningn tipo de control de acceso ni de separacin de recursos. Nivel C a la Capacidad discrecional para proteger recursos, La aplicacin de los mecanismos de proteccin depende del usuario, o usuarios, que tienen privilegios sobre los mismos. Entonces esto significa que un objeto puede estar disponible para lectura, escritura o cualquier otra operacin. Y entonces casi todos los sistemas operativos comerciales de propsito general, como Unix, Linux o Windows NT se clasifican en este nivel.es decir dos son: 1. Control de acceso por dominios. 2. Control de acceso individualizado. Nivel B es el Control de acceso obligatorio en este nivel, los controles de acceso no son discrecionales de los usuarios o los dueos de los recursos, que deben existir obligatoriamente. Esto significa que todo objeto controlado debe tener proteccin sea del tipo que sea. Es decir que son tres y son: 1. Etiqueta de seguridad obligatoria. 2. Proteccin estructurada. 3. Y el dominio de seguridad. Nivel Aes el Sistemas de seguridad certificados para acceder a este nivel, la poltica de seguridad y los mecanismos de proteccin del sistema deben ser verificados y certificados por un organismo autorizado para ello.es decir dos tipos: 1. Diseo verificado. 2. Desarrollo controlado. 6.7 de tarea 6.8 cifrado Validacion y amenazas al sistema

Concepto de Cifrado.

El cifrado es un mtodo que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificacin del contenido, de manera que slo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo. Por ejemplo, si realiza una compra a travs de Internet, la informacin de la transaccin (como su direccin, nmero de telfono y nmero de tarjeta de crdito) suele cifrarse a fin de mantenerla a salvo. Use el cifrado cuando desee un alto nivel de proteccin de la informacin. Mtodos y Tcnicas de Cifrado. Cifrado de sustitucin El cifrado de sustitucin consiste en reemplazar una o ms entidades (generalmente letras) de un mensaje por una o ms entidades diferentes. Existen varios tipos de criptosistemas de sustitucin: La sustitucin monoalfabtica consiste en reemplazar cada una de las letras del mensaje por otra letra del alfabeto. La sustitucin polialfabtica consiste en utilizar una serie de cifrados monoalfabticos que son re-utilizados peridicamente. La sustitucin homfona hace posible que cada una de las letras del mensaje del texto plano se corresponda con un posible grupo de caracteres distintos. La sustitucin poligrfica consiste en reemplazar un grupo de caracteres en un mensaje por otro grupo de caracteres. Cifrado Csar Este cdigo de cifrado es uno de los ms antiguos ya que su uso se remonta a Julio Csar. El principio de cifrado se basa en la adicin de un valor constante a todos los caracteres de un mensaje o, ms precisamente, a su cdigo ASCII. Cifrado ROT 13 El caso especfico del cifrado Csar donde la clave de cifrado es N (la 13 letra del alfabeto) se denomina ROT 13? (se eligi el nmero 13, la mitad de 26, para que sea posible cifrar y descifrar fcilmente mensajes textuales). Cifrado de Transposicin El mtodo de cifrado por transposicin consiste en reordenar datos para cifrarlos a fin de hacerlos ininteligibles. Esto puede significar, por ejemplo, reordenar los datos geomtricamente para hacerlos visualmente inutilizables. El Cifrado Simtrico. El cifrado simtrico (tambin conocido como cifrado de clave privada o cifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado. El cifrado consiste en aplicar una operacin (un algoritmo) a los datos que se desea cifrar utilizando la clave privada para hacerlos ininteligibles. El algoritmo ms simple (como un OR exclusivo) puede

lograr que un sistema prcticamente a prueba de falsificaciones (asumiendo que la seguridad absoluta no existe). El Cifrado Asimtrico. El cifrado asimtrico (tambin conocido como cifrado con clave pblica). En un criptosistema asimtrico (o criptosistema de clave pblica), las claves se dan en pares: Una clave pblica para el cifrado; Una clave secreta para el descifrado. En un sistema de cifrado con clave pblica, los usuarios eligen una clave aleatoria que slo ellos conocen (sta es la clave privada). A partir de esta clave, automticamente se deduce un algoritmo (la clave pblica). Los usuarios intercambian esta clave pblica mediante un canal no seguro.

Você também pode gostar