SISTEMAS OPERATIVOS

Nombre del alumno:_____________________________ Grado_______________________________

carrera______________________________

Indice 1. Introducción 2. Concepto y definición de Sistemas Operativos. 3. Características de los Sistemas Operativos. 4. Clasificación de los sistemas operativos. 5. Sistemas Operativos paralelos 6. Historia de los Sistemas Operativos. 7. Sistema Operativo NetWare de Novell. 8. NetWare, Versión 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. Instalación, Configuración y Evaluación de NetWare. 1. Introducción Un Sistema Operativo es una parte importante de cualquier sistema de computación. Un sistema de computación puede dividirse en cuatro componentes: el hardware, el Sistema Operativo, los programas de aplicación y los usuarios. El hardware (Unidad Central de Procesamiento(UCP), memoria y dispositivos de entrada/salida (E/S)) proporciona los recursos de computación básicos. Los programas de aplicación ( 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 computación de los usuarios. Esto es a grandes rasgos un concepto de sistemas operativos en el contenido que a continuación presentamos existen diversos conceptos, así como también su historia, características y su clasificación, más adelante se consiguen características o información bastante importante sobre un sistema operativo en particular llamado Novell-Netware. 2. Concepto y definición 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 definición exacta, es decir una que sea estándar; a continuación 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 cómputo"; los sistemas operativosponen dicha capacidad de cómputo 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 ;además de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicación y los datos. 3.- Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware del computador y su propósito 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 computación se use de manera cómoda, 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 ejecución de programas de aplicación y actúa 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 podría 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 más eficiente los recursos de la máquina. Facilitar el trabajo al usuario.-Permite una comunicación con los dispositivos de la máquina.

El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de código 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 aplicación y software variado. 3. Características de los Sistemas Operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes características:

   

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

posible.

desarrollo,

prueba o introducciónefectiva 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 través del kernel). El Sistema Operativo se debe encargar de comunicar a los

dispositivos periféricos, cuando el usuario así lo requiera.  Organizar datos para acceso rápido y seguro.  Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras.  Procesamiento por bytes de flujo a través del bus de datos.
    
Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. Técnicas de recuperación de errores. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, Generación de estadísticas. Permite que se puedan compartir el hardware y los datos entre los usuarios.

informándoles si esa aplicación esta siendo ocupada por otro usuario.

El software de aplicación son programas que se utilizan para diseñar, tal como el procesador de palabras, lenguajes de programación, hojas de cálculo, etc. El software de base sirve para interactuar el usuario con la máquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseño del mismo. El Software de base está compuesto por :

   

Cargadores. Compiladores. Ensambladores. Macros.

4. Clasificación de los sistemas operativos.

Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo. control de laminadores. bolsas de valores. Algunas otras características con que cuentan los Sistemas Operativos por lotes son:           Requiere que el programa. Planificación de memoria sencilla. Los Sistemas Operativos por lotes. evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. del DC6600. están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo. Se utilizan en entornos donde son procesados un gran número de sucesos o eventos. y programas No requieren gestión crítica de dispositivos en el tiempo. Sistemas multimedia. Producción y distribución de energía eléctrica. pueden tener un tiempo de ejecución muy alto. Control de edificios. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario. Estos sistemas son de los más tradicionales y antiguos. análisis estadísticos. debido a la secuencialidad de la ejecución de los trabajos.) Se encuentra en muchos computadores personales combinados con procesamiento serial. con algunas de sus características: Sistemas Operativos por lotes. las aplicaciones de tiempo real están creciendo muy rápidamente. .Con el paso del tiempo. típicamente procesados en orden de llegada. Sistemas de fabricación integrada. los Sistemas Operativos fueron clasificándose de diferentes maneras. generalmente se divide en dos: parte residente del S. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE. porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples. y el EXEC II para el UNIVAC 1107. el cual está orientado a procesamiento científico pesado. Planificación del procesador sencilla. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:       Control de trenes.O.. Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios. archivos: se requiere poca protección y ningún control de concurrencia para el acceso. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea. Trabajos más comunes que realiza el Sistema Operativo por lotes. Sistemas Operativos de tiempo real. datos y órdenes al sistema sean remitidos todos juntos en forma de lote. Suelen proporcionar gestión sencilla de manejo de transitorios. control de refinerías. Por lo general. También en el ramo automovilístico y de la electrónica de consumo. nóminas de personal. Conveniente para programas de largos tiempos de ejecución (ej. procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. sino los procesos. y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados. Telecomunicaciones. dependiendo del uso o de la aplicación que se les daba. Figura. Permiten poca o ninguna interacción usuario/programa en ejecución. etc. orientado a procesamiento académico.

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:        real. Windows NT. el procesador. es decir. cuentan con las siguientes características:            Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos. control de vuelo. Gestión de memoria menos exigente que tiempo compartido. Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. . en memoria. aplicaciones militares. de manera que cada uno está usando el procesador. los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador. Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Lyns OS y Spectra.. Por tanto generalmente se utiliza planificación expropiativa basada en prioridades. Solaris. o un procesador distinto. Se utilizan en control industrial. OS/2. conmutación telefónica. Mejora productividad del sistema y utilización de recursos. esta la procesa tan pronto como le es posible. mediante interrupción. Requieren validación de usuario para seguridad y protección. Esto trae como periféricos. dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. dispositivos Sistemas Operativos de tiempo compartido. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. MAC-OS. Windows 95. en breve tiempo o dentro de ciertos plazos. etc. la mayoría externos al sistema computacional. involucra máquinas con más de una UCP. Generalmente soportan múltiples usuarios (multiusuarios). Proceso de mayor prioridad expropia recursos. El usuario hace una petición a la computadora. Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar. memoria. Windows 98. En general. Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo   Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores. Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos(que se están ejecutado) al mismo tiempo. aprovechando al máximo su utilización. simulaciones en tiempo real. y la respuesta aparecerá en la terminal del usuario. Proceso se activa tras ocurrencia de suceso. Los Sistemas Operativos de tiempo real. Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks. Multiplexa recursos entre varios programas. Los principales recursos del sistema. usualmente procesos son residentes permanentes Población de procesos estática en gran medida. soportan la multitarea. Objetivo es proporcionar rápidos tiempos de respuesta. Su objetivo es tener a varias tareas en la memoria principal. Sistemas Operativos como UNIX. dispositivos de E/S. Proporcionan facilidades para mantener el entorno de usuarios individuales. la memoria. son continuamente utilizados entre los diversos usuarios. Poco movimiento de programas entre almacenamiento secundario y memoria.

ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. LAN Manager. Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando un mismo archivos.C. Spring. OS/360 y DEC-10. Gobierna operación de un S. sistemas de archivos distribuidos.). Windows NT Server. Evitan monopolización del sistema asignando tiempos de procesador (time slot). Son aquellos sistemas que mantienen a dos o más computadoras unidas atravez de algún medio de comunicación (fisico o no). Sistemas Operativos de red. LANtastic. Sistemas Operativos distribuidos. Mach. Solaris-MC. cuyos tiempos de acceso son similares para todos los procesadores. y proporciona abstracción de máquina virtual a los usuarios. Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global. con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. tareas o procesos. entre un conjunto de procesadores. Taos. Ejemplos de Sistemas Operativos de tiempo compartido son Multics. UNIX. Chorus. etc. en este caso es trasparente para el usuario. Permiten distribuir trabajos. pasando posteriormente a procesadores Intel como Novell Netware. Servicios añadidos: denominación global. facilidades para distribución de cálculos (a través de comunicación de procesos internodos. Existen dos esquemas básicos de éstos. Figura.consecuencia una gran carga de trabajo al Sistema Operativo. Gestión de memoria proporciona protección a programas residentes. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000. Mayoría utilizan algoritmo de reparto circular. Generalmente proporcionan medios para la compartición global de recursos. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite. Dan la ilusión de que cada usuario tiene una máquina para sí. Objetivo clave es la transparencia. . principalmente en la administración de memoria principal y secundaria. Los sistemas distribuidos deben de ser muy confiables. Se muestra un Sistema Operativo en red. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj. ej: sistemas de diseño asistido por computador. ya que cada uno cuenta con su memoria local. Características de los Sistemas Operativos de tiempo compartido:        Populares representantes de sistemas multiprogramados multiusuario. etc. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes. Amoeba. procesamiento de texto. Caracteristicas de los Sistemas Operativos distribuidos:      Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software . llamadas a procedimientos remotos. Personal Netware. etc.

).5. capturistas. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo. Los 90's y el futuro. el programador interactuaba de manera directa con el hardware de la computadora. En los 80's. la compañía 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. en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente). La conectividad se facilita gracias a estándares y protocolos de sistemas abiertos por organizaciones como la Org. entramos a la era de la computación distribuida y del multiprocesamiento a través de múltiples redes de computadoras. que es utilizado en los sistemas RS/6000 de IBM. 6. la entrada de datos y los programas se realizaban a través del lenguaje máquina (bits) o a través de interruptores. Ejemplos de estos tipos de Sistemas Operativos están: Alpha. máquina que trabajaba por tarjetas perforadas. Durante los años 50's y 60's. el cual se considera como el primer tipo de Sistema Operativo. En los años 60's y 70's se genera el circuito integrado. Historia de los Sistemas Operativos. En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva. En esta época surgen las unidades de cinta y el cargador de programas. lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. Establecían o apartaban tiempo. Sistemas Operativos paralelos. inició el auge de la INTERNET en los Estados Unidos de América. sinulando paralelismo (es decir. Así. Intern. corregían y depuraban sus programas en su tiempo. fundación de software abierto. Se ha desarrollado otra versión. se encarguen de modificar sus programas. metían o introducían sus programas. no existía realmente un Sistema Operativo.. la serie AIX. desde finales de los años 40 hasta la mitad de los años 50. Con las primeras computadoras. PVM. regresa a atender al usuario inmediatamente después de haber creado el proceso.A principio de los 50's. es útil considerar como han ido evolucionando éstos con el tiempo. las primeras computadoras utilizaban bulbos. Se tendrá una configuración dinámica con un reconocimiento inmediato de dispositivos y software que se añada o elimine de las redes a través de procesos de registro y localizadores. Se descubre el concepto de multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo. Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales características de un Sistema Operativo contemporáneo. la cual se ha hecho en base a etapas o generaciones: . se introducen los programas bit a bit. Todo esto se traducía en pérdida de tiempo y tiempos de programas excesivos. atender de manera concurrente varios procesos de un mismo usuario). diseñadores. etc. A esto se le llamaba trabajo en serie. de normas. por medio de interruptores mecánicos y después se introdujo el leng. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podría ser esta: En los 40's. aprovechando el ciclo del procesador. todo estará mas controlado por los protocolos de comunicación OSIy por la red de servicios digital ISDN. tema principal de los Sistemas Operativos actuales. se organizan los trabajos y se generan los procesos Batch (por lotes). A finales de los años 80's comienza el gran auge y evoluciónde los Sistemas Operativos.

entre otros lograron construir máquinas de cálculomediante bulbos. La introducción del transistor a mediados de los años 50's modificó en forma radical el panorama.1a. Etapa. hasta la Segunda Guerra Mundial. Las computadoras se volvieron confiables de forma que podían fabricarse y venderse a clientes. A pesar de su enorme tamaño y sus problemas el sistema operativo de la línea IBM 360 y los sistemas operativos similares de esta generación producidos por otros fabricantes de computadoras realmente pudieron satisfacer. construidas a partir de transistores individuales. insertaba su conexión a la computadora y pasaba unas horas esperando que ninguno de los 20. hubo poco progreso en la construcciónde las computadoras digitales. La inmensa mayoría de los problemas eran cálculos numéricos directos. Prespe R. Cada máquina ejecuta su propio sistema operativo local y tiene su propio usuario. 4ta Etapa (1980-Actualidad) : Computadoras personales. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes.000 o más bulbos se quemara durante la ejecución. 3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramación. A principio de la década de los 50's la rutina mejoro un poco con la introducción de las tarjetas perforadas. En los sistema operativo de red. . fue la del sistema de procesamiento por lotes. lo que proporcionó una gran ventaja en el precio y desempeñocon respecto a las máquinas de la segunda generación. John Von Newman (Instituto de Estudios Avanzados. ausentes de los sistemas operativos de la segunda generación. A mitad de la década de los 40's. el cálculo de valores para tablas de senos y cosenos. La 360 de IBM fue la primera línea principal de computadoras que utilizó los circuitos integrados. de las cuales la más importante era la de multiprogramación. por lo demás el proceso era el mismo. Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta ha sido el crecimiento de las redes de computadoras personales. en forma razonable a la mayoría de sus clientes. pero eran mucho más lentas que la computadora casera más económica en nuestros días. Toda la programación se llevaba a cabo en lenguaje de máquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones básicas de la máquina. Howard Aiken (Harvard). También popularizaron varias técnicas fundamentales. No se oía de los Sistemas Operativos el modo usual de operación consistía en que el programador reservaba cierto período en una hoja de reservación pegada a la pared. con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Los lenguajes de programación eran desconocidos (incluso el lenguaje ensamblador). Dado el alto costodel equipo. Etapa (1945-1955) : Bulbos y conexiones. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. siempre que concluyera un trabajo el sistema operativo podía cargar un nuevo trabajo del disco en la partición que quedara desocupada y ejecutarlo. Princeton). los usuarios están conscientes de la existencia de varias computadoras y pueden conectarse con máquinas remotas y copiar archivos de una máquina a otra. La solución que. 2a. por ejemplo. por lo general se adoptó. Estas máquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos. con sistemas operativos de red y sistemas operativos distribuidos. así como Conrad Zuse (Alemania). no debe sorprender el hecho de que las personas buscaron en forma por demás rápidas vías para reducir el tiempo invertido. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones. Así. tan pronto como llegara al cuarto de cómputo. Otra característica era la capacidad de leer trabajos de las tarjetas al disco. Eckert y Williams Mauchley (Universidad de Pennsylvania). J. iba al cuarto de la máquina. Después de los infructuosos esfuerzos de Babbage.

el sistema de archivos usa NCP y Lotus NotesÒ usa SPX. NetWare de Novell es previo a OSI y no se basa en él. Las aplicaciones pueden seleccionar cualquiera de ellos. lo que incluye Ethernet. e incluso para cuando NetWare 2. En un sistema distribuido verdadero. Las capas física y de enlace de datos se pueden escoger de entre varios estándares de la industria. administrac ión y apoyo para múltiples protocolos. El campo Control de transporte cuenta cuántas redes ha atravesado el paquete. En la Figura 1. NetWare 386 inicialmente sólo estaba disponible como una versión de 250 usuarios. Esto se puede comprender si se tiene en cuenta que NetWare 2. cuando se excede un máximo. (9) y (10). También está disponible un segundo protocolo. los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos.2 salió al mercado. En la capa de aplicación están presentes varios protocolos de aplicación. NetWare es una pila de protocolos patentada que se ilustra y que se basa en el antiguo Xerox Network System.2. la versión básica de NetWare 3. Otra opción es TCP. aun cuando esté compuesto por varios procesadores. La clave de toda la arquitecturaes el paquete de datagrama de interred sobre el cual se construye todo lo demás. SPX. Este protocolo transfiere paquetes de origen al destino en forma transparente. eso debe ser manejado en forma automática y efica z por el sistema operativo. Las capas de sesión y de presentación no existen. 7. el paquete se descarta. El campo Longitud del paquete indica qué tan grande es el paquete. un número de máquina de 48 bits (La dirección802 LAN) y la dirección local (Socket) de 16 bits en esa máquina. Por ejemplo.x era una licencia de 20 usuarios de US$3. El campo Suma de verificación pocas veces s e usa puesto que la capa de enlace subyacente también proporciona una suma de verificación.Por el contrario. Introducción al uso de la Red NetWare.2 a las necesidades al mercado de hoy se queda corto cuando comienza a listar los asuntos de conectividad a que se enfrentan las compañías de hoy.2 de 16 bits todavía se puede ejecutar en una máquina de clase AT. El sistema de redes más popular en el mundo de las PCs es NetWare de Novell. el token ring de IBM y ARCnet. el cual solo proporciona transporte. sí. Hoy en día las cosas son . Versión 2.3 se muestra el formato de un paquete IPX.495. El NetWare 2. un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador. es decir suma el encabezado más datos y el resultado se guarda en 2 bytes. Cada una de las dos direcciones contiene un número de red de 32 bits. El campo Tipo de paquete sirve para marcar varios paquetes de control. Sistema Operativo NetWare de Novell. En lo funcional IPX es similar a IP. si acaso se parece más a TCP/IP que a OSI. excepto que usa direcciones de 10 bytes en lugar de direcciones de 4 bytes. Comprensible. El NCP proporciona otros servicios además del de transporte de datos de u suario y en realidad es el corazónde NetWare. La adaptabilidad de las características de NetWare 2. Este sistema se diseñó con la finalidad de que lo usarán grandes compañías que deseaban sustituir sus enormes máquinas conocidas como mainframe por una red de PCs que resultara más económica y fácil de manejar. flexibilidad y facilidad de uso al administradordel NOS bajo escenarios de conectividad que cambian constantemente. La capa de red utiliza un protocolode interred poco confiable. XNS Ô pero con varias modificaciones. pero no aceptable como una solución para toda una compañía.2 no pudo mantener el ritmo de los demás en las pruebas de ejecución que representaban tareas de redes mayores. Por encima de IPX está un protocolo de transporteorientado a la conexión que se llama NCP (Network Core Protocol. si n conexión llamado IPX. conexiones de área amplia. aun si la fuente y el destino se encuentran en redes diferentes. cuyo tamaño máximo está determinado por la capa subyacente NetWare. Por último se tienen los datos que ocupan el resto del paquete. Protocolo Central de Red).

como es el c aso del resto de los servicios de NetWare. Figura 1.11 tiene un precio de lista de US$1.995 de NetWare 2. Ofrece la habilidad de compartir archivos e impresoras.completamente distintas. fue su diseño modular. Además.11 y 4. velocidad.2 que cuesta US$895.5. .5 Mb recomendados. como lo muestra la Figura 1. La documentación de NetWare 2. solamente los módulos necesarios se cargan en el NOS. seguridad. En su arquitectura. Requerimientos:   PC basada en una 286 o superior. Los NLMs se pueden actualizar sin tener que reconstruir el NOS completo. y se pueden ca rgar sobre la marcha.11. Que varían desde las aplicaciones de administración de la red a servidores de SQL.2 está extremadamente bien escrita. Incluso el nivel de 100 usuarios solamente muestra una diferencia de mil dólares entre los US$5.11 sigue siendo un líderfuerte y flexible en la arena de los NOS para las compañías pequeñas o grandes. apoyo para la mayoría de los sistemas operativos. 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.) NetWare. Novell no ofreció un servicio de directorios globales como parte inherente de NetWare. pero antiguo como lo muestra la Figura 1.2 recibe ayuda de Banyan.0. Figura 1. pues tiene algunas otras características que lo hacen importante. NetWare 3. en la forma de su Enterprise Network Services for NetWare (ENS). 500K de RAM (2. todavía vale la pena. No tiene la capacidad de procesar múltiples hilos de NetWare 3.x). que esencialmente ofrece parte del servicio de nombres globales StreetTalk de Banyan a las redes de NetWare. NetWare 2.2 también carece de una opción de consola remota que ya tienen las versiones 3. NetWare 3. que ofrece parte de los servicios distribuidos StreetTalk a los LANs de NetWare. hasta que salió NetWare 4.11.0. establecer los derechos de cuentas y administra r la estructura de directorios son tareas que se realizan con una serie de servicios de menús bien diseñados o de línea de comandos.4 Arquitectura de NetWare 2.2 son mejores que las de sus predecesores. Pero los VAPs se consideran como difíciles de escribir y hay pocos disponibles.095 comparado con NetWare 2.11 y 4. La principal atracción de un NOS de 32 bits como el que introdujo Novell.5 Arquitectura de NetWare 3.11 tiene disponibilidad de miles de aplicaciones basadas en el servidor de llamadas a M&oa cute.2 y los US$6. NetWare 3.2 es familiar.11. dulos Cargables de NetWare (NLMs). y una gran cantidad de Hardware. NetWare 2. reservando la memoria para otras funciones como el caching de discos.0. estás ya son demasiado lentas comparándolas con las de las versiones 3.995 de NetWare 3. Sin embargo. Configurar los usuarios. Aunque la instalación y la configuración de NetWare 2.11 y 4. una madurez evidente en los servicios de administración para usuarios y archivos. Aunque tiene algunas dificultades con la administración de memoria. NetWare 2. Durante la instalación hay ayuda en línea disponible para cada pantalla. Por otro lado. aunque puede ejecutar aplicaciones basadas en el servidor de llamadas a procesos de valorañadido (VAPs). Por otra parte algunos de los módulos no desocupan la memoria cuando se descargan (Estos problemas de administr ación de memoria ya han sido resueltos en NetWare 4.0.4. Una versión de 5 usuarios de NetWare 3. Pero esto se puede corregir en parte con el NetWare Naming Service (NNS) o el ENS de Banyan. organizada y repleta de fotosútiles de pantalla.2 es la novena generación de la línea NetWare 286.11 es un producto realmente potente.2. Versión 3. NetWare 2. Una desventaja de este diseño es el uso de memoria. Su única desventaja para los que necesitan una solución a nivel de empresa es que carece de un servicio global de directorios.

cada uno de los cuales es un puntero a un usuario.0 no es para todo el mundo. Requerimientos:    PC basada en una 386 o superior.5. Basado en el estándar X.11 está diseñado en su mayoría para redes desde pequeñas a moderadamente grandes que consisten en servidores individuales.995 (1000 usuarios). los derechos de acceso y la información de impresión.0.0 ofrece la conexión simplificada de múltiples servidores. o un volumen en el servidor. StreetTalk de Banyan mantiene la información de un usuario en un solo servidor: Si ese servidor sufre algún tipo de avería. la capacidad de compartir recursos en la red y la administración centralizada en un producto coherente lleno de características. un archivo. la subasignación de bloques. 4Mb de RAM. facilitando la actualización a las compañías que tengan un entorno mixto de servidores 2. ese espacio pue de ser utilizado por otros archivos para rellenar el resto del bloque. NDS busca en su base de datos en los otros servidores para recopilar la información para una conexi&oac ute. la distribución de archivos y la administración basada en Microsoft Windows. Usando una razón de 2:1. Algunas de las más atractivas son el NetWare Directory Services (NDS). NDS está en el núcleo de NetWare 4. NDS es una base de datos diseñada jerárquicamente que reemplaza el Bindery en versiones anteriores de NetWare. NDS considera todas las entidades de la red como objetos. pero se han corregido y aumentado sus capacidades. los 2Kb adicionales de espacio en el disco que no se usaron serían desperdiciados. la compresión de archivos también puede hacer una gran diferencia en el espacio del disco duro. Cada uno de los servidores mantiene una base de datoscentralizada de verificación individual llamada el Bindery. Esto es posible porque la base de datos de NDS está duplicada en todos los servidores en la red en particiones.0. deben hacerlo manualmente con cada servidor.395 (5 usuarios) a US$47. las contraseñas. la configuración y la complejidad de la LAN que se quiera formar y. Determinar si en realidad se necesita un NOS tan potente depende del tamaño.x.500. NetWare 4. 8. Toda la informaci&oacut e. la compresión de a rchivos. en NetWare 4. Si el servidor que contiene la información se daña. con precios de US$1.0 aumenta las capacidades de NetWare 3. La arquitectura de NetWare 4. un grupode usuarios.11. Un marcador fantasma permanece en los vol& . como se mostró en la Figura 1.x y 4.0. Novell ha incorporado. 3. por ejemplo. añadiendo muchas características nuevas. La subasignación de bloques interviene cuando. Versión 4. Con este cambio Novell no abandona a los usuarios del Bindery. NetWare. Normalmente.0.NetWare 3. Lo bueno del NDS es la tolerancia a fallos que proporciona. Si los usuarios necesitan conectarse a más de un servidor para compartir recursos. La subasignación de bloques. de 2Kb se guarda en un servidor que tiene bloques de 4Kb. el High Capacity Storage Systems (Sistema de Almacenamiento de Alta Capacidad o HCSS) .x. pero con la subasignación de bloques activada. NetWare 4. La distribución de archivos es una característica que ha sido ofrecida en algunos paquetes de resguardo en cinta.11. En contraste. que mantienen toda la información de la red. El Bindery del servidor mantiene la información como los nombres de conexión. servidores de impresoras. NetWare 4. 50Mb de espacio en Disco Duro.n y permitirle conectarse a la red. NDS puede emular a un Bindery. principalmente porque sus servicios de directorios no integran a la red en su totalidad. es similar a la de la versión 3.0 HCSS permite fijar indicadoresen archivos que muestran la frecuencia con que se utilizan y además permite moverlos a otros medios que incluso no tienen que estar en el disco del servidor. el usuario no se podrá conectar a la red.n de la red se guarda en el NDS. del presupuesto. la compresión de archivos y la migraciónde archivos son algunas de las características atractivas en la versión 4.

actualizando cada uno en cada paso. c. se puede copiar el contenido del CD-ROM al volumen del servidor para poder instalar otros servidores en la red con mayor velocidad.com. Además de los nuevos entornos.11: a. Los VLMs ocupan menos memoria convencional que sus predecesores.compuremates.0 y colocarlo en la red. SISTEMAS OPERATIVOS Enviado por cypress_92 Anuncios Google: Renta De Computadoras El mejor equipo al mejor precio !Llamanos y compruebalo¡ | www.0. A través de una conexión en el mismo servidor requiere un riesgo a la integridad de los datos. 6Mb de RAM 12Mb-60Mb de espacio en Disco Duro. que ofrecen una solución más flexible a la estación de trabajo. Requerimientos:    PC basada en una 386 o superior.menes para que si un usuario trata de abrir el archivo.1 o superior. Novell también añade un programa de administración basado en Microsoft Windows uniendo características de configuración nuevas y viejas en programas familiares tales como SYSCON.0. conservando la memoria convencional. borrar y modificar objetos de la red. El VLM Manager aprovecha automáticamente la memoria alta disponible. analizar un disco y conectarse a una cola de impresión. primero se tiene que actualizar a NetWare 3. Como son módulos. con módulos. Hay tres rutas de transferencia para actualizar desde NetWare 3. son cargados en memoria por el VLM Manager. d. el sistema lo recupera de su lugar de almacenamiento alterno y la copia se hace transparentemente. Si se tiene un servidor adicional disponible.mx .0 es el procedimiento más seguro. Es necesario tener un cliente con un disco duro o un sistema de resguardo en cinta lo suficientemente grande para contener toda la información acuten del servidor temporalmente mientras se configura el servidor para NetWare 4. mover. en su mayoría debido a los posibles fallos durante la actualización. los VLMs se pueden añadir o eliminar con rapidez. pero puede ser el más caro.uacute. desconectarse. Después de instalar el primer servidor. Los atributos del GUI facilitan el añadir. Una actualización en el lugar también requiere cierto riesgo. Simplemente se debe asegurar de tener un resguardo completo de la red antes de comenzar el proceso. Con NetWare 4. Novell ha cambiado totalmente el entorno. b. un mejor apoyo para Microsoft Windows añade una interfaz gráfica para aliviar el problema de conectarse. El proceso de instalación del servidor bajo esta nueva versión es un procedimiento totalmente basado en menús. Los Módulos Cargables Virtuales (VLMs). A través de una conexión a un servidor 4. Este procedimiento no está disponible en los servidores 3. ocupan menos memoria que incluso BNETX (El entorno de modo de ráfaga usado en una estación).0. Un CDROM que contiene todos los archivos de instalación significa que no se tendrá que ca mbiar discos flexibles. PCONS OLE y PRINTDEF. Hay que instalar un servidor separado con NetWare 4. y con la habilidad de ráfagas de paquetes incorporada. reemplazando 2 archivos IPX y NET. se puede instalar de un servidor a otro.

El objetivo principal de un sistemaoperativo es lograr que el sistema de computación se use de manera cómoda. Por ejemplo. Estos gruposde información son llamados archivos.  Administrar los dispositivos de hardware en la computadora. Bibliografia 1. impresoras. Introducción a los sistemas operativos Definiciones de los sistemas operativos. sus discos. Cuando los programadores escriben programas de computadora. quizá el más complejo e importante en una computadora. incluyen en sus programas instrucciones que solicitan los servicios del SO. Cuando corren los programas.com/Motorola_ES400 Indice 1. Los archivos pueden contener instrucciones de programas o información creada por el usuario. revisar espacio disponible. Estas instrucciones son conocidas como "llamadas del sistema" . listar los archivos. Un sistema operativo es un programaque actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. es un programa muy especial.). El SO despierta a la computadora y hace que reconozca a la CPU. seleccionas las acciones mediante el uso de un Mousepara pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús. etc. Durante la POST. etc. Sin embargo. ejemplo. Introducción a los sistemas operativos 2. el sistema de vídeo y las unidades de disco. Portátiles. eliminar archivos. Estos servicios son similares a aquellos que el SO proporciona directamente a los usuarios. el MS-DOS. Un sistema Operativo (SO) es en sí mismo un programa de computadora. Los SO agrupan la información dentro de compartimientos lógicos para almacenarlos en el disco. Mientras la computadora esté encendida. 5. para que este último se pueda comunicar con la computadora. Interfaz de línea de comando: tú introduces palabras y símbolos desde el teclado de la computadora. Además. Funciones y características de los sistemas operativos. Impresoras Entrega en instalación sin costo | www. El SO  Administrar y mantener los sistemas de archivo de disco. la computadora identifica su memoria. su teclado. Una vez que la computadora ha puesto en marcha su SO. 4. la memoria. y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. su sistema de vídeo y cualquier otro dispositivo conectado a ella. Interfaz gráfica del Usuario (GUI).Renta de Computadoras Pcs. Estructura de un sistema operativo 3. las unidades de disco. Lo siguiente que la computadora hace es buscar un SO para arrancar (boot). Otra de las funciones importantes del SO es proporcionar serviciosa otros programas.  Apoyar a otros programas.compusolucionesrenta. módems.com Nuevo Asistente Digital Vea cómo el ES400 de Motorola marca la Diferencia Entre Saber y Poder! | Facebook. lo primero que ésta hace es llevar a cabo un autodiagnóstico llamado auto prueba de encendido (Power On Self Test. y nos proporciona las herramientas necesarias para organizar y manipular estos archivos. el monitor. necesitan utilizar la memoria. 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 aplicación. El SO mantiene una lista de los archivos en un disco. mantiene al menos parte de éste en su momento. el teclado. POST). los puertos de Entrada/Salida ( sirve de intermediario entre los programas y el hardware. el SO tiene 4 tareas principales: memoria en todo  Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario. grabarlos a disco. Cuando enciendes una computadora. Modalidades de trabajo de los sistemas operativos.

El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicación de los distintos usuarios Podemos ver al sistema operativo como un asignador de recursos. otros computadores) que intentan resolver problemas diferentes. también disimula mucho del interrupciones.¿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 objetivo fundamental de los sistemas de computación es ejecutar los programas de los usuarios y facilitar la resolución de sus problemas. Los sistemas operativos existen porque son una manera razonable de solucionar el problema de crear un sistema de computación utilizable.   Transformar el complejo hardware de una computadora a una máquina accesible al usuario. Por otra parte. juegos de video y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemasde computación de los usuarios. Puesto que pueden surgir conflictosen las solicitudes de recursos. como el controlde dispositivos de E/S. Hacer eficiente el uso del recurso. Un sistema operativo es una parte importante de casi cualquier sistema de computación. Objetivos para la creación de los sistemas Operativos. el sistema operativo. Puede haber distintos usuarios (personas. Los primeros computadores eran (físicamente) grandes maquinas que se operaban desde una consola. En un principio solo existía el hardware del computador. si se descubrían errores. relojes o cronómetros. las funciones comunes de control y de asignación de recursos se integran para formar un solo fragmento de software: el sistema operativo. rescatar lo que pudiera y volver mas tarde para continuar. desde los interruptores del tablero frontal (una instrucción en cada ocasión). Mientras este se ejecutaba. o se perforaba en cintas de papel o tarjetas para su impresión posterior. Desarrollo histórico de los sistemas operativos. el programador podía detener el programa. El sistema operativo actúa como el administrador de estos recursos y los asigna a usuarios y programas concretos según los necesiten las tareas de los usuarios. el programador-operador lo podía supervisar observando las luces en la consola. Sin embargo. La funcióndel sistema operativo es la de presentar al usuario con el equivalente de una máquina ampliada o máquina virtual que sea más fácil de programar que el hardware implícito. El hardware (unidad central de procesamiento (UCP). Los programas de aplicación (compiladores. dispositivos de E/S. memoria y dispositivos de entrada y salida (E/S)) proporciona los trabajoconcerniente a recursos de computación básicos. Supongamos que un usuario se había registrado para usar una hora de tiempo del computador dedicada a ejecutar el programa que estaba desarrollando. El programador escribía un programa y luego lo controlaba directamente desde la consola. Un sistema de computación puede dividirse en cuatro componentes: el hardware. con este procedimientose presentaban ciertos problemas. el programa se cargaba manualmente en la memoria. espacio de almacenamiento de archivos. La salida del programa se imprimía. desde una cinta de papel o desde tarjetas perforadas. El sistema operativo resguarda al programador del hardware del disco y presenta una interfaz simple orientada al archivo. pero como pensó que necesitaría la maquina durante más tiempo. Un sistema de computación tiene muchos recursos (hardware y software) que pueden requerirse para resolver un problema: tiempo de la UCP. El hardware se construye con este fin. manejo de memoria y otras características de bajo nivel. Luego se pulsaban los botones adecuados para establecer la direcciónde inicio y comenzar la ejecución del programa. el sistema operativo debe decidir a que solicitudes se les asignaran para que el sistema de computación pueda funcionar de manera eficiente y justa. podría terminar en 35 minutos. En primer lugar. por lo tanto es posible que haya diferentes programas de aplicación. pero se topaba con algún error difícil y no podía terminar en esa hora. sistemas de bases de datos. se registro para usarla una hora. examinar el contenido de la memoria y los registrosy depurar el programa directamente desde la consola. Lograr el mejor uso posible de los recursos. etc. usted debía detenerse. si el programa se ejecutaba sin problemas. los programas de aplicación y los usuarios. y permanecería inactiva durante 25 minutos. espacio de memoria. Si alguien más había reservado el siguiente bloque de tiempo. máquinas. se desarrollan programas de aplicación que requieren ciertas operaciones comunes. En términos generales no hay una definición de sistema operativo completamente adecuada. pero como este no es fácil de utilizar.

ya que los programas y los datos eran sometidos en grupos o lotes. bastaba usar el manejador de dispositivo de la biblioteca. Cada tipo de dispositivo tenía su propio manejador. Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los operadores. cargadores y ligadores para facilitar las tareas de programación. al preparar la ejecución de un programa en FORTRAN. se desarrollaron software y hardware adicionales. Esto se conoce como sistemas de procesamiento por lotes de un sólo flujo. pasando de válvulas (primera generación) a transistores (segunda generación). se diseñaron ensambladores. Finalmente. se perdía un tiempo considerable entre la terminación de un trabajo y el inicio del siguiente. Así mismo. En lugar de tener que escribir cada vez el código necesario. y por incrementos notables en velocidady capacidad. Antes de que los sistemas fueran diseñados. Para podercorrer un trabajo (programa). Este sabe como deben de usarse los buffers. las generaciones han sido marcadas por grandes avances en los componentes utilizados. el programador primero necesitaba cargar en el computador el compilador de FORTRAN. por lo que había que montar la cinta adecuada en la unidad correspondiente. y se crearon bibliotecasde funciones comunes. Por ejemplo. un operador se dirigiría a la desprendería la salida y la llevaría al cuarto de salida. Al terminar cada trabajo. estaba listo para ejecutarse. de manera que estas podían copiarse a un nuevo programa sin tener que escribirlas de nuevo. lo que facilito la tarea de programación. Los sistemas de los 50's generalmente ejecutaban una sola tarea. registros. indicadores. se cargaba en memoria y se depuraba desde la consola como antes. y la transición entre tareas se suavizaba para lograr la máxima utilización del sistema. El compilador de FORTRAN producía una salida en lenguaje ensamblador. empezaron a popularizarse los lectores de tarjetas. tamaño. Los usuarios tenían completo acceso al lenguaje de la maquina. Cada generación Sucesiva de hardware ha ido acompañada de reducciones substanciales en los costos. Cuando la computadora terminara el trabajo. donde los trabajos se reunían por grupos o lotes. que generalmente se conservaba en una cinta magnética. Cada nuevo dispositivo de E/S poseía sus propias características. como leer un carácterde un lector de cinta de papel. Generación Cero (década de 1940) Los primeros sistemas computacionales no poseían sistemas operativos. Se crearon máquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados. este tenia control total de la maquina. En el caso del Hardware. Este fue el comienzo de los sistemas de procesamiento por lotes. podía conllevar complicadas secuencias de operaciones específicas para el dispositivo. Cuando el trabajoestaba en ejecución. Primera Generación (década de 1950) Los sistemas operativosde los años cincuenta fueron diseñados para hacer mas fluida la transición entre trabajos. Una tarea sencilla. bits de control y bits de estadopara cada dispositivo. emisión de calor y consumode energía. COBOLy otros lenguajes. Todas las instrucciones eran codificadas a mano. puesto que ya no había necesidad de utilizar los tableros enchufables. aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas del gobiernose podían dar el lujo de tenerlas. para esto era necesario montar otra cinta con el ensamblador. para cada uno de ellos se escribía una subrutina especial. en código binario. y su salida debía enlazarse con las rutinas de apoyo de las bibliotecas. Al inicio de los 50's esto había mejorado un poco con la introducción de tarjetas perforadas (las cuales servían para introducir los programas de lenguajes de máquina). el programa objeto. la cual se denominaba manejador de dispositivos. Más tarde aparecieron los compiladores de FORTRAN. Además el laboratorio de investigaciónGeneral Motors implementó el primer sistema operativo para la IBM 701. lo que requería una cuidadosa programación. impresora y . impresoras de líneas y cintas magnéticas. El programa se leía a través del lector de tarjetas y se escribía en otra cinta. pero hizo más complejo el funcionamiento del computador. a circuitos integrados de gran y muy gran escala (cuarta generación). el cual limpiaba y leía e iniciaba el trabajo siguiente. al igual que el Hardware de los computadores. Los Sistemas Operativos. para que la recogiera el programador. La introducción del transistor a mediados de los 50's cambió la imagenradicalmente. a circuitosintegrados (tercera generación). que luego tenia que ensamblarse. Las rutinas que efectuaban operaciones de E/S tenían una importancia especial. el control era devuelto al sistema operativo. han sufrido una serie de cambios revolucionarios llamados generaciones.Conforme transcurrió el tiempo. tenían que escribirlo en papel (en FORTRAN o en lenguaje ensamblador) y después se perforaría en tarjetas.

. para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor". Este tipo de organizaciónes con mucho la mas común. Eran grandes y costosos. También llamados sistemas monolíticos. algunos de ellos soportaban simultáneamente procesos por lotes. procesamiento de tiempo real y multiprocesamiento. Tercera Generación (mitad de década 1960 a mitad década de 1970) Se inicia en 1964. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos. varios programas de usuario se encuentran al mismo tiempo en el almacenamiento principal. El sistema operativo se escribe como una colección de procedimientos. cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro. voluminosos. no estaban acostumbrados los usuarios. con el fin de tener una idea más extensa de cómo esta estructurado el sistema operativo. con la introducción de la familiade computadores Sistema/360 de IBM. Estructura de un sistema operativo En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas. Con la ampliación del uso de redesde computadores y del procesamiento en línea los usuarios obtienen acceso a computadores alejados geográficamente a través de varios tipos de terminales. Surgieron sistemas de tiempo real. En la segunda generación. y muchos de los esfuerzos de desarrollo terminaron muy por arriba del presupuestoy mucho después de lo que el planificador marcaba como fecha de terminación. con la finalidad de incrementar el poder de procesamiento de la maquina. en la que los usuarios podían acoplarse directamente con el computador a través de terminales. han sido necesario codificar los datos personales o de gran intimidad para que. La clave de cifrado esta recibiendo mucha atención. aun si los datos son expuestos. como en los registros o en la pila. Casi siempre eran sistemas grandes. Los sistemas de seguridadse han incrementado mucho ahora que la información pasa a través de varios tipos vulnerables de líneas de comunicación. en que los computadores fueron utilizados en el control de procesosindustriales. no sean de mas que a los receptores adecuados. Eran sistemas de modos múltiples. después de sus experiencias con los sistemas operativos de la tercera generación. Estructura modular. La independenciade dispositivos aparece después. Cuando se usa esta técnica. si este ultimo proporciona cierto utilidad a nadie cálculoútil para el primero. bien podría recibir el subtitulo de "el gran embrollo". Un usuario que desea escribir datos en una cinta en sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular. una complejidad a la cual. Estos sistemas introdujeron mayor complejidad a los ambientes computacionales. tiempo compartido. En los sistemas de multiprogramación. Los computadores de esta generación fueron diseñados como sistemas para usos generales. Veremos brevemente algunas estructuras de diseños de sistemas operativos. y el sistemas de multiprocesamiento se utilizan varios procesadoresen un solo sistema computacional. Se desarrollo sistemas compartidos. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. 2. Cuarta Generación (mitad de década de 1970 en adelante) Los sistemas de la cuarta generación constituyen el estado actual de la tecnología. Muchos diseñadores y usuarios se sienten aun incómodos. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata. en un principio. La estructura consiste en que no existe estructura alguna. cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. y procesador se cambia rápidamente de un trabajo a otro. nunca antes se había construido algo similar. con el propósito de serlo todo para toda la gente. el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto número de pistas y cierta densidad. En los los principiosdel multiprocesamiento.Segunda Generación (a mitad de la década de 1960) La característica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramación.

Existen muchos "shells" diferentes en el mercado. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atraído hacia el núcleo. El sistema por "capas" consiste en organizar el sistema operativo como una jerarquía de capas. Asignaba el espacio de memoria principal para los procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos (páginas) para las que no existía lugar en la memoria principal. La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador. PCTOOLS. Estructura por anillos concéntricos (capas). (Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo") Estructura por microkernel.COM" Este programa tiene dos partes. La capa 1 realizaba la administración de la memoria. 2. la capa 0 proporcionaba la multiprogramación básica de la CPU. El sistema tenia 6 capas. El kernel. Dijkstra (1968) y sus estudiantes. Esta organización sugiere una organización básica del sistema operativo: 1. al cual se llama. Esto es exactamente lo que sucede cuando cargas Microsoft Windows. Sobre la capa 0. En este modelo.Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio. la parte más importante del DOS es un programa con el nombre "COMMAND. que se mantiene en memoria en todo momento.COM el shell. pero utilizar una interfaz de usuario diferente.0 incluyó un Shell llamado DOS SHELL. el cual es el interprete de comandos Las funciones de bajo nivel del SO y las funciones de servicio.. Por encima de la capa 1. o inclusive el mismo SO MS-DOS a partir de la versión 5. el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. y para la segunda parte del COMMAND. Por encima de esta capa. los procesos no debían preocuparse si estaban en la memoria o en el recipiente. cada uno de los cuales se podría programar sin importar que varios procesos estuvieran ejecutándose en el mismo procesador. lo que se muestraen el evento (1) de la figura 1. (2) el sistema operativo determina el número del servicio solicitado. el software de la capa 1 se encargaba de garantizar que las páginas llegaran a la memoria cuando fueran necesarias. como se muestra en el evento (2) de la figura 1.un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio. Un modelo de estructura simple para un sistema monolítico.. El primer sistema construido de esta manera fue el sistema THE (Technische Hogeschool Eindhoven). (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. el sistema consta de procesos secuénciales. el cual toma el lugar del shell. Esta operación que se muestra en (3) de la figura 1. El sistema operativo examina entonces los parámetros de la llamada. por ejemplo buscar los datos de los programas del usuario.. para cada llamada al sistema existe un procedimiento de servicio que se encarga de él. de tal forma que puedes mantener el kernel DOS corriendo. A continuación. Por ejemplo. W. desarrollado en Holanda por E. La capa 0 trabaja con la asignación del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronómetros. (4) el control regresa al programa del usuario. como se muestra en la figura 3. contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios. cada una construida sobre la inmediata inferior.un programa principal que llama al procedimiento del servicio solicitado. Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). identifica el procedimiento de ultimo. La siguiente figura muestra este procedimiento de tres capas: (Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo") Figura 2. Por interpretación de comandosestán separadas. XTG. 3. Figura 1. ejemplo: NDOS (Norton DOS). la llamada al sistema termina y el control regresa al programa del usuario. cada . para determinar cual de ellas se desea realizar.un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario.

el cliente no necesita saber si el mensaje se maneja en forma local. cada una de ellas controla una faceta del sistema. un proceso del usuario (denominado proceso cliente) envía la solicitud a un proceso servidor. Estructura del sistema operativo THE. en MULTICS. lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. servicio a terminales o servicio a la memoria. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior. cada proceso puede trabajar con dispositivos exactos de E/S con propiedades adecuadas. 5 El operador 4 Programas del usuario 3 Control de entrada/salida 2 Comunicación operador-proceso 1 Administración de la memoria y del disco 0 Asignación del procesador y multiprogramación Figura 3. En lugar de capas. Además como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo. (Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo") Figura 4. La ventaja del mecanismo de anillos es su facilidad de extensión para estructurar subsistemas del usuario. En este modelo. debió hacer el equivalente a una llamada al sistema Mientras que el esquema de capas de THE era en realidad un apoyo al diseño. estos no tenían que preocuparse por el proceso. no tienen acceso directo al hardware. éste puede fallar. en vez de dispositivos reales con muchas peculiaridades. el mecanismo de anillos estaba mas presente durante el tiempo de ejecución y era reforzado por el hardware. Si un cliente se comunica con un servidor mediante mensajes. El modelo Cliente-servidor. debido a que todas las partes del sistema estaban ligadas entre si en un solo programa objeto. Por encima de la capa 3. Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los sistemas distribuidos (figura 5). La capa 3 controla los dispositivos de E/S y guarda en almacenes(buffers) los flujos de información entre ellos. consola o control de E/S. como el servicio a archivos. que realiza entonces el trabajo y regresa la respuesta.proceso tiene su propia consola de operador. o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente. servicios a procesos. en su máquina. (Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo") . cada parte es pequeña y controlable. La capa 4 es donde estaban los programas del usuario. Para solicitar un servicio. En consecuencia si hay un error en el servidor de archivos. siendo los anillos interiores los privilegiados. Al separar el sistema implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. pero esto no afectará en general a toda la máquina. MULTICS estaba organizado como una serie de anillos concéntricos. Estructura cliente– servidor Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. que se muestra en la figura 4. el proceso operador del sistema se localizaba en la capa 5 Una generalización mas avanzada del concepto de capas se presento en el sistema MULTICS. lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta. memoria. como operativo en partes. El punto de vista usual es el de la lectura de un bloque de cierto archivo.

Funciones de los sistemas operativos. Habilidad para evolucionar.. esto es. Encargado de administrar el hardware.Aceptar todos los trabajos y conservarlos hasta su finalización. discos compactos o cintas magnéticas.Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Un Sistema Operativo deberá construirse de manera que permita el desarrollo.. 9. como discos flexibles.Figura 5. Un Sistema Operativo hace más conveniente el uso de una computadora. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos periféricos.Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos.. las unidades de disco. 4. Características de los sistemas operativos. las impresoras. El Sistema Operativo se debe encargar de comunicar a los Organizar datos para acceso rápido y seguro. Procesamiento por lotes también puede referirse al proceso de almacenar transacciones durante un cierto lapso antes de su envío a un archivo maestro. 2. El modelo cliente-servidor en un sistema distribuido. el teclado o el Mouse. La secuencia por lotes o procesamiento por lotes en microcomputadoras. 7.. asignar a cada proceso una parte del procesador para poder compartir los recursos. discos duros.Manejo de dispositivos de E/S: Organiza los archivos en diversos dispositivos de almacenamiento. es la ejecución de una lista de comandos del sistema operativo uno tras otro sin intervención del usuario. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible.Interpretación de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador.. Facilitar las entradas y salidas. En general. El Sistema Operativo permite al usuario manejar con alta facilidad todo Procesamiento por bytes de flujo a través del bus de datos. (Quien va primero y quien después). 4.Manejo de errores: Gestiona los errores de hardware y la pérdida de datos. prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio.Control de recursos: Coordina y manipula el hardware de la computadora. 3. en los que los programas eran tratadospor grupos (lote) en ves de individualmente. Eficiencia. dispositivos de Entrada/Salida de la computadora.Multiacceso: Un usuario se puede conectar a otra máquina sin tener que estar cerca de ella. lo referente a la instalación y uso de las redes de computadoras. la ejecución de uno o unos pocos cada vez y la entrega de los recursos a los usuarios. Sistemas operativos por lotes. La función de estos sistemas operativos consistía en cargar en memoria un programa de la cinta y . 3.. Modalidades de trabajo de los sistemas operativos. Manejar las comunicaciones en red. cuando el usuario así lo requiera. por lo general una operación separada que se efectúa durante la noche Los sistemas operativos por lotes (batch). 8. Funciones y características de los sistemas operativos. 1.Protección: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario.. En los ordenadores más grandes el proceso de recogida de programas y de conjuntosde datos de los usuarios.. 5.      Relacionar dispositivos (gestionar a través del kernel). Definir el orden.. 6. se puede decir que un Sistema Operativo tiene las siguientes características:     Conveniencia. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere. como la memoria.

ejecutarlo. Al final este, se realizaba el salto a una dirección de memoria desde donde reasumía el control del sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta manera el tiempo entre un trabajo y el otro disminuía considerablemente. (Para ver el gráfico faltante haga click en el menú superior "Bajar Trabajo") Figura 6 - Sistema de procesamiento por lotes. Algunas otras características 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 interacción usuario/programa en ejecución. Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea. Conveniente para programas de largos tiempos de ejecución (Ej., análisis estadísticos, nóminas de

personal, etc.)
Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificación del procesador sencilla, típicamente procesados en orden de llegada. Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas No requieren gestión crítica de dispositivos en el tiempo. Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún 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 más 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 común en la mayoría de los microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el acceso de varios usuarios a computadoras más grandes y a organizacionesde servicios, mientras que la multitarea relacionada con las microcomputadoras implica la realización de múltiples 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 ilusión 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. Características de los Sistemas Operativos de tiempo compartido:

administración de memoria principal

      

Populares representantes de sistemas multiprogramados multiusuario, Ej.: sistemas de diseño asistido por

computador, procesamiento de texto, etc. Dan la ilusión de que cada usuario tiene una máquina para sí. La mayoría utilizan algoritmo de reparto circular. Los programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de

concedido el servicio. Evitan monopolización del sistema asignando tiempos de procesador (time slot). Gestión de memoria: proporciona protección a programas residentes. Gestión de archivo: debe proporcionar protección y control de acceso debido a que pueden existir múltiples

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 relación con los sistemas operativos monousuarios, ya que existe un solo operador y no necesita compartir el procesador entre varias solicitudes. Su característica principal es dar respuestas rápidas; por ejemplo en un caso de peligro se necesitarían respuestas inmediatas para evitar una catástrofe. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:

          

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

al sistema computacional, en breve tiempo o dentro de ciertos plazos. Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real.,

aplicaciones militares, etc. Su objetivo es proporcionar rápidos tiempos de respuesta. Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso. Un proceso se activa tras ocurrencia de suceso, mediante interrupción. Un proceso de mayor prioridad expropia recursos. Por tanto generalmente se utiliza planificación expropiativa basada en prioridades. Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes Población de procesos estática en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. La gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso.

en memoria.

Sistemas operativos de red. La principal función de un sistema operativo de red es ofrecer un mecanismo para transferir archivos de una máquina a otra. En este entorno, cada instalación mantiene su propio sistema de archivos local y si un usuario de la instalación A quiere acceder a un archivo en la instalación B, hay que copiar explícitamente el archivo de una instalación a otra.

Internetproporciona un mecanismo para estas transferencias, a través del programa protocolo de transferencias de archivos FTP (File Transfer Protocol).
Suponga que un usuario quiere copiar un archivo A1, que reside en la instalación B, a un archivo A2 en la instalación local A. Primero, el usuario debe invocar el programa FTP, el cual solicita al usuario la información siguiente: a) El nombre de la instalación a partir de la cual se efectuará la transferencia del archivo (es decir la instalación B). b) La información de acceso, que verifica que el usuario tiene los privilegios de acceso apropiados en la instalación B. Una vez efectuada esta comprobación, el usuario puede copiar el archivo A1 de B a A2 en A, ejecutando "get A1 to A2" En este esquema, la ubicación del archivo no es transparente para el usuario; tiene que saber exactamente donde esta cada archivo. Además los archivos no se comparten realmente, porque un usuario solo puede copiar un archivo de una instalación 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 serán consistentes. Los Sistemas Operativos de red son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información 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 más 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 migración de datos y procesos de una instalación 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 básicos 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 débilmente 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. Características de los Sistemas Operativos distribuidos:

   

Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y

software. Proporciona abstracción de máquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la compartición global de recursos.

Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación 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 económicos.

 

Multiprocesamiento simétrico: Cada procesador ejecuta una copia del sistema operativo. Multiprocesamiento asimétrico: Cada procesador tiene asignado una tarea específica, existe un procesador

master que asigna tareas a los procesadores esclavos. Multiproceso: Las computadoras que tienen más 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 instrucción, el otro procesador queda liberado para procesar otras instrucciones simultáneamente. 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 asimétrico. 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 dirección ideal a seguir ya que la CPU principal podía convertirse en un cuello de botella. Multiproceso simétrico. En un sistema multiproceso simétrico, no existe una CPU controladora única. La barrera a vencer al implementar el multiproceso simétrico es que los SO tienen que ser rediseñados o diseñados desde el principio para trabajar en un ambientemultiproceso. Las extensiones de UNIX, que soportan multiproceso asimétrico ya están disponibles y las extensiones simétricas se están haciendo disponibles. Windows NT de Microsoft soporta multiproceso simétrico. 5. Bibliografia

INTERRUPCIONES (FLIH)

Funciones del S. First Level Interrupt Handler)..          Software de sistema: Software construido para la ayuda de otros problemas. Comunicación: compiladores. Herramientas: Son programas que nos ayudan. El S.¿Qué es un S. pero que a la vez limita la capacidad de la máquina.O: Mantiene un entorno necesario para la ejecución de los programas de usuario.O. Programa: por ejemplo división por cero Temporizador: cuando se cumple un tiempo específico E/S: cuando hay algo que comunicar Hardware: cuando ocurre una falla. ofreciendo un entorno necesario para que el usuario pueda ejecutar sus programas. También podemos definir el S. La gestión de interrupciones la realiza el manipulador (controlador) de interrupciones (FLIH.O. de la siguiente forma: Las utilidades y las herramientas sirven para dar soporte a otros programas y el software de aplicación es el que soluciona problemas concretos y que está orientado a usuarios.: usuario una máquina virtual que es más fácil de programar que el hardware. tiene ciertos interpretes sobre el S.O. como una parte importante de un sistema informático. no para la ayuda del usuario. CAPAS:   Ejemplos: S. Software de aplicación: Software construido para resolver problemas concretos (Ejemplo: Word Perfect). tiene principalmente dos objetivos: informático (el conjunto del hardware y software). El manipulador de interrupciones es la parte del sistema operativo responsable de proporcionar la respuesta adecuada a las señales procedentes tanto del exterior como del interior del sistema (interrupciones externas e internas). Tema 1: Introducción a los sistemas operativos.La interrupción es el mecanismo mediante el cual otros módulos pueden interrumpir una secuencia normal de procesamiento. Sistemas de gestión de bases de datos Intérpretes de ordenes (Shell): interface construido sobre el S.O. pudiendo dividir el software de este en varias capas.O. Programas de tratamiento de ficheros.máquina (hardware). .. pues no podemos utilizar todos los recursos. Proporcionan comodidad para el usuario en el uso de programas. Depuradores (Debugger): ayuda a corregir ó depurar programas. Editores de texto (no procesadores): solo sirven para escribir.? Son un conjunto de programas que actúan como interface ó comunicación hombre .O. Traductores: interpretes. 1.

estaba inactiva. desde la misma consola.U. Era una forma de ejecutar secuencialmente todos los programas.U.P... el operador podía iniciar el siguiente. el S. Aparece el concepto de Multiprogramación que es un sistema para mantener ocupada el mayor tiempo posible la C.U. Ejecución del programa objeto.. Carga del programa objeto. Podía corregir errores sobre la marcha. Si te faltaba tiempo. hasta que se terminaba la ejecución del mismo. El programa se cargaba manualmente en memoria. ya que cada persona reservaba tiempo en una hoja de solicitud y este se calculaba a ojo. cambiará a otro trabajo y lo ejecutará. realizar un volcado si era necesario. Así se creo un pequeño programa llamado Monitor Residente (ya que reside siempre en memoria). El programador escribía el programa y lo ejecutaba desde la consola del operador.2. Multiproceso: son varios los procesos que pueden estar activos a la vez. En esta etapa. No había S. es decir. en ese momento comenzaba la ejecución del programa. Pero en esta etapa había un grave problema y era el método interactivo de reserva de tiempo de la C. Los controladores solapan las operaciones de E/S. Eso ocurrirá con todos los trabajos.Evolución histórica.U. lo que se intentó solucionar sobre todo era el desperdicio de tiempo de la C..O. determinar porque se había detenido la ejecución del programa. ya que el compilador de Fortram generaba una salida en lenguaje ensamblador que tenía que ser ensamblada. lo que hacía que la C. 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). tenías que volver a continuar en otro momento. .P. seguidamente se ejecutaba en el ordenador. Se trata de acelerar al máximo el tiempo de C. el programador seguía la misma mediante los pilotos de la consola. Una vez solucionado relativamente el desperdicio de tiempo.U. Por tanto las lectoras de tarjetas y las impresoras de línea eran operadas OFF . Para eliminar este tiempo de inactividad se introdujo el secuenciamiento automático de trabajos y con él se crearon los primeros y rudimentarios S. se ejecutaban en el ordenador como un grupo. A éste se le llamaba Sistema Satélite y a la técnica de realizar la lectura desde tarjetas de manera adelantada se le llama Spooling. i. Y si tenías la desgracia de que se produjese un error en uno de los pasos.O..U.U. Cargar la cinta del ensamblador. ya que los operadores tenían que darse cuenta observando la consola. momento en el que se devolvía el control al monitor residente que continuaba con el programa siguiente.P. Lo que se necesitaba era un procedimiento para la transferencia automática del control de un trabajo al siguiente.O. existía desperdicio de la C. por lo que había dos personas encargadas del ordenador. quizás tuvieras que empezar de nuevo. seguidamente se cargaba la dirección de inicio. La salida se imprimía.U. uno que saca cintas magnéticas (satélite) y otro (central). no hay S.U. se grababa en cinta ó se perforaba en una tarjeta. ETAPA 2: Aparece el concepto de interrupciones y controladores. si por algún motivo (especialmente operaciones E/S o término del tiempo asignado en los sistemas más modernos) hay que esperar.P. ya que cada trabajo implicaba un tiempo de preparación considerable.O. sólo máquina trabajando * bajo uso de la C.P. Un ejemplo de ello es : Dándose cuenta que la C. El central lee más rápido. cargar la lectora de tarjetas ó cintas. la salida iba a otra cinta y por último si se creía conveniente se pasaba de nuevo a tarjeta. permaneciera inactiva. se medio solucionó el problema pasando primero la información de las tarjetas a cintas magnéticas: se pasaba la información de la tarjeta a la cinta. si queríamos ejecutar un programa en Fortram los pasos a seguir eran los siguientes:         Cargar la cinta con el compilador de Fortram.. Multiusuario: varios procesos pueden estar conectados a través de terminales a una computadora (como en la Escuela). surgía un nuevo problema cuando un trabajo se detenía.P. Exige planificar los trabajos. ETAPA 0: Sólo existe hardware. Tendremos 2 ordenadores.7% del tiempo por culpa de los dispositivos de E/S (tarjetas perforadas). Ejecutar el compilador de Fortram.P. no por el ordenador principal. Ejecución del ensamblador. mientras que si te sobraba. Al arrancar el ordenador el control estaba en el monitor residente. Descargar la cinta del compilador. Para solucionar el desperdicio de tiempo se encontraron 2 soluciones: inalizado un trabajo. Por tanto el tiempo de preparación para la resolución de problemas era muy alto y como consecuencia. etc..LINE.P.e. se introdujeron las tarjetas de control.. ya que existen varios procesos simultáneamente en trabajos de un grupo de ellos. Para guiar al monitor residente de que programas debía ejecutar.P.. Descarga de la cinta del ensamblador. por ejemplo. ETAPA 1: Aparecen las cintas magnéticas. quien lo transfería al programa. quedaba inactiva el 93. la C. Para ello se necesitaba un pequeño ordenador que se dedicara a la tarea de copiar desde cinta ó en cinta.

Utiliza memoria mínima. Los Sistemas Multimodo. con sensores que proporcionan datos al ordenador y a la vez éste se encarga de ajustarlos correctamente.: Según la arquitectura existen 2 tipos:  Sistemas multiprocesadores o paralelos: Tienen la memoria y el reloj común. Utiliza la planificación de la C. el usuario puede estar controlando el trabajo al mismo tiempo que se ejecuta. Debido a la complejidad de estos. un S. ETAPA 3: Aparecen los Sistemas de Propósito General. La mayoría de los sucesos son externos al S.P. OBJETIVOS PRINCIPALES: Son el tiempo de acceso y el tiempo de respuesta donde deben ser muy rápidos. Tienen que garantizar un tiempo mínimo de respuesta. Batch lee una serie de tareas diferentes. en los cuales pueden ejecutarse cualquier tipo de aplicación.e.LINE: Interactivo. para que todos los usuarios tengan las mismas oportunidades.U. en los que había que esperar que acabase un trabajo para que empezase otro.C.. es decir. Tiende a aprovechar los recursos de la máquina. Cuando se dispuso del almacenamiento en disco. SISTEMAS CON MÁS DE UNA C. 3.O. Aparece el UNÍX. se le da mayor prioridad.). No se conoce un modelo general de S.U.DOS. que son sistemas que aportan tanto el modo interactivo como el Batch. i. Se ahorra tiempo de usuario. depende de la importancia o de lo crítico que sea.O.O. no pierde tiempo si no le mandan un trabajo. Estás trabajando sobre él. La característica definitiva de un sistema Batch es la falta de interacción entre el usuario y el trabajo. algún mecanismo de ejecución concurrente de procesos y mecanismo de protección de memoria Sistemas en Tiempo Real: Este se utiliza frecuentemente como dispositivo de control en una aplicación especializada. Los Sistemas de Tiempo Compartido son el resultado de la tentativa de obtener un funcionamiento interactivo de un sistema informático. Un usuario nos es consciente de que hay más de un usuario trabajando con el ordenador.Line entre el usuario y el sistema. 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: . Estos sistemas necesitan introducir sistemas de seguridad. Los sistemas basados en cintas o tarjetas solo permitían el acceso secuencial a los programas y datos y solo podía utilizarse una aplicación a la vez.on. Según el número de usuarios se dividen en dos tipos: sistema de protección de los datos). Pierde tiempo si el usuario está parado.Distintos aspectos de los S. La depuración de los programas se realizaba estáticamente.O. compartiendo el tiempo con todos los programas que se están ejecutando. cuando el trabajo se ha concluido imprime su salida. facilita la comunicación On . Importancia de los Sistemas de Gestión de Bases de Datos. Por tanto estos sistemas tienen una serie de inconvenientes que son:   El usuario no podía interaccionar en los procesos mientras se estaba ejecutando. Este sistema permite que muchos usuarios compartan simultáneamente el ordenador. Normalmente es Monousuario y se construye para entornos donde puede haber muchos sucesos. El usuario no puede seguir los pasos del programa o procesos. sólo cuado termina puede ver el resultado. Un sistema informático interactivo o Hands . . y la multiprogramación para dotar al usuario de una pequeña parte del ordenador compartido.O.P.P. El objetivo de estos sistemas es aumentar la productividad del sistema y para ello hay que obtener paralelismo de . multiprocesador. y aparece el MS . o de cambio de programas muy corto y el usuario no lo nota. a partir de vocablos puntuales. ya que este podía salir horas o incluso días más tarde.O. cree que está sólo trabajando con el ordenador. Tiene ventajas como mayor potencia de computación y fiabilidad.Sistemas de tiempo compartido: Lo primeros sistemas Batch eran una agrupación de trabajos similares. La C. se hace una estructuración de los S. Existen 2 tipos: erminada tarea. Respecto al propósito. Respecto al número de usuarios. Cuando no trabaja está parada. También aparecen los Sistemas Interactivos. Se ejecuta sobre el S. y debería realizarse en un tiempo breve.O. Podemos trabajar con el ordenador aunque haya otros en la red. ETAPA 4: En esta etapa se desarrollan los microprocesadores y con ellos el ordenador personal (P. capturar recursos.U. Capturar información. Es un sistema de respuesta rápida. Aparecen los Sistemas Distribuidos (las redes comunes). normalmente. siendo el tiempo de C. multiprocesador. Mandas un proceso o trabajo. necesita un soporte de memoria para que pueda comunicarse..LINE: No interactivo o Batch. acceso aleatorio. Este ordenador personal monousuario necesitaba un S. Tenemos ordenadores que no sólo hagan una cosa.P. Se construye porque existe un proceso que se va a encargar de cada suceso que tiene una cierta prioridad.U.

_ Los de red: Los usuarios son conscientes de que hay varias máquinas. (Ejemplo: el Linux de la Escuela).. puede usar la instrucción privilegiada de cambio de modo. teniendo en cuenta que hay otros usuarios. En el momento de producirse una interrupción.I. pudiendo elegir el usuario la máquina donde realizar la aplicación. o Acceso a instrucciones ilegales o privilegiadas. Calcular el vector de interrupción. .O. Enmascaramiento de interrupciones: es un proceso más común y menos burdo que el anterior.I. no compartida.O. Pasar a modo supervisor.tareas. es decir. Modo supervisor o Kernel (Bit de modo a 0):     o o o o o o  Tiene acceso completo a todas las direcciones.P. o Error en el direccionamiento.P. DISTINTOS MODOS DE FUNCIONAMIENTO DE LOS PROCESOS: Estos modos de funcionamiento del procesador se van a almacenar en 1 ó más bits del programa. Cuando se produce una interrupción hay que controlar que no se produzca otra ya que al provocarse 2 interrupciones a la vez se puede quedar colgado. Software de diagnóstico. a una interrupción que se almacena en una posición de memoria Cuando se produce una interrupción de hardware. destinada a una misma aplicación.P. es decir. restauramos el C. Programas que resuelven estadísticas: para comprobar el funcionamiento de la C. provoca el paso del control de la C. o Temporizador o reloj.U. Una vez ejecutada la R. Las interrupciones se utilizan también para controlar unidades que operan aparentemente y para responder a condiciones concretas del procesador. No tiene acceso a las instrucciones privilegiadas. se deshabilitan las que sean de igual o menor privilegio. Activación o desactivación de las instrucciones.. La comunicación es remota por medio de protocolos.P. Puede cambiar el valor de cualquier sentencia de la C. Para evitar que se ejecuten 2 interrupciones a la vez y que se quede colgado..         Pasar el control a la R. 4. o Fallo de hardware. (contador de programa). el paso 1). Poner en modo usuario.O. Nota: Sólo el S.T. Los usuarios son conscientes de que hay varias máquinas. Los tipos de interrupciones dependen de la arquitectura del procesador como por ejemplo: o Ejecución de un programa (oveflow. y P.S.O. Hay 2 tipos de S. realmente o propiamente distribuidos: Aquí no son conscientes de que hay más de un usuario. que consiste en deshabilitar las interrupciones nada más producirse una para que no se produzcan más (es decir. los pasos que sigue el ordenador son los siguientes: Deshabilitar las interrupciones para que sólo se produzca una cada vez (Opcional). Sólo puede cambiar los valores de algunos registros del procedimiento. Lo S.    Sistemas distribuidos: La memoria es local.. o Violación de privilegios. Permite que el programa se ejecute en distintas C. Y se ejecutan varias tareas que se reparten entre las distintas C.U. Cada nodo o cada máquina ejecuta su propio S. existen dos posibles soluciones:   La más burda.Soporte Hardware de los S.U.U.P.). (Rutina de tratamiento de información. o Finalización de la tarea de un controlador.U. local. Salvar el contador del programa y la palabra de estado (C. y hacer mejoras.T.P.U. o Funciones de E/S. respectivamente). se carga la 1ª rutina en el vector de interrupción)..P. Nos clasifica las interrupciones por tipos (privilegios). INTERRUPCIONES Y EXCEPCIONES: Hardware: Mecanismo por el cual cuando se ha producido un problema o algo raro en el sistema. más de una C. Puede ejecutar cualquier instrucción máquina.W.P. Pasar el control al proceso que estaba en curso antes de que se produjera la interrupción. Modo Usuario (Bit de modo a 1): Sólo tiene acceso a un rango de dirección de memoria.O.

o  

Chequeo de la propia máquina. PROTECCIÓN: Este subapartado lo vamos a dividir en 3 partes claramente diferenciadas: Protección de E/S : Una protección de E/S se asegura haciendo que las instrucciones de E/S sean instrucciones máquina, i.e. que sean instrucciones privilegiadas. El hardware cuida de que dichas instrucciones se ejecuten sólo 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 interrupción, el hardware cambia de modo usuario a supervisor y antes de devolver el control al programa se vuelve a pasar a modo usuario. Protección de memoria: En este caso debemos proteger a: La memoria que une el S.O. de los procesos de usuario. Con ello obtenemos la protección en la memoria Los procesos de usuarios entre ellos. Otro hardware subyacente, hardware que use memoria El vector de interrupciones de cualquier modificación por parte del usuario (muy importante proteger esto). Las rutinas de servicio de interrupciones del supervisor residente ante una posible modificación. Tenemos que asegurarnos que un programa de usuario nunca toma el control del ordenador en modo supervisor Protección 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 interrupción. Con esto tratamos de contrarrestar los bucles infinitos y que un proceso no controle la C.P.U. todo el tiempo. 5.- Visión 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 están 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 Manipulación de archivos: abstracción de archivos. El S.O. nos da el concepto de archivo. Respecto a la comunicación entre procesos: cuando tenemos distintas máquinas. Tiene 2 implementaciones Memoria compartida. Puede usarse cuando 2 procesos están en la misma memoria, que trabajan sobre la misma Paso de mensajes. Un proceso manda una señal a otro proceso (por ejemplo para sincronizarlos). Detección 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

básicas:


variable.

           

Gestión del sistema: no son generalmente servicios para usuarios normales sino que son servicios que están para los administradores. Correcto funcionamiento del S.O.: Realiza una asignación 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 estadísticos. Relativos a protección: 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 través 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 intérprete de órdenes (SHELL) se desconecta mientras se ejecuta la orden. Cuando se ejecuta una orden en background (segundo plano), antes de que termine la ejecución 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 ejecución. Esta llamadas van a realizar una interface entre los programas de usuario en ejecución y el S.O. Estas llamadas pueden ser mediante interrupciones o también 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: Ejecución de una instrucción en Ensamblador. Ejemplo: int 12 (abrir un fichero). Llamada al sistema * Interrupción SINCRONÍA. Interrupción hardware * ASINCRONA. (se produce al hacer una llamada al sistema). Llamada a una función Si mientras yo hago una llamada al S.O. con una de las formas anteriores, si se produce un error, ello provoca una interrupción. La información 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 instrucción que es trap. 6.- Estructura interna de un Sistema Operativo. Sistemas monolíticos. Se caracterizan porque no tienen estructura o si la tienen está poco definida. Se trata de un conjunto de procedimientos, los cuales están visibles entre ellos. No hay modularidad ni abstracción de la información. Sólo hay un programa objeto. Podemos ver en una pequeña división que los sistemas monolíticos se dividen en tres partes: Cualquier Procedimiento puede llamar a cualquier otro. Sistemas por capas o por niveles. Se trata de una degeneración de los sistemas monolíticos. Se dividen por capas y cada una de ellas tiene una función bien definida. Cada capa a su vez se puede dividir en un conjunto de módulos. Las ventajas del sistema por capas respecto del anterior son las siguientes: Modularidad. Fácil mantenimiento. Fácil modificación de alguna de las capas (los cambios no afectan a las otras capas). Fácil detección de errores. Las desventajas de los sistemas por capas o la dificultad aparece a la hora de crear dichas capas, al igual que la jerarquía de dichas capas, i.e. saber cual es superior o prioritaria y cual es inferior. La gestión de memoria no va con el hardware desnudo, sino que se has de planificar en procesos. Modificar cualquier procedimiento de una capa es muy fácil sin tener los interfaces de las capas anteriores. Tienen 6 capas: Situada sobre el hardware: se asigna al procesador y gestores de multiprogramación Gestión y administración de memoria y disco: contiene las direcciones de los procesos en memoria y disco. Común: 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 núcleo mínimo. Ventaja: al ejecutarse los servidores en modo usuario, si algo falla no tiene porque pararse la máquina 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 núcleo se encarga de realizar las acciones en modo supervisor. Los servidores se encargan de la gestión.

   

  

   

      

 

Permitir que los servidores críticos se ejecuten en modo supervisor. Pero las comunicaciones con los clientes se realizan a través del núcleo. Así quedaría: Cliente solicita un servicio * Núcleo * 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 Definición: Es el programa en ejecución y más cosas, i.e. un proceso es una entidad activa, que está en ejecución mientras que un programa es una entidad pasiva que no está en ejecución. El S.O. se encarga de realizar una planificación 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 ejecución. 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: Ejecutándose o activo: Cuando utiliza la C.P.U. en un instante dado (sólo 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 algún evento extraño. Los procesos son asíncronos e independientes unos de otros. En la C.P.U. sólo se ejecuta un proceso cada vez. Diagrama de transposición 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 ejecución 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 demás procesos han tenido su parte y este proceso vuelve a ejecutarse. Los datos están 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 ejecución en ese momento se produce la transición a ejecutándose 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 revés, el S.O. debe guardar toda la información necesaria del proceso que luego vuelve al mismo lugar donde estaba. Toda la información 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 información 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 información 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, ejecutándose o bloqueado.

Guarda la línea o el puntero al proceso padre o a los procesos hijos, lo que corresponda, en los sistemas con jerarquía de procesos. Los sistemas que asignen prioridad a los procesos guardarán dicha prioridad. Información 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). Información 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. Información estadística: Tiempo de C.P.U. consumido por el proceso. Volumen de E/S. Tiempo bloqueado. Nota: una interrupción no provoca un cambio de contexto. Cuando acaba la interrupción se sigue con el proceso que estaba antes de dicha interrupción. 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 dirección del procedimiento de servicio a las interrupciones si se produce un cambio de contexto (ejemplo: interrupción de disco).

P.O.  Dispatcher o despachadores.U. debemos mantener un equilibrio entre ambos tipos de procesos.P. o El proceso agota su quantum de tiempo. Es el que se va a encargar realmente de mandar el control de la C.U. al proceso actual (guardando todos los registros en la tabla de procesos).B. Toma el primer proceso de la cola de preparados o ejecutables. Se implementa con vistas a conseguir el mayor rendimiento de la C.   Obtener un buen servicio. Se llama cuando un proceso finaliza o si no finaliza ninguno en un cierto tiempo. este planificador elige que proceso va a asignarlo a la cola de la C. Con objeto de establecer si estamos obteniendo o no un buen servicio de manera objetiva establecemos unas medidas.P. Como variables globales se pasan el nº de proceso activo y el apuntador de datos.P. es decir.U. y poco E/S. 2. . Limitados por la C.  Políticas de planificación de la C. o M (tiempo de espera): tiempo que un proceso ha estado esperando en la cola de preparados (T-t). o T (tiempo de respuesta): tiempo transcurrido desde que se remite una solicitud hasta que se produce la primera respuesta.P.U: a otro proceso (ejecutable) Hay dos tipos de procesos:   Limitados por E/S: son procesos que usan la C. Planificadores a medio plazo: se encargan de procesar los trabajos que están bloqueados y lo que va a insertar y quitarlo de memoria para ponerlos en la cola de ejecutables. o Un proceso cambia de estado de bloqueado a ejecutable. y el planificador debe decidir que proceso es más importante de los varios que están en la cola de ejecutables. o El S.e. Se encarga del planificador a corto plazo y asigna procesos a la C.U.        Cede el control al proceso y lo pone en modo usuario. Por último asignamos la C. ya que puede haber varios usuarios peleándose por la C.: procesos que usan mucho la C. 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. Se encarga de admitir en el sistema los trabajo por lote. Planificadores a corto plazo: de los procesos que están en la cola de ejecutables.. En los sistemas operativos pequeños sólo existe el planificador a corto plazo. i.P. Consiste en un algoritmo para planificar o controlar la asignación de la C. La actuación del despachador se invoca por alguna de las siguientes razones: o Un proceso finaliza. Si se debe cambiar * Paso b. que se haga el mejor trabajo útil posible en el sistema.P. Existen 3 tipos de planificadores:     Planificadores a largo plazo: son los que se encargan de trabajar con la cola de trabajos por lote (batch).P. La actividad básica del planificador consiste en controlar que trabajos entran en un sistema o que procesos interactivos se van a ejecutar en un momento dado. es la parte del S.Planificador de procesos. Ejemplo: E/S o espera a la finalización de los procesos hijos. Si no se debe cambiar * Devuelve el control al proceso activo Salva el entorno volátil del proceso actual..O. en intervalos cortos y pocas veces y usan mucho E/S. a un proceso de la cola de ejecutables. Seguidamente la información depositada por la interrupción se elimina de la pila y el apuntador de ésta apunta a una pila temporal que utiliza el control del proceso. Para obtener el mayor rendimiento posible del sistema.P. Partamos de un proceso P1 que necesita un tiempo de servicio t. Carga el entorno volátil del proceso elegido (el contenido del P.Este cambio de contexto es una operación que normalmente sufren los procesos y consiste en retirar la C.C.U.). Los objetivos son dos: Obtener un buen rendimiento. decide que el proceso activo no debe seguir ejecutándose.U.U.U.U. que planifica el orden de ejecución de los programas y utiliza un algoritmo llamado algoritmo de planificación.P.U. Dentro de este apartado vamos a ver varios subapartados: Tipos de planificadores. El funcionamiento de esto tiene varios pasos: Decide si se debe cambiar el proceso que está activo.P.U. El objetivo principal es optimizar el rendimiento del sistema. El planificador es el que se encarga de decidir por ejemplo que proceso se va a ejecutar con anterioridad si hay más de uno ejecutable.P.

           Creación: consiste en coger memoria principal y definir la estructura de datos del proceso así como asignar el espacio de direcciones propio. Solución: El envejecimiento de los procesos. Procesos largos: aquellos procesos con fuerte demanda de C.C. Los hijos comparten los recursos del padre. Existen S. o *: valor de ponderación. 3. o Tiempo de núcleo: tiempo perdido por el núcleo del S. Un proceso puede solicitar la creación de otro proceso.: Establece la prioridad inicial. o desencriptación de procesos.5. creando una estructura en árbol de tal forma que el proceso que genera en él procesos se llama padre y los generados hijos. Estos sistemas son fáciles de implementar aunque no son adecuados para los sistemas de propósito general con varios usuarios. 0 ***1 Así pues nos quedaría: Normalmente. crea un proceso debido a 4 situaciones posibles: Recepción y admisión de un nuevo trabajo (sistemas batch).  temporal.P. en ésta hasta que se bloquee o finalice. o o .O. Otra forma de planificar los procesos en espera es mediante un algoritmos de prioridades. caben dos posibilidades: Los hijos obtienen recursos directamente del S.P. Los algoritmos se pueden implementar de dos formas. El S. Problema: Puede pasar que con un algoritmo apropiativo. Inserta el proceso en la tabla de procesos.P.U. Primero se le asigna un nombra al proceso.e.C. No existe ninguna política de planificación que favorezca a todos los procesos en general. a un proceso aunque éste no se haya bloqueado o finalizado.O. el cual le asigna un número entero que indica la prioridad del proceso.B. Apropiativos o con desplazamiento o con derecho preferente: son aquellos que pueden retirarle la C.O. A priori no podemos conocer cuanto va a durar la ejecución de un proceso por lo que únicamente podemos realizar una estimación. Podemos clasificar los procesos en 2 tipos diferenciados:     Procesos cortos: aquellos procesos con fuerte demanda de E/S y baja demanda de C.O. i. o *n: valor estimado de la n .I.O.U. 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 inanición. Hay dos formas de asignar las prioridades: o Internamente * S. * * Estática o Externamente * Usuario * * Dinámica. Se podría seguir una fórmula de promedio exponencial que se va a basar en las longitudes ya medidas de las ráfagas de C.exima ráfaga. y baja demanda de E/S. En el caso de que *=0 obtendríamos que la historia reciente no influye y en el caso de que *=1 veríamos que solo cuenta la ráfaga actual. se permite que un proceso genere otro proceso. Creación del P. Típicamente tiene un valor de entre el 10% y el 30% del tiempo consumido. El S.O. anteriores: o TN: duración real de la n .U.o P (penalización): tiempo que ha desperdiciado el proceso en cada ráfaga (T/t).P. Igualmente podemos clasificar los algoritmos de planificación en 2 categorías: No apropiativos o sin desplazamiento sin derecho preferente: son aquellos que mantienen el proceso al cual se le ha asignado la C. Si R se aproxima a 1 será bueno mientras que si se aproxima a 0 será malo. Cuando se produce una jerarquía de procesos. Asigna recursos iniciales como memoria.U. Establece el estado inicial..P. Puede ser simplemente con un identificador de procesos (P.B. Asigna alguno de los valores a los contenidos del P.P. que permiten jerarquías de procesos. un proceso se bloquee indefinidamente.).U. Apropiativa: Permite que los procesos ejecutables (desde el punto de vista lógico) sean suspendidos de forma  No apropiativa: Se ejecuta el proceso seleccionado hasta que termine.U. archivos abierto.Operaciones sobre procesos. o R (índice de respuesta): es la fracción de tiempo que el proceso P1 está recibiendo servicio (t/T).D. o Tiempo de inactividad: es el tiempo en que la cola de procesos ejecutables está vacía y no se realiza ningún trabajo productivo. Si P es bajo mejor porque el proceso se va a ejecutar en menos t de C. tomando decisiones de planificación y cambio de contexto. *= 0.ésima ráfaga. etc. La conexión del usuario provoca la creación de un proceso que ejecute el SHELL (sistema interactivos). crea un proceso en respuesta a una petición del usuario.

o Mejor servicio (para el usuario).O.O. Todas la hebras van a tener acceso a las divisiones del espacio de direcciones. por tanto todos los recursos del padre van a pasar al hijo). Esto es así porque en un sistema de hebras.U. o La sección de datos. Entra en la C. Supongamos que el S. Sería bueno tener unos flujos de control de procesos. Utilizar el mecanismo de hebras aporta ventajas como: o Mayor rendimiento. Cada hebra comparte con una hebra par: o La sección de código. (background). Desasignar los recursos que estaban activos. o Bloqueado. Tanto el proceso padre como el hijo se ejecutan concurrentemente (UNIX). con servidor de ficheros sería un proceso que cuando recibe la solicitud de otro proceso. Hebras o procesos ligeros: una hebra es un proceso que tiene sus propios o Contador de programa. Es algo que el propio proceso se encarga de notificar al S. Tarea: Entorno clave donde se ejecutan varias hebras que comparten el espacio de direcciones. esta forma de ejecución puede ser: El proceso padre se bloquee hasta que finalicen sus hijos (foreground). que es un S. o Conjunto de registros. Otra forma de terminación del sistema es con abort. Esto se mejoraría con varios flujos de control que comparten el mismo espacio de direccionamiento de forma que si se ejecuta un proceso y se bloquea uno. Borrar el P. ya que podemos ejecutar una hebra en cada procesador. Si cambiamos las tareas. se tratan las hebras como unidad básica. o Recursos del S.B. tanto el proceso padre como el proceso hijo concluyen. con lo que se mejoraría el coste. o Pila. existen sistemas donde el hijo es una copia exacta de la imagen del padre (UNIX: va ha hacer una llamada al sistema (fork).   Una vez que el proceso padre ha creado a los hijos y este comienza a ejecutarse. El proceso provoca la finalización de otro proceso. Los sistemas de hebras son muy utilizados en sistemas distribuidos multiprocesador.C. significa: Borrarlos de cualquier lista o tabla del S. Podemos observar varios niveles de hebras:  Hebras implementadas en el Kernel: el kernel tiene implementadas las rutinas necesarias para el tratamiento de las hebras. . El hijo hereda los recursos del padre caso de estar compartiéndolos. Esto puede dar lugar a conflictos a la hora de ejecutarse procesos concurrentes. una hebra u otra. empleamos el mismo coste que los procesos paralelos.O. Eliminarlos del S. El proceso pesado o tradicional es un espacio de direcciones virtual con una única hebra. Esto es privilegio de los procesos padres sobre sus hijos. En un sistema de jerarquías de procesos como el anterior puede ocurrir: Llamada al sistema (exit) para eliminar los recursos del sistema. pero acaba con él.O.P. de la tabla de procesos. no hay protección de memoria. 4.). Destrucción: un proceso puede terminar por: Ha finalizado. Las hebras van a poder estar en los mismos estados que le preceden: o Ejecutándose. ESPACIO DE DIRECCIONES: Alternativa 1: Cuando se crea un proceso. Una hebra se puede ver como un proceso de forma que el planificador trabajaría con hebras.O.     o o o     Alternativa 2: Se crea el hijo con un programa que carga el propio fichero hijo (VMS.O. los hijos continúan ejecutándose de forma implícita. los demás pueden seguir ejecutándose por otro lado. el servidor de ficheros debe darle paso mientras los otros procesos deben esperar (bloqueado). Un proceso puede finalizar por concluir una ejecución o porque un proceso de jerarquía mayor realiza una llamada al sistema.. Dos casos posibles: Si el proceso padre finaliza. Si el padre termina.Threads (hebras o hilos). Esto mejora el cambio de contexto que sería cambio entre hebras. o Ejecutable. La terminación del padre * terminación del hijo. o Aumento de concurrencia (permite varios procesos paralelos concurrentemente).

El consumidor no puede retirar datos del buffer si previamente el productor no ha introducido nada. que va a abarcar al conjunto de técnicas y rotaciones necesarias para expresar el paralelismo potencial de un sistema concurrente y resolver los problemas de sincronización y comunicación. La C. para ello hay que utilizar los mecanismos necesarios que nos eviten problemas. esto es un proceso que no va a depender de otro o Procesos cooperativos: procesos que comparten información con otros. establecer un orden relativo dentro de la interfoliación 2. por tanto existen varios flujos de control. Relación de competición: cuando los distintos procesos compiten por un recurso.U. Si no se utiliza un mecanismo especial no se pueden realizar suposiciones de ningún tipo. Ejemplo: supongamos que se ejecutan concurrentemente dos procesos P1 y P2. Esta será una característica de los sistemas concurrentes. por poder realizar varias tareas simultaneas. Para dar servicio a varios usuarios los procesos han de compartir recursos si dichos procesos se ejecutan de forma simultanea. Razones por las que se necesita concurrencia en un sistema:      Compartir recursos físicos: pues estos son limitados en un sistema.P. Conclusiones: Debemos asegurarnos que la ejecución de procesos concurrentes sea correcta independientemente del orden en que se ejecuten sus instrucciones (interfoliación). Necesitamos asegurar que sólo un proceso en cada ocasión manipule la variable compartida. a1 a2 a3 b1 b2 b3 Resultado: x=1. Ejemplo: proceso productor / consumidor. Veamos distintas secuencias de ejecución: a1 b1 a2 b2 a3 b3 Resultado: x=0. Al modo en el que se ejecutan los procesos. Cada una se implementa en lenguaje máquina como: o o o    Registro 1 y registro 2 son registros del procesador (incluso pueden ser el mismo físicamente: un acumulador). si el proceso productor ha llenado el buffer. Ejemplo de procesos cooperativos: productor . compartiendo ambos una variable común x. Procesos concurrentes: son aquellos procesos cuya ejecución se solapa en el tiempo. Su estado puede ser afectado por la ejecución de otro.. Tema 3: Comunicación y sincronización 1.P. esto es.paralelismo cuando solamente existe una C. Hebras a nivel de usuario: las rutinas para trabajar con las hebras están implementadas en librerías. Existen lenguajes de programación concurrente que permiten dicha programación. Programas concurrentes: Existen varias secuencias que se ejecutan en paralelo. Por razones de modularidad: vamos a tener diversos procesos independientes que realizan sus propias tareas. ¿Qué valor tendrá la variable x después de que se hayan ejecutado ambos procesos? ¿0. a1 b1 b2 b3 a2 a3 Resultado: x=2. Compartir recursos lógicos: nos puede interesar que dos procesos compartan un fichero. No podemos hacer suposiciones de la velocidad a la que evoluciona cada proceso. Comodidad: desde el punto de vista del usuario. La sincronización es la paralización de una actividad mientras no se cumpla una determinada condición.U. En el caso de existir paralelismo real la ejecución del proceso mediante la realización de divisiones de este será más rápida que de la otra forma. Para ello necesitamos algún tipo de sincronización de procesos. Otra característica de los procesos concurrentes será por tanto la sincronización entre procesos que se ejecutan de dicha forma. La clave está en que las instrucciones x := x + 1 y x := x .Sincronización. X está inicialmente a uno.Concurrencias. la secuencia de instrucciones que se realizan durante la ejecución de un proceso se denomina interfoliación.P. Dentro de un sistema operativo se distinguen los siguientes procesos: o Procesos independientes: procesos que se ejecutan independientemente y no necesitan información compartida..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. y seudo .1 ó 2?. . no en el kernel. Existe paralelismo cuando hay más de una C. este proceso ha de esperar hasta que el proceso consumidor retire datos de este.1 no son indivisibles. se podría conseguir una ejecución más rápida si se divide el problema en 2 partes. se reparte entre las diferentes hebras. El software que se ocupa de los procesos concurrentes es la programación concurrente.U. Por ejemplo. Los procesos mantienen 2 tipos de relaciones:   Relación de cooperación: los procesos concurrentes forman parte de la misma aplicación. Es necesaria la introducción de mecanismos de concurrencia y sincronización para controlar la ejecución concurrente. Mayor velocidad de ejecución: si tenemos un proceso que realiza una adecuación de una lista de números.

a la sección crítica del proceso que quedó en este estado. paro si soluciona el problema de la exclusión mutua. Ejemplo: el problema de los 5 filósofos.P. o o o . ALGORITMO 1: Alternancia estricta de una variable compartida. ALGORITMO 3: Modificación de los dos anteriores. Desventajas: Espera ocupada (tiempo de C. desperdiciado). No resuelve el problema de la exclusión mutua. esto es. pues procesos que se encuentran fuera de sus secciones críticas bloquean a otros. o Mensajes: cuando no se pueden compartir memoria. c1 y c2 indican que la sección crítica está libre para P1 ó P2. ningún proceso debe de quedarse retrasado indefinidamente. Podríamos construir dos procesos concurrentes que realizaran lo siguiente: Se observa que B y C se pueden ejecutar concurrentemente pero D se ha de ejecutar después. en los cuales.'s. Se cumple la condición de la exclusión mutua.P. c1 = 0 *P1 está dentro de su sección crítica.U. Así mismo podemos utilizar semáforos cuyo procedimiento es el mismo pero están predefinidos por el sistema. esto es. Sección crítica: Secuencia de sentencias de un proceso que accede a datos compartidos. REQUERIMIENTOS QUE SE HAN DE SATISFACER DURANTE LA EJECUCIÓN DE LA SECCIÓN CRÍTICA:         Dos procesos no deben encontrarse al mismo tiempo dentro de sus secciones críticas * se debe respetar la exclusión mutua. Protocolo de salida: deja al proceso en un estado de tal forma que cualquier otro proceso puede acceder a su sección crítica. escribir el valor de A. La solución consiste en asegurarse que la secuencia de sentencias que acceden a datos compartidos se traten como una operación indivisible. El resultado final de la ejecución dependerá de que proceso se ejecute y de cómo realice su ejecución. ALGORITMO 2: Variables puerta de paso o de cerradura. de tal forma que P2 ha de esperar hasta que P1 haya finalizado su ejecución. Soluciones para implementar la exclusión mutua: Soluciones software: Protocolo de entrada: antes de ejecutar las instrucciones de la sección crítica se comprueba si se puede entrar a dicha sección. existen condiciones de competencia. si P1 está en la sección crítica c1 está a cero y en caso contrario sale de la sección crítica. Entre procesos que comparten datos o acceden a datos compartidos. No se deben hacer hipótesis sobre la velocidad de los procesos o el número de C. Alternancia estricta. Para la secuenciación de las operaciones a realizar se utilizan grafos de precedencia. Propiedad de vivacidad: debe haber una ausencia de inacción. Así pues podemos distinguir 2 casos: o Memoria común: usamos espera ocupada. Al conjunto de instrucciones que se ejecutan de forma independiente se denomina sección crítica. dos o más procesos intentan acceder a un recurso común (datos compartidos). utiliza una variable turno. c1 y c2 a la vez a cero * No entran en su sección crítica. Dependiendo del problema al que nos enfrentemos tendremos una solución u otra. atendiendo al problema de la exclusión mutua. No cumple la condición 3ª. Si de entrada hago c1 = c2 = 1 consigo equidad. Ausencia de interbloqueo: un interbloqueo es un estado en el cual todos los procesos se esperan unos a otros y el sistema se detiene. Pueden bloquearse ambos procesos * INTERBLOQUEO. Consiste en utilizar una variable booleana para que un proceso espere hasta que el otro acabe. Ningún proceso debe esperar eternamente para entrar en su sección crítica. MODIFICACIÓN DEL ALGORITMO 2: Inicialmente c1 = c2 = 1. Ningún proceso que esté fuera de su sección crítica puede bloquear a otros procesos. c2 = 0 *P2 está dentro de su sección crítica. que controla cuando 2 procesos intentan acceder a la vez a la sección crítica. Cambia las estrategias anteriores. que son grafos dirigidos acíclicos. Un problema particular de la sincronización se plantea cuando en un momento dado. Propiedad de equidad: todos los procesos deben avanzar con iguales condiciones. Sólo un proceso puede entrar en un instante determinado en la sección crítica. Ningún proceso entra en la sección crítica. La solución al problema de exclusión mutua es hacer que las operaciones se realicen de un solo paso. Las secciones críticas deben ejecutarse como procesos individuales. de forma indivisible. Problema de la exclusión mutua. Hay que sincronizar P1 y P2. los nodos representan las instrucciones.U.Ejemplo: supongamos que queremos calcular la siguiente expresión y tras ello.

La comunicación de procesos queda bajo responsabilidad de los programas.Semáforos. Signal (s) * Indica que se ha ejecutado la instrucción anterior. que será utilizado únicamente por procesos del S.desactivación de interrupciones Si se desactivan las interrupciones no se presenta el problema de la exclusión mutua porque al hacerlo impedimos que ningún otro proceso pueda parar al que ya está. Cumple todas las condiciones. realizando la devolución de un valor booleano. Dado un parámetro. Un semáforo que se utiliza para resolver exclusión mutua está sujeto a interbloqueos. Puede ocurrir inanición a menos que se siga un orden FIFO en la cola de procesos bloqueados. Inconvenientes: o si se bloquea en la sección crítica. En este caso se dispone de una interrupción llamada TEST & SET que se ejecuta de forma indivisible.U.P. En caso contrario se decrementa en 1 el valor del semáforo. Mientras TEST & SET sea `1' no se entra en las sección crítica. Propiedades:     Los semáforos implementan correctamente el problema de la exclusión mutua para cualquier número de procesos y para cualquier número de procesadores. Nos sirven como contadores. o . esto es. 3. con un puntero a la rutina. o Excluye a todos los procesos del sistema. Los semáforos sólo hacen su Ejemplo: Si S = 0 se bloquea el proceso.O. Sobre un semáforo sólo se pueden realizar 3 operaciones. se bloquean todos los procesos: interbloqueo. Los semáforos se utilizan para sincronizar y resolver el problema de la exclusión mutua. las cuales se realizan de forma indivisible y por tanto no existen problemas de interfoliación. Para gestionar dicha cola se utilizará una rutina de tratamiento. Tipo de semáforos: función. Un semáforo es un tipo de datos que sólo puede tomar valores enteros positivos.. incluido el cero. o Si tenemos más de un C. o Si existe un bloqueo en la sección crítica se para el sistema debido a que se han desactivado las interrupciones. se actualiza devolviendo la variable objetivo y asignándole a ésta el valor verdadero. el proceso se bloquea.desactivación de interrupciones porque sólo se realiza esto para un procesador y los demás no se ven afectados. Binarios: toman valores booleanos. Desventajas: o No se debe permitir a los procesos de usuario utilizar este mecanismo de exclusión mutua. o Wait: si el valor del semáforo es cero. Estas operaciones son: o Inicialización: asignarle un valor entero positivo a un semáforo. (Asignándole a S un valor de 10 tendremos un bucle que se repite 10 veces). Por tanto falla en sistemas multiprocesadores. Si los hubiera. Las rutinas de tratamiento pueden ser la siguientes: FIFO: facilidad de implementación y manejo de la cola. Una vez ejecutado Wait (s) se incorporaría el proceso actual en la cola de bloqueados. o Los mecanismos para implementar sincronización y comunicación son de bajo nivel. ningún proceso puede bloquear a otro si no se encuentra en la sección crítica. Para almacenar los procesos bloqueados necesitamos un puntero a la cola de bloqueados y cada semáforo poseerá una cola de bloqueados.   Generales o contadores: son los vistos hasta el momento.Se cumple la condición 3ª.  Instrucción test & set Cerradura inicialmente tiene asignado el valor falso. Existe otra instrucción llamada TEST & SET BLOCK que a diferencia de la anterior realiza intercambio de variables. o Señalización: comprueba si hay procesos bloqueados. Implementación de semáforos: Necesitamos de una estructura de datos enteros donde se almacene el número del semáforo y los punteros a los procesos en cada momento. 0 ó 1. no sólo a los procesos que poseen las condiciones de competencia. lo que se hace al principio de la implementación. Sólo se puede realizar una asignación. Ventajas: soluciona el problema de la exclusión mutua en sistemas multiprocesadores. o Utiliza la espera ocupada * perdemos eficiencia. no nos sirve la activación .   Soluciones hardware: Activación . desbloquea uno y en caso contrario incrementa el valor del semáforo.

Esto se controla con la variable  Ambos procesos comparten datos comunes. uno productor y otro consumidor que cumplen: Un proceso.. El interbloqueo (deadlock) ocurre cuando se ejecutan procesos concurrentes. Por esto se utilizan en sistemas centralizados. La comunicación entre procesos concurrentes queda bajo la responsabilidad del programa de aplicación. 4. También se puede conseguir ésta mediante la centralización en un procesador de un planificador que gestiones sus semáforos. Productor / consumidor con buffer limitado. Otra implementación de semáforos trata de conseguir que las operaciones Wait y Signal sean atómicas. LIFO: no se suele utilizar. Consumidor. vacío := 0 (controla que el proceso consumidor no intente leer de BUFF cuando está vacío). Problemas:    o o o o  vacío. Inicialmente: BUFF está vacío. Productor / consumidor con buffer ilimitado. La implementación de semáforos produce código difícil de verificar. que continuamente introduce elementos en un buffer BUFF.o o   PRIORIDADES: en caso de existir varios procesos con distinta prioridad que compartan información. Esto es.  o o o o o vacío). presentando el problema de exclusión mutua. de ello no se encargan los semáforos. Se explicará este problema utilizando un ejemplo que cuenta con dos procesos. Es una situación en la cual un conjunto de procesos se quedan bloqueados esperando que ocurra algún suceso que solamente un proceso de dicho conjunto puede provocar. pues se machacarían datos al ser el espacio limitado. que continuamente saca elementos de un buffer BUFF. Productor. Este interbloqueo se produce por el intento de acceder a datos compartidos. pues puede producir un problema de interbloqueo. Suponemos que BUFF es un buffer con capacidad limitada a N elementos (implementado como una lista circular). Otra definición de mensajes: una colección de información intercambiada entre un proceso emisor y un proceso receptor. No asegura la buena utilización de Wait y Signal por lo que se dice que los semáforos son un mecanismo no estructurado. Sistemas multiprocesadores: mediante las instrucciones Test & set ó Test & set block si el sistema las permite. Se utilizan para resolver problemas como sincronización. En caso contrario utilizaremos algoritmos software con espera ocupada. Un procesos. No es una solución viable la utilización de semáforos para los sistemas distribuidos (tiempo de comunicación elevados). Hay que tomar precauciones con las operaciones Wait dentro de la sección crítica. Esta atomicidad se puede conseguir de dos maneras: Sistemas monoprocesadores: se consigue activando y desactivando las interrupciones.j := 1 mutex := 1 (controla el problema del acceso mutuo a BUFF). Formato: . Definición: Son un mecanismo sencillo en su implementación que resuelve algunas limitaciones de los semáforos. El proceso productor indicará que el buffer se está llenando mediante signal. i. comunicación y exclusión mutua. Se utilizan por ello tanto en sistemas centralizados como en sistemas distribuidos. ambos no pueden acceder a la vez a datos compartidos (se soluciona con mutex). 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á vacío.j := 1 mutex := 1 vacío := 0 espacio := N (controla que el proceso PRODUCTOR no introduzca más elementos en BUFF si éste no está El PRODUCTOR no debe introducir más datos en el buffer si este está lleno.Mensajes. Limitaciones de los semáforos:     Este tipo de semáforos presupone la existencia de una memoria común. Inicialmente: BUFF está vacío i. esto es. las operaciones sobre semáforos sean indivisibles. Cuando se produce un elemento hay que comprobar si existe o no espacio para ello. esto es.

Ventajas: Fácil implementación. Si el proceso receptor sobrepasa ese límite de tiempo esperando un mensaje que no llega.O. los procesos quedarían bloqueados. Es necesario disponer de servicios adicionales para el mantenimiento de los buzones: o Crear_buzón. El propio sistema ha de gestionar a los buzones. proporcionando instrucciones para mejorar estos.o o   Cabecera: formato fijo. de receptor o de emisor. El sistema operativo acepta y almacena temporalmente los mensajes pendientes hasta que se reciban (recargo adicional para el sistema). Asíncrono: El proceso emisor no se bloquea. o Muchos a muchos. mensaje. La operaciones Set y Receive van a ser bloqueantes. El emisor manda los mensajes a un buzón. El límite de tiempo es el tiempo que va a esperar el proceso como máximo para recibir un mensaje (proceso receptor). límite de tiempo). están separados. emisor y receptor. la comunicación podrá ser: o 1 a 1. no posee espacio de almacenamiento. Implementación de mensajes: Designación del emisor / receptor: Directa: cada emisor designa al receptor específico y viceversa. Un mensaje nunca se envía. Un buzón es una cola donde se almacenan los mensajes. PRODUCTOR CONSUMIDOR CON BUFFER LIMITADO: MENSAJES o o  o o Primitivas de comunicacion IPC (Comunicación entre procesos)‟„‟ Es una función básica de los Sistemas operativos. Con este tipo de mensajes de designación indirecta. o Muchos a 1. Desventajas: ha de conocer en todo momento todos sus posibles clientes. Inconvenientes: sincronización forzosa. Problema común: aplazamiento indefinido. o 1 a muchos. un proceso puede agotar la capacidad de almacenamiento intermedio (temporal) del sistema. .receptor. Se bloquea en síncrono y en asíncrono. Cuerpo: opcional y de longitud variable. Se bloquea en síncrono. siguiendo la sintaxis: Recibir (buzón. que es un lugar que ha sido creado con anterioridad. Ventajas: no existen fallos de identificador. aunque el proceso receptor no esté preparado (no haya ejecutado una operación recibir). el primer proceso va a estar esperando hasta que el segundo reciba y viceversa. Por un mal uso. El receptor debe conocer el nombre del que envía el mensaje. Operaciones: Enviar o SEND. Se produce por las siguientes causas: Se envía un mensaje y nadie lo recibe. Seguridad en la recepción del mensaje. Aumenta la concurrencia. Sólo puede existir un mensaje pendiente como máximo en cada momento por cada par emisor . Como el S.   Intercambio síncrono y asíncrono de mensajes Síncrono: La comunicación se realiza sólo cuando ambos procesos. dicho proceso se desbloquea y manda a su vez un mensaje informando que se ha sobrepasado el límite de tiempo. o Borrar_buzón.  Indirecta: Los mensajes son enviados y recibidos a través de depósitos especiales llamados buzones. Esto se soluciona implementando la operación recibir con otro parámetro. Recibir o RECEIVE. tomando el receptor los mensajes de dicho buzón. Si un proceso realiza una operación enviar y otro proceso una operación recibir sobre el mismo buzón.

es decir que la cpu ejecuta en cierto instante un solo programa. En sistemas de multiprogramación la cpu alterna de programa en programa. El emplazamiento del control de un procedimiento que está siendo ejecutado. Tanenbaum]). o a través de las herramientas provistas por las rutinas de IPC. La unidad despachable. protocolo de transferencia de hipertexto (capa de aplicación). Si la cpu alterna entre los procesos. Introducción y Definiciones Sobre Procesos El concepto central de cualquier Sistema Operativo es el de proceso: una abstracción de un programa en ejecución también llamada tarea. ya sean variables compartidas o buffers. La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación). La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí. en un esquema de seudo paralelismo . Un proceso incluye al programa en ejecución y a los valores activos del contador. se organiza en varios procesos secuenciales o procesos.1 [23. El paralelismo real de hardware se da en las siguientes situaciones:   En ejecución de instrucciones de programa con más de un procesador de instrucciones en uso simultáneamente. el cual determina cuándo detener el trabajo en un proceso y dar servicio a otro distinto (ver Figura 2. registros y variables del mismo. Aquello que se manifiesta por la existencia en el Sistema Operativo de un bloque de control de proceso. intercambiando muy rápidamente entre uno y otro.   Un proceso es una actividad de un cierto tipo. inclusive el Sistema Operativo. Un solo procesador puede ser compartido entre varios procesos con cierto “algoritmo de planificación” . entrada. protocolo de control de transmisión (capa de transporte) y protocolo de transferencia de archivos . salida y estado. No hay un acuerdo universal sobre una definición de proceso. pero sí algunas definiciones aceptadas [7. Con la superposición de ejecución de instrucciones de programa con la ejecución de una o más operaciones de entrada / salida. Una actividad asincrónica. . El objetivo es aumentar el paralelismo en la ejecución.Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria. que tiene un programa. Normalmente a través de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente. Deitel]:       Un programa que se está ejecutando. Los protocolos desarrollados para internet son los mayormente usados: protocolo de internet (capa de red). la velocidad a la que ejecuta un proceso no será uniforme. Conceptualmente cada proceso tiene su propia cpu virtual. El modelo de procesos posee las siguientes características:     Todo el software ejecutable. o Que normalmente la mayoría de los procesos no son afectados por la multiprogramación subyacente de la cpu o las velocidades relativas de procesos distintos. por lo que es necesario aclarar lo siguiente: o Que los procesos no deben programarse con hipótesis implícitas acerca del tiempo. Aquella entidad a la cual son asignados los procesadores.

En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Operativos deben disponer de una forma de crear y destruir procesos cuando se requiera durante la operación, teniendo además presente que los procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo, pudiendo darse ejecución 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 ejecución porque: Desde el punto de vista lógico no puede continuar porque espera datos que aún no están 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 ejecución: 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 algún 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 están 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 asignación 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 transición de estado iniciada por el propio proceso del usuario, puesto que las otras transiciones son iniciadas por entidades ajenas al proceso. La manifestación de un proceso en un Sistema Operativo es un “Bloque de Control de Proceso” (PCB) con información que incluye [7, Deitel]:

     

Estado actual del proceso. Identificación ú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 atención de la cpu entre los procesos, utiliza las áreas de preservación del PCB para mantener la información 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 “creación” 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 jerárquica de procesos”. La “destrucción” 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 “destrucción” de un proceso puede o no significar la destrucción de los procesos hijos, según el Sistema Operativo. Generalmente se denomina “Tabla de Procesos” al conjunto de información de control sobre los distintos procesos. Procesamiento de Interrupciones Una “interrupción” 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 interrupción, el Sistema Operativo:

   

Obtiene el control. Salva el estado del proceso interrumpido, generalmente en su bloque de control de procesos. Analiza la interrupción. Transfiere el control a la rutina apropiada para la manipulación de la interrupción.

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

    

“SVC (llamada al supervisor)”: es una petición generada por el usuario para un servicio particular del sistema, por ejemplo, realización de Entrada / Salida u obtención de más 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, finalización de Entrada / Salida u ocurrencia de un error. “Externas”: son causadas por distintos eventos, por ejemplo, expiración de un cuanto en un reloj de interrupción o recepción de una señal de otro procesador en un sistema multiprocesador. “De reinicio”: ocurren al presionar la “tecla de reinicio” o cuando llega una instrucción de reinicio de otro procesador en un sistema multiprocesador. “De verificación de programa”: son causadas por errores producidos durante la ejecución de procesos, por ejemplo:

o o o 

Un intento de dividir por cero. Un intento de un proceso de usuario de ejecutar una instrucción privilegiada. Un intento de ejecutar un código de operación inválido. “De verificación de máquina”: son ocasionadas por un mal funcionamiento del hardware. Tipo de Interrupción SVC Entrada / Salida Externa De Reinicio Descripción Llamada al Sistema Operativo Cambio de estado de un canal o dispositivo Evento externo al sistema Reinicio del procesamiento

De Verificación de Programa Errores de procesos De Verificación de Máquina 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 interrupción. Cuando se produce una interrupción el Sistema Operativo efectúa las siguientes acciones:

  

Salva el estado del proceso interrumpido. Dirige el control al manipulador de interrupciones adecuado. Se aplica la técnica de “Cambio de Contexto” .

Los Sistemas Operativos instrumentan información de control que puede aparecer como las “Palabras de Estado de Programa (PSW)”, las cuales controlan el orden de ejecución de las instrucciones y contienen información sobre el estado del proceso. Existen tres tipos de PSW, que son la “actual”, la “nueva” y la “vieja”. La “PSW Actual” almacena la dirección de la próxima instrucción 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 interrupción). Seis PSW viejas (una para cada tipo de interrupción).

La PSW nueva para un tipo de interrupción dado contiene la dirección en el hardware donde reside el manipulador de interrupciones para este tipo específico. Cuando ocurre una interrupción 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 interrupción. Al almacenar la PSW nueva en la PSW actual, para este tipo de interrupción. Luego de este “intercambio de PSW”: La PSW actual contiene la dirección del manipulador de interrupción adecuado. El manipulador de interrupciones procesa la interrupción.

Planificación de Procesos Cuando más de un proceso es ejecutable desde el punto de vista lógico. Soporte de la asignación y desasignación de almacenamiento. Criterio Equidad Descripción Garantizar que cada proceso obtiene su proporción justa de la cpu . Manipulación de bloques de control de proceso. El núcleo del Sistema Operativo generalmente realiza las siguientes funciones: [7. Soporte de un mecanismo de llamada / regreso al procedimiento. El proceso de interrupciones se incluye en el núcleo ya que debe ser rápido (especialmente en sistemas multiusuario). Deitel]. Los principales “criterios” respecto de un buen algoritmo de planificación [23. Las interrupciones son habilitadas de nuevo después de completar el proceso de una interrupción. el tiempo de regreso y el rendimiento (ver Tabla 2. Sincronización de procesos. Soporte de ciertas funciones contables (estadísticas) del sistema.              Manipulación de interrupciones. El Planificador es la porción del Sistema Operativo que decide y el Algoritmo de Planificación es el utilizado. Soporte de las actividades de Entrada / Salida. Despacho.o   o   Luego de procesar la interrupción. Suspensión y reanudación de procesos. El Núcleo del Sistema Operativo El “núcleo” del Sistema Operativo controla todas las operaciones que implican procesos y representa solo una pequeña porción del código de todo el Sistema Operativo pero es de amplio uso Generalmente permanece en el almacenamiento primario. Comunicación entre procesos. Tanenbaum] son la equidad. la cpu es enviada al: Proceso que estaba en ejecución en el momento de la interrupción. El núcleo inhabilita las interrupciones mientras responde a una interrupción. La acción precedente depende de si el proceso de interrupción es: “Apropiativo”: obtiene la cpu solo si no hay procesos de listos. o al Proceso de listo de más alta prioridad. el tiempo de respuesta. Creación y destrucción de procesos. la eficacia. para optimizar el uso de los recursos del sistema y proveer tiempos de respuesta aceptables a los usuarios interactivos. Tanenbaum]). Cambio de estados de procesos. el Sistema Operativo debe decidir cuál de ellos debe ejecutarse en primer término. “No apropiativo”: obtiene de nuevo la cpu. Soporte del sistema de archivos.2 [23.

el planificador del Sistema Operativo no tiene la certeza de cuánto tiempo transcurrirá hasta que un proceso se bloquee. Planificación del procesador: determinar cuándo deben asignarse los procesadores y a qué procesos. o La efectúa el Despachador del Sistema Operativo. Los distintos Sistemas Operativos utilizan varias Políticas de Planificación. En cada interrupción del reloj el Sistema Operativo decide si el proceso que se está ejecutando continúa o si el proceso agotó su tiempo de cpu y debe suspenderse y ceder la cpu a otro proceso. minimizar el tiempo de respuesta para los usuarios interactivos significaría no ejecutar las tareas batch. ya sea por una operación de Entrada / Salida o por otra razón . Planificación de nivel intermedio: Determina a qué procesos se les puede permitir competir por la cpu. los que se detallan a continuación (ver Figura 2. es decir que “despacha” la cpu al proceso. Planificación no apropiativa: es la estrategia de permitir la ejecución de un proceso hasta terminar.4 [7. Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. Planificación de bajo nivel: Determina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo. Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema. los equipos poseen un dispositivo que provoca una interrupción en forma periódica.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 número de tareas procesadas por hora Tabla 2. . o Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. lo cual es responsabilidad del Sistema Operativo. es decir que pueden requerir intensivamente operaciones de Entrada / Salida o intensivamente cpu. Algunas de estas metas son contradictorias. por ejemplo 60 hz. Niveles de Planificación del Procesador Se consideran tres niveles importantes de planificación. lo cual se denomina Planificación de admisión. Deitel]):  o o  o o  o Planificación de alto nivel: También se denomina Planificación de trabajos. Para evitar que un proceso se apropie de la cpu un tiempo excesivo. Los principales conceptos relacionados con Planificación del Procesador son los siguiente:    Planificación apropiativa: es la estrategia de permitir que procesos ejecutables (desde el punto de vista lógico) sean suspendidos temporalmente. Cada proceso es único e impredecible. que se instrumentan mediante Mecanismos de Planificación.2: Criterios de un buen algoritmo de planificación. el que opera muchas veces por segundo y reside siempre en el almacenamiento primario. o sea sesenta veces por segundo. por ejemplo.

Evitar la postergación indefinida: Se utiliza la estrategia del “envejecimiento” . Degradarse suavemente con cargas pesadas: Un mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema.  Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir inmediato servicio para garantizar buenos tiempos de respuesta. Dar preferencia a los procesos que mantienen recursos claves: Un proceso de baja prioridad podría mantener un recurso clave. La limitación de un proceso a la cpu: cuando un proceso obtiene la cpu. el mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le correspondería normalmente. Deitel]:   La limitación de un proceso a las operaciones de Entrada / Salida: cuando un proceso consigue la cpu. Ningún proceso es postergado indefinidamente. pero la utilización total de recursos podrá ser pobre.  o  o o   procesos. Mientras un proceso espera por un recurso su prioridad debe aumentar. ¿tiende a usarla hasta que expira su tiempo?. ¿la utiliza solo brevemente antes de generar una petición de Entrada / Salida?. así la prioridad llegará a ser tan alta que el proceso recibirá el recurso esperado. puesto que es necesario liberar rápidamente el recurso clave.Objetivos de la Planificación Los objetivos de la planificación del procesador son los siguientes e involucran a los conceptos detallados seguidamente [7. Criterios de Planificación Para realizar los objetivos de la planificación. un mecanismo de planificación debe considerar lo siguiente [7. o Si el recurso es no apropiativo. que puede ser requerido por un proceso de más alta prioridad. Maximizar la capacidad de ejecución: Maximizar el número de procesos servidos por unidad de tiempo. Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables: En un máximo de unos segundos. Asegurar la prioridad: Los mecanismos de planificación deben favorecer a los procesos con prioridades más altas. Deitel]:  o o  o  o  o  o  o  o  o o  o  o Ser justa: Todos los procesos son tratados de igual manera. Minimizar la sobrecarga: No suele considerarse un objetivo muy importante. Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”: Un ejemplo de comportamiento deseable es una tasa baja de paginación. Se debe evitar una carga excesiva mediante las siguientes acciones: No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. . Equilibrar el uso de recursos: Favorecer a los procesos que utilizarán recursos infrautilizados. Equilibrar respuesta y utilización: La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan. por lo que la planificación se convierte en un problema complejo. Dando servicio a la carga más pesada al proporcionar un nivel moderadamente reducido de servicio a todos los Muchas de estas metas se encuentran en conflicto entre sí. Ser predecible: Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema.

Frecuentemente un proceso genera fallos (carencias) de página: Probablemente los procesos que generan pocos fallos de página hayan acumulado sus “conjuntos de trabajo” en el almacenamiento principal. Logra hacer más predecibles los tiempos de respuesta puesto que los trabajos nuevos de prioridad alta no pueden desplazar a los trabajos en espera. Temporizador de Intervalos o Reloj de Interrupción El proceso al cual está asignada la cpu se dice que está en ejecución y puede ser un proceso de Sistema Operativo o de usuario. en razón de que muchas veces las propias prioridades no son asignadas de forma significativa [25.3: Disciplinas de planificación del procesador. Tanenbaum]).3 [23. Disciplina “Apropiativa” “No Apropiativa” Descripción Una vez que se le ha otorgado la cpu a un proceso. un proceso de tiempo real de un sistema de control que supervise una refinería de combustible requiere una respuesta rápida. El mecanismo debería ser sencillo pero efectivo y significativo. lo cual significa lo siguiente: A menudo los procesos apropiados deben recibir un tratamiento menos favorable. Logra más equidad en el tratamiento de los procesos. le puede ser retirada Una vez que se le ha otorgado la cpu a un proceso. ¿Qué urgencia tiene una respuesta rápida?: por ejemplo. . El diseño de un mecanismo apropiativo hace necesario considerar las arbitrariedades de casi cualquier esquema de prioridades. Las principales características de la planificación no apropiativa son las siguientes: Significa que los trabajos “largos” hacen esperar a los trabajos “cortos”. ¿Cuánto tiempo de ejecución real ha recibido el proceso?: un criterio considera que debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu. más rápida que la respuesta requerida por un proceso en lotes (batch) que deberá entregarse al día siguiente. ya que el intercambio de contexto implica sobrecarga y además requiere mantener muchos procesos en el almacenamiento principal. pero pocas veces es posible conocer la cantidad de tiempo adicional que cada proceso necesita para terminar. Tanenbaum]. no le puede ser retirada Tabla 2. Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar este proceso. ¿Cuánto 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 ejecución mínimo para su terminación. Planificación Apropiativa Versus No Apropiativa Las Disciplinas de Planificación pueden ser Apropiativas o No Apropiativas (ver Tabla 2. Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido. Las principales características de la planificación apropiativa son las siguientes:       Es útil cuando los procesos de alta prioridad requieren atención rápida. Tiene su costo en recursos. o Otro criterio indica favorecer a los procesos con una tasa alta de fallos de página ya que rápidamente generarán una petición de Entrada / Salida.   o La prioridad de un proceso: a mayor prioridad mejor tratamiento. lo que también implica sobrecarga. en espera de la cpu.  o o   Frecuentemente un proceso ha sido apropiado por otro de más alta prioridad. o Los procesos que experimentan gran cantidad de fallos de página aún no han establecido sus conjuntos de trabajo. el corto tiempo de ejecución antes de la apropiación no justifica la sobrecarga de hacer ejecutar al proceso en primer lugar. o Un criterio indica favorecer a los procesos que han establecido sus conjuntos de trabajo.

luego se la reajusta a un mejor valor. Tanenbaum]. Las principales características de las prioridades estáticas son las siguientes:         No cambian. 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”. El reloj la interrumpe. En el caso de prioridades asignadas arbitrariamente. El Sistema Operativo posee un “reloj de interrupción” o “temporizador de intervalos” para generar una interrupción. No responden a cambios en el ambiente (contexto) que harían deseable ajustar alguna prioridad. Las principales características de las prioridades dinámicas son las siguientes: Responden al cambio. el que decide cuál será el proceso que obtendrá la cpu. la interrupción causa la ejecución del Sistema Operativo. [22. la cpu es entonces despachada hacia el siguiente proceso [7. Asimismo.El Sistema Operativo dispone de mecanismos para quitarle la cpu a un proceso de usuario para evitar que monopolice el sistema. La prioridad inicial asignada a un proceso puede durar poco tiempo. Los mecanismos de implementación son más complicados que para prioridades estáticas. . Alguna otra interrupción atrae la atención de la cpu.4: Tipos de prioridades. Implican una sobrecarga relativamente baja. Los mecanismos de implementación son sencillos. Un proceso retiene el control de la cpu hasta que ocurra alguna de las siguientes situaciones:    La libera voluntariamente. un mecanismo del sistema necesita distinguir entre procesos sin importarle cuál es el más importante. en algún tiempo futuro específico o después de un transcurso de tiempo en el futuro. Tipos de prioridades Asignadas automáticamente por el sistema Asignadas desde el exterior Dinámicas Estáticas Asignadas racionalmente Asignadas arbitrariamente Tabla 2. Deitel]). El reloj de interrupción ayuda a garantizar tiempos de respuesta razonables a usuarios interactivos.4 [7. Si el reloj interrumpe un proceso de usuario. los procesos que necesitan una ejecución periódica dependen del reloj de interrupción Prioridades Las prioridades pueden ser de distinto tipo (ver Tabla 2. Implican una sobrecarga mayor que para esquemas estáticos. Deitel].

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. el sistema calcula y determina qué procesos están más alejados por defecto de la relación “1 / n” prometida y prioriza los procesos que han recibido menos cpu de la prometida. Planificación de Asignación en Rueda (RR: Round Robin) Los procesos se despachan en “FIFO” y disponen de una cantidad limitada de tiempo de cpu. se hace referencia al tratamiento especial que en situaciones excepcionales requiere un cierto proceso. 2. el proceso del usuario recibirá cerca del “1 / n” de la potencia de la cpu. La administración intensiva de recursos puede generar una considerable sobrecarga adicional.Respecto de las prioridades adquiridas. Es más predecible que otros esquemas. si existen “n” procesos en el sistema. pero generalmente no se dispone de dicha información. Con los datos anteriores y el registro de procesos en curso de ejecución. El sistema debe planificar cuidadosamente sus necesidades de recursos hasta el plazo fijo. se ejecuta hasta terminar. Tipos de Planificación Planificación a Plazo Fijo Ciertos trabajos se planifican para ser terminados en un tiempo específico o plazo fijo. ya que es una disciplina “no apropiativa”. Si un proceso no termina antes de expirar su tiempo de cpu ocurren las siguientes acciones: 1. Planificación Garantizada Se establecen compromisos de desempeño con el proceso del usuario. Suele utilizarse integrado a otros esquemas. Los procesos con igual prioridad se despachan “FIFO”. La concurrencia de varios procesos de plazo fijo (activos a la vez) puede requerir métodos sofisticados de optimización. La ejecución del trabajo de plazo fijo no debe producir una grave degradación del servicio a otros usuarios. Puede ocasionar que procesos largos hagan esperar a procesos cortos y que procesos no importantes hagan esperar a procesos importantes. de la siguiente manera:   Los procesos se despachan con algún esquema de prioridad. Una vez que el proceso obtiene la cpu. Es una planificación compleja debido a los siguientes factores:      El usuario debe suministrar anticipadamente una lista precisa de recursos necesarios para el proceso. por ejemplo. Planificación del Primero en Entrar Primero en Salir (FIFO) Es muy simple. No puede garantizar buenos tiempos de respuesta interactivos. . lo que puede significar restar recursos a los demás procesos. La cpu es apropiada. llamada “división de tiempo” o “cuanto”. por ejemplo. los procesos se despachan de acuerdo con su tiempo de llegada a la cola de listos. lo que se puede complicar con las demandas de recursos de nuevos procesos que ingresen al sistema. La cpu es otorgada al siguiente proceso en espera.

Debe mantener un registro del tiempo de servicio transcurrido del proceso en ejecución. lo que generalmente se desconoce. Si el cuanto se hace muy grande. por lo cual la asignación en rueda (“RR”) degenera en “FIFO”. cada proceso recibe todo el tiempo necesario para llegar a su terminación. El proceso con el tiempo estimado de ejecución menor para …nalizar es el siguiente en ser ejecutado.3. . Se pueden estimar los tiempos en base a series de valores anteriores. es decir que el tiempo transcurrido desde el otorgamiento de la cpu a un proceso hasta que genera una petición de Entrada / Salida debe ser menor que el cuanto establecido. Requiere un conocimiento preciso del tiempo de ejecución de un proceso. los procesos trabajan al máximo de velocidad. El proceso en espera con el menor tiempo estimado de ejecución hasta su terminación es el siguiente en ejecutarse. Es útil en sistemas de tiempo compartido. ¿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 pequeño. Tiene mayor sobrecarga que la planificación SJF. El cuanto debe ser lo suficientemente grande como para permitir que la gran mayoría de las peticiones interactivas requieran de menos tiempo que la duración del cuanto. Los interrogantes son: ¿cuanto pequeño o grande?. Los trabajos largos tienen un promedio y una varianza de los tiempos de espera aún mayor que en SJF. la sobrecarga del intercambio de contexto se convierte en un factor dominante y el rendimiento del sistema se degrada. Planificación del Tiempo Restante Más Corto (SRT) Es la contraparte apropiativa del SJF. de esta forma. Los tiempos promedio de espera son menores que con “FIFO”. Favorece a los procesos cortos en detrimento de los largos. Tamaño del Cuanto o Quantum La determinación del tamaño del cuanto es decisiva para la operación efectiva de un sistema computacional [7. Un proceso en ejecución puede ser apropiado por un nuevo proceso con un tiempo estimado de ejecución menor. Es efectiva en ambientes de tiempo compartido. Deitel]. El cuanto óptimo varía de un sistema a otro y con la carga. lo que aumenta la sobrecarga. El proceso apropiado es situado al final de la lista de listos. Tiende a reducir el número de procesos en espera y el número de procesos que esperan detrás de procesos largos. Planificación del Trabajo Más Corto Primero (SJF) Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes de tiempo compartido. siendo un valor de referencia 100 mseg (cien milisegundos). La sobrecarga de la apropiación se mantiene baja mediante mecanismos eficientes de intercambio de contexto y con suficiente memoria principal para los procesos. ocurrida la petición la cpu pasa a otro proceso y como el cuanto es mayor que el tiempo transcurrido hasta la petición de Entrada / Salida. se minimiza la sobrecarga de apropiación y se maximiza la utilización de la Entrada / Salida. 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. Los tiempos de espera son menos predecibles que en “FIFO”.

Un proceso que utilice 2 mseg (dos milisegundos) de su cuanto de 100 mseg (cien milisegundos) tendrá prioridad 50 (cincuenta). Frecuentemente los procesos se agrupan en “Clases de Prioridad”. ya que el planificador del sistema puede disminuir la prioridad del proceso en ejecución en cada interrupción del reloj. Un proceso que utilizó todo el cuanto tendrá prioridad 1. los procesos de las clases de prioridad mínima podrían demorarse indefinidamente. Planificación el Siguiente con Relación de Respuesta Máxima (HRN) Corrige algunas de las debilidades del SJF. por lo tanto:   Deben tener prioridad para usar la cpu y efectuar la siguiente petición de Entrada / Salida. Cuando un proceso ha obtenido la cpu. La prioridad de cada proceso está en función no sólo del tiempo de servicio del trabajo. Los procesos limitados por la Entrada / Salida (requerimientos intensivos de Entrada / Salida) ocupan mucho de su tiempo en espera de operaciones de Entrada / Salida. Un algoritmo sencillo consiste en establecer que la prioridad sea “1 / f”. Favorecer trabajos limitados por la Entrada / Salida para optimizar el uso de los dispositivos de Entrada / Salida. donde pr es la “prioridad”. se calculan según la siguiente fórmula. corre hasta terminar. en cuyo caso se utiliza la Planificación con Prioridades entre las clases y con Round Robin (RR) dentro de cada clase. Tanenbaum]. Las ideas centrales son que cada proceso tiene asociada una prioridad y que el proceso ejecutable con máxima prioridad es el que tiene el permiso de ejecución. tales como el exceso de perjuicio hacia los procesos (trabajos) largos y el exceso de favoritismo hacia los nuevos trabajos cortos. te es el “tiempo de espera” y ts es el “tiempo de servicio”: Planificación por Prioridad Considera factores externos al proceso [23. que son dinámicas. Colas de Retroalimentación de Niveles Múltiples Proporcionan una estructura para lograr los siguientes objetivos:   Favorecer trabajos cortos. ya que se ejecutará (la operación de Entrada / Salida) en paralelo con otro proceso que utilice la cpu. Los procesos de alta prioridad podrían ejecutar indefinidamente. Si las prioridades no se reajustan en algún momento.La apropiación de un proceso a punto de terminar por otro de menor duración recién llegado podría significar un mayor tiempo de cambio de contexto (administración del procesador) que el tiempo de finalización del primero. donde “f” es la fracción del último cuanto utilizado por el proceso. Si deben esperar mucho tiempo a la cpu estarán ocupando memoria por un tiempo innecesario. Al diseñarse los Sistemas Operativos se debe considerar cuidadosamente la sobrecarga de los mecanismos de administración de recursos comparándola con los beneficios esperados. Las prioridades. Es una disciplina no apropiativa. sino que también influye la cantidad de tiempo que el trabajo ha estado esperando ser servido. . Las prioridades también pueden ser asignadas dinámicamente por el sistema para lograr ciertas metas relacionadas con el procesador o la Entrada / Salida. Un proceso que se ejecutó 50 mseg antes del bloqueo tendrá prioridad 2.

El esquema operativo de un planificador de dos niveles es como sigue: 1. Se mueve por esta cola “FIFO” hasta obtener la cpu. Si el trabajo termina o abandona la cpu para esperar por la terminación de una operación de Entrada / Salida o la terminación de algún otro suceso. acceso a discos. Habrá importantes implicaciones para la planificación. continuará moviéndose hacia el final de las colas inferiores. El planificador se restringe a ellos durante cierto tiempo. tales como. para ello se parametriza el algoritmo de planificación y los parámetros pueden ser determinados por medio de procesos del usuario. 2. Determinar la naturaleza de un trabajo lo más rápido posible y planificar el trabajo (proceso) en consecuencia. pero los planificadores analizados no aceptan datos de los procesos de usuario relativos a decisiones de planificación. o Es más eficiente el intercambio de los procesos con un planificador de dos niveles. Se carga en la memoria principal cierto subconjunto de los procesos ejecutables. el trabajo abandona la red de línea de espera. Un proceso en ejecución es apropiado por un proceso que llegue a una cola superior. Generalmente hay una cola en la parte más profunda a través de la cual el proceso circula en asignación de rueda hasta que termina. así el mecanismo está en el núcleo del Sistema Operativo pero la política queda establecida por un proceso del usuario. cuanto más tiempo haya estado el proceso en la red de línea de espera. es decir que se adapta a cargas variables. Un proceso situado en una cola dada no podrá ser ejecutado hasta que las colas de los niveles superiores estén vacías. Si su cuanto expira antes de abandonar la cpu voluntariamente. Mientras el proceso continúe consumiendo totalmente su cuanto en cada nivel. Planificación de Dos Niveles Los esquemas analizados hasta ahora suponen que todos los procesos ejecutables están en la memoria principal. el proceso se coloca en la parte trasera de la cola del siguiente nivel inferior. ver la figura 2. Un nuevo proceso entra en la red de línea de espera al final de la cola superior.5 Política Versus Mecanismo de Planificación Puede ocurrir que haya procesos con muchos procesos hijos ejecutándose bajo su control. Si la memoria principal es insuficiente. en tal caso. A los efectos de una revisión gráfica de lo enunciado precedentemente. [23. análisis de interrogantes. 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. 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. 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. La solución es separar el mecanismo de planificación de la política de planificación. ocurrirá lo siguiente [7. Tanenbaum]:   o Habrá procesos ejecutables que se mantengan en disco. Es posible que el proceso principal (padre) pueda identificar la importancia (o criticidad) de sus procesos hijos. Deitel]. . un proceso en un DBMS con procesos hijos atendiendo funciones específicas. etc. por ejemplo. Es un mecanismo adaptable. El trabajo recibe servicio al llegar a la cabeza de esta cola si la primera está vacía.

El planificador de nivel superior podría utilizar cualquiera de los métodos de planificación analizados. los restantes continúan operando. Confiabilidad Si un procesador falla. Consiste en configurar un sistema de computación con varios procesadores . Pascal Concurrente. Los criterios que podría utilizar el planificador de nivel superior para tomar sus decisiones son los que se indican a continuación:    sentido). El planificador de nivel superior se encarga de desplazar los procesos de memoria a disco y viceversa. Multiprocesamiento Introducción Es una tendencia significativa en el campo de la computación.). La programación sigue siendo esencialmente secuencial y generalmente no se explota la concurrencia. 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. Lo deseable es que los Sistemas Operativos y compiladores puedan detectar e implementar el paralelismo automáticamente. Explotación del Paralelismo La mayoría de los sistemas de multiprocesamiento tienen como meta principal el incremento de la capacidad de ejecución. Cargar a memoria los procesos que hayan estado en disco demasiado tiempo. Periódicamente se llama a un planificador de nivel superior para efectuar las siguientes tareas: 1. Las principales razones son las siguientes:      Las personas piensan en forma secuencial. El hardware tradicional del computador está orientado hacia la operación secuencial. Los procesadores en funcionamiento deben poder detectar el fallo de un procesador determinado. 5. etc. Pino y Marrone]. Un procesador que falla habrá de informarlo a los demás de alguna manera. . lo cual no es automático y requiere de un diseño cuidadoso. Ni el multiprocesamiento ha sido usado con amplitud para explotar el paralelismo. Eliminar de la memoria los procesos que hayan permanecido en ella el tiempo suficiente. 2. 4. El Sistema Operativo debe percibir que ha fallado un procesador determinado y ya no podrá asignarlo y también debe ajustar sus estrategias de asignación de recursos para evitar la sobrecarga del sistema que está degradado. El planificador de nivel inferior se restringe de nuevo a los procesos ejecutables que se encuentren en la memoria. Ningún lenguaje humano proporciona la expresión adecuada de paralelismo. ¿Cuánto tiempo ha transcurrido desde el último intercambio del proceso?. para que se hagan cargo de su trabajo. No es un enfoque nuevo pero sí posee grandes perspectivas en función del desarrollo de los microprocesadores. ¿Cuánto tiempo de cpu ha utilizado recientemente el proceso?. Se podrían concebir sistemas construidos por cientos o miles de microprocesadores. Los multiprocesadores no se utilizan a menudo para explotar el paralelismo ya que es muy escaso el software que explote el paralelismo. Es muy difícil depurar programas en paralelo. pero existen lenguajes de computación con soporte de concurrencia (por ejemplo. ¿Qué tan grande es el proceso? (generalmente los procesos pequeños no causan tantos problemas en este  ¿Qué tan alta es la prioridad del proceso?.3. Ada.

. Detección Automática del Paralelismo Los multiprocesadores hacen posible la explotación del paralelismo..Esto ofrece una forma de ejecutar un programa en el menor tiempo posible... como así también el incremento del poder de computación. coend. Las principales características del paralelismo explícito son las que se detallan a continuación:  siguiente: Es indicado de forma específica por un programador mediante una “construcción de concurrencia” como la cobegin...... Distribución de Ciclos Una “estructura de ciclos o de repetición” implica la repetición de una serie de proposiciones (cuerpo del ciclo) hasta que ocurre alguna condición de terminación.. Es susceptible de errores de programación difíciles de detectar y depurar. Los sistemas de computación obtienen los beneficios del procesamiento concurrente más por la “multiprogramación” de varios procesos y menos por la explotación del “paralelismo” dentro de un solo proceso. ... proposición 1.. El programador puede omitir tratar situaciones donde sería aplicable el paralelismo. Las principales características del paralelismo implícito son las que se detallan a continuación: La verdadera esperanza está en la detección automática del paralelismo implícito. La detección del paralelismo es un problema complejo y la puede efectuar el programador. el hardware o el Sistema Operativo. Los compiladores explotan el paralelismo implícito mediante las técnicas de “distribución de ciclos” y de “reducción de la altura del árbol”. La cuestión central es. El paralelismo dentro de los programas puede ser “explícito” o “implícito”.       Se pueden utilizar procesadores separados para ejecutar cada una de las proposiciones. El diseño modular proporciona una flexibilidad importante y facilita la expansión de la capacidad. por ejemplo: For i = 1 to 3 Do . ¿cuál es el tiempo mínimo requerido para ejecutar un algoritmo determinado?. El procesador secuencial realizará en secuencia lo siguiente: . proposición n. Metas de los Sistemas de Multiprocesamiento Las metas de los sistemas de multiprocesamiento generalmente son la confiabilidad y la disponibilidad muy altas. Es el paralelismo intrínseco del algoritmo pero no establecido explícitamente por el programador. disponiendo del paralelismo masivo. el traductor del lenguaje...

Deitel]). El bus común es en esencia una unidad pasiva. Almacenamiento de interconexión múltiple. tarea. Un compilador que detecte automáticamente el paralelismo implícito puede convertir el ciclo del ejemplo 2. Matriz de barras cruzadas e interruptores. Esta técnica se denomina distribución de ciclos. Un procesador o procesador de Entrada / Salida que desee transferir datos debe efectuar los siguientes pasos: . es decir que se busca optimización en el momento de la compilación para lograr ejecución en tiempo mínimo. unidades de control y dispositivos.9 [7.10 [7. Tiempo Compartido o Bus Común (o Conductor Común) Usa un solo camino de comunicación entre todas las unidades funcionales (ver Figura 2. coend.8 y Figura 2. Deitel]. Figura 2. Todos los procesadores comparten el acceso a un almacenamiento común y a canales de Entrada / Salida. no tanto cuando están en desarrollo (ver Figura 2. Organización del Hardware del Multiprocesador El problema clave es determinar los medios de conexión de los procesadores múltiples y los procesadores de Entrada / Salida a las unidades de almacenamiento [7. Todo está controlado por un Sistema Operativo que proporciona interacción entre procesadores y sus programas en los niveles de trabajo.6. 3. archivo y elementos de datos. 2.7. Figura 2. Las organizaciones más comunes son las siguientes: Tiempo compartido o bus común (conductor común). Reducción de la Altura del Arbol Utilizando las propiedades asociativa. Deitel]). Los multiprocesadores se caracterizan por los siguientes aspectos:       Un multiprocesador contiene dos o más procesadores con capacidades aproximadamente comparables. Reordenar expresiones para que sean más apropiadas para la computación en paralelo. conmutativa y distributiva de la aritmética. lo que es aplicable especialmente cuando los sistemas pasan a producción. Detectar el paralelismo implícito en expresiones algebraicas. Producir un código objeto para multiprocesadores que indique las operaciones que se pueden realizar simultáneamente. Se invierten más tiempo y recursos durante la compilación para reducir el tiempo de ejecución. paso.En un sistema de multiprocesamiento con tres procesadores disponibles se podrían ejecutar concurrentemente. REGLA DE “NUNCA ESPERAR”: Es mejor darle a un procesador una tarea que puede llegar a no ser utilizada. que tenerlo ocioso.2 en lo siguiente: cobegin. los compiladores pueden: 1.

2. por lo cual:    El sistema falla totalmente si falla el bus. Deitel]). La contención por el uso del bus en un sistema sobrecargado puede ocasionar una seria degradación.5 [7. simple y flexible pero con una sola vía de comunicación.1. Se puede restringir el acceso a las unidades de almacenamiento para que no todas las unidades de procesamiento las accedan. Iniciar la transferencia de datos. 3.11 [7. Las unidades receptoras deben poder reconocer qué mensajes del bus son enviados hacia ellas y seguir y confirmar las señales de control recibidas de la unidad emisora. La tasa neta de transmisiones está limitada por la tasa neta de transmisión del conductor. es decir que hay una conexión de almacenamiento por unidad funcional. Verificar la disponibilidad del conductor y de la unidad de destino. Grados de Acoplamiento en Multiprocesamiento Los grados de acoplamiento en multiprocesamiento pueden clasificarse de ligeramente acoplados (ver Figura 2. Deitel]. Informar a la unidad de destino de lo que se va a hacer con los datos. por lo cual las referencias a dos unidades diferentes de almacenamiento no son bloqueantes sino simultáneas y la multiplicidad de caminos de transmisión puede proporcionar tasas de transferencia muy altas (ver Figura 2. Deitel]). en tal caso habrá unidades de almacenamiento “privadas” de determinados procesadores (ver Figura 2. Es una organización económica.14 [7. Deitel]). Grados de acoplamiento en multiprocesamiento Descripción Ligeramente acoplado Incluye la conexión de dos o más sistemas independientes por medio de un enlace de comunicación. Deitel]).15 [7. El conexionado es más complejo que en los otros esquemas. Almacenamiento de Interconexión Múltiple Se obtiene al sacar las lógicas de control. según las características que se detallan en la Tabla 2. .12 [7.13 [7. Deitel]) o rígidamente acoplados (ver Figura 2. Cada unidad funcional puede acceder a cada unidad de almacenamiento. de conmutación 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. pero sólo en una “conexión de almacenamiento” específica. Matriz de Barras Cruzadas e Interruptores En este caso existe un camino diferente para cada unidad de almacenamiento.

. Ejecutivo separado para cada procesador. Las organizaciones básicas de los Sistemas Operativos para multiprocesadores son las siguientes:    Maestro / satélite. Si falla el maestro el sistema falla al no poder efectuar operaciones de Entrada / Salida. pudiendo resultar ineficientes. Los sistemas pueden funcionar independientemente y se comunican cuando sea necesario. Reconfiguración. Terminación anormal. Los procesos limitados por la Entrada / Salida ejecutados en los satélites generan frecuentes llamadas de servicios al procesador maestro. Maestro / Satélite Es la organización más fácil de implementar. Equilibrio de cargas de Entrada / Salida. Protección de tablas y conjuntos de datos. Los procesos limitados por computación pueden ejecutarse con efectividad en los satélites.5: Grados de acoplamiento en multiprocesamiento.Cada sistema tiene su propio Sistema Operativo y almacenamiento. Tabla 2. Sistema Operativo de Multiprocesadores Las capacidades funcionales de los Sistema Operativo de multiprogramación y de multiprocesadores incluyen lo siguiente:        Asignación y administración de recursos. Utiliza un solo almacenamiento compartido por varios procesadores. donde es fundamental explotar el paralelismo en el hardware y en los programas y hacerlo automáticamente. Prevención contra el interbloqueo del sistema. Organización Maestro / Satélite Un procesador está diseñado como el “maestro” y los otros como “satélites”. Los procesadores “satélites” sólo realizan computaciones. En el multiprocesamiento simétrico todos pueden hacer Entrada / Salida. El procesador “maestro” es de propósito general y realiza operaciones de Entrada / Salida y computaciones. Las tres últimas son especialmente importantes en Sistemas Operativos de multiprocesadores. Rígidamente acoplado Emplea un solo Sistema Operativo que controla todos los procesadores y el hardware del sistema. Equilibrio de carga del procesador. Tratamiento simétrico (o anónimo) para todos los procesadores. Los sistemas separados pueden acceder a los archivos de los otros e intercambiar tareas a procesadores menos cargados. Si falla un satélite se pierde capacidad computacional pero el sistema no falla. No logra la utilización óptima del hardware dado que sólo el procesador maestro puede ejecutar el Sistema Operativo y el procesador satélite sólo puede ejecutar programas del usuario. por lo que un satélite debería asumir las funciones del maestro previo cambio de los periféricos y reinicio del sistema.

siendo las causas las siguientes:    Hay sobrecarga adicional del Sistema Operativo. así se evitan los conflictos sobre la información global. Las técnicas de recuperación de errores incluyen los siguientes aspectos: . el incremento de la productividad no es lineal y tiende a disminuir cuando “n” crece. Rendimiento del Sistema de Multiprocesamiento Aún con multiprocesamiento completamente simétrico. Cada procesador controla sus propios recursos dedicados. Hay retrasos del hardware en el intercambio y en el encaminamiento de las transmisiones entre un número mayor de componentes. La reconfiguración de los dispositivos de Entrada / Salida puede implicar el cambio de dispositivos a diferentes procesadores con distintos Sistemas Operativos. Recuperación de Errores Una de las capacidades más importantes de los Sistemas Operativos de multiprocesadores es la de soportar fallas de hardware en procesadores individuales y continuar su operación. Se incrementa la contención por recursos del sistema. Todos los procesadores pueden cooperar en la ejecución de un proceso determinado. lista de procesadores conocidos por el Sistema Operativo) a las que se debe acceder utilizando exclusión mutua. Ejecutivos Separados Cada procesador tiene su propio Sistema Operativo y responde a interrupciones de los usuarios que operan en ese procesador. La contención sobre las tablas del Sistema Operativo es mínima. Es más confiable que la organización maestro / satélite. donde cualquiera puede utilizar cualquier dispositivo de Entrada / Salida y cualquiera puede referenciar a cualquier unidad de almacenamiento. El Sistema Operativo administra un grupo de procesadores idénticos. Debe existir el soporte correspondiente en el Sistema Operativo. la adición de un nuevo procesador no hará que la capacidad de ejecución del sistema aumente según la capacidad del nuevo procesador.Las interrupciones generadas por los procesos en ejecución en los procesadores satélites que precisan atención del Sistema Operativo deben ser atendidas por el procesador maestro y por ello pueden generarse largas colas de requerimientos pendientes. Al incrementar el número de procesadores “n” similares en un multiprocesador. El procesador ejecutivo es el responsable (uno sólo) en un momento dado de las tablas y funciones del sistema. Tratamiento Simétrico Es la organización más complicada de implementar y también la más poderosa y confiable. Existen tablas de control con información global de todo el sistema (por ejemplo. Adquieren significativa importancia el hardware y el software para resolución de conflictos. Es posible equilibrar la carga de trabajo más precisamente que en las otras organizaciones. El Sistema Operativo precisa código reentrante y exclusión mutua. que habrá sido asignado a uno de ellos. Los procesadores no cooperan en la ejecución de un proceso individual.

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. Si un programa en ejecución en un procesador pide una operación de Entrada / Salida en un dispositivo conectado a un procesador diferente. El previsible desarrollo de lenguajes que permitan a los usuarios expresar el paralelismo explícitamente. inclusive las de Entrada / Salida. 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. es decir que se estaría próximo a los límites de longitud y de proximidad de los “caminos electromagnéticos” (longitud del recorrido de la señal electromagnética). alcanzados los límites mencionados. Deitel]. El progreso en la detección automática del paralelismo . Todas las llamadas al supervisor pueden ser ejecutadas en todos los procesadores. Es más eficiente que la organización maestro / satélite. Existen estudios de tendencias en arquitectura de computadoras que apuntan a los poliprocesadores. Para minimizar la contención en el despacho de procesos. Se debe utilizar la capacidad ociosa del procesador para tratar de detectar posibles fallos antes de que se produzcan. Deitel]). El Sistema Operativo debe ejecutar efectivamente con la configuración máxima y con subconjuntos ante fallas.16 [7. con lo cual se equilibra la carga entre los procesadores. los relojes de los procesadores tienen oblicuidad. debido a ello las interrupciones de reloj ocurren en diferentes momentos. la única posibilidad de incrementar capacidad de cómputo es mediante multiprocesamiento. es decir. simétrico y asimétrico. para crear una jerarquía de procesadores dentro de un sistema. .      La confiabilidad requerida es cada vez mayor. El hecho de que se estaría llegando a los límites del uniprocesador debido a la compactación de componentes. sistemas que combinan el multiprocesamiento. además. La reducción de costos consecuencia de los avances en microelectrónica. Se considera procesador ejecutante al que está ejecutando un proceso determinado. el MPS utiliza una sola cola de trabajos y cada procesador puede seleccionar trabajos de ella. Los dispositivos de Entrada / Salida pueden ser conectados a cada uno de los procesadores (ver Figura 2. de forma que un proceso determinado se ejecuta en diferentes procesadores en distintos momentos. el procesador puede continuar ejecutando el trabajo y la Entrada / Salida se coloca en una cola para su iniciación por el procesador apropiado. ya que los requerimientos de Entrada / Salida se encolan y no sobrecargan con intercambio de contexto y a que en la organización maestro / satélite las peticiones de Entrada / Salida en el satélite provocan un intercambio de contexto en el maestro. Debe haber capacidad de detección y corrección de errores de hardware sin interferir con la eficiencia operacional del sistema. Cada procesador puede ejecutar el planificador para buscar el siguiente trabajo a ejecutar.     Los datos críticos (del sistema y de usuario) deben mantenerse en copias múltiples y en bancos de almacenamiento separados. Se considera procesador propietario al que está conectado a los diferentes dispositivos utilizados por el proceso. Multiprocesamiento Simétrico (MPS) Cada procesador posee capacidades funcionales completas.

los semáforos permiten interbloqueos (deadlocks) en los que un proceso obtiene un semáforo. muchas técnicas de exclusión mutua tienen efectos colaterales. Esto se conoce como spin lock o espera activa. Se trata de un problema de vital importancia porque. A pesar de todo lo dicho. véase Exclusión mutua. una interrupción puede ocurrir entre dos instrucciones cualesquiera del código normal y esto puede provocar graves fallos. La operación testand-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador. por fragmentos de código conocidos como secciones críticas. La técnica que se emplea por lo común para conseguir la exclusión mutua es inhabilitar las interrupciones durante el conjunto de instrucciones más pequeño que impedirá la corrupción de la estructura compartida (la sección crítica). En un sistema multiprocesador de memoria compartida. Esto impide que el código de la interrupción se ejecute en mitad de la sección crítica. Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion) se usan en programación concurrente para evitar el uso simultáneo de recursos comunes. un conjunto de algoritmos informáticos utilizados para evitar el acceso simultaneo de recursos compartidos. búsqueda Para otros usos de este término. otro proceso obtiene el semáforo y ambos se quedan a la espera de que el otro proceso . como variables globales. La mayoría de los métodos de exclusión mutua clásicos 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 más tiempo del que ahorran.Exclusión mutua (informática) De Wikipedia. colas y otros datos que se emplean en la comunicación entre el código que se ejecuta cuando se da servicio a una interrupción y el código que se ejecuta el resto del tiempo. la enciclopedia libre Saltar a navegación. para esperar hasta que el otro procesador la despeje. si no se toman las precauciones debidas. se despeja la bandera. Algunos sistemas tienen instrucciones multioperación 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 comúnmente. contadores.  los algoritmos de exclusión mutua (mutex). se usa la operación indivisible test-andset sobre una bandera. La mayor parte de estos recursos son las señales. cuando el código deja la sección crítica. Por ejemplo. Así.

Otros efectos comunes incluyen la Inanición.  Versión 4: Postergación indefinida.  Versión 2: Problema interbloqueo. pretende eliminar los efectos anteriormente descritos.  Versión 1: Alternancia estricta. Si ambos procesos intentan acceder a la sección crítica simultáneamente. en el cual un proceso esencial no se ejecuta durante el tiempo deseado. esto significa que los procesos lentos atrasan a los procesos rápidos. Aunque los procesos no están en interbloqueo. así como la latencia alta en la que la respuesta a las interrupciones no es inmediata. en el que una tarea de prioridad elevada espera por otra tarea de menor prioridad. hay un interesante esquema no clásico de envío de mensajes entre fragmentos de código que. deberá esperar su finalización. No existe la alternancia. ''/* Definición de variables compartidas */ '' shared int bandera[2] = {0. shared int turno = 0. Existen cinco versiones del algoritmo Dekker. Garantiza la exclusión mutua.0}. Si el otro proceso está ejecutando en su sección crítica. aunque ambos procesos caen a un mismo estado y nunca salen de ahí. shared int cierto = 1. un proceso o varios se quedan esperando a que suceda un evento que tal vez nunca suceda. el algoritmo elige un proceso según una variable turno. . que permite a dos procesos o hilos de ejecución compartir un recurso sin conflictos. Algunos ejemplos de algoritmos clásicos de exclusión mutua son:   El algoritmo de Dekker. implementado por Edsger Dijkstra. siendo una combinación de la 1 y la 4. teniendo ciertos fallos los primeros cuatro. y la inversión de prioridades. El algoritmo de Peterson. Fue uno de los primeros algoritmos de exclusión mutua inventados.  Versión 3: Colisión región crítica no garantiza la exclusión mutua. La mayor parte de la investigación actual en este campo.libere el semáforo. pero su desventaja es que acopla los procesos fuertemente. impide los interbloqueos. [editar] Véase también El algoritmo de Dekker es un algoritmo de programación concurrente para exclusión mutua. aunque permite inversiones de prioridad y produce una mayor latencia. Si bien no hay un esquema perfecto conocido. La versión 5 es la que trabaja más eficientemente. Este algoritmo no evita que dos procesos puedan acceder al mismo tiempo a la región crítica.

es un algoritmo de programación concurrente para exclusión mutua. bandera[proc_id] = 1. la enciclopedia libre Saltar a navegación.while (cierto) { bandera[proc_id] = cierto. utilizando sólo memoria compartida para la comunicación. bandera[proc_id] = 0. que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos. Peterson desarrolló el primer algoritmo (1981) para dos procesos que fue una simplificación del algoritmo de Dekker para dos procesos. /* ''Sección no crítica'' */ } /* es el turno del otro proceso */ Algoritmo de Peterson De Wikipedia. while (turno == (1-proc_id)) /* espera a que sea su turno de intentar */. Posteriormente este algoritmo fue generalizado para N procesos. } } /* ''Sección crítica'' */ turno = 1-proc_id. también conocido como solución de Peterson. while (bandera[1-proc_id] == cierto) { if (turno == 1-proc_id) { bandera[proc_id] = 0. búsqueda El algoritmo de Peterson. .

/* inicializada a –1 */ turno: array[0..N-2] of 0..N-2. o que la variable compartida turno = 0.[editar] Algoritmo para dos procesos bandera[0] = 0 bandera[1] = 0 turno =0 p1: bandera[1] = 1 turno = 0 while( bandera[0] && turno == 0 ). turno[j] = i. espera.. p1 no puede estar en la sección crítica. //no hace nada. [editar] Algoritmo para N procesos (pseudo-codigo) // Variables compartidas bandera: array[0.. y ocurre que bandera[1] = 0. // sección crítica // fin de la sección crítica bandera[0] = 0 // fin de la sección crítica bandera[1] = 0 Los procesos p0 y p1 no pueden estar en la sección crítica al mismo tiempo: si p0 está en la sección crítica. En ambos casos.. . espera. con lo que p1 está esperando para entrar a la sección crítica. entonces bandera[0] = 1.N-1 ) j:0.n-1.. con lo que p1 ha terminado la sección crítica.N-1] of -1.n-2. //no hace nada.... // sección crítica p0: bandera[0] = 1 turno = 1 while( bandera[1] && turno == 1 ). /* variable local indicando la etapa */ for j = 0 to N-2 { bandera[i] = j. /* inicializada a 0 */ // Protocolo para Pi ( i=0.

Representación de los procesos Para representar los procesos. Planificar el siguiente proceso que entre en la CPU (scheduling). para luego empezar a estudiar el fenómeno de la modelo. quantum. 6. Normalmente los estados se representan mediante colas de procesos. Los criterios que se siguen para la planificación y las políticasque se usan se estudiarán mas adelante en el desarrollode la presente investigación. estableciendo su definición y características. 8. En los Introducción Representación de los procesos Hilos de ejecución o thread Sincronización y comunicación entre procesos Sección crítica Modelo de sincronización mutex (mutual exclusión object) exclusión mutua Modelo de sincronización por semáforos Modelo de sincronización por mensajes Problemas de sincronización Los clásicos problemas de la sincronización de procesos Interbloqueo Recursos reutilizables Recursos consumibles Bibliografía INTRODUCCIÓN sistemas operativos multiprogramados surge el concepto de proceso. de tiempo. como ocurre con la llamada al sistema clone() de Linux. estados. condiciones necesarias y suficientes para su existencia. Un segundo Para realizar el estudio de dichas políticas se realiza una sintetizada referencia a la representación de los procesos. en cuanto a su detección y recuperación. un sistema operativo multiprogramado debe almacenar informaciónen base a la cual: Identificar cada proceso. como representa. se esboza la definición. sin perder generalidad. el barbero dormilón. que suele ser un entero. 14. realiza alguna operación de E/S. } <sección crítica> bandera[i] = -1. objetivo del sistema operativo multiprogramado es la planificacióndel uso del (de los) recurso(s) de proceso. propiedades de la sección critica. lectores y escritores. el grafo de la Figura siguiente. sincronización y tipos. El acceso a otros recursos compartidos y la comunicaciónentre procesos relacionados (por ejemplo. . y productor consumidor y finalmente se estudia el interbloqueo estableciendo su definición. para luego definir hilos de ejecución o threads. utilizaremos siempre el término proceso. un proceso es por un contador de programa. semáforos y mensajes. El proceso pasa por una misma aplicación) hacen necesaria la utilización de mecanismos de sincronización dentro del sistema operativo. los filósofosque cenan (sabios). 11. Típicamente. 3. un flujo de ejecución. mientras que un threadtípico tiene como contexto propio poco más que la pila. representado básicamente Uno de los posibilitan la compartición del recurso un periodo de objetivos del sistema operativoes la representación de los procesosy el soporte de los cambios de contexto entre procesos. En adelante. independientemente de cuál sea su contexto. el fumador de cigarrillos. Sincronización entre procesos 1. el estado de la memoriay el estado de la E/S. características. estableciendo diferencias entre procesos y hilos de ejecución.while [(∃ k ≠ i : bandera[k] ≥ j) ∧ (turno[j] == i)] do. Representar el estado de cada proceso para mantener el grafo de transición de estados. que CPU. 2. Así. Se requiere información que permita aplicar los criterios de planificación (prioridad. 7. Cada vez que un proceso pasa al estado preparado. y su contexto de ejecución. sus ventajas desventajas. 4. que puede ser más o menos amplio. repitiéndose este ciclo hasta la finalización del programa. En algunos sistemas es posible determinar el contexto propio de un proceso en el momento de su creación. un proceso requiere la CPU durante diversos estados entre los que se definen transiciones. En general. la panadería de Lamport. etc). en su forma más sencilla. Se utiliza un identificador del proceso. así como la descripción detallada de algunos de los principales modelosde sincronización tales como el de exclusión mutua (mutex). para después describir los diferentes problemas de sincronización tales como. un proceso incluye en su contexto el estado de la pila. 5. y vuelve a requerir la CPU. está compitiendo por el recurso CPU. 9. asociado a la ejecución de un programa. sincronización de procesos. 12. 10. 13.

etc). podemos definir el sistema operativo como un modelo de procesos que se representa mediante un sistema de colas. es más rápido cambiar de un hilo a otro dentro del mismo proceso. para generalizar. el proceso no existe más y todos sus recursos son liberados. situación de autenticación. Parte de esta información puede ser útil para la planificación. Punteros a tablas de páginas y otra información de la que hablaremos en su momento. se puede considerar una cola de procesos en ejecución (por cada CPU). Gestionar la memoria. Esta información no tiene por qué estar concentrada en una estructura de datosúnica para cada proceso. mientras que los procesos al ser independientes no lo hacen. cada hilo tiene una tarea especifica y determinada. Sistemas operativos como Windows NT. Sin embargo. De esta manera el programa responde de manera más ágil a la Diferencias entre hilos y procesos Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes. botones. la información de un proceso estará segmentada a través de las capas. la pila de ejecución y el estado de la CPU (incluyendo el valor de los registros). sumados a estos recursos. tabla de canales. los otros hilos acceden e ese dato modificado inmediatamente a en la siguiente figura podemos observar un ejemplo de un hilo de ejecución. en los sistemas por capas. El hecho de que los hilos de la memoria. Asimismo en el momento en el que todos los hilos de ejecución finalizan. una cola para cada condición de bloqueo. Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como overhead. Cuando el proceso es terminado. e comunicación dados por el sistema. El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución siga activo. Cómo se almacene dependerá de la estructura del Controldel Proceso o PCB (Process Control Block). ventanas). muestra a Hilos de ejecución o thread sistemasoperativos. no hay una gran diferencia. mientras otro hilo hace una larga operación interaccióncon el usuario. por lo que el PCB incluye uno o más apuntadores. Funcionalidad de los hilos Al igual que los procesos. Soportar la entrada/salida. llevan bastante interactúan sólo a través de mecanismos de informaciónde estados. que datosy espacios de direcciones. los archivosabiertos. Habrá una cola para los procesos que estén en estado preparado para ejecución. los hilos poseen un estado de ejecución y pueden sincronizarse entre ellos para evitar Generalmente. en distintos hilos de ejecución comparten una serie de Los hilos de ejecución que comparten los mismos recursos. en este caso pasar del estadode Running al estado de Waiting o Bloqueado y cambiar de un proceso a otro. Por ejemplo. y procesos 'costosos' mientras que en otros sistemas problemas de compartimiento de recursos. etc. Lo que es propio de cada hilo es el contador de programa. la gestiónde procesos en el sistema operativo se puede representar mediante un conjunto de colas de PCBs. Algunos lenguajes de (como tener un hilo atento a la interfaz gráfica (iconos. Cuando un hilo modifica un dato en proceso. En muchos de los sistemas operativos que proveen facilidades para los hilos. Un hilo de ejecución o thread .5 o superiores) han dicho tener hilos 'baratos'. identificador de usuario). e incluso. muchos hilos generalmente comparten otros recursos directamente. Por otra parte.Contabilizar el uso de recursos por el proceso (tiempo consumido de CPU. Esta técnica permite simplificar el diseñode una aplicación que debe llevar a cabo distintas funciones simultáneamente. La diversa (FCFS. que denominaremos Bloque de Los PCBs se enlazan para formar listas encadenadas (Figura B). etc. Por cada proceso hay que almacenar el estado del entrada/salida). según se continuación. eficienciadel uso del procesador. es una característica que permite a una aplicación realizar varias tareas concurrentemente. dispositivos asignados. programacióntienen características de diseño expresamente creadas para permitir a los programadores lidiar con hilos de ejecución Java). Gestionar el contexto de los procesos. de la pila y de los otros recursos (memoria y cambio de contexto hay que guardar el contexto del proceso que abandona la ejecución y restaurar el contexto del proceso planificado. conceptualmente podemos suponer una estructura. tiempos máximos asignados. que es tiempo desperdiciado por el procesador para realizar un cambio de modo (mode switch). Así. que almacena la información del proceso. en base a la prioridad. como forma de aumentar la Estados de un hilo . Peticiones pendientes. todos sus hilos de ejecución también lo son. Un ejemplo de la utilización de hilos es internamente. Este fenómeno se debe a que los hilos comparten colocar el nuevo proceso en Running. Otros (la mayoría) desconocen la existencia de hilos de ejecución y éstos deben ser creados mediante llamadas de bibliotecaespeciales que dependen del sistema operativo en el que estos lenguajes están siendo utilizados (como es el caso del C y del C++). OS/2 y Linux(2. disciplina de acceso a los PCBs puede ser sistema operativo. Figura B Una lista de PCBs de encadenado simple De esta forma. tiempo de ejecución del proceso. Los recursostales como el espacio de memoria. En los hilos como pertenecen a un mismo proceso al realizar un cambio de hilo este overhead es casi despreciable. son en conjunto conocidos como un ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos. También pueden ser utilizados por una aplicación servidora para dar servicio a múltiples clientes de procesos. En un procesador.

Se tarda mucho menos en terminar un hilo que un proceso.Los principales estados de los hilos son: Ejecución. bajo el nombre de hilo espera la disponibilidad de un recurso. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado. y pasara a la cola de listas. en un programa de siguiente antes de terminar la anterior. permitiendo que el programa pida la orden Por ejemplo. entre hilos pueden comunicarse entre sí sin la invocación al núcleo. procesos debe intervenir el núcleo para ofrecer protección de los recursos y realizar programasen ejecución. para lo que usualmente se utilizan los semáforos. Luego. En la mayoría de los sistemas en la comunicación entre la comunicaciónmisma. es más eficiente hacerlo con una colección de hilos que con una colección de procesos separados. Desbloqueo: Cuando el suceso por el que el hilo se bloqueó se produce. Esta medida suele aumentar la velocidad que se percibe en la aplicación. Se crea un hilo que tiene como operación de texto guardan archivos función guardar una copia de respaldo mientras se continúa con la escritura por el usuario sin interferir en la misma. Un ejemplo es como los softwares de procesamiento de temporales cuando se está trabajando en dicho programa. lo cual puede traer problemas cuando el Pentium4. si un proceso está expulsado de la memoria principal ( proceso. Los beneficios de los hilos se derivan de las implicaciones de rendimiento. Pero las ventajas de los hilos se dan cuando hablamos de Multihilos. y otros comportamientos no intuitivos. 3. Ventajas de los hilos contra procesos Si bien los hilos son generados a partir de la creación de un proceso. Formas de multihilos Los sistemas operativos generalmente implementan hilos de dos maneras:   Multihilo apropiativo:permite al sistema operativo determinar cuándo debe haber un cambio de contexto. Terminación: Cuando un hilo finaliza se liberan tanto su contexto como sus pilas. Cualquier modificación de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso. 2. si hay una aplicación que debe implementarse como un conjunto de unidades de ejecución relacionadas. Ahora el procesador podrá pasar a ejecutar otro hilo que esté en la cola de Listos mientras el anterior permanece bloqueado. conocido como Monohilo. Aceleración de la ejecución Se pueden ejecutar. Cambio de estados conceptode proceso. Bloqueo:Cuando un hilo necesita esperar por un suceso. que pueden o no ser cooperativasentre sí. No tiene sentido asociar estados de suspensión de hilos ya que es un En todo caso. investigacionesllevan al resultado que esto es así en un factor de 10. Es posible que los hilos requieran de operaciones atómicas para impedir que los datos comunes sean cambiados o leídos mientras estén siendo modificados. . Procesamiento asíncrono Los elementos asíncronos de un programa se pueden implementar como hilos. por ejemplo. En tal caso el Una ventaja de la programación multihilo es que los programas operan con mayor multiprocesador o a través de programador necesita ser cuidadoso para evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos alteran datos que otros también están usando). se bloquea (salvando sus registros). mientras que un hilo se elimina su contexto y pila. podemos decir que un proceso es un hilo de ejecución. Sincronización de hilos Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos. ram). El hilo tendrá su propio contexto y su propio espacio de pila. que es cuando un proceso tiene múltiples hilos de ejecución los cuales realizan actividades distintas. un lote mientras otro hilo lee el lote siguiente de un dispositivo. ya que cuando se elimina un proceso se debe eliminar el BCP del mismo. Por lo tanto. Estructuración modular de los programas Puede ser un mecanismo eficiente para un programa que ejecuta una gran variedad de actividades. Listo y Bloqueado. El soporte de hardware para multihilo desde hace poco se encuentra disponible. Por lo tanto. En cambio. velocidad en sistemas de computadores con múltiples CPUs (sistemas grupo de máquinas) ya que los hilos del programa se prestan verdaderamente para la ejecución concurrente. control cuando llega a un punto de detención. teniendo las mismas bien separadas mediante a hilos que realizan cada una de ellas. El descuido de esto puede generar interbloqueo. Usos más comunes Trabajo interactivo y en segundo plano hoja de cálculoun hilo puede estar visualizando los menús y leer la entrada del usuario mientras que otro hilo ejecuta las órdenes y actualiza la hoja de cálculo. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un proceso. el mismo pasa a la cola de Listos. Algunas 1. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso Los hilos aumentan la eficiencia de la comunicación entre 4. Esta característica fue introducida por Intel en el HyperThreading. es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructurasde datos. todos sus hilos deberán estarlo ya que todos comparten el espacio de direcciones del     Creación:Cuando se crea un proceso se crea un hilo para ese proceso. este hilo puede crear otros hilos dentro del mismo proceso. causando un fenómeno conocido como Multihilo cooperativo: depende del mismo hilo abandonar el inversión de prioridades y otros problemas. Los hilos generalmente requieren reunirse para procesar los datos en el orden correcto.

una aplicación multihilo no puede aprovechar las ventajas de los multiprocesadores. Desventajas de los ULT En la mayoría de los sistemas operativoslas llamadas al sistema (System calls) son bloqueantes. ve al conjunto de hilos como un solo proceso. La creación de hilos. Deben ser los procesos que se comunican quienes interpreten el significado de las cadenas transferidas para su labor coordinada.Implementaciones Hay dos grandes categorías en la implementación de hilos:   Hilos a nivel de usuario Hilos a nivel de Kernel También conocidos como ULT (User Level Thread) y KLT (Kernel Level Thread) Hilos a nivel de usuario (ULT) En una aplicación ULT pura. como Solaris. Cuando un hilo realiza una llamada al sistema. todo posible programar una aplicación como multihilo mediante una biblioteca de hilos. se crea. por que todas las estructuras de datos están en el espacio de direcciones de usuario de un mismo proceso. Linux y OS/2 utilizan este método. El programador puede ajustar el número de KLT para cada aplicación y máquina para obtener el mejor resultado global. Dependiendo de que aplicación sea. únicamente un API (interfaz de programas de aplicación) para la gestión de hilos en el núcleo. intercambiar mensajes Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un mismo proceso. Hilos a nivel de núcleo (KLT) trabajo de gestión de hilos lo realiza el kernel. de forma que no se establezca de forma definitiva ningún mecanismo de comunicación. Es decir. En el área de la aplicación no hay código de gestión de hilos. que permiten transferir cadenas de bytes. El SO ofrece mecanismos básicos de comunicación. d. El kernel continua planificando el proceso como una unidad y asignándole un único estado (Listo.    Los ULT pueden ejecutar en cualquier sistema operativo. bloqueado. Los mecanismos de comunicación y sincronización son dinámicos. Por lo tanto. Es códigopara crear y destruir 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 lógicamente son manejados por el kernel. Combinaciones ULT y KLT sistemas operativos ofrecen la combinación de ULT y KLT. Se evita la sobrecarga de cambio de modo y con esto el sobrecoste o overhead. se puede decidir por una u otra planificación según sus ventajas. La misma contiene el y datos entre hilos. el proceso no debe cambiar a modo kernel para gestionar hilos. para planificar la ejecución de hilos y para salvar y restaurar el contexto de los hilos. Sincronización y Comunicación entre procesos La comunicación entre procesos: necesaria si se desea que varios procesos puedan colaborar para realizar una misma tarea. la comunicación es algo puntual. usa y destruye. La biblioteca de hilos es un conjunto compartido. c. Ventajas de los ULT   El intercambio de los hilos no necesita los privilegios del modo kernel. así como la mayor parte de la planificación y sincronización de los hilos de una aplicación se realiza por completo en el espacio de usuario. síncrona: los dos procesos han de ejecutar servicios de forma simultánea. Ventajas de los KLT     Algunos El kernel puede planificar simultáneamente múltiples hilos del mismo proceso en múltiples Si se bloquea un hilo. Una solución al bloqueo mediante a llamadas al sistema es usando la técnica de jacketing. Las propias funciones del kernel pueden ser multihilo procesadores. Windows 2000. crear: el proceso solicita la creación del mecanismo enviar o escribir: el proceso emisor envía información al proceso receptor recibir o leer: el proceso receptor recibe información destruir: el proceso solicita la destrucción del mecanismo de comunicación La comunicación puede ser sincrona y asíncrona: a. Los servicios básicos de comunicación son: a. El núcleo asigna un solo proceso a un solo procesador. todo el método muy particular en que no hace diferencia entre procesos e hilos. cuando se necesita un mecanismo de este estilo. En una estrategiaULT pura. b. Se puede realizar una planificación específica. puede planificar otro del mismo proceso. Linux utiliza un En una aplicación KLT pura.). etc. . Es decir. Los múltiples ULT de una sola aplicación se asocian con varios KLT. se bloquea el mismo y también el resto de los hilos del proceso. Sincronización === funcionamiento coordinado en la resolución de una tarea encomendada. El emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir. Desventajas de los KLT El paso de control de un hilo a otro precisa de un cambio de modo. que es convertir una llamada bloqueante en no bloqueante. el trabajo de gestiónde hilos lo realiza la aplicación y el núcleo o kernel no es consciente de la existencia de hilos. ya que ellos podrían producir efectos indeseados. ya que como el núcleo no interviene.

permitiendo que entre uno de los procesos en espera. La sección crítica no es el único problema a resolver en un sistema operativo. (2) ejecuta la sección crítica. es un ejemplo de sección crítica de código dentro del sistema operativo que debe ser ejecutada por éste en exclusión mutua. pasando a estado preparado cuando la operación ha concluido y eventualmente volver a ejecución. problema que se tratará más adelante. asíncrona: el emisor hace el envío y prosigue su ejecución. por ejemplo un semáforo. En general. Otros ejemplos de código variables de que debe protegerse como sección crítica incluyen la programación de los dispositivos de E/S y el acceso a estructuras de datos y buffers compartidos. Un sistema operativo con consumidor. por lo que la comunicación se resuelve mediante el uso de memoria compartida. además de un . que. Sólo un proceso puede estar en una sección crítica a la vez. como el de disco. La sección crítica se utiliza por lo general cuando un programa multihilo actualiza múltiples variables sin un hilo de ejecución separado que lleve los cambios conflictivos a esos datos. puede ser accedida por un solo proceso a la vez. Una implementación del productor-consumidor (sólo válido para un productor y un consumidor). tanto los de corto plazo. El acceso concurrente se controla teniendo cuidado de las variables que se modifican dentro y fuera de la sección crítica. Si se va a esperar durante un tiempo que compense el coste de los cambios de contexto asociados a bloquear y desbloquear el proceso. las interacciones en el uso de los recursos pueden conducir a interbloqueos. por ejemplo. Con n productores y m consumidores se producirían condiciones de carrera. y si la sección crítica está ocupada el proceso espera. La sección crítica por lo general termina en un tiempo determinado y el hilo. los procesos abandonan la CPU para pasar a estado bloqueado cuando requieren el acceso a algún dispositivo. Se propone como ejercicio la modificación de este código para el caso general. Ambas situaciones son tratadas por el sistema operativo mediante mecanismos de sincronización que permiten el acceso exclusivo de forma coordinada a los recursos y a los elementos de comunicación compartidos. Si se definen buffers o colas compartidas a las que se proporciona acceso exclusivo. proceso ó tarea solo tendrá que esperar un período determinado de tiempo para entrar. Esquema de Sincronización Sincrona En un sistema operativo multiprogramado los procesos compiten por el acceso a los recursos compartidos o cooperan dentro de una misma aplicación para comunicar información. Un ejemplo de exclusión mutua de largo plazo es el acceso a un driver de un dispositivo. Una situación similar. La gestión de estos cambios de estado. se define como a la porción de código 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 ejecución (thread). lo que determina el tipo de mecanismo de sincronización que se debe utilizar. se requieren primitivas de comunicación por paso de mensajes. como los de espera por bloqueado (primitivas de dormir/despertar y semáforos). generalmente en una operación de E/S. Figura C. lo que sucede en particular en sistemas basados en micro núcleo. es decir. el espacio de direcciones es único. puede asumirse protocolo genérico: disciplina FIFO. los cambios de contexto. una La manera en como se implementan las secciones puede variar dependiendo de los diversos sistemas operativos. simplifican la programación de la comunicación. El SO ofrece un almacenamiento intermedio para guardar la información enviada. (3) ejecuta Dejar_SC(). muestraun ejemplo de utilización de una sección crítica para implementar Un aspecto fundamental es cómo se realiza la espera en Entrar_SC(). Esto dependerá del tiempo que el proceso deba esperar para entrar a la sección crítica. La Figura C sincronización productor-consumidor. La espera por bloqueado resulta entonces más eficiente que la espera activa o mucho menos restrictiva que la inhibición de interrupciones. la exclusión mutua se implementa como de largo plazo. La decisión de qué proceso es el seleccionado para entrar en el paso (3) puede tener consecuencias importantes. cuando un proceso quiere entrar a la sección crítica: (1) ejecuta Entrar_SC(). la sección crítica puede ser utilizada para asegurarse de que un recurso compartido. El esquema cliente-servidores un caso particular del productor-consumidor donde los estructuracliente-servidor resulta atractivo por la claridad de su diseño. es necesario utilizar mecanismos explícitos de sincronización para garantizar acceso exclusivo a las variables compartidas. Cuando los procesos que se comunican mediante estos esquemas no comparten el espacio de direcciones. se pueden utilizar esquemas de comunicación más elaborados. Vamos a abordar a continuación los mecanismos de sincronización en los sistemas operativos. Dentro del dentro del núcleo del sistema operativo. Hay que advertir que este ejemplo sólo es válido para un productor y un consumidor. Se necesita de un mecanismo de sincronización en la entrada y salida de la sección crítica para asegurar la utilización exclusiva del recurso. Aunque se utilicen esquemas de comunicación elaborados. Como contrapartida a la agilidad de este esquema. al gestionar implícitamente la sincronización. En los apartados siguientes vamos a tratar el problema de la sección crítica y sus soluciones. Según el modelode sistema operativo descrito anteriormente. Sección crítica En programación concurrente. como se comentará más adelante. Modelo de sección crítica El modelo de sección crítica que vamos a utilizar sigue el siguiente Entrar_SC(esta_SC) /* Solicitud de ejecutar esta_SC */ /* código de esta_SC */ Dejar_SC(esta_SC) /* Otro proceso puede ejecutar esta_SC */ Es decir. hasta que el receptor la solicite. que se basan en la espera por ocupado (incluyendo inhibición de interrupciones y cerrojos de espera activa).b. impresora. basado en colas de procesos y transiciones de estados. como es el caso del productor- clientes producen peticiones que son consumidas por el servidor de un determinado recurso.

/* espera activa */ pet[i]= 1. véase el siguiente ejemplo). violando la condición exclusión mutua. que no vamos investigación. siguiendo una política FIFO para entrar a la sección crítica). No inanición. b. Proporciona exclusión mutua: Pi sólo entra si pet[i]. la operación de consulta y modificación del cerrojo constituye a su vez una sección crítica que hay que resolver previamente. ya que en un multiprocesador sólo UNIXclásicos todo el código de las llamadas al sistema se se inhiben las interrupciones en el procesador que ejecuta la inhibición. b. Además. aún ajeno a la sección crítica. while (turno==j) NOP. Algoritmo de Dekker (1965) Para 2 procesos {Pi. /* inicialmente pet[i]=0 para todo i */ int turno. un proceso que utilizase la inhibición de interrupciones como forma de acceso exclusivo a secciones críticas de duración arbitrariamente larga impediría a los demás procesos ejecutar código alguno. No garantiza un orden FIFO. int pet[2]. Pj}. No interbloqueo y no inanición: Sólo un proceso quedará esperando por turno. como son la productividad (número de operaciones de sincronización por unidad de tiempo que el mecanismo es capaz de soportar) y el tratamiento equitativo entre los procesos (por ejemplo. En los sistemas Cerrojos de espera activa Un mecanismo más general que la inhibición de interrupciones es la utilización de una variable cerrojo para proteger la sección crítica. calidad del mecanismo y que fundamentalmente se refieren a su rendimiento. ya que es difícil acotar los tiempos de respuesta. Entrar_SC (para un proceso Pi): pet[i]= 1. Propiedades del acceso exclusivo a secciones críticas: Como criterios de validez de un mecanismo de sincronización nos referiremos al cumplimiento de las siguientes condiciones enunciadas por Dijkstra para el acceso exclusivo a una sección crítica. el proceso lo echa (cerrojo=1) y entra a la sección crítica. Si está echado. libera el cerrojo (cerrojo=0). Cuando un proceso deja la sección crítica. En multiprocesadores es necesario utilizar cerrojos de espera activa. Por otra parte. Un proceso no puede esperar por tiempo indefinido para entrar a la SC. y en este caso el otro estará en la SC. si no dos procesos podrían leer simultáneamente un valor cero y ambos entrar a la sección crítica. Inhibición de interrupciones Las secciones críticas protegidas por interrupciones se especifican de la siguiente forma: s= inhibir() /* Inhibe interrupciones */ /* Sección crítica */ desinhibir(s) /* Restaura estado anterior de interrupciones */ Este mecanismo lleva asociadas importantes restricciones. No cumple la condición de independencia del hardware. Independencia del hardware. SC. entonces uno de los dos procesos espera por turno. Ningún proceso fuera de la SC puede impedir que otro entre a la SC. Existen ejecuta como sección crítica. por lo que el primero entrará cuando el segundo cambie el turno al salir.mecanismo de comunicación de alto nivel semántico como es el paso de mensajes. a. El más sencillo y más utilizado en los sistemas operativos clásicos es la inhibición de interrupciones. pero los procesadores actuales integran mecanismos a nivel de lenguaje máquina que permiten implementar consulta y modificación atómica sobre variables en memoria. c. restringiéndose por tanto a las implementaciones monoprocesador. Si está libre (cerrojo==0). Antes de ello es preciso revisar las propiedades que deben cumplir estos mecanismos. El proceso que quiere entrar a la sección crítica consulta el cerrojo. d. Suposición inicial adicional: las instrucciones del Lenguaje Máquina son atómicas y se ejecutan secuencialmente. . ejecuta una espera activa consultando su valor hasta que esté libre. Exclusión mutua. e. existen otros criterios que determinan la Espera por ocupado La espera por ocupado engloba una serie de mecanismos de sincronización que proporcionan acceso a secciones críticas de corto plazo. No se pueden hacer suposiciones acerca del número de procesadores o de la velocidad relativa de los procesos. Si también pet[j]. pet[i]= 0. while (pet[j]) if (turno==j) { pet[i]= 0. Como se puede comprobar. No puede haber más de un proceso simultáneamente en la No interbloqueo. Existen otros mecanismos. c. en monoprocesadores. lo que hace a estos sistemas poco adecuados para aplicaciones de tiempo real. Este esquema tan sencillo presenta importantes problemas de implementación. como regiones críticas y a desarrollar en la siguiente monitores. a. } Dejar_SC (para un proceso Pi): turno= j. algoritmos bastante sofisticados que permiten una implementación software(Decker y Lamport.

es adecuado combinar el mecanismo de espera activa con una planificación que incremente la prioridad del proceso que ejecuta la sección crítica.cerrojo cerrojo <. en su forma más simple. En cualquier caso. /* esperar */ while (num[j] && esta_antes(j. mediante primitivas que producen un cambio de estado en el sistema operativo. /* Sección crítica */ unlock(cerrojo). Entonces esta_antes() debe resolver. Espera por bloqueado La espera por bloqueado se utiliza para implementar exclusión mutua de largo plazo y se proporciona. num[i]= maximo(num) + 1. aún en multiprocesadores. entonces esta_antes(i. Algunos sistemas operativos utilizan cerrojos condicionales. Representaremos esta instrucción como una función que devuelve el valor de cerrojo: BOOL test_and_set(cerrojo) El acceso a una sección crítica se implementa haciendo una espera activa (spin-lock) sobre el cerrojo. j++) { while (mirando[j]) NOP. que el proceso que ocupa la sección crítica acceda al procesador para liberarla. El ejemplo más simple es la instrucción máquina Test&Set. lock_lp y unlock_lp. int num[n]. Los procesadores modernos cuentan con instrucciones máquina análogas a Test&Set que permiten implementar la espera activa más eficientemente. . Estas primitivas permiten manejar eventos que sirven para gestionar el acceso a recursos compartidos. No interbloqueo y no inanición: Se sigue una disciplina FIFO. devuelve un código de estado si el cerrojo está ocupado. Pn-1}. Las instrucciones máquina de consulta y modificación atómica (read-modify-write) proporcionan acceso exclusivo a memoria en una operación atómica de consulta y modificación que bloquea el acceso al R <. sin embargo. Nótese que i y j no pueden ser iguales. /* coger numero */ mirando[i]= 0. P1. una espera activa por entrar a la sección crítica podría impedir. mediante primitivas de echar el cerrojo (lock) y liberar el cerrojo (unlock): lock (tipo_cerrojo cerrojo) { while (test_and_set(cerrojo)) NOP. desbloquea a todos los procesos dormidos en ese flag. En monopocesadores. Los procesos que ejecutan dormir sobre un flag activado pasan a estado bloqueado. /* inicialmente num[i]=0 para todo i */ int mirando[n].. reduciendo la contención en el acceso al bus de memoria. dependiendo de la política de planificación. i)) NOP. j<n..Algoritmo de la panadería de Lamport (1974) Para n procesos {P0. k).. Una implementación de lock_lp y unlock_lp es la siguiente: lock_lp (tipo_flag flag) . b. como se verá más adelante. y despertar o wake-up para desbloquear a un conjunto de procesos. si num[i]==num[j]. Primitivas de dormir y despertar Un evento se implementa mediante una variable booleana o flag y la cola asociada de procesos bloqueados en él. y en el mejor de los casos retardaría su entrada6. que ejecuta atómicamente la secuencia: registro R el valor previo de cerrojo. provocando un cambio de contexto. lo que es útil para tratar de evitar interbloqueos. Con dormir y despertar pueden construirse primitivas de exclusión mutua de largo plazo. /* inicialmente mirando[i]=0 para todo i */ Entrar_SC (para un proceso Pi): mirando[i]= 1. La espera activa es un mecanismo adecuado para multiprocesadores. Proporciona exclusión mútua: Si Pi está esperando para entrar y existe algún Pk que ha mirado el número. Dos procesos pueden haber cogido el mismo número. proporcionando una primitiva de echar el cerrojo condicionalmente (cond_lock()) que. Por ejemplo. a. d. Cuando otro proceso o el propio sistema operativo ejecuta despertar sobre ese flag. en vez de dejar al proceso esperando.1 Dejando en el bus. si i<j entonces esta_antes(i. c. } Una sección crítica se protege de la siguiente forma: lock(cerrojo). for (j=0. /* esperar */ } Dejar_SC (para un proceso Pi): num[i]= 0. j).4 } unlock (tipo_cerrojo cerrojo) { cerrojo= 0. dormir o sleep para bloquear al proceso que la ejecuta.

se usa la operación indivisible test-and-set sobre una bandera. muchas que un proceso obtiene un semá técnicas de exclusión mutua tienen efectos colaterales. Otros efectos comunes incluyen la inanición. La mayoría de los A pesar de todo lo dicho. se despeja la bandera. impide los interbloqueos. que permite a dos procesos o hilos de ejecución compartir un conflictos. despertar(flag). 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). deberá esperar su finalización. así como la latencia alta en la que la respuesta a las interrupciones no es inmediata. si no se toman las precauciones debidas. Algunos investigadores afirman que las pruebas indican que estos algoritmos especiales pierden más tiempo del que ahorran. } unlock_lp (tipo_flag flag) { lock(mutex). Si el otro proceso está ejecutando en su sección crítica.{ lock(mutex). Modelo de Sincronización Mutex (Mutual EXCLUSIÓN Object) Exclusión Mutua Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion) se usan en programación concurrente para evitar que fragmentos de código conocidos como secciones críticas accedan al mismo tiempo a recursos que no deben ser compartidos. Fue uno de los primeros algoritmos de exclusión mutua inventados. unlock(mutex). Esto se conoce como spin lock o espera activa. Algunos sistemas tienen instrucciones multioperación 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 comúnmente. inversiones de prioridad y produce una mayor  recurso sin El algoritmo de Dekker. El algoritmo de Dekker es un algoritmode programación concurrente para exclusión mutua. Algunos ejemplos de algoritmos clásicos de exclusión mutua son: la investigaciónactual en este campo. Si bien no hay un esquema perfecto conocido. que llamamos mutex(de mutual exclusión) el cual explicaremos mas adelante). la limitación fundamental del manejo de eventos con este mecanismo deriva de que la primitiva de despertar no almacena el evento. el algoritmo elige un proceso según una variable turno. aunque permite latencia. unlock(mutex). cuando el código deja la sección crítica. dormir() puede encargarse de liberar los cerrojos de los procesos. una interrupción puede ocurrir entre dos instrucciones cualesquiera del código normal y esto puede provocar graves fallos. como se observa. y despertar() de restaurarlos. Esto es especialmente preocupante en multiprocesadores. métodos de exclusión mutua clásicos intentan reducir la latencia y espera activa mediante las colas y cambios de contexto. flag= 1. while (bandera[1-proc_id] == cierto) . en el cual un proceso esencial no se ejecuta durante el tiempo deseado. Esto impide que el código de la interrupción se ejecute en mitad de la sección crítica. otro proceso obtiene el semáforo y ambos se quedan a la espera de que el otro proceso libere el semáforo. y la inversión de prioridades.0}. Así. Pero un proceso no puede quedarse dormido dentro de la sección crítica de corto plazo en lock_lp. flag= 0. En un sistema multiprocesador de memoria compartida. En otras palabras. Un problema del esquema dormir/despertar es que despertar desbloquea a todos los procesos dormidos en el flag y sólo uno de ellos accederá a la sección crítica. while (flag) dormir(flag). pretende eliminar los efectos anteriormente descritos. los semáforos permiten interbloqueos (deadlocks) en los foro. Por ejemplo. colas y otros datos que se emplean en la comunicación entre el código que se ejecuta cuando se da servicio a una interrupción y el código que se ejecuta el resto del tiempo. shared int turno = 0. los procesos en estado bloqueado se consideran fuera de toda sección crítica. Si ambos procesos intentan acceder a la sección crítica simultáneamente. como ocurre en la práctica en los sistemas operativos. Sin embargo. contadores. se protege con una sección crítica de corto plazo mediante un cerrojo ("mutex". La mayor parte de hay un interesante esquema no clásico de envío de mensajes entre fragmentos de código que. /* Definición de variables compartidas */ shared int bandera[2] = {0. La técnica que se emplea por lo común para conseguir la exclusión mutua es inhabilitar las interrupciones durante el conjunto de instrucciones más pequeño que impedirá la corrupción de la estructura compartida (la sección crítica). Se trata de un problema de vital importancia porque. a mayor parte de estos recursos son las señales. hemos utilizado un cerrojo de exclusión mutua único común. } El código es de acceso exclusivo y. while (cierto) { bandera[proc_id] = cierto. en el que una tarea de prioridad elevada espera por otra tarea de menor prioridad. implementado por Edsger Dijkstra. para esperar hasta que el otro procesador la despeje. ya que producirían contención en el acceso al cerrojo. La operación test-and-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador. Sin embargo. ya que no permitiría la ejecución de despertar por otro proceso.

Cuando el hilo abandona la sección crítica. } /* Sección crítica */ turno = 1-proc_id. . Algoritmo Algoritmo de la panadería de Lamport Es un algoritmo de computacióncreado por el científico en computación Dr Leslie Lamport. El sistema mantiene un número (variable global) que refleja el número de turno del cliente que se está atendiendo en el instante actual. tiene más prioridad el hilo que tenga el identificador con un número más bajo. Antes de entrar en sección crítica. lo que concuerda con el uso de un recurso de forma exclusiva: el recurso es el dependiente y la sección crítica de un cliente es lo que realiza mientras es atendido. //no hace nada.. 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 ).. etc. El dependiente sólo puede atender a una persona al mismo tiempo. En este caso. Una vez que se acaba con un cliente. puede ocurrir que dos o más hilos obtengan el mismo turno). el cliente se desprende de su boleto y se dedica a realizar cualquier otra actividad libremente (guardar el dineroen la billetera. pone su número de turno a un valor especial que indique su no intención de entrar en sección crítica (en este algoritmo. Entrada en sección crítica Cuando un hilo quiere entrar en su sección crítica. tendrá que obtener un nuevo número. // sección crítica // sección crítica . bandera[proc_id] = 1. para implementar la exclusión mutua de N procesos o hilos de El algoritmo de la panadería toma su nombre de la costumbre de las panaderías y tiendas en general. // fin de la sección crítica // fin de la sección crítica bandera[0] = 0 bandera[1] = 0  ejecución. En caso de empate. El desempate se realiza así: si dos o más hilos tienen el mismo número de turno. . El cliente obtiene su número de turno usando una cinta de papel que ofrece boletos con números consecutivos. donde las personas al entrar al local obtienen un número de turno (único) y lo utilizan para el dependiente les vaya atendiendo en orden de llegada.). que garantiza que sólo un hilo entra en sección crítica. espera. cada cliente es un hilo. Los clientes deben esperar en una cola hasta que llega su turno. Como no puede haber dos hilos con el mismo identificador. //no hace nada. El algoritmo de Peterson es un algoritmo de programación concurrente para exclusión mutua. Si más tarde quiere volver a comprar. utilizando sólo memoria compartida para la comunicación. decidirá el identificador de hilo más bajo. nunca se da el caso de que dos hilos evalúen al mismo tiempo que tienen derecho a ejecutar su sección crítica.{ if (turno == 1-proc_id) { bandera[proc_id] = 0. la variable global se incrementa en uno y el cliente que tenga un boleto con ese número pasa a ser atendido. retirarse. el hilo debe asegurarse de que tiene el número de turno más bajo. (Si varios hilos realizan el cálculo al mismo tiempo.. /* Sección no crítica */ } }  Algoritmo El algoritmo de Peterson. se usa el valor cero). /* es el turno del otro proceso */ bandera[proc_id] = 0. primero obtiene su número de turno. Los hilos se deben coordinar para decidir en cada momento qué hilo tiene derecho a ejecutar su código de sección crítica. pero en un sistema informático la obtención del boleto es problemática: varios hilos pueden obtener el mismo número de turno. while( bandera[0] && turno == 0 ). el sistema de los boletos funciona perfectamente. Implementación Este es el pseudocódigo del algoritmo de la panadería. espera. ya que no se encuentra más en su sección crítica. while (turno == (1-proc_id)) /* espera a que sea su turno de intentar */. En la vida real. que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos. que calcula como el máximo de los turnos de los otros hilos. El modelo algorítmico que se propone. se aplica un algoritmo de desempate.. En el algoritmo de Lamport se permite que varios hilos obtengan el mismo número. más uno. Cuando termina una compra. identificado con un número único i.

Modelo de Sincronización de Exclusión Mutua Con Semáforos La exclusión mutua se realiza fácilmente utilizando semáforos. Un semá Los semáforos se implementan con una cola de tareas o de condición a la cual se añaden los procesos que están en espera del recurso. Si el semáforo está a 0 el proceso queda en un semáforo no está en ejecución ni listo para pasar a dicho estado puesto que no tiene la Tampoco es válido función exclusiva es dar un valor inicial al estado de esperahasta que el semáforo se libera. se utilizan las notaciones P y V para las operaciones de espera y señal respectivamente. sin embargo. Así pues. para un semáforo binario. Esto es así debido a que un proceso en espera de CPU ni puede pasar a tenerla mientras que no se lo indique el semáforo. La solución está en utilizar instrucciones hardwareespeciales. En sistemas con un único procesadorbastará simplemente con inhibir las interrupciones durante la ejecución de las operaciones del semáforo. el estado suspendido. Está técnica permite resolver la mayoría de los problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas operativos y de lenguajes de programación concurrentes. Dicho estado se debe considerar como uno más de los posibles de un proceso. o en introducir soluciones software como las vistas anteriormente. S = 1 entonces el recurso está disponible y la tarea lo puede utilizar. el proceso que la dejará para pasar al estado listo dependerá del esquema de gestiónde la cola de tareas suspendidas que se haya implementado en el diseño del semáforo. Sólo se permiten tres . Si no hay ningún proceso en espera del semáforo este se deja libre (S := 1) para el primero que lo requiera. si se dispone de ellas. FIFO. Figura E Transiciones para el estado de espera Cuando se ejecuta la operación señalpuede haber varios procesos en la lista o cola. . Un proceso que corre la operación esperay encuentra el semáforo a 1. v: integer) Poner el operacionessobre un semáforo datosespecial que sólo puede tomar los valores 0 y 1. En los sistemas multiprocesador. ya que ésta fue la notación empleada originalmente por Dijkstra para referirse a las operaciones. con una cola de tareas asociada y con valor del semáforo 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 • señal (S) if la cola de tareas está vacía 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 comprobación y cambiode valor del indicador se efectúa de manera real como una sola operación.Inicializar . La operación inicializase debe llevar a cabo antes de que comience la ejecución concurrente de los procesos ya que su semáforo. Un semáforo binario sólo puede tomar dos valores: 0 y 1. que ya indicamos. El diagramade transición de estados de la figura se puede ampliar con un nuevo estado que denominamos de espera.Señal (signal) En algunos textos. Las operaciones pueden describirse como sigue: • inicializa (S: SemaforoBinario. Si. figura E. un semáforo binario se puede definir como un tipo de sólo tres operaciones para actuar sobre él. Dijkstra dio en 1968 una solución al problema de la exclusión mutua con la forobinario es un indicador (S) de condición que registra si un recurso está disponible o no. este método no resulta ya que las instrucciones de los procesadores se pueden entrelazar de cualquier forma. lo cual hay que tener presente a la hora de diseñar el planificador de tareas. por ejemplo: prioridades. que servían tanto para sistemas uniprocesador como para sistemas multiprocesador. lo pone a 0 y prosigue su ejecución.Espera (wait) . Se utilizarán tantos semáforos como clases de secciones críticas se establezcan. 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 conexión con los semáforos. si S = 0 el recurso no está disponible y el procesodebe esperar.Modelo de Sincronización por Semáforos introducción del concepto de semáforobinario. etc. La operación de espera se usará como procedimientode bloqueo antes de acceder a una sección crítica y la operación señal como procedimiento de desbloqueo.

La comunicación por mensajes requiere que se establezca un enlaceentre el receptor y el emisor. Además de las operaciones básica mencionadas. tanto dentro del computador como en la comunicación entre información que intercambiarse. La comunicación mediante mensajes necesita siempre de un proceso emisor y de uno receptor así como de operaciones básicas para comunicación mediante mensajes que proporciona todo sistema operativo son: Enviar(mensaje ) y recibir (mensaje). de uno a muchos. mensaje): envía un mensaje al proceso Q recibir(P. Las acciones de transmisión de información y de sincronización se ven como actividades inseparables. ya que cada proceso debe conocer la identidadde su pareja en la comunicación. ya que permiten comunicación de uno a uno. la capacidad de mensajes del enlace y tipo de los mensajes. proporcionando de un sistema operativo. Suspendido Durmiente Listo Espera Ejecución Espera Señal (* resto del proceso *) end end P1. En la comunicación indirecta los mensajes se envían y reciben a través de una entidad intermedia que recibe el nombre de buzón o puerto . los buzones. Esto hace que se incluyan en prácticamente todos los sistemas operativos modernos y que en muchos comunicacionesdel sistema. Ofrecen una mayor versatilidad que en el caso de nombramiento directo. mensaje): recibe un mensaje del proceso P seguridad en el intercambio de mensajes. 2. Almacenamiento y estructura del mensaje. En la comunicación directa ambos procesos. por lo mismo. Modelo de Sincronización por Mensajes Los mensajes proporcionan una solución al problema de la concurrencia de procesos que integra la sincronización y la de ellos se utilicen como base para todas las computadores. nombran de forma explícita al proceso con el que se comunican. En el caso de que haya varios procesos que recogen información del mismo buzón se plantea el problema de quien debe recoger un mensaje.El 3- comunicaciónentre ellos y resulta adecuado tanto para sistemas centralizados como distribuidos. MODOS DE NOMBRAR LOS MENSAJES El proceso de denominación de las tareas para la comunicación por mensajes se puede realizar de dos formas distintas: directa e indirectamente. mensaje): envía un mensaje al buzón A recibir(buzónA. En este caso las operaciones básicas de comunicación toman la forma: enviar(buzónA. permitir que cada vez sólo un proceso pueda ejecutar una operación de recibir y. la forma del cual puede variar grandemente de sistema a sistema. Sección Crítica señal (S) . pero. Cada buzón tiene un identificador que lo distingue. que el sistema identifique al receptor del mensaje. no resulta muy adecuado para implementar rutinas de servicio Este método de comunicación establece un enlace entre dos procesos que desean comunicar. las modelo de sincronización. el que envía y el que recibe.El proceso P1 de la sección anterior ahora toma la forma: process P1 begin loop espera (S) . . El buzón establece un enlace que puede ser utilizado por más de dos procesos y permite que la comunicación de un proceso con otro se pueda realizar mediante distintos buzones. Su implementación varía dependiendo de tres aspectos: 1. mensaje): recibe un mensaje del buzón A. de muchos a uno y de muchos a muchos. Se pueden dar distintas soluciones: permitir que un buzón sólo pueda ser compartido por dos procesos. Como su nombre indica. MODELOS DE SINCRONIZACIÓN Las diferencias en los sistemas operativos suelen proporcionar operaciones adicionales como las de crear y eliminar modelosusados para la sincronización de los procesos se debe a las distintas formas que puede adoptar la operación de envío del mensaje. un buzón es un objeto en el que los procesos dejan mensajes y del cual pueden ser tomados por otros procesos. Por ello. Las operaciones de enviar y recibir toman la forma: enviar(Q. Aspectos importantes a tener en cuenta en los enlaces son: como y cuantos enlaces se pueden establecer entre los procesos. por último.El modo de nombrar los procesos.

el emisor y el receptor. En la transferencia por valor se realiza una copia del mensaje del espacio de direcciones del emisor al espacio de direcciones del receptor. P y Q. y si no lo está se devuelve un especificar en la sentencia de recibir un tiempo máximo de espera del mensaje. En este caso se dice también que la transferencia se realiza sin utilización de una memoria intermedia. . resulta suficiente implementarla en la operación de recibir. Otra solución más adecuada consiste en operación toma un mensaje si este está presente y se suspende si no lo está. construye respuesta . mensaje) enviar(P. ALMACENAMIENTO Y ESTRUCTURA DEL MENSAJE En la transferencia de información en un enlace se deben tener en cuenta la forma en la que esta se produce y la capacidad o número de mensajes que admite el enlace. tanto en los memoria que puede utilizar una pareja en comunicación directa o un buzón en métodos de nominación directa como indirecta. mensaje) . como se ha indicado. Invocación remota. por lo que es esto lo habitual en la mayoría de los sistemas operativos. mensaje) recibir(P. en un sistema con nominación indirecta la operación de recibir puede tener la forma: recibir(buzón. mensaje) recibir(P. si dos procesos. En la comunicación síncrona la cola se puede considerar que tiene una longitud nula ya que. también son más difíciles de depurar. A la invocación remota también se le conoce como encuentro extendido.. si la cola no está llena. El proceso que envía un mensaje sigue su ejecución sin preocuparse de si el mensaje se recibe o no. en la comunicación asíncrona y en la invocación remota la implementación de la cola se realiza normalmente con una capacidad de mensajes finita mayor que cero.. que en algunos sistemas se denomina aceptar. el proceso emisor se suspende hasta que la ejecución de una operación de recibir le saca de ese estado.. mientras que los métodos síncrono y asíncrono pueden utilizar ambos modos. Cuando el proceso que envía el mensaje continúa sabe que su mensaje ha sido recibido. La operación de recibir. Si transcurre el tiempo especificado el sistema operativo desbloquea al proceso suspendido y le envía un mensaje o código de error indicando el agotamiento del tiempo de espera.. En algunos casos se considera que la capacidad de la cola es ilimitada. de modo que si el mensaje está presente se devuelve. por lo que se suele denominar encuentro( "rendezvous"). tiempo_espera). En el modelo asíncrono el sistema operativo se encarga de recoger el mensaje del emisor y almacenarlo en espera de que una operación de recibir lo recoja. Cuando el proceso emisor envía un mensaje. La invocación remota se puede construir a partir de dos comunicaciones síncronas: P enviar(Q. La operación de envío con buzón también puede ser síncrona si se implementa de modo que el remitente se suspende hasta que el mensaje ha sido recibido. se "junten" para realizar una comunicación. de manera que un proceso nunca se suspende cuando envía un mensaje. Dos operaciones asíncronas pueden constituir una relación síncrona si se envía una señal de reconocimiento. ya que el receptor puede realizar un número arbitrario de cómputos antes de enviar la respuesta.. Aunque la especificación del tiempo de espera se podría realizar también en la operación de envío. este modo de funcionamiento plantea el problema de una espera indefinida en el caso de que un fallo impida que llegue un mensaje. el intercambio de información se puede realizar de dos formas: por valor o por referencia. Se pueden relacionar las distintas formas de enviar un mensaje. De este modo una pareja emisorreceptor no puede tener más de un mensaje pendiente en cada momento. Tiene el inconveniente del gasto de memoria y tiempo que implica la copia. se suele implementar de modo que el proceso que ejecuta la códigode error. se hacen síncronas..respuesta) Como una señal de envío asíncrona se puede utilizar para construir los otros dos modos se podría argumentar que este método es más flexible y es el que debería implementarse en todos los casos. Estos inconvenientes son justamente los convenientes de la transmisión por referencia que tiene como aspecto negativo el necesitar mecanismos adicionales de seguridad para compartir la información entre los procesos.a) Síncrona. b) Asíncrona. Una solución consiste en proporcionar una operación de recibir sin bloqueo. que además se suelen ver incrementados por el uso de una memoria intermedia. Si la cola está llena el proceso se suspende hasta que queda espacio libre en la cola. A su vez. m. Si no se ha emitido una señal de recibir cuando se ejecuta la operación de enviar. Sin embargo. reconocimiento) Q recibir(P. lo que proporciona mayor seguridad en la integridad de la información. Por ejemplo.. La transferencia por valor tiene la ventaja de que mantiene el desacoplo en la información que maneja el emisor y el receptor. Normalmente este tipo de comunicación tiene limitado la cantidad de comunicación indirecta. es decir.. para evitar así que un uso descontrolado pudiera agotar la cantidad de almacenamiento temporal del sistema.. El método de sincronización de la invocación remota utiliza necesariamente la transferencia por valor..reconocimiento) El proceso P envía el mensaje a Q y después se suspende en espera de un mensaje de reconocimiento por parte de Q.. mensaje. a. 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. El proceso que envía el mensaje sólo prosigue su ejecución cuando ha recibido una respuesta del receptor. respuesta) Q recibir(P. Así. El método síncrono necesita de que ambos procesos. mientras que en la transferencia por referencia se pasa un puntero al mensaje. se comunican de forma directa asíncrona se puede establecer la sincronización entre ellos mediante las operaciones: P enviar(Q. Los sistemas operativos tienen asociado a cada enlace una cola en la cual mantienen los mensajes pendientes de ser recibidos. Cuando el mensaje Q recibe el mensaje envía un mensaje de reconocimiento a P que hace que este pueda proseguir su ejecución.. se copia el mensaje y el proceso continúa su ejecución. los dos procesos deben encontrarse para proceder al intercambio del mensaje. enviar(P. El proceso que envía sólo prosigue su tarea cuando el mensaje ha sido recibido. Sin embargo adolece del inconveniente de que al no saberse cuando se recibe el mensaje la mayoría se programan para recibir un mensaje de reconocimiento. Sin embargo.

S := 0.temp). El mensaje que se transmite es irrelevante ya que el paso de mensajes tiene la única misión de sincronizar tareas... Ejemplo Este ejemplo muestra como se puede utilizar la comunicación por mensajes para implementar un semáforo binario. En este caso. El semáforo está libre cuando hay un mensaje en la cola. comportamiento del primer proceso Problemas de Sincronización . procedure espera(var S:integer). Si se inicializa a 0. end. end espera. Los mensajes de longitud variable son más adecuados en los sistemas donde la transferencia se realiza por punteros. luego un proceso que ejecute la operación de espera se suspende hasta que se ejecute una operación de señal por otro proceso. var temp: 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 implementación físicaque permite una asignación sencilla y eficaz principalmente en las transferencias por valor. A cada buzón que utilice un proceso se le puede asignar el tipo de dato adecuado para dicho mensaje y sólo mensajes con esa estructura pueden ser enviados por ese enlace.. module semaforo. con una cola ilimitada conocido tanto por el procedimiento de espera como por el de señal. end señal. si un proceso ejecuta una señal de espera (lo que equivale a una operación de recibir) puede proseguir su ejecución. const nulo = . La programación en este caso resulta más sencilla a expensas de una mayor dificultad en la implementación física.nulo). S := valor. al semáforo en ocupado.. procedure señal(var S: integer). valor:boolean).. procedure inicializa(var S:integer. El que emita la señal de espera dependerá de la inicialización que se haya hecho del semáforo. Por ejemplo. begin crear_buzon(Sbuzon). se suspenderá hasta que es señalado (enviado un mensaje) por otro proceso. Cualquier otro proceso que ejecute una operación de espera no podrá leer ningún mensaje ya que la cola está vacía y. en un lenguajede programación con declaración explícita de buzones se podría tener la sentencia buzónA: mailbox[p] of dato. . para declarar un buzón con el identificador buzónA con una capacidad de p elementos del tipo dato. Por último.. end {semaforo} El buzón creado se identifica de forma exclusiva con el semáforo. Para que el semáforo pueda funcionar es necesario suponer que sólo hay un mensaje circulando a la vez y que este sólo puede ser conseguido por uno de los procesos que están en la espera. por lo tanto. begin enviar(Sbuzon. Por el contrario dificulta la tarea de la programación. Si se inicializa con un valor de 1 se envía un mensaje al buzón y el primer proceso en acceder al semáforo podrá leer el mensaje y pondrá. ya que la longitud del mensaje puede formar parte de la propia información transmitida. end inicializa.nulo). por ello se utiliza un mensaje nulo. begin recibir(Sbuzon. el buzón esta inicialmente vacío y el semáforo aparece como ocupado. begin if valor = 1 then enviar(Sbuzon. los mensajes con definición del tipo son adecuados en la comunicación con buzones. por lo tanto. Se supone que se utiliza un buzón asíncrono type mensaje = record .

como el de los productores/consumidores. Lehman y Rabin. El barbero dormilón. ni siquiera los lectores. con muchos procesos en competencia. productor() { while (TRUE) { produce_item(). Por ese mismo tiempo Dijkstra escribió un artículo sobre la cooperación de procesos. alrededor de la cual se sientan. Una tercera solución es tener a los filósofos tomando tenedores al mismo tiempo. cada proceso ejecuta un conjunto predecible de acciones). Sin embargo. De forma análoga. En su centro se encuentra con una provisión infinita de arroz. Los CLÁSICOS problemas de la SINCRONIZACIÓN de Procesos El del fumador de cigarros. no interactúa con sus colegas. imaginemos una enorme competencia. sin embargo esto puede llevar a un problema de inanición (i. La panaderia de Lamport. Mani Chandy y Jay Misra proponen una cuarta solución. En una de ellas se le da preferencia a los lectores y en la otra a los escritores. deja sus dos palitos y comienza a pensar de nuevo. Más concretamente Dijkstra. Productor/Consumidor. la obtiene de él. dentro de una sección crítica.e.En los sesentas Edsger Dijkstra y cinco de sus colegas desarrollaron uno de los primeros sistemas operativos que soportaban la multiprogramación. estos deben esperar sentados (si hay sillas desocupadas) o salirse de la peluquería (si todas las sillas están ocupadas). Cuando llega un cliente. Si llegan más clientes mientras el barbero corta el cabello de un cliente. este deberá irse a \dormir". y fue llamado sistema multiprogramación THE. (i. El problema es como programar a los lectores y escritores. En su papel sobre monitoresTony Hoare [Hoa74] introdujo el concepto de semáforos binarios separados y muestra cómo usarlos para implementar monitores. Uno de ellos. El agente coloca dos de los ingredientes sobre la cigarrillos. Cuando un filósofo piensa. Dos procesos comparten un tamaño fijo. Hay cinco filósofos chinos que se pasan sus vidas pensando y comiendo. para enrollar y fumar un cigarrillo. otro tiene el tabaco y el tercero los fósforos. (i. Una de las principales aportaciones de este sistema fue la incorporación del concepto de semáforos. una silla de peluquero y n sillas para que se sienten los clientesen espera. La solución es presentada en un lenguaje cercano a C. (esta solución es apropiada para sistemas distribuidos). Courtois. y si dos filósofos desean utilizar el mismo tenedor. coloca información en el almacén (buffer) mientras que el otro. Soluciones a algunos problemas A continuación se presentan soluciones algunos de los problemas discutidos anteriormente.e. este debe despertar al barbero dormilón. Es posible encontrar diferentes soluciones para el problema de los dos filósofos se bloqueen entre ellos). mostro como implementar semáforos generales usando solo semáforos binarios. Cada uno de los cuales toma un número al entrar. el productor.). El clienteespera hasta oír su número. (debido al nombre de la Universidad en alemán. y sobre ella hay cinco palitos. Un filosofo puede levantar un palito a la vez. llama al siguiente numero. Cuando termino de hacerlo. El consumidor despertara al productor cuando elimine un elemento del almacén. el filosofo que más recientemente utilizo el tenedor le da preferencia al otro. puede comer. si el almacén esta vacio y el consumidor desea eliminar un elemento del almacén. Considere un sistema con tres procesos fumadores y un proceso agente. que intentan leer y escribir en ella. y que los filósofos de número par lo toman en otro orden. filósofos que cenan. los filósofos que cenan (sabios) y el del barbero dormilón. el agente coloca dos de los tres ingredientes y se repite el ciclo. También conocido como bounded buffer problem o problema del buffer limitado. ninguno de los demás procesos deberá tener acceso a esta. el barbero se sienta en su silla de peluquero y se duerme. basada en el paso de fichas entre los filósofos. Se puede aceptar que varios procesos lean la base de datos al mismo tiempo. Una segunda forma de evitar el interbloqueo es permitir que a lo mas cuatro filósofos puedan tomar tenedores. El sistema fue diseñado en la UniversidadTecnológica de Eindhoven en Holanda. El agente tiene una cantidad infinita de los tres materiales. el almacén(buffer) de consumidor. Cuando el vendedor se desocupa. Una de las soluciones utiliza asimetría para evitar el interbloqueo (i. un filósofo tiene hambre y trata de levantar los dos palitos más cercanos a él. Los filósofos que cenan (sabios). y no puede tomar un palito que ya está en la mano de un vecino. el fumador necesita tres ingredientes: mesa. Si no hay clientes presentes. permitir que a lo mas cuatro filósofos se sienten en la mesa. algún filosofo podrá quedarse sin cenar). Uno de los procesos fumadores tiene papel. papel. en este problema una panadería tiene una variedad de panes y pasteles vendidos por n vendedores. y el almacén se encuentra lleno. El fumador que tiene el ingrediente restante enrolla un cigarrillo y se lo fuma. y fósforos. presentan una interesante solución probabilística que es perfectamente simétrica.e. El problema consiste en programar al barbero y los clientes sin entrar en condición de Lectores y escritores. Este papel mostraba como utilizar los semáforos para resolver una variedad de problemas de sincronización. Una peluquería tiene un barbero. este debe \dormirse" hasta que el productor coloque algo en el almacén. semaforo lleno = 0. base de datos. Solución al problema productor consumidor con semáforos La solución utiliza tres semáforos. (es decir modificando) la base de datos. si es que los hay. También se podría definir un orden en el que los filósofos de número impar tomen un tenedor en ese orden. La idea base es que cada filosofo usa lanzamientos de monedas para determinar el orden en el cual trataran de tomar los tenedores.e. semaforo vacio = N. Como toda solución. Comparten una mesa circular. fue el que tiempo después le dio un nombre a la técnica e ilustro su uso general. Si el productor desea colocar un nuevo elemento. es posible que el lector encuentre otra. Cada fumador está continuamente enrollando y fumando tabaco. que Sin embargo Dikstra. como por ejemplo un sistema de reservaciones de en una línea aérea.). Entonces. no es la única. semaforo mutex = 1. Es decir un filósofo toma el tenedor en orden diferente que los otros. pero si uno de los procesos está escribiendo. Las anteriores soluciones son determinísticas. De vez en cuando. . avisando al agente cuando termina. Heymans y Parnas introdujeron el problema de los lectores escritores y presentaron dos soluciones usando semáforos. uno de cada lado de los filósofos. como herramienta para implementación de la exclusión mutua. Cuando un filósofo tiene ambos palitos.

integer count. } Solución productor consumidor con monitores Un ejercicio interesante para el lector es el de comparar esta solución con la presentada en la sección anterior. retirar_item(). count=0. count=count+1. consume_item(). introducir_item().producir end end procedure consumidor begin while (true) do . La solución es presentada en un lenguaje muy cercano a Pascal. end. P(mutex). } consumidor() { while (TRUE) { produce_item(). V(vacio). procedure producir. procedure productor begin while (true) do begin producir_item. end monitor. lleno. monitor ProductorConsumidor condition vacio.P(vacio). retirar_item. P(lleno). V(mutex). introducir_item. if (count = 1) then signal(vacio). if (count = N-1) then signal(lleno). end procedure consumir. V(lleno). ProductorConsumidor. begin if (count = N) then wait(lleno). begin if (count = 0) then wait(vacio). P(mutex). count=count-1. V(mutex).

. test(RIGHT). pensando o hambriento. filosofo() { while (TRUE) { think(). de manera que los filósofos hambrientos pueden bloquearse si los tenedores necesarios están ocupados. if (state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] != EATING) { state[i] = EATING. semaforo db = 1. come(). state[i]=THINKING. consumir_item. V(mutex). programa utiliza un arreglo de semáforos. P(s[i]). test(i). Los vecinos del i-ésimo filósofo 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]. test(LEFT). libera_tenedor(i). end end Solución al problema de la cena de los filósofos La solución utiliza un arreglo state para llevar un los vecinos no están comiendo. } test(int i) { registrode la actividad de un filosofo: si está comiendo. uno por cada filosofo. Un filósofo solo puede comer si macrosLEFT y RIGHT. } } Solución problema lectores/escritores semaforo mutex = 1. toma_tenedor(i). } } toma_tenedor(int i) { P(mutex). V(s[i]). semaforo mutex = 1.consumir.begin ProductorConsumidor. V(mutex). En otras palabras si i = 2 entonces LEFT = 1 y RIGHT = 3. } libera_tenedor(int i) { P(mutex). state[i]=HUNGRY. semaforo s[N].

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

Esta norma funciona si solo hay dos o tres coches en el cruce. considérese dos procesos que compiten por el acceso exclusivo a un cinta T. el proceso receptor está bloqueado hasta que recibe el mensaje). Por ejemplo. El bloqueo es permanente hasta que el sistema realice una operación extraordinaria. No existe una solución eficiente para el caso general. Si los procesos acceden a los recursos en el mismo orden no hay ningún problema: P1 . canales E/S. por ejemplo los mensajes. El ínter bloqueo se produce si el Recieve es bloqueante (por ejemplo. considérese el siguiente par de procesos. no hay límite en el número de recursos consumibles de un tipo en particular. se explicaran las condiciones de ínter bloqueo. espera(S1) . se tiene ínter bloqueo. dispositivos y estructuras de datos tales como archivos. 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. Se producen ínter bloqueos como este y la causa esta frecuentemente en la complejidad de la del programa. Por ejemplo... De nuevo. La Figura siguiente la cual muestra una situación en la que cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Un proceso esta interbloqueado si está esperando por un evento determinado que nunca va a ocurrir. Estos errores pueden ser bastante sutiles y difíciles de detectar. No hay ninguna estrategia sencilla y efectiva que pueda solucionar todas las clases de ínter bloqueo. se produce ínter bloqueo si el sistema multiprogramado itera la ejecución de los dos procesos de la siguiente forma: p0p1q0q1p2q2 El diseño de un programa concurrente entraña gran dificultad. mensajes e información en buffers de E/S. memoria principal y secundaria. lógica estrategia para resolver estos ínter bloqueos es imponer restricciones en el diseño del sistema RECURSOS CONSUMIBLES: Un recurso consumible es aquel que puede ser creado (producido) y destruido (consumido). MÉTODOS PARA EL TRATAMIENTO DE INTERBLOQUEO PRINCIPIOS DEL INTERBLOQUEO: Un ejemplo clásico de ínter bloqueo es el ínter bloque de tráfico. RECURSOS REUTILIZABLES: Un recurso reutilizable es aquel que puede ser usado con seguridad por un proceso y no se agota con el uso. la información de los buffers de e/s. bases de datos y semáforos. El ínter bloqueo se produce si cada proceso retiene un recurso y solicita el otro. archivoD del disco y una unidad de Como ejemplo de ínter bloqueo con recursos reutilizables. haciendo más difícil su detección. después. Ejemplo. Como ejemplo de ínter bloqueo con recursos consumibles. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los que se los cuatro coches desean atravesar el cruce. Los procesos obtienen unidades de recursos que liberan posteriormente para que otros procesos las reutilicen. si normasy entran (con cuidado) en el cruce. como puede ser matar a uno o más procesos u obligar a uno o más procesos a retrazar su ejecución. Un programa puede funcionar durante un periodo de tiempo considerable. provocando ínter bloqueo. en el que cada proceso intenta recibir un mensaje de otro y. Una posible sobre el orden en el que se solicitan los recursos. cada coche obtendrá un recurso (un cuadrante) pero no podrá continuar porque el segundo recurso que necesita ya ha sido invadido por otro coche. Antes de examinar cada uno ellos. más o menos. • • • 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 Representación del ínter bloqueo La forma más habitual en la carretera es que un coche en un cruce de cuatro caminos debe ceder el paso que está a su derecha. las necesidades de recursos son las siguientes. cada un se abstendrá de entrar en el cruce. señales. Si los cuatro coches llegan al mismo tiempo.. Suponemos que los recursos están protegidos por los semáforos S1 y S2. El ínterbloqueo puede involucrar a recursos tanto consumibles como reutilizables.. los procesadores. Normalmente.Interbloqueo Definición: 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. incluso años. antes de que el problema se manifieste. Un recursos consumible es aquel que se destruye al ser adquirido por un proceso. enviar un mensaje a otro. por ejemplo) a los que sólo puede acceder un proceso cada Vez. supongamos que se tienen dos procesos P1 y P2 que desean acceder a dos Recurso ( impresora y disco. Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o más procesos. La causa del ínter bloqueo es un error de diseño. Si todos los coches ignoran las demanda control. Un proceso productor que no está bloqueado puede liberar cualquier número de recursos consumibles.. Como ejemplos de recursos consumibles están las interrupciones.

Este error no ocurre con demasiada frecuencia pero sus consecuencias suelen ser devastadoras.. señal(S2) señal(S1) end P1 P2 . la definición de ínter bloqueo. . para que exista ínter bloqueo. Un circulo de espera irresoluble es. CONDICIONES DE INTERBLOQUEO: Deben darse tres condiciones para que pueda producirse un ínter bloqueo: 1. Dado que se producen las tres primeras condiciones. espera(S1) espera(S2) .... por ejemplo: P1 . . puede ocurrir una secuencia de eventos que desemboque en un círculo vicioso de espera irresoluble... La cuarta condición es. CÍRCULO VICIOSO DE ESPERA:existe una cadena cerrada de procesos.... la exclusión mutua hace falta asegurar la consistencia de resultados y la integridad de la base de datos..... pero la mayoría de las veces resulta realmente complicado detectarlo. al menos. las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para el ínter bloqueo. Por ejemplo.. 3. .. señal(S2) señal(S1) end P2 El primer proceso que toma S1 también toma S2 y posteriormente libera los recursos en el orden inverso a como se tomaron y permite al otro proceso acceder a ellos. . un recurso que necesita el siguiente proceso de la cadena. espera(S2) espera(S1) . En algunas ocasiones puede resultar fácil darse cuenta de la posibilidad de que ocurra el interbloqueo.. pero no suficientes. espera(S1) espera(S2) . Sin embargo. señal(S1) señal(S2) end P2 Podría ocurrir que P1 tomara el primer recurso (semáforo S1) y P2 el segundo recurso (semáforo S2) y se quedarán ambos en espera de que el otro liberará el recurso que posee.. señal(S2) señal(S1) end P1 P2 .espera(S2) . si uno de los procesos desea utilizar los recursos en orden inverso. que devuelva un proceso y sus recursos a un estado previo adecuado. una consecuencia potencial de las tres primeras... EXCLUSIÓN MUTUA: Solo un proceso puede usar un recurso cada vez. estas condiciones son bastantes necesarias.. NO APROPIACIÓN: Ningún proceso puede ser forzado a abandonar un recurso que retenga. EXCLUSIÓN MUTUA: . La apropiación no se puede aplicar arbitrariamente. En la mayoría de los casos. 4.. cada uno de los cuales retiene. y cuando se encuentran involucrados recursos de datos debe estar acompañada de un mecanismo de recuperación y reanudación. desde el que el proceso pueda finalmente repetir sus acciones. Las tres primeras condiciones son necesarias. RETENCIÓN Y ESPERAR: Un proceso puede retener unos recursos asignados mientras espera que se le asignen otros.. 2. En resumen..

Se marca el proceso i y se Sema la columna correspondiente de la matriz asignación W osea Wk = Wk + Ak para i < K< M. Para los dos puntos anteriores el criterio de selección podría basarse: . Si a un proceso se le han asignado recursos de tipo R. una aplicación necesitaría conocer todos los recursos que va a necesitar en todos los niveles o en todos los módulos. Un proceso de apropiación debe retroceder hasta un momento anterior a la adquisición de tal recurso. porque A ha adquirido Ri y solicitado Rj. Es necesario que se tenga disponible mecanismo de retroceso y de reinicio de sistema. Como en la retención y espera. puesto que está basado en cambios de aumentos del estado del sistema. un vector de recursos disponibles además de emplear otra matriz de solicitud (Q) definida tal que representa la cantidad de recursos del tipo J solicitados por el proceso i. Para NO APROPIACIÓN: La condición de no apropiación puede prevenirse de varias formas. Supóngase que dos procesos A y B. esperando que se concedan todas sus solicitudes de recursos. Previamente volver a ejecutar cada proceso. Si a un proceso que retiene ciertos recursos se le deniega una nueva solicitud. A cero. Esta técnica es práctica solo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse mas tarde de una forma fácil. los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables. como los archivos. están ínter bloqueados. entonces solo podrá realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación. Las técnicasdiferentes son diferentes puntos de enfoque según su orden decreciente de sostificación: 1º Abortar los procesos ínter bloqueados. el orden en que se eligieran los procesos seguirá un criterio de mínimo coste. se asocia un índice a cada tipo de recurso. 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. el recurso Ri antecede a Rj en la ordenación si i < j. Un algoritmo de detección utilizado frecuentemente es uno donde utilizamos una matrizde asignaciones. Luego de abortar cada proceso se debe ejecutar de nuevo el algoritmo de detección para ver si existe todavía ínter bloqueo. Este último esquema evitara el ínter bloqueo solo si no hay dos procesos que posean la misma prioridad. Se puede produce ínter poderhacer esta petición simultánea. 4º Apropiación de recursos sucesivamente hasta que deje de haber ínter bloqueo de igual forma que el punto anterior la decisión se basa en el mínimo coste y luego se ejecutara el algoritmo de detección después de cada apropiación. El riesgo de tal solución se basa en que se podría repetir el ínter bloqueo principal. junto con el recurso adicional. Si un proceso solicita un recurso que actualmente esta retenido por otro proceso. pueden permitir varios accesos para bloqueo si más de un proceso necesita permiso de escritura. En segundo lugar. De otra forma.En general. un proceso puede estar suspendido durante mucho tiempo. En primer lugar. Esta condición es posible porque implica que i < j y j < i. por lo tanto la comprobación de cada una de las solicitudes de recurso posee ventajas como: la conducción a una pronta detección y el Algoritmo es relativamente simple. tal frecuencia de comprobaciones consume un tiempo de procesador considerable. Esta solución resulta ineficiente. Algunos recursos. No obstante el no determinismo de procesamiento concurrente asegura la mayoría de los casos que esto no va a pasar. 4º Si se encuentra la columna.Se vuelve al paso 3 RECUPERACIÓN Una vez detectado el ínter bloqueo hace falta alguna estrategia de recuperación basándonos en la idea de que para romper el ínter bloqueo de un sistema hay que anular una amas de las condiciones necesarias (esperar por exclusión mutua no apropiatividad espera circular) que se dan para el ínter bloqueo. pero solo accesos exclusivos para escritura. Si el acceso a un recurso necesita exclusión mutua. la primera de las cuatro condiciones no puede anularse. Es la solución más común que adopta un S. Para comprobar el funcionamiento de esta estrategia. retardando procesos y denegando accesos a recursos innecesariamente. como es el caso de un procesador.O. CIRCULO VICIOSO DE ESPERA: La condición de círculo vicioso de espera puede prevenirse definiendo una ordenación lineal de los tipos de recursos. Si no se encuentra el algoritmo ha Terminado. el sistema operativo debe soportar la exclusión mutua. ALGORITMO DE DETECCIÓN 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. RETENCIÓN Y ESPERA: La condición de retención 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 simultáneamente. Dicho algoritmo funciona marcando los procesos que no están ínter bloqueados. Al inicio de todos los procesos están sin marcar por lo tanto para su cancelación se debe llevar una serie de pasos: 1º Se marcacada proceso que tiene la columna asignación. lectura. cuando de hecho podría haber avanzado con solo algunos de los recursos. tiempo durante el cual se priva del acceso a otros procesos. anticipando la perdida que sufrirán algunos procesos de todo lo realizado hasta el momento. el sistema operativo puede expulsar al segundo proceso y exigirle que libere sus recursos. la prevención del círculo vicioso de espera puede ser ineficiente. mientras que B ha adquirido Rj y solicitado Ri. 3º Abortar sucesivamente los procesos ínter bloqueados hasta que deje de haber ínter bloquea. En tal caso. cuando sea necesario. dicho proceso deberá liberar sus recursos anteriores y solicitarlos de nuevo. Esta también el problema práctico creado por el uso de programación modular o estructuras multihilo en una aplicación. 2º Retroceder cada proceso hasta algún punto de control definido.

January 1981. pp. BIBLIOGRAFÍA Referencias Chandy K. 115-138. 1974 Lehmann D. reprinted in [Hoare and Perrot 1972]. pp.R.10 (October). un hilo como máximo puede estar ejecutando cualquiera de sus métodos.. Comm. 549-557.2 Tipo Mesa 4 Véase también Componentes Un monitor tiene cuatro componentes: inicialización. Volume 1. on Princ. y Parnas D. 4(October). Modula-2. 667-668. A symmetric and fully distributed solution to the dining philosophers problem. Concurrent Control with Readers and Writers. Para evitar estos inconvenientes se desarrollaron los monitores.J.a-La menor cantidad de procesador consumido hasta ahora b-El mayor número de líneas de salidas producidas hasta ahora. Monitor (concurrencia) En la programación paralela. incluido Pascal concurrente. A New Solution to Dijkstra's Concurrent Programming Problem. The drinking philosphers problem ACM Trans. Lamport L. Modula-3 y Java. En el estudio y uso de los semáforos se puede ver que las llamadas a las funciones necesarias para utilizarlos quedan repartidas en el código del programa.. datos privados. Monitors: an operating system structuring concept Comm. pp. El concepto de monitor fue definido por primera vez por Charles Antony Richard Hoare en un artículo del año 1974. pp.. los monitores son objetos destinados a ser usados sin peligro por más de un hilo de ejecución. of Prog. haciendo difícil corregir errores y asegurar el buen funcionamiento de los algoritmos. Lo que significa.1 Tipo Hoare 3. of the ACM.M. vol 17. Prco.W. Number 2 (1971). Modern Operating Systems. of the ACM. Courtois P. Ago. c-El mayor tiempo restante estimado. of the ACM 17. vol. La característica que principalmente los define es que sus métodos son ejecutados con exclusión mutua. Languages. and Misra J. y Rabin M. 632-646. e-La prioridad más baja. 1971 Dijkstra E. y como biblioteca de programas.. d-El menor número total de recursos asignados hasta ahora. Hoare C. Oct. Languages and Systems 6. Comm. Eighth ACM Symp. 7293. 10..A. procedimientos del monitor y cola de entrada. La estructura de los monitores se ha implementado en varios lenguajes de programación.. Contenido    o o  1 Componentes 2 Exclusión mutua en un monitor 3 Tipos de monitores 3. Hierarchical Ordering of Sequential Processes Acta Informatica. on Prog. Heymans F. 453-455. que en cada momento en el tiempo. pp. 133-138 Tanenbaum A. pp.L.  Inicialización: contiene el código a ser ejecutado cuando el monitor es creado . 1992 Prentice Hall.O.. Esta exclusión mutua simplifica el razonamiento de implementar monitores en lugar de código a ser ejecutado en paralelo.

simplemente utiliza la función cond_signal con esa condición como parámetro. Las colas se ubican en el sector de datos privados visto anteriormente. a lo sumo un thread puede estar ejecutando dentro de un monitor. De este modo. . El problema de que dos threads ejecuten un mismo procedimiento dentro del monitor es que se pueden dar condiciones de carrera. Si hay varios procesos con esas características elige uno. no hace nada. no debería suponerse ninguna política de encolado. al contrario que los semáforos.  Cola de entrada: contiene a los hilos que han llamado a algún procedimiento del monitor pero no han podido adquirir permiso para ejecutarlos aún. Existen dos funciones para operar con las variables de condición:  cond_wait(c): suspende la ejecución del proceso que la llama con la condición c. El monitor se convierte en el dueño del lock y queda disponible para que otro proceso pueda entrar  cond_signal(c): reanuda la ejecución de algún proceso suspendido con cond_wait bajo la misma condición c. De esta forma. y no poseen ningún valor. Ejecutar dentro de un monitor significa que sólo un thread estará en estado de ejecución mientras dura la llamada a un procedimiento del monitor. cuando la condición permita al thread bloqueado continuar ejecutando. Para que resulten útiles en un entorno de concurrencia. y por lo tanto muchos procesos o threads pueden llamar a la vez a un procedimiento del monitor. el monitor hace cumplir la exclusión mutua implícitamente. la llamada a cond_signal(c) se pierde si no hay tareas esperando en la variable de condición c. supóngase un thread que está dentro del monitor y necesita que se cumpla una condición para poder continuar la ejecución. se dice espera por (o en) la variable de condición correspondiente. a la vez que se debe liberar el monitor para ser usado por otro hilo. cada variable de condición tiene una cola asociada para los threads que están esperando que ocurra el evento correspondiente. se debe contar con un mecanismo de bloqueo del thread. Nótese que. Los monitores garantizan que en cualquier momento. Exclusión mutua en un monitor Los monitores están pensados para ser usados en entornos multiproceso o multihilo. los monitores deben incluir algún tipo de forma de sincronización. debe poder ingresar en el monitor en el mismo lugar donde fue suspendido. Por ejemplo. En ese caso. Las variables de condición indican eventos. perjudicando el resultado de los cálculos. Para evitar esto y garantizar la integridad de los datos privados. Datos privados: contiene los procedimientos privados. se bloqueará y esperará en la cola de entrada hasta que el monitor quede nuevamente libre. que sólo 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. Si otro thread provoca un evento. de modo que sólo un procedimiento esté siendo ejecutado a la vez. si un thread llama a un procedimiento mientras otro thread está dentro del monitor. Si no hay ninguno. Más tarde. Para esto los monitores poseen variables de condición que son accesibles sólo desde adentro. Aunque se la llama cola de entrada. Si un thread tiene que esperar que ocurra un evento.

Ventajas:  El thread que reanuda la ejecución puede hacerlo inmediatamente sin fijarse si la condición se cumple. por lo que podría suponerse que es más urgente ejecutarlo a seguir con el proceso despertante. aunque puede suceder que otro thread logre entrar antes. Podrá intentar entrar el monitor cuando éste quede libre. el thread que ejecuta cond_signal le cede el monitor al thread que esperaba. [editar] Tipo Hoare En la definición original de Hoare.La política de inserción de procesos en las colas de las variables condición es la FIFO. Si hay otro thread esperando en esa variable de condición. [editar] Tipos de monitores Antes se dijo que una llamada a la función cond_signal con una variable de condición hacía que un proceso que estaba esperando por esa condición reanudara su ejecución. ya que asegura que ningún proceso caiga en la espera indefinida. que reanuda la ejecución. Desventajas:  Si el proceso que ejecuta cond_signal no terminó con su ejecución se necesitarán dos cambios de contexto para que vuelva a tomar el lock del monitor. se diferencian dos tipos de monitores: Hoare y Mesa.  El thread despertado ya estaba esperando desde antes. y dificulta la implementación. porque desde que se ejecutó cond_signal hasta que llegó su turno de ejecutar ningún proceso puede cambiarla. Lampson y David D. [editar] Tipo Mesa Butler W. Más tarde cuando el monitor quede libre nuevamente el thread que cedió el lock volverá a ejecutar. algún otro thread podría cambiar la condición. cosa que sí ocurre con la política LIFO (puede que los procesos de la base de la pila nunca sean despertados) o con una política en la que se desbloquea a un proceso aleatorio. Cuando reanude la . se lo despierta y deja como listo. Según quién continúa con la ejecución. De otra forma.  Al despertar a un thread que espera en una variable de condición. Surge la siguiente pregunta: ¿qué sucede con el thread que hizo el cond_signal? ¿pierde el lock para dárselo al thread que esperaba? ¿qué thread continúa con su ejecución? Cualquier solución debe garantizar la exclusión mutua. Esto implica que la planificación debe ser muy fiable. Nótese que el thread que reanuda su ejecución necesitará obtener nuevamente el lock del monitor. El monitor toma entonces el lock y se lo entrega al thread durmiente. En los monitores de Lampson y Redell el thread que ejecuta cond_signal sobre una variable de condición continúa con su ejecución dentro del monitor. se debe asegurar que reanude su ejecución inmediatamente. Redell en 1980 desarrollaron una definición diferente de monitores para el lenguaje Mesa que lidia con las desventajas de los monitores de tipo Hoare y añade algunas características. Este nuevo thread puede cambiar la condición por la cual el primer thread estaba durmiendo.

que notifica a los threads que están esperando en la variable de condición c y los pone en estado listo. por lo tanto. y requieren intercambiar recursos entre sí para continuar. Al entrar al monitor. Una condición común no deseable es descripta como deadlock. Los filósofos necesitan . En el proceso que durmió. para que al despertar compruebe nuevamente la condición. Además de las dos primitivas cond_wait(c) y cond_signal(c). cada thread verificará la condición por la que estaban detenidos. En el estado de lectura. siendo el más popular el Problema de Comida de los Filósofos. que verificará la condición y seguirá durmiendo si no fuera la esperada. y de no ser cierta vuelva a llamar a cond_wait. un proceso está utilizando algún recurso. ya que un thread podría hacer una llamada incorrecta a cond_signal o a cond_broadcast sin afectar al thread en espera. Muchos escenarios han sido construidos para ilustrar las condiciones de deadlock. en el estado de ejecución. Concurrencia E Interbloqueo Deadlock DEADLOCK Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados. tomará un camino que llevará a un estado de deadlock. al igual que antes. los monitores de Lampson y Redell poseen la función cond_broadcast(c). que es cuando dos procesos están en un estado de ejecución. uno a cada lado del plato. es necesario cambiar la instrucción if por while. debería verificar que la condición efectivamente es la que necesita para seguir ejecutando. Los monitores del tipo Mesa son menos propensos a errores. como no hay ningún resultado. concediendo que otro proceso sea ejecutado.ejecución el durmiente. el proceso está parado y no se ejecutará mientras algo lo restaure. y en el estado de bloqueo. Un proceso puede estar identificado con tres estados diferentes: leyendo (ready). un proceso está parado. Cinco filósofos tienen cinco platos de fideos enfrente suyo y cinco tenedores. Ambos procesos están esperando por la liberación del recurso requerido. que nunca será realizada. ejecutando (running) o bloqueado (blocked).

si todos los filósofos quieren coger el tenedor de la derecha y.El coche que va hacia el sur necesita los cuadrantes 3 y 4. mientras están en estado de ejecución (comiendo) o de lectura (pensando). Una condición posible de deadlock puede ocurrir. . Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o más procesos. pensar o comer. por tanto. Se podría hablar de deadlock como el estado permanente de bloqueo de un conjunto de procesos que están compitiendo por recursos del sistema.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. A diferencia de otros problemas de la gestión concurrente de procesos. a la vez. El problema es un paralelismo simplista entre procesos (los filósofos) tratando de obtener recursos (tenedores). no existe una solución eficiente para el caso general.. . Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los que se demanda control. .. si los coches desean atravesar el cruce.El coche que va hacia el este necesita los cuadrantes 4 y 1. bloqueo mutuo o abrazo mortal) cuando están esperando por condiciones que nunca se van a cumplir.. . las necesidades de recursos son las siguientes: .ambos tenedores (derecha e izquierda) para comer. EJEMPLOS DE INTERBLOQUEO Ejemplo 1: Interbloqueo de tráfico Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Se dice que dos procesos se encuentran en estado de deadlock (interbloqueo. 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.. Durante la comida realizarán solo dos operaciones mutuamente excluyentes. el de la izquierda: la comida terminará en estado de deadlock.

dispositivos de e/s (impresoras. se ha construido un puente que solo deja pasar vehículos en un solo sentido. Ejemplo 3: Dos procesos desean imprimir cada uno un enorme archivo en cinta. Este ejemplo nos muestra como sucede el interbloqueo en nuestra vida diaria.Lógicos: Ficheros. . El bloqueo ocurre cuando dos carros intentan pasar por el puente al mismo tiempo. pero la solicitud es denegada hasta que B la libere. El proceso A solicita el permiso para utilizar la impresora. provocando interbloqueo. B solicita la impresora. el coche del norte esperará hasta que el del oeste pase. cada coche obtendrá un recurso (un cuadrante) pero no podrá continuar porque el segundo recurso que necesita ya ha sido invadido por otro coche. Si todos los coches ignoran las normas y entran (con cuidado) en el cruce. De nuevo. Es entonces cuando el proceso B solicita permiso para utilizar la unidad de cinta y se le otorga. si solo llegan al cruce los coches del norte y del oeste. Sin embargo. unidades de cinta. Por ejemplo. espacio en memoria. como es el caso de tres unidades de cinta. semáforos. etc. Esta norma funciona si solo hay dos o tres coches en el cruce.Físicos: Ciclo de cpu.) . se tiene interbloqueo. Los procesos se bloquean en ese momento y permanecen así por siempre. si los cuatro coches llegan al mismo tiempo cada uno se abstendrá de entrar en el cruce. RECURSOS Un sistema se compone de un numero finito de recursos que se distribuyen entre varios tipos: . en este momento.. Por lo general. Ejemplo 2: Cruce en un puente (es parecido al interbloqueo de trafico) En una carretera de dos direcciones..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. tablas del sistemas. Algunos recursos podrán tener varias instancias idénticas. 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. el cual se le concede. donde en un determinado cruce con la vía del ferrocarril. una computadora tiene distintos recursos que pueden ser otorgados. Por desgracia. en vez de liberar unidad de cinta. El proceso A solicita entonces la unidad de cinta.

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

Puede no existir interbloqueo con solo estas tres condiciones. ni liberar recursos.Condición de posesión y espera: Los procesos que tienen. la apropiación no se puede aplicar arbitrariamente y. puesto que no puede hacer ninguna labor útil. La exclusión mutua hace falta para asegurar la consistencia de resultados y la integridad de la base de datos.3. el evento que espera cada proceso es la liberación de cierto recurso que posee por el momento otro miembro del conjunto. pueden solicitar nuevos recursos. deben darse tres condiciones para que pueda producirse un interbloqueo: 1. desde el que el proceso puede finalmente repetir sus acciones. recursos asignados con anterioridad. cada miembro del conjunto de procesos bloqueados espera un recurso poseído por un proceso bloqueado. En la mayoría de los casos.Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso.1. y puede ser despertado. 3. En la mayoría de los casos. 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. cuando se encuentran involucrados recursos de datos. CONDICIONES PARA PRODUCIR INTERBLOQUEO En la política del sistema operativo.Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o esta disponible.2. se necesita una cuarta condición: . para todos los efectos esta como bloqueado. El proceso que los posee debe liberarlos en forma explicita. debe estar acompañada de un mecanismo de recuperación y reanulación. En otras palabras. Ninguno de los procesos puede continuar su ejecución. que devuelva un proceso y sus recursos a un estado previo adecuado. Para que se produzca interbloqueo. en un momento dado. estas condiciones son bastantes necesarias. 2. De forma similar.Aunque este proceso no esta bloqueado.

la implementacion de esta técnica puede introducir nuevos motivos de interbloqueo. La cuarta condición es. cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena. Los métodos para prevenir el interbloqueo son de dos tipos: . Sin embargo. una consecuencia potencial de las tres primeras. Las tres primeras condiciones son necesarias. dado que se producen las tres primeras condiciones. Las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para el interbloqueo. para que exista interbloqueo. Puesto que el spooler nunca solicita otros recuersos. a grandes rasgos. en realidad. la salida resulta caótica. la posibilidad de interbloqueo. Por ejemplo. Pero con el spooling de salida varios procesos pueden generar salida al mismo tiempo. pero no suficientes.Condición de espera circular (o circulo vicioso de espera): Debe existir una cadena circular de dos o mas procesos. El circulo de espera de la condición 4 es irresoluble porque se mantienen las tres primeras condiciones. en diseñar su sistema de manera que esté excluida. PREVENCIÓN DEL INTERBLOQUEO La estrategia básica de la prevención del interbloqueo consiste. Exclusión mutua.4. 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. se elimina el bloqueo originado por la impresora. es posible eliminar esta condicion en algunos procesos. a priori.4.Los métodos indirectos que consisten en impedir la aparición de alguna de las tres condiciones necesarias para que se de el interbloqeo. puede ocurrir una secuencia de eventos que desemboque en un circulo vicioso de espera irresoluble. no se producirá interbloqueo.-Si ningún recurso se puede asignar de forma exclusiva. ademas. Es decir.-La condicion de retencion y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y .. ya que el spooling emplea una zona de disco finita) Retencion y espera.. una impresora es un recurso no compatible pues si se permite que dos procesos escriban en la impresora al mismo tiempo. No obstante. existen recursos para los que no es posible negar la condicion de exclusión mutua. .Los métodos directos que consisten en evitar la aparición del circulo vicioso de espera.

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

La predicción del interbloqueo necesita. La predicción. Con predicción del interbloqueo. pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. Enfoques para la predicción del interbloqueo: . de concederse. no apropiación) o directamente.. Esto se hace indirectamente. llevar potencialmente a un interbloqueo. Es decir. De forma similar. se pueden alcanzar las tres condiciones necesarias. Con predicción del interbloqueo. Cij = demanda del recurso j por parte del proceso i. … Dm) cantidad total de cada recurso sin asignar a los procesos Demanda = exigencias de recursos para cada proceso Asignación = asignación actual La matriz Demanda indica las exigencias máximas de recursos para cada proceso. Negativa de iniciación de procesos. Se definen los vectores y matrices siguientes: Recursos = (R1. D2. se decide dinámicamente si la petición actual de asignación de un recurso podría. Se puede ver que se cumplen las siguientes relaciones: . por lo menos. por otro lado.a las solicitudes de recursos a impedir que sucediera . Se llega así a un uso ineficiente de los recursos y una ejecución ineficiente de los procesos.. por lo tanto. impidiendo la aparición de una de las tres condiciones necesarias (exclusión mutua. Esta información debe declararse por adelantado para que funcione la predicción de interbloqueo.No iniciar un proceso si sus demandas pueden llevar a interbloqueo. Aij = asignación del recurso j al proceso i. retención y espera. por lo tanto. impidiendo la aparición de un circulo viciosos de espera. R2. alguna de las cuatro condiciones de interbloqueo. … Rm) cantidad total de cada recurso en el sistema Disponible = (D1.No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo. con una fila para cada uno. permite más concurrencia que la prevención. .-Confedérese un sistemas de n procesos y m tipos diferentes de recursos. conocer las peticiones futuras de recursos.

Aki <= Cki: ningún proceso tiene asignados más recursos de cualquier tipo que los que ha declarado necesitar. un estado que no es seguro. el algoritmo verifica si asignándole . Con estas tres cantidades. Para todo i. 2. Así pues. que usó este nombre por la analogía de este problema con el de un banco cuando los clientes quieren obtener dinero prestado. Los clientes sería los procesos y el dinero a prestar. Si se enuncia de esta manera. puesto que asume el caso peor: que todos los procesos expresen su demanda máxima a la vez. Cki <= Ri: ningún proceso puede demandar más recursos que la cantidad total de recursos del sistema 3. Ri = Di + Σ Aki : todos los recursos están asignados o disponibles. Un nuevo proceso Pn+1 comenzará sólo si: Ri >= C(n+1)i + Σ Cki. Negativa de asignación de recursos. y las dos matrices. Demanda y Asignación. Para todo k e i. Considérese un sistema con un número fijo de procesos. El algoritmo del banquero usa una tabla de recursos para saber cuántos recursos tiene de todo tipo. se puede definir una política de predicción del interbloqueo que rechace iniciar un nuevo proceso si sus exigencias de recursos pueden conducir a un intebloqueo. Recursos y Disponible. el estado estará formado por los dos vectores. un proceso comenzará sólo si puede servirse la demanda máxima de todos los procesos actuales más la del nuevo proceso. Para empezar se definen los conceptos de estado y de estado seguro. Para todo k e i. definidas anteriormente. fue propuesta por primera vez por Dijkstra. El banquero puede rechazar un préstamo a un cliente si hay riesgo de que el banco no tenga fondos suficientes para hacer préstamos futuros que los clientes finalmente repondrán. Esta estrategia es poco óptima. denominada algoritmo del banquero. todos los procesos pueden ejecutarse hasta el final).-La estrategia de negar la asignación de recursos.1. los recursos. Un estado inseguro es. Un estado seguro es un estado en el cual existe al menos una secuencia que no lleva al interbloqueo ( es decir. para todo i Es decir. naturalmente. el banco tiene una reserva limitada de dinero para prestar y un conjunto de clientes con líneas de crédito. También requiere que los procesos informen del máximo de recursos que va a usar de cada tipo. Un cliente puede elegir pedir dinero a cargo de la línea de crédito en un instante dado y no hay garantía de que el cliente realice ninguna reposición hasta después de sacar la cantidad máxima. Cuando un proceso pide un recurso.

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

} if (seguro (nuevo_estado)) { < realizar asignación >.} else if (solicitud [*] > disponible [*]) { < suspender proceso > . < suspender proceso >.simular asignación */ { < definir nuevo_estado como: asignación[i. } . ] + solicitud [*]: disponible [*] = disponible [*] – solicitud [*] >. } else { < restaurar estado original >. ] = asignación[i. } else /*-.

*]. proceso resto [< número de procesos >]. while (posible) { encontrar un PK en resto tal que demanda [k. resto = {todos los procesos}. *] < = disponible_actual. *] – asignación [k. } else posible = falso. disponible_actual = disponible. posible = true.simular ejecución de P */ { disponible_actual = dispible_actual + asignación [k. if (encontrado) /*-. resto = resto – {PK}.Algoritmo de comprobación de estado seguro (algoritmo del banquero) booleano seguro (estado S) { int disponible_actual [m]. } .

es decir. } La predicción del interbloqueo tiene la ventaja de que no es necesario expulsar y hacer retroceder procesos. se actualiza el estado de los recursos y se hace una verificación para observar si existe algún ciclo. Este método está basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados.. O. las estrategias de detección de interbloqueo. se concederán los recursos que los procesos necesiten siempre que sea posible. no limitan el acceso a recursos ni restringen las acciones del proceso.. y es menos restrictiva que la prevención.seguro (resto = = null). DETECCIÓN DEL INTERBLOQUEO Las estrategias de prevención de interbloqueo son muy conservadoras. Comprobar cada solicitud de recursos tiene dos . Sin embargo. el S. su uso supone una serie de restricciones como las siguientes: .-Una comprobación para interbloqueo puede hacerse con igual o menor frecuencia que cada solicitud de recursos. resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos.Se debe presentar la máxima demanda de recursos por anticipado. . La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en él.Los procesos a considerar deben ser independientes... En cambio. . como en la detección del interbloqueo. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. dependiendo de que tan probable es que ocurra un interbloqueo. se liberarán en el momento que otro proceso lo requiera. Con la detección del interbloqueo.Los procesos no pueden finalizar mientras retengan recursos. ejecuta un algoritmo que permite detectar la condición de circulo vicioso de espera. Periódicamente. .Debe haber un número fijo de recursos a repartir y un número fijo de procesos. que el orden en que se ejecuten no debe estar forzado por condiciones de sincronización. Algoritmo de detección del interbloqueo . Cada vez que se solicita o se devuelve un recurso.

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

Tipos de recursos utilizados. Si se utiliza el método de terminación parcial. 1 ) Abortar todos los procesos interbloqueados. Después de cada aborto. debe solicitarse de nuevo el algoritmo de detección. ya que se pierde menos trabajo y será más fácil recuperarlo más tarde. Existen muchos factores que determinan el proceso que se seleccionará. La prioridad del proceso. debemos determinar cuál proceso o procesos debe terminarse para intentar romper el interbloqueo. Abortar los Procesos Para eliminar interbloqueos abortando un proceso. Quizá no sea fácil abortar un proceso. cortarlo a la mitad de la operación puede ocasionar que el archivo quede en un mal estado. . Se abortará aquel proceso que haya utilizado menos tiempo el procesador. y será el administrador el que solucione dicho problema de la manera más conveniente posible. Se trata sobre todo de una cuestión económica. 2. el sistema recupera todos los recursos asignados a los procesos terminados. Esta es una de las soluciones más comunes. dado un conjunto de procesos bloqueados. Este método cae enmucho tiempo de procesamiento adicional. Tiempo de procesador usado. para quizá tener que volver a calcularlos más tarde. Si los recursos son muy necesarios y escasos será preferible liberarlos cuanto antes. 3. Si éste se encuentra actualizando un archivo. debemos abortar los procesos que nos representen el menor costo posible. ya que estos procesos efectuaron cálculos durante mucho tiempo y habrá que descartar los resultados de estos cálculos parciales. de modo que su decisión no afecte demasiado a al usuario del proceso en conflicto. entonces. Se elimina el proceso de menor prioridad. para ver si todavía existe el interbloqueo. adoptada por Sistemas Operativos. en ambos. Este método romperá definitivamente el ciclo de interbloqueo pero con un costo muy elevado. siendo los principales los siguientes: 1. y sobre todo que no afecte a los demás usuarios del sistema. 2 ) Abortar un proceso en cada ocasión hasta eliminar el ciclo de interbloqueo. El orden en que se seleccionan los procesos para abortarlos debe basarse en algún criterio de costo mínimo.Recuperación Manual Está forma de recuperación consiste en avisarle al administrador o al operador del sistema que se ha presentado un interbloqueo. tenemos dos métodos.

Selección de la víctima .4. Como ejemplo de esta técnica..Retroceso ..Usar la estrategia de ordenación lineal definida anteriomente para la prevención de circulo viciosos de espera e impedir el interbloqueo entre clases de recursos. considérense las siguientes clases de recursos: . Facilidad de suspensión / reanudación.. emplear el algoritmo mas apropiado para dicha clase. Cuántos recursos más necesita el proceso. hay que considerar tres aspectos: . Se eliminarán aquellos procesos cuyo trabajo perdido sea más fácil de recuperar. Es conveniente eliminar a aquellos procesos que necesitan un gran número de recursos. . 5.Agrupar los recursos en un numero de clases diferentes. especialmente sistemas por lote en los que la eliminación de un proceso y después su reiniciación suele aceptarse.Bloqueo indefinido La detección y recuperación es la estrategia que a menudo se utiliza en grandes computadoras. una de ellas sugiere lo siguiente: . UNA ESTRATEGIA INTEGRADA DE INTERBLOQUEO Puede ser mas eficiente usar diferente estrategias en diferentes situaciones.Espacio intercambiable: bloques de memoria en almacenamiento secundario para el intercambio de procesos. Si se utiliza la apropiación de recursos para tratar los interbloqueos. vamos quitando sucesivamente recursos de los procesos y los asignamos a otros hasta romper el ciclo de interbloqueo. .Dentro de cada clase de recursos. .. Apropiación de Recursos Para eliminar interbloqueos utilizando la apropiación de recursos...

El orden es razonable.. cinco platos.. Un filósofo que quisiera comer iría a su lugar asignado en la mesa y. EL PROBLEMA DE LA CENA DE LOS FILOSOFOS Había una vez cinco filósofos que vivían juntos.. puesto que es razonable esperar que los procesos declaren por anticipados los recursos de esta clase que necesitaran. . como la estrategia de prevención de retención y espera. . simplemente es trasladado a la memoria secundaria . También es posible en esta clase la prevención mediante la ordenación de recursos. .Memoria principal: asignable a los procesos en paginas o segmentos. Cuando se expulsa un proceso. En cada clase se pueden usar las siguientes estrategias : . usando los dos tenedores de cada . Los preparativos de la comida eran simples : una mesa redonda en la que había una gran fuente de espaguetis.Memoria Principal: la prevención por apropiación parece ser la estrategia mas adecuada para la memoria principal. uno para cada filósofo y cinco tenedores. Esta estrategia es razonable si se conoce los requisitos máximo de almacenamiento. El orden en que se encuentran estas clases de recursos es el orden en que se asignan. .Recursos Internos: puede usarse la prevención por ordenación de recursos.Espacio Intercambiable: puede aplicarse la prevención de interbloqueos. tras años de pensar.Recursos internos: como canales de E / S.Recursos de procesos: dispositivos asignables. como unidades de cintas y archivos.. Otra posibilidad es la predicción de interbloqueos.Recursos de Procesos: la predicción es a menudo efectiva en esta categoría.. todos los filósofos se habían puesto de acuerdo en que la única comida que contribuía a sus esfuerzos eran los espaguetis. La vida de cada filósofo consistía principalmente en pensar y comer y. pidiendo que todos los recursos sean asignados de una vez... teniendo en cuenta la secuencias de pasos que un proceso debe seguir durante su vida. lo que suele ser habitual..

Una primera solución al problema de la cena de los filósofos es: /* program cena_filósofos */ semáforo tenedor[5] = {1}. Por consiguiente. wait (tenedor [i]). puede no parecer importante o relevante por si mismo. wait (tenedor [(i + 1)mod 5]. El algoritmo debe satisfacer la exclusión mutua (dos filósofos no pueden emplear el mismo tenedor a la vez). void filosofo(int i) { while (cierto) { pensar ( ).lado del plato. este ultimo termino tiene un significado literal además del algorítmico). Además. propuesto por Dijkstra. que se produce cuando una aplicación incluye hilos de ejecución concurrentes. cogería los espaguetis y se los comería. Sin embargo. Este problema. sirve para ilustrar los problemas básicos del interbloqueo y la inanición. el problema de la cena de los filósofos puede verse como un caso representativo de los problemas relacionados con la coordinación sobre recursos compartidos. int i. este problema es un caso de prueba estándar para examinar soluciones a la sincronización. El problema es lo siguiente : inventar un ritual (algoritmo) que permita comer a los filósofos. intentar desarrollar una solución revela muchas de las dificultades de la programación concurrente. comer ( ). además de evitar el interbloqueo y la inanición (en este caso. Es más. .

filosofo (1).signal (tenedor [(i + 1) mod 5]). int i. Como otra solución posible . } Sugiere una solución por medio de semáforos. En esta figura se muestra con semáforos. } } void main ( ) { parbegin (filosofo (0). desafortunadamente. Cuando un filosofo termina de comer. filosofo (2). devuelve los dos tenedores a la mesa. o enseñar a los filósofos a comer espaguetis con un solo tenedor. se podría considerar incorporar un sirviente que permita pasar solo a 4 cuatro filósofos a la vez al comedor. semáforo habitación = {4}. Esta solución es poco decorosa. Con un máximo de 4 filósofos sentados.Para superar el riesgo de ínter bloqueo se podrían adquirir 5 tenedores adicionales ( una solución mas saludable). wait (tenedor [1]). /* program cena_filósofos */ semáforo tenedor[5] = {1}. Esta solución. Cada filosofo toma 1º el tenedor de su izquierda . filosofo (3). todos se sientan. todos toman el tenedor de su izquierda y todos intentan tomar el otro tenedor que no estará. produce ínterbloqueo: si todos los filósofos están hambriento al mismo tiempo. filosofo (4)). . Esta solución esta libre de ínter bloqueo e inanición. al menos uno de los filósofos tendrá acceso a los dos tenedores. y después el de su derecha. pues todos los filósofos pasan hambre.

wait (habitación). filosofo (1). wait (tenedor [(i + 1) mod 5]). filosofo (2). } MECANISMOS DE CONCURRENCIA EN UNIX Los distintos mecanismos más importantes que ofrece UNIX para la comunicación entre procesos y la sincronización son los siguientes: .. comer ( ). filosofo (4)). } void main ( ) { parbegin (filosofo (0).void filosofo (int i) { while (cierto) pensar ( ). filosofo (3). signal (habitación).Tubos . wait (tenedor [i]). signal (tenedor [(i +1) mod 5]). wait (tenedor [i]).

que funciona como un buzón de correos. el proceso no se suspenderá.Semáforos . mientras que los semáforos y las señales se utilizan para provocar acciones en otros procesos. de otro modo.. un proceso lector se bloquea si intenta leer mas bytes de los que tiene disponible en ese momento. De la misma manera. al tubo solo puede accederlo un proceso por vez.. Si un proceso intenta leer un mensaje de cierto tipo y falla. El receptor puede recuperar los mensajes tanto en orden FIFO como por el tipo asociado. El sistema operativo es el encargado de la exclusión mutua..Señales Los tubos. Mensajes Es un bloque de texto con un tipo asociado. la solicitud de escritura se ejecuta inmediatamente si hay suficiente espacio. Los procesos pueden leer y escribir en la memoria compartida usando las mismas . el proceso se bloquea. Un proceso se suspenderá cuando intente leer de una cola vacía. Los tubos sin nombre pueden ser compartidos por procesos afines y los tubos con nombre pueden ser compartidos por procesos no afines. es decir. Memoria Compartida Es la forma más rápida de comunicación entre procesos que brinda UNIX.Mensajes .. Tubos Es un buffer circular que permite a dos procesos comunicarse según el modelo productor/consumidor.. Cuando se crea un tubo.Memoria Compartida . Hay dos tipos de tubos: con nombre y sin nombre. Cuando un proceso intenta escribir en el tubo. Cada proceso tiene asociada una cola de mensajes. los mensajes y la memoria compartida brindan un medio de comunicación de datos entre procesos. UNIX proporciona las llamadas al sistema msgsnd y msgrcv para que los procesos puedan enviarse mensajes. se trata de un bloque común de memoria virtual compartido por varios procesos. se le da un tamaño fijo en bytes. El emisor del mensaje especifica el tipo de mensaje en cada envío y el receptor puede usarlo como criterio de selección.

Los permisos de un proceso son solo lectura o lectura-escritura. ningún otro proceso puede acceder al semáforo hasta que todas las operaciones hayan culminado. cada una de ellas definida sobre uno de los semáforos del conjunto. incrementa el número de procesos esperando a que este semáforo sea igual a 0 y suspende el proceso hasta que el valor del semáforo sea 0.Valor actual del semáforo. Las limitaciones de exclusión mutua no forman parte del servicio de memoria compartida. Existen las siguientes posibilidades: . . Semáforos Las llamadas al sistema para semáforos en el UNIX Versión V son una generalización de las primitivas “wait y signal”. Además. ...Si sem_op es igual a 0. . el núcleo incrementa el valor del semáforo y despierta a los procesos que esperaban a que el valor del semáforo se incrementase..Si sem_op es mayor que 0. en estas se pueden realizar conjuntamente varias operaciones y los incrementos y disminuciones pueden ser valores mayores que 1. . se crean por conjuntos. el núcleo comprueba el valor del semáforo. se especifica la función real por medio del valor sem_op... El núcleo ejecuta atómicamente todas las operaciones solicitadas. .Numero de procesos esperando a que el valor del semáforo sea mayor que su valor actual. en el cual. un conjunto tiene uno o más semáforos. el núcleo realiza las operaciones indicadas una a una. Si el semáforo es 0. en caso contrario. sino que las debe proporcionar el proceso que hace uso del mismo. continúa con las otras operaciones de la lista.instrucciones que la maquina que emplea para leer y escribir en otras partes de su espacio de direcciones virtual. Cuando se genera esta llamada. Hay una llamada al sistema semctl que permite dar valores a todos los semáforos del conjunto al mismo tiempo.ID del ultimo proceso que opero con el semáforo.Numero de procesos esperando a que el valor del semáforo sea cero Asociadas con cada semáforo existen colas de procesos suspendidos. hay una llamada al sistema sem-op que recibe como argumento una lista de operaciones sobre semáforos. según el proceso. Los semáforos. Un semáforo consta de los siguientes elementos: .. Para cada operación.

. Si el resultado es 0. el núcleo suspende al proceso. el núcleo despierta a todos los procesos que esperan a que el valor del semáforo sea igual a 0. Esta generalización de los semáforos ofrece una considerable flexibilidad para realizar sincronización y coordinación de procesos. las señales de un tipo en particular no pueden colocarse en la cola. .Si sem_op es negativo y su valor absoluto es mayor que el valor del semáforo. el núcleo suma sem_op (un número negativo) al valor del semáforo. sin una ordenación en particular. 03 Sigquit Salir. Los procesos pueden enviarse señales entre si y el núcleo puede enviar señales internas. Es decir. Un proceso puede responder a una señal ejecutando alguna acción por omisión (por ejemplo. Esta tabla enumera algunas de las señales definidas en el UNIX SVR4 Valor Nombre Descripción 01 Sighup Colgar. . Una señal es similar a una interrupción de hardware. Señales Es un mecanismo de software que informa a un proceso que se ha producido un suceso asíncrono. se le envía a un proceso cuando el núcleo supone que el usuario de ese proceso no está realizando un trabajo útil. Dado que cada señal se mantiene como un único bit. caso de que el valor del semáforo se incremente. Una señal se procesa en el instante después de que el proceso despierte para ejecutarse o cuando el proceso este dispuesto a volver de una llamada al sistema. terminar). todas las señales se tratan de igual manera. la envía el usuario para provocar una parada del proceso y la genración de un volcado de memoria. pero no emplea prioridades... las señales que se producen en un mismo momento se presentan al proceso en el mismo instante. Una señal se entrega actualizando un campo de la tabla de procesos del proceso al que se le envía. 02 Sigint Interrumpir.Si sem_op es negativo y su valor absoluto es menor o igual que el valor del semáforo. 04 Sigill Instrucción ilegal. ejecutando una función de gestión de la señal o ignorando la señal.

. 17 Sigusr2 Señal 2 definida por el usuario. 06 Sigiot Ejecución de la instrucción IOT. 11 Sigsev Violación de segmento. 08 Sigfpt Excepción de coma flotante. terminación del proceso.Cierres de exclusión mutua (mutex.05 Sigtrap Seguimiento de cepo (trap). 13 Sigpipe Escritura en un tubo que no tiene lectores asociados. 09 Sigkill Matar. PRIMITIVAS DE SINCRONIZACIÓN DE HILOS EN SOLARIS Además de los mecanismos de concurrencia de UNIX SVR4. provoca la ejecución de un código de seguimiento del proceso. Solaris soporta cuatro primitivas de sincronización de hilos: . 14 Sigalarm Alarma de relog 15 Sigterm Terminación por software 16 Sigusr1 Señal 1 definida por el usuario. mutual exclución). 07 Sigemt Ejecución de la instrucción MT. 19 Sigpwr Corte de energía. 18 Sigcld Muerte de un hijo. un proceso intenta accedet a una posición fuera de su espacio de direcciones virtual 12 Sigsys Argumentos incorrectos en una llamada al sistema. 10 Sigbus Error de bus..

El núcleo o la biblioteca de hilos no incluyen mecanismos para hacer cumplir la exclusión mutua o prevenir el interbloqueo. Si un hilo intenta accder a datos un fragmento de código o que se supone protegido pero no utiliza la primitiva de sincronización correspondiente.. hay dos operaciones. bloquear) y salir (desbloquear). un hilo bloqueado comprueba el estado del cierre mientras ejecuta en un bucle de espera. El hilo que bloquea el mutex debe ser el que lo desbloquea. Si un hilo bloquea un objeto y.13).. En este último caso.Semáforos.. Las primitivas asociadas a un cierre mutex son: mutex_enter() Adquiere el cierre. La política de bloqueo por defecto es un cierre circular. (a) Cierre MUTEX (b) Cierre de lectores/escritores © Semáforo (d) Variable de condición Cierre de exclusión mutua Un cierre mutex impide que ejecute más de un hilo cuando el cierre está activo. que se puedan realizar: entrar(adquirir.Variables de condición. Opcionalmente se aplica un mecanismo de bloqueo basado en interrupciones. un escritor (lectoress escritores). . Solaris implementa estas primitivas para los hilos de núcleo dentro del núcleo. Si mutex_enter no puede activar el cierre (debido a que ya está activado por otro hilo). falla al desbloquearlo.. Una vez que está creado el objeto de sincronización. la acción mediante la que se bloquea el hilo depende de la información específica de tipo almacenada en el objeto mutex. fundamentalmente.Cierre de múltiples lectores. tambien las ofrece en la biblioteca de hilos para los hilos de usuario. después. el mutex un id de torno que identifica una cola de hilos dormidos en este cierre. La ejecución de una primitiva crea una estructura de datos que contiene parámetros especificados por el hilo creador (figura 6. se produce ese acceso. . potencialmente se bloquea si ya está adquirido. . Un hilo intenta adquirir un cierre mutex ejecutando la primitiva mutex_enter. el núcleo no hace nada.

potencialmente desbloquea un hilo que espera. excluyendo a todos los lectores. disminuye el semáforo. con las siguientes primitivas: sema_p () Disminuye el semáforo. adquiere el cierre.mutex_exit() Libera el cierre. sema_v () Incrementa el semáforo. rw_downgrade() Un hilo que ha adquirido un cierre de escritura lo convierte en cierre de lectura. todos los hilos que intenten acceder para leer o escribir deben esperar. De nuevo. Cualquier escritor que estuviese esperando continúa esperando hasta que el hilo libere el cierre. Esto permite al programador utilizar un metodo de espera activa para hilos de usuario. Si uno o más lectores adquieren el cierre. sema_tryp () Si nos es necesario bloquearse. pasa al estado de cerradura-escritura. en un instante dado. mutex_tryenter() Adquiere el cierre si aún no está adquirido. Cierre lectores/escritores El cierre lectores/escritores permite a múltiples hilos tener accesos sólo-lectura simultáneos a un objeto protegido por el cierre. Las primitivas son como sigue: rw_enter() Intenta adquirir un cierre como lector o escritor. Cuando se adquiere el cierre para escritura. al objeto pàra escritura. Si no hay escritores esperando. rw_exit() Libera un cierre como lector escritor. potencialmente desbloquea a uno que espera. la primitiva sema_tryp () permite espera activa. la primitiva despierta a los lectores que esperan. su estado pasa a cerrado-lectura. potencialmente bloquea el hilo. rw_tryenter() Si no es necesario bloquearse. La primitiva mutex_tryenter() proporciona un modo no bloqueador de ejecutar la función de exclución mutua. También permite a un solo hilo acceder. lo que evita que se bloquee el proceso completo debido al bloqueo de un hilo. Semáforos Solaris ofrece semáforos enteros clásicos. rw_tryupgrade() Intenta convertir un cierre de lectura en un cierre de escritura. .

. Esto permite que la condición sea una expresión compleja. . mutex_exit (&m). while (alguna condición) { cv_wait (&cv . .Variables de condición Una variable de condición se utiliza para esperar hasta que sea cierta una determinada condición. . Las primitivas son como sigue: c_wait() Bloquea hasta que se señaliza la condición. &m). puesto que está protegida por el mutex. . se debe reevaluar la condición de espera. de este modo un uso habitual es el siguiente: mutex_enter(&m). } . Puesto que la readquisisción del mutex puede estar bloqueada por otro hilo que espera en el mutex. Las variables de condición deben usarse junto con un cierre mutex. . 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.

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

El temporizador en esencia. hilos de diferentes procesos pueden compartir semáforos. 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 exclusión mutua a los entornos Win32 y OS/2 El hilo propietario u otro hilo libera al mutante Se libera un hilo Semáforo Contador que regula el numero de hilos que pueden emplear un recurso El contador del semáforo llega a cero Todos se liberan Suceso Anuncio de que ha ocurrido un suceso del sistema Un hilo activa el suceso Todos se liberan .Al igual que los mutantes. Objetos de sincronización de Windows 2000 (Resume los sucesos que hacen que cada tipo de objetos pase a estado señalizado y el efecto que tiene en los hilos que esperan) Tipo de objeto Definición Pasa a estado señalado cuando Efectos sobre los hilos que esperan Proceso Invocación a un programa. señala determinado momento o intervalos regulares. El semáforo de W2K es un semáforo entero clásico. 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 operación 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 aplicación MS-DOS) La entrada esta disponible Se libera un hilo Notificación de cambio de archivo Una notificación de que cambia cualquier sistema de archivos.

oEfectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. oManeja el nivel de multiprogramación. Determinando a cuál proceso listo se le asignará el CPU cuando éste se encuentra disponible. oEquilibrar la administración de trabajos en el sistema con la asignación del CPU a dichos procesos. Este subadministrador controla los trabajos que se intercambian hacia fuera y de regreso. es decir que “despacha” la cpu al proceso. en especial cuando el sistema está sobrecargado. oAdministrar todos los recursos del sistema excepto el CPU. oControla la creación de procesos. lo cual se denomina Planificación de admisión. Seleccionando los trabajos que deben admitirse en el sistema. oDebe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. oMantiene las colas de procesos bloqueados y suspendidos. el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramación. oTambién se denomina Planificación de trabajos. •Planificación de bajo nivel: Se encarga de pasar de un proceso a otro en memoria principal. permitir que los trabajos se completen mas aprisa. •Planificación de nivel intermedio: En algunos casos. OBJETIVOS DE PLANIFICACIÓN . los que se detallan a continuación: •Planificación de alto nivel: Se encarga de llevar procesos de disco a memoria y viceversa. oNivelar la carga del sistema (procesos activos y pasivos). oDetermina a qué procesos se les puede permitir competir por la cpu.Temporiza-dor Contador que registra el paso del tiempo Llega el tiempo de activación o expira el intervalo de guarda NIVELES DE PLANIFICACIÓN Se consideran tres niveles importantes de planificación. oDetermina a qué trabajos se les va a permitir competir activamente por los recursos del sistema. y por lo tanto. oDetermina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo.

•Dar preferencia a los procesos que mantienen recursos claves: oUn proceso de baja prioridad podría mantener un recurso clave. puesto que es necesario liberar rápidamente el recurso clave. •Maximizar la capacidad de ejecución: oMaximizar el número de procesos servidos por unidad de tiempo. así la prioridad llegará a ser tan alta que el proceso recibirá el recurso esperado. oSi el recurso es no apropiativo. •Equilibrar respuesta y utilización: oLa mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan. •Evitar la postergación indefinida: oSe utiliza la estrategia del “envejecimiento” . oNingún proceso es postergado indefinidamente. •Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables: oEn un máximo de unos segundos. pero la utilización total de recursos podrá ser pobre. . el mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le correspondería normalmente. •Asegurar la prioridad: oLos mecanismos de planificación deben favorecer a los procesos con prioridades más altas.Los objetivos de la planificación del procesador son los siguientes e involucran a los conceptos detallados seguidamente: •Ser justa: oTodos los procesos son tratados de igual manera. oMientras un proceso espera por un recurso su prioridad debe aumentar. •Equilibrar el uso de recursos: oFavorecer a los procesos que utilizarán recursos infrautilizados. •Minimizar la sobrecarga: oNo suele considerarse un objetivo muy importante. •Ser predecible: oUn trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema. que puede ser requerido por un proceso de más alta prioridad. •Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”: oUn ejemplo de comportamiento deseable es una tasa baja de paginación.

-Eficacia Mantener ocupada la cpu el ciento por ciento del tiempo. oSe debe evitar una carga excesiva mediante las siguientes acciones: No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. . el planificador debe decidir cuál de los procesos que compiten por la posesión de un determinado recursos lo recibirá.•Degradarse suavemente con cargas pesadas: oUn mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema. -Tiempo de respuesta Minimizar el tiempo de respuesta para los usuarios interactivos. Siempre que haya tomar una decisión. Dando servicio a la carga más pesada al proporcionar un nivel moderadamente reducido de servicio a todos los procesos. -Rendimiento Maximizar el número de tareas procesadas por hora. CRITERIOS DE PLANIFICACIÓN -Equidad Garantizar que cada proceso obtiene su proporción justa de la cpu. Técnicas de administración del planificador Las disciplinas de planificación 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. -Tiempo de regreso Minimizar el tiempo que deben esperar los usuarios por lotes(batch) para obtener sus resultados.

Los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se basen para su construcción. El criterio de selección de un algoritmo se suele basar en la maximización o minimización de una función de los parámetros anteriores. como por ejemplo el tiempo medio de espera. con un valor tan elevado otros aspectos importante de medida del comportamiento del sistema pueden verse deteriorados. b) Rendimiento: Es una medida del numero de procesos completados por unidad de tiempo. d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador. e) Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo que transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción de la rutina de servicio de dicho evento. Cuando un proceso pasa de bloqueado a listo se sitúa el último de la cola. Fifo FIFO: First In First Out Mecanismo de scheduling en el cual los procesos se ordenan en una fila. FIFO . 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. en la cual se ejecutan cada uno de los procesos hasta su finalizacion secuencialmente. Es tremendamente ineficiente. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido. ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo. Por ejemplo 10 procesos por segundo. Aunque puede parecer lógico intentar mantener este parámetro próximo al 100%. Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más tiempo listo. Puede resultar una medida mas adecuada de la eficiencia del sistema. Para implementar el algoritmo sólo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente. Algunos de estos son: a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilización. lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador.

almost full (casi lleno) o almost empty (casi vacio). es decir. Sea cual sea la opción elegida. La implementación puede efectuarse con ayuda de arrays o vectores. se pueden enumerar: full (lleno). First Out (primero en entrar. adaptándose al tamaño necesario en cada momento en función de los elementos que hay en la cola. es la gestión de descargas de una aplicación p2p. si se usan punteros.FIFO se utiliza en estructuras de datos para implementar colas. Si se implementa mediante vectores el número máximo de elementos que puede almacenar está limitado al que se haya establecido en el código del programa antes de la compilación (cola estática) o durante su ejecución (cola pseudoestática).FIFO es el acrónimo inglés de First In. Comportándose como una cola circular . primero en salir). Tiene dos punteros: 1. acrónimo inglés de First Come First Served ( primero en llegar. que la primera persona que entra es la primera persona que sale. lo que en algunas aplicaciones supone un despilfarro de la memoria. sea cual sea el número de elementos usados. Como ejemplo de banderas de estado FIFO. o bien mediante el uso de punteros y asignación dinámica de memoria. el número máximo no está declarado sino que se hace un uso dinámico de la memoria. Otro uso típico de las colas. FIFO FULL (LLENO)/EMPTY (VACIO) [editar]En el hardware FIFO se usa para propósitos de sincronización. Es un método utilizado en estructuras de datos. Sin embargo. contabilidad de costes y teoría de colas. empty (vacio). Puntero de Lectura/Registro de Dirección de Lectura 2. El sistema debe reservar el tamaño de memoria necesario para acoger todos los datos. Guarda analogía con las personas que esperan en una cola y van siendo atendidas en el orden en que llegaron. primero en ser servido). el número de elementos que podrá almacenar la cola quedará determinado durante toda la ejecución del programa. Puntero de Escritura/Registro de Dirección de Escritura . Informática Esquema de funcionamiento de una cola FIFO. Un sinónimo de FIFO es FCFS. Uno de los usos de las colas es la exploración “en anchura” de un árbol de búsqueda.

la cola FIFO dispara la señal LLENO. El proceso en espera con el menor tiempo estimado de ejecución hasta su terminación es el el siguiente en ejecutarse. introduce una noción de prioridad entre ráfagas.tn+(1-a )Tn 0<a <1 Tiempo calculado en la vuelta n Próximo uso de CPU Tiempo usado en la vuelta n . Asocia a cada proceso el tiempo de CPU que habrá de usar en su próxima vuelta y va a decidir por el más pequeño. éste elige la ráfaga de menor duración. la cola FIFO dispara la señal Vacio. FIFO Llena: Cuando el registro de dirección de escritura alcanza al registro de dirección de lectura. Su característica es que cuando se activa el planificador. Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecución de los procesos Nota: Es una disciplina no apropiativa y por lo tanto no recomendable en ambientes del tiempo compartido. Si hubiera más de uno utiliza FCFS para desempatar. Este se puede aproximar a: Tn+1=a . sólo es útil para entornos batch. Una vez que un proceso ejecuta no deja de hacerlo hasta que voluntariamente cambia de estado (no hay interrupción por tiempo). por tanto. SJF Al igual que en el algoritmo FIFO las ráfagas se ejecutan sin interrupción. El mayor problema de este algoritmo radica en el cálculo de tiempo de uso de CPU. FIFO Vacía: Cuando registro de dirección de lectura alcanza al registro de dirección de escritura. Es decir. Los tiempos promedio de espera son menores que con “FIFO”.Las direcciones de lectura y escritura están ambas inicialmente en la primer ubicación de la memoria y la cola FIFO está Vacía.

El proceso al que pertenece la ráfaga R1 es la que lleva más tiempo ejecutable.El problema de este algoritmo es que el tiempo de espera para los procesos largos puede ser demasiado largo. Si el proceso agota su cuantum de tiempo. El FJS se puede subdividir en 2 tipos de algoritmos: PREEMPTIVO o NO PREEMPTIVO Preemptivo significa que si mientras un proceso se esta ejecutando. • SJF F = (3 + 6 + 30) / 3 = 13 ms Priority Schedulling Asocia a cada proceso una prioridad. La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalización promedio. 3 y 3 ms. sus tiempos de ejecución respectivos son 24. Este algoritmo también se puede ejecutar de dos maneras: preemptivo y no preemptivo. se usa FCFS para desempatar. el proceso en la cola de ready se apropia de la CPU y comienza su ejecución. etc. Constantemente se están entregando los procesos mas cortos y el más grande nunca será ejecutado. . Para solucionar este problema de espera infinita el envejecimiento de un proceso eleva su prioridad. llamado cuantum o cuanto. Si el proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU. entra a la cola de ready un proceso mas corto. Hay dos tipo de prioridad en los procesos: la prioridad externa definidas a través del sistema operativo y la prioridad interna definida por el tiempo de uso de la CPU. seguido del proceso al que pertenece R2 y del de R3. el control de E/S. R2 y R3. El algoritmo soluciona el problema del looping pero el problema es que los procesos con prioridad muy baja tienen chance de no ejecutarse nunca. Luego selecciona el proceso con más prioridad para desempatar. como puede verse en el siguiente ejemplo: Supongamos que en un momento dado existen tres ráfagas listos R1. • FIFO F = (24 + 27 + 30) / 3 = 27 ms. En caso de que hubiera dos o más procesos con la misma prioridad. se elige a otro proceso para ocupar la CPU. Rr Cada proceso tiene asignado un intervalo de tiempo de ejecución.

Se asignan en forma permanente los trabajos a una cola. tipo de trabajo). Ningún trabajo en una cola de baja prioridad puede ejecutarse si las colas con mayor prioridad no están vacías. si un proceso espera demasiado tiempo en una cola de baja prioridad. generalmente. Todo lo que necesita el planificador es mantener una lista de los procesos listos. Por ejemplo. La idea es separar procesos con distintos tipos de interrupciones de la CPU. lo moveremos a una cola de mayor prioridad. El tipo de algoritmo de planificación de cada cola. 2. será movido a una cola con menor prioridad. la cola interactiva podría planificarse usando RR y la batch FIFO. basándose en alguna propiedad del mismo (requerimientos de memoria. El número de colas. 3. teniendo cada cola su propio algoritmo. QUEVES MULTINIVEL Un algoritmo de planificación multinivel particiona la cola de listos en colas separadas. 4. Un método de determinación de cuando mover un trabajo a una cola de menor prioridad. Un método de determinación de cuando mover un trabajo a una cola de mayor prioridad. . Si un trabajo consume mucho tiempo de CPU. MULTINIVEL FEEDBACK QUEVES En colas multinivel realimentadas los trabajos pueden moverse dentro de distintas colas. En forma similar. Si algún trabajo entra en una cola de mayor prioridad. En general un planificador de este tipo esta definido por los siguientes parámetros: 1.El round robin es muy fácil de implementar. el trabajo de otras colas es interrumpido.

La multiprogramación facilita la programación de una aplicación al dividirla en dos o mas procesos. en cuyo momento la tarea se carga en esa partición y se ejecuta hasta terminar. Administración de la Memoria La parte del sistema operativo que administra la memoria se llama administrador de la memoria. el usuario carga toda la memoria con un programa. Las tareas que van llegando se forman hasta que una partición adecuada está disponible. pero aún así se obtiene el desperdicio de particiones grandes con una tarea pequeña. Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante.5. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución (intercambio y paginación) y aquellos que no. · Multiprogramación y uso de la memoria. solución posible sería dividir la memoria en n partes al inicio de una sesión de uso de la máquina. Un método de determinación de a qué cola se enviará un trabajo cuando necesita servicio. Los sistemas de administración de memoria se pueden clasificar en dos tipos. · Monopogramación sin intercambio o paginación. Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilístico dado por la fórmula : Uso de la CPU = 1 − pn · Multiprogramación con particiones fijas El objetivo en todo esto es tener mas de un proceso en memoria a la vez. La mayoría de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S. . esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice. la respuesta puede ser tener particiones pequeñas también. Para ello existen diferentes esquemas de administración de memoria desde los mas simples hasta los mas elaborados entre los cuales se ubican: · Administración de la memoria sin intercambio o paginación.

ya que existen mas usuarios de los que puede albergar la memoria. . Al traslado de procesos de disco a memoria y viceversa se le llama intercambio. por supuesto para ser ejecutados estos procesos deben ser trasladados a la memoria principal. programa y datos puede exceder la memoria física disponible para ello. El S. por lo que es conveniente albergar el exceso de los procesos en disco. un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria.. las partes entre el disco y la memoria se intercambian de modo que se vayan necesitando. · Multiprogramación con particiones variables. la administración de memoria con el sistema de los asociados basado en el sistema binario o utiliza para las direcciones.O. la administración de memoria con listas ligadas otra forma de mantener un registro en memoria es mediante una lista ligada donde cada entrada de la lista específica un hueco o un proceso.· Intercambio En un sistema por lotes la organización de la memoria en particiones fijas es adecuado pero en un ambiente multiusuario la situación es distinta con el tiempo compartido. a cada asignación le corresponden un bit en el mapa de bits. · Memoria Virtual El método diseñado por Fotheringham en 1961 se conoce como Memoria Virtual. la idea es que el tamaño combinado de la pila. evitando desperdicio de memoria Otros métodos de administración de memoria que tenemos son: la administración de memoria con mapa de bits la memoria se divide en unidades de asignación. mantiene en memoria aquellas partes del programa que se deben permanecer en memoria y el resto lo deja en disco. Mediante un algoritmo de administración de memoria las particiones variables varían de forma dinámica durante el uso de la máquina.

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

Al momento de ocurrir un fallo de página cierto conjunto de páginas se encuentran en la memoria. si una página no va a utilizase sino hasta mucho después que otra la eliminación de la primera retrasa el fallo de página lo mas posible. · Algoritmo de página de uso no muy reciente. · Algoritmo de reemplazo de páginas de la segunda oportunidad Una modificación simple del FIFO que evita deshacerse de una página de uso frecuente inspecciona el bit R de la página mas antigua. busca una página antigua sin referencias durante el anterior intervalo de tiempo. · Algoritmo de reemplazo “ primero en entrar. otras páginas no se utilizaran sino hasta mucho después.O. de implantación eficiente y con un rendimiento que. se elimina la primera página y se añade la nueva al final de la lista. el único problema de este algoritmo es que es irrealizable. en un fallo de página. aún sin ser el óptimo si es adecuado en muchos casos. siendo la primera página la mas antigua y la última la mas reciente. este algoritmo es fácil de comprender. primero en salir FIFO” El sistema operativo tiene una lista de todas las páginas que se encuentran en memoria. Al momento del fallo de página el S. cada página puede ejecutarse con el número de instrucciones ejecutadas antes de la primera referencia a esa página. no tiene forma de saber a qué página se hace referencia. . el algoritmo dice que se elimine la página con la mayor etiqueta. En un fallo de página . el sistema operativo inspecciona todas las páginas y las divide en cuatro categorías según 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 hipótesis que indica que es mejor eliminar una página modificada sin referencias al menos por lo general un intervalo de reloj. en la siguiente instrucción se hará referencia a una de estas páginas.

POLITICA Y FILOSOFIA Filosofía: La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando. una manecilla apunta hacia la mas antigua. es necesario decidir que estrategias se deben utilizar para obtener un rendimiento óptimo .las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas: . Sea cual sea es esquema de organización del almacenamiento que se adopte para un sistema específico. Cada localidad de almacenamiento tiene asignada una dirección que la identifica. esto continua hasta encontrar una página con R=0. si R=1 la manecilla avanza una posición y el bit se limpia. Bit que se activa si se hace referencia a la página en cuestión Bit que se activa si se modifica la página. · Segmentación Una memoria segmentada tiene otras ventajas como hacer mas sencilla la administración de las estructuras de datos que crecen o se reducen. Al ocurrir un fallo de página se inspecciona la página a la que apunta la manecilla si su bit R=0 se retira de la memoria. se inserta la nueva página en su lugar en el reloj y la manecilla avanza una posición. si cada procedimiento ocupa un segmento independiente con la posición inicial cero el ligado independiente de los procesos compilados es mucho mas sencillo.· Algoritmo de reemplazo de páginas del reloj Aunque el anterior algoritmo es razonable un mejor enfoque es mantener las páginas en una lista circular con la forma de un reloj.

La política FIFO actualmente no se usa como el esquema principal de un sistema. Inicialmente los algoritmos realizados se eligieron por sencillez. Los que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario. La administración de memoria es un algoritmo de regiones variables con intercambios. Unix permite procesos múltiples y en un proceso puede generar otro fácilmente. si un proceso llega al procesador sale hasta que termine. o se colocan los programas lo más rápido posible para reducir al mínimo el tiempo de ejecución? · Si se necesita colocar un nuevo programa en el almacenamiento principal y éste está lleno.· ¿Cuándo se toma un nuevo programa para colocarlo en memoria? · ¿Se toma el programa cuando el sistema lo solicita específicamente 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 más cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mínimo el desperdicio de espacio. POLÍTICAS. Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos. a estos se les podría aplicar FIFO. ¿Cuál de los otros programas se desaloja? Se han realizado sistemas que utilizan cada una de estas estrategias de administración. no por velocidad ni complejidad. La planificación del procesador usa un algoritmo basado en prioridades. pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad. por lo que UNIX intercambiaba el contenido en memoria de los procesos. El desarrollo inicial se hizo bajo un espacio muy pequeño de memoria. FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos. . Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos.

En SRT. Ejemplo de un mapa de bits para la administración de la memoria. Solo la memoria cache es más rápida que la principal. HRN: (highest response ratio next – Prioridad de la tasa de respuesta más alta): Política no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF. SRT (Sortest remaining time scheduling – Tiempo restante más corto): En SJF una vez que un proceso comienza su ejecución continua hasta terminar.. 1. un proceso en ejecución puede ser desposeído por uno nuevo de menor tiempo de ejecución.2. La figura 6 muestra una parte de la memoria y su correspondiente mapa de bits.Administración de la memoria con mapas de bits Este tipo de administración divide la memoria en unidades de asignación. 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.2. SJF favorece a los procesos cortos. A cada unidad de asignación le corresponde un bit en el mapa de bits. con lo cual la prioridad de cada trabajo no solo esta en función del tiempo de servicio sino también del tiempo que ha esperado para ser atendido. pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador. ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse. Por lo general esta memoria es de mayor costo que la memoria secundaria. lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio. . SJF (Shortest job first . las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes.Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. pero su costo es a su vez mayor.Round Robin: Los procesos se despachan en la forma que lo hace el FIFO. para así no caer en un favoritismo excesivo por los procesos cortos. si no termina en ese lapso se manda al final de la lista de procesos listos. el cual toma el valor de 0 si la unidad está libre y 1 si está ocupada (o viceversa). 6. Fig. pero el acceso a la información contenida en ella es de más rápido acceso.

3.Administración 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. esto es la administración del almacenamiento. siempre pasará al hueco asignado. Cada entrada de la lista especifica un hueco (H) o un proceso (P). Pareciera que los discos nunca tienen espacio suficiente. cuando el proceso se encuentra en la memoria. que se sobrecargan con actividad de E/S o que fallan repentinamente. la lista de segmentos está ordenada por direcciones. en vez de ir a otro lugar cada vez. En este ejemplo.4. la dirección donde comienza.Asignación del hueco de intercambio En algunos sistemas.2.Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria.5 K debe utilizar 14K (usando bloques de 1K). Cuando deba intercambiarse. lo que da la ventaja de que al terminar o intercambiar un proceso. En otros sistemas. Por ejemplo. Fig. Los algoritmos para la administración del hueco de intercambio son los mismos que se utilizan para la administración de la memoria principal. Cuando el proceso concluya. 1. la actualización de la lista es directa. 7. ADMINISTRACION ALMACENAMIENTO Si hay una cosa que toma la mayor parte del día de un administrador de sistemas. puesto que el tamaño del mapa sólo depende del tamaño de la memoria y el tamaño de la unidad de asignación. su longitud y un apuntador a la siguiente entrada.2. en donde un segmento puede ser un proceso o un hueco entre dos procesos. se le asigna un hueco de intercambio en el disco. Ejemplo de listas ligadas. no hay un hueco en el disco asignado a él. se libera el hueco de intercambio.. La única diferencia es que el hueco en disco necesario para un proceso debe representarse como un número entero de bloques del disco. Por eso es . un proceso de 13. 1. La memoria de la figura 7(a) está mostrada como una lista ligada de segmentos en la figura 7(b).. al caerse un proceso. se deberá asignar un hueco para él en el área de intercambio del disco. Cuando el proceso sea intercambiado.

quizás se encuentre en una situación donde tenga un problema relacionado al almacenamiento pero le falte el conocimiento de fondo para si quiera entender lo que ve. y en consecuencia. . primero es necesario entender el hardware en el que están almacenados los datos. tales como aluminio. A menos que posea un algún conocimiento sobre la operación de los dispositivos de almacenamiento masivo. Al tener un entendimiento sobre la forma en que opera el hardware subyacente. en estos casos. Esto significa que los componentes siguientes están 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 más detalles cada uno de estos componentes. Una vista general del hardware de almacenamiento Antes de administrar el almacenamiento. permitiendo almacenar datos ópticamente[1]. La tecnología de almacenamiento de datos más común está basada en la propiedad de magnetismo. vidrio y policarbonatos. La superficie de cada plato se trata de forma que permita el almacenamiento de datos. El plato puede estar compuesto de cualquier número de materiales diferentes. La gran mayoría de los dispositivos de almacenamiento masivo utilizan alguna forma de media de rotación y soportan el acceso aleatorio de los datos en esa media. La naturaleza exacta del tratamiento va a depender de la tecnología de almacenamiento de datos utilizada.vital tener un conocimiento práctico sólido del almacenamiento en disco para poder ser un administrador de sistemas exitoso. los platos se cubren con materiales cuyas propiedades ópticas pueden ser modificadas. Platos de discos La media rotativa utilizada por casi todos los dispositivos de almacenamiento masivo están en la forma de uno o más platos planos y de forma circular. podrá más fácilmente determinar si el subsistema de almacenamiento de su computador está funcionando correctamente. en estos casos los platos se cubren con un compuesto que presenta buenas características magnéticas. Otra tecnología de almacenamiento de datos común está basada en principios ópticos.

la fricción resultante provocaría un daño severo tanto al cabezal como al plato.Sin importar la tecnología de almacenamiento utilizada. significa que más del 99% de la superficie del plato se desperdiciaría. esta área de superficie toma la forma de una línea circular muy delgada. Por lo tanto. A medida que el plato gira por debajo de las cabezas. Los retos que enfrentan los cabezales ópticos son de alguna manera diferentes de aquellos para los cabezales magnéticos .el dispositivo de lectura/escritura. Algunas veces las condiciones bajo las cuales estos dispositivos deben operar son difíciles. causando que su superficie completa barra más allá de otro componente . las cabezas utilizan una cantidad muy pequeña del área de superficie del plato para el almacenamiento de datos. las superficies tanto del cabezal como del plato son pulidas cuidadosamente y el cabezal utiliza aire a presión desarrollado por los platos que giran para flotar sobre la superficie del plato. Por ejemplo. si el cabezal y la superficie del plato del disco se tocan. los dispositivos de lectura/escritura (conocidos como cabezales). En cualquier caso. Lo que se requiere es algún método de mover los cabezales sobre la superficie del plato. “flotando” a una altitud no menor que el grueso de un cabello humano. De lo contrario. Sin embargo. cambios drásticos de temperaturas y a la contaminación del aire. Si es así como los dispositivos de almacenamiento masivo funcionan. Por eso es que las unidades de discos magnéticos son muy sensibles a choques. deben estar muy cerca de la superficie del plato. en un almacenamiento masivo basado en magnetismo. pero para utilizar completamente el área de superficie del plato se necesitan más de mil cabezales. Se pueden montar cabezas adicionales sobre el plato. Brazos de acceso . los lentes utilizados para enfocarse sobre el plato no producen una imagen lo suficientemente definida. los platos del disco se giran . 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 magnéticas u ópticas necesarias para interactuar con los materiales que cubren la superficie de los platos de discos.aquí. el ensamblado de la cabeza debe permanecer a una distancia relativamente constante de la superficie del plato.

permitiendo que se pueda acceder a la misma pista en cada superficie simultáneamente. Cuando existen múltiples platos (o un plato que con ambas superficies utilizadas para almacenamiento de datos). se apilan los brazos para cada superficie. apareceran como que están apiladas una sobre la otra. El movimiento del brazo de acceso desde una pista a la siguiente a menudo se conoce como búsqueda y el tiempo que toma el brazo de acceso para moverse de una pista a otra se le conoce como tiempo de búsqueda. es necesario mover las cabezas solamente lo suficiente para asegurar que cualquier datos escrito en la nueva posición no sobreescribe los datos escritos en la posición previa. Esto tiene el efecto de dividir conceptualmente la superficie del plato en miles o más aros concéntricos o pistas. basándose en el principio de cercanía de referencias. por tanto. pues el tiempo que se pierde moviendo el cabezal desde una posición a la otra es tiempo perdido. es posible utilizar completamente el plato para el almacenamiento de datos. el conjunto de pistas accesibles en una posición dada de los brazos de acceso se conocen como cilindro. Los puntos básicos relacionados con la memoria pueden resumirse en:   Cantidad Velocidad . para usar eficientemente la capacidad de almacenamiento del plato. como se mencionó anteriormente. Por lo tanto. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad. Sin embargo. JERARQUIA Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles. Si se pueden visualizar las pistas para cada superficie con el acceso estacionario sobre una pista dada. el brazo de acceso debe ser capaz de dos cosas:   Moverse rápidamente Moverse con gran precisión El brazo de acceso se debe mover lo más rápido posible. Esto se debe a que no se pueden leer o escribir datos hasta que el brazo se detenga[2]. haciendo una forma cilíndrica. El brazo de acceso debe ser capaz de moverse con gran precisión porque.Utilizando una cabeza conectada a un brazo que sea capaz de barrer sobre la superficie completa del plato. el área de superficie utilizada por los cabezales es muy pequeña. que tienen los ordenadores.

de modo que no haya tiempos de espera entre cálculo y cálculo. para que sea factible construir un equipo accesible. Los niveles que componen la jerarquía 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 administración de memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria. Coste La cuestión de la cantidad es simple. más podrá utilizarse. Las siguientes afirmaciones son válidas:    A menor tiempo de acceso mayor coste A mayor capacidad mayor coste A mayor capacidad menor velocidad. con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar. organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible. En suma. utilizados para traer operandos o guardar resultados. por lo que hay que encontrar un equilibrio. esta memoria permite que el sistema cuente con una memoria más extensa teniendo la misma memoria real. con lo que esta se puede utilizar de . la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador. el costo de la memoria no debe ser excesivo. Actualmente esta administración se conoce como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa. es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida. Entre algunas ventajas. Se busca entonces contar con capacidad suficiente de memoria. Como puede esperarse los tres factores compiten entre sí. Gracias a un principio llamado cercanía de referencias. Para poder lograrlo. a la memoria principal. cuanto más memoria haya disponible.

Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación.las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas: · ¿Cuándo se toma un nuevo programa para colocarlo en memoria? · ¿Se toma el programa cuando el sistema lo solicita específicamente 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 más cerca unos de otros en los espacios disponibles de la memoria principal para reducir al mínimo el . Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando. según la cantidad de memoria que necesita cada proceso. que los programas que son utilizados no ocupen lugar innecesario. Sea cual sea es esquema de organización del almacenamiento que se adopte para un sistema específico. uso compartido de códigos y datos. la protección. Y por supuesto. que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica. es necesario decidir que estrategias se deben utilizar para obtener un rendimiento óptimo . Cada localidad de almacenamiento tiene asignada una dirección que la identifica. Las técnicas que existen para la carga de programas en la memoria son: partición fija. que son las particiones de la memoria en tamaños que pueden ser variables. con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en común pregunta 1 Filosofía: La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos. que consiste en trasladar procesos activos dentro y fuera e la memoria principal para maximizar la utilización del procesador.manera más eficiente.

Unix permite procesos múltiples y en un proceso puede generar otro fácilmente. pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador. ¿Cuál de los otros programas se desaloja? Se han realizado sistemas que utilizan cada una de estas estrategias de administración. por lo que UNIX intercambiaba el contenido en memoria de los procesos. SJF favorece a los procesos cortos. La política FIFO actualmente no se usa como el esquema principal de un sistema. La administración de memoria es un algoritmo de regiones variables con intercambios.Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. El desarrollo inicial se hizo bajo un espacio muy pequeño de memoria. Round Robin: Los procesos se despachan en la forma que lo hace el FIFO. a estos se les podría aplicar FIFO. . Inicialmente los algoritmos realizados se eligieron por sencillez. POLÍTICAS. Los recursos de memoria totales eran insuficientes para justificar algoritmos complejos. FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos. si no termina en ese lapso se manda al final de la lista de procesos listos. si un proceso llega al procesador sale hasta que termine. SJF (Shortest job first . ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse. no por velocidad ni complejidad. La planificación del procesador usa un algoritmo basado en prioridades. o se colocan los programas lo más rápido posible para reducir al mínimo el tiempo de ejecución? · Si se necesita colocar un nuevo programa en el almacenamiento principal y éste está lleno.desperdicio de espacio. 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. pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad.

debido a ello. con lo cual la prioridad de cada trabajo no solo esta en función del tiempo de servicio sino también del tiempo que ha esperado para ser atendido. HRN: (highest response ratio next – Prioridad de la tasa de respuesta más alta): Política no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF. lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio. el sistema carga páginas nuevas que estarán disponibles cuando el proceso las pida. Mientras el proceso ejecuta sus páginas actuales. Deitel]. Memoria real administracion de almacenamiento jerarquia estrategia de admministracion de memoria asignacion contigua vs no contigua multiprogramacion de particion fija Paginación Anticipada El S. para así no caer en un favoritismo excesivo por los procesos cortos. el tiempo de ejecución de un proceso se puede reducir. Inicio: Fin: Liberación de Página y Tamaño de Página Liberación de Página . O. un proceso en ejecución puede ser desposeído por uno nuevo de menor tiempo de ejecución. intenta predecir las páginas que un proceso va a necesitar y a continuación precarga estas páginas cuando hay espacio disponible [7. En SRT.SRT (Sortest remaining time scheduling – Tiempo restante más corto): En SJF una vez que un proceso comienza su ejecución continua hasta terminar.

Un proceso usuario puede emitir una “liberación voluntaria de página” para liberar el marco de página cuando ya no necesitara esa página [7. si todas las páginas tendrán igual tamaño. • Debido a que las transferencias de e / s del disco (paginación) consumen bastante tiempo. se debe minimizar la paginación que un proceso requiera: • Esto indica la necesidad de páginas grandes. El inconveniente es que la incorporación de mandatos de liberación de páginas dentro de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones. 2 kb. Se puede eliminar el “desperdicio” y acelerar la ejecución. 4 kb. más páginas y marcos de páginas habrá y mayores serán las tablas de páginas: • El desperdicio de almacenamiento debido al tamaño excesivo de las tablas de página se llama “fragmentación de tablas”. Deitel]. Inicio: Fin: Tamaño de Página Generalmente el almacenamiento real se divide en marcos o celdas de página de tamaño fijo [7. Deitel]. • Con páginas grandes. Los tamaños de pagina mas utilizados son: 512 b. etc. Los interrogantes tienen que ver con el tamaño de las páginas. • Esto indica la necesidad de páginas más grandes. • Los procedimientos y datos rara vez comprenden un número entero de páginas. Algunas consideraciones para determinar el tamaño de página son las siguientes: • Cuanto más pequeño sea el tamaño de una página. deberían detectar automáticamente situaciones de liberación de página mucho antes de lo que es posible con estrategias de conjuntos de trabajo”. “Los compiladores y S. si en caso de utilizar páginas de diferente tamaño las páginas mayores deben ser o no múltiplos enteros de las menores. 1 kb. . se paginarán hacia el almacenamiento primario: • Esto indica la necesidad de páginas más pequeñas. grandes cantidades de información que nunca llegaría a ser referenciada. • Esto indica la necesidad de páginas pequeñas. • Los programas tienden a mostrar la propiedad de localidad de referencia y esta localidad tiende a ser pequeña: • Esto indica la necesidad de páginas pequeñas. O. que estará en la última página del segmento. por lo que los sistemas de paginación experimentan una “fragmentación interna”: • El desperdicio promedio es de 1 / 2 página no usada por segmento (grupo) de páginas.

• El proceso puede concluir sin haber referenciado a algunas de sus páginas. Respecto de variar el tamaño de la página manteniendo constante la cantidad de almacenamiento primario: • El número de fallos de páginas experimentados por un proceso en ejecución tiende a aumentar con el tamaño de la página.administrar la transferencia de datos. ADMINISTRACIO ADMINISTRACION DE ENTRADA Y SALIDA El subsistema de administración de E/S controla todas las entradas y salidas del sistema informático.39 [7. debido a que se traen al almacenamiento primario un mayor número de procedimientos y datos que no serán referenciados. correspondientes a rutinas que atienden errores que no se produjeron. Respecto de cómo el promedio de tiempo interfallos (tiempo entre fallos de página) varía al aumentar el número de marcos de página asignados al proceso: • Cuanto más marcos de página tenga un proceso. las tareas más importantes que lleva a cabo el subsistema de administración de E/S son: 1. Deitel]). restando lugar para los que sí lo serán. • El punto de inflexión se da cuando el proceso tiene todo su conjunto de trabajo en el almacenamiento primario. .. mayor será el tiempo entre los fallos de páginas.. Para la seguridad.aplicar los controles de acceso (los mecanismos DAC) a los datos mientras se están transfiriendo. • Asignar marcos de página adicionales más allá del punto de inflexión no produce efectos significativos sobre el tiempo interfallos. 2. los valores experimentales obtenidos indican un máximo de 200 instrucciones por página de 1 kb (ver Figura 3. Deitel]: • Un proceso tiende a hacer referencia a una parte significativa de sus páginas inmediatamente después de iniciar su ejecución.Inicio: Fin: Comportamiento de un Programa en la Paginación Respecto del porcentaje de las páginas de un proceso típico referenciadas desde el momento de iniciarse su ejecución [7. Respecto del porcentaje de instrucciones de una página que son ejecutadas antes de transferirse el control a otra página.

Para ello debe ofrecer una interfaz entre los dispositivos y el resto del sistema que sea sencilla y fácil de utilizar. pero más sofisticados. etc. tanto para entrada (ratón. Se usan para proporcionar almacenamiento no volátil de datos y memoria. 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. Los dos tipos de dispositivos más importantes de esta clase son los módem. • Permitir la conexión de dispositivos nuevos de E/S. teclado. lectores de cinta magnética. así como del funcionamiento real de los mismos. Su función primordial es abastecer de datos y almacenamiento a los programas que se ejecutan en la UCP. pantalla. Mediante esta visión lógica se ofrece a los usuarios un mecanismo de abstracción que oculta todos los detalles relacionados con los dispositivos físicos. • Optimizar la E/S del sistema. Según su capacidad y la inmediatez con que se puede acceder a los datos almacenados en estos dispositivos. solventando de forma automática su instalación usando mecanismos del tipo plug&play. 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 visión lógica simplificada de los mismos que pueda ser usada por otros componentes del sistema operativo (como el sistema de archivos) o incluso por el usuario. para comunicación vía red telefónica.).DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos: • Dispositivos de interfaz de usuario. proporcionando mecanismos de incremento de prestaciones donde sea necesario. • Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de dispositivo físico sin que sea necesario remodelar el sistema de E/S del sistema operativo. • Dispositivos de almacenamiento.) como para salida (impresoras. Dentro de este grupo se incluyen todos los dispositivos que sirven para proporcionar interfaz con el usuario. Existen periféricos menos habituales. lectores de huella digital. para conectar la computadora a una red de área local. se pueden dividir en almacenamiento secundario (discos y disquetes) y terciario (cintas) • Dispositivos de comunicaciones. tales como un escáner. etc. Se llama así a los dispositivos que permiten la comunicación entre los usuarios y la computadora. etc. En el modelo de un periférico se distinguen dos elementos: . Conexión de un dispositivo de E/S a una computadora En la siguiente figura se muestra el esquema general de conexión de periféricos a una computadora. Permiten conectar a la computadora con otras computadoras a través de una red. instrumentos musicales digitales (MIDI). y las tarjetas de interfaz a la red.

) se realizan usando esas dos instrucciones de lenguaje máquina con los parámetros adecuados. a su controlador se le asigna un puerto de E/S. Un terminal por línea serie también es un dispositivo de caracteres. El otro modelo de direccionamiento de E/S es el modelo proyectado en memoria. Según se haga de una u otra forma. Son el componente electrónico a través del cual se conecta el dispositivo de E/S. lo que es significativamente distinto del modelo de memoria de la computadora. lo que permite leer o escribir un bloque con independencia de los demás. Elementos que se conectan a la unidad central de proceso a través de las unidades de entrada/salida. etc. El problema de este tipo de direccionamiento es que exige conocer las direcciones de E/S y programar las instrucciones especiales de E/S. se distingue entre dispositivos conectados por puertos o proyectados en memoria. Los dispositivos de caracteres. Los dispositivos de bloque lo son porque el hardware fuerza la existencia de accesos de un tamaño determinado. Su controlador se limita a enviar al periférico el flujo de caracteres que debe representar en la pantalla y a recibir del mismo los caracteres tecleados por el usuario. Un disco. Los dispositivos de almacenamiento secundario y terciario manejan la información en unidades de tamaño fijo. por ejemplo. se divide en sectores de 512 bytes o de 1 KB. Son el componente mecánico que se conecta a la computadora. En este modelo no hay instrucciones específicas de E/S. Para efectuar una operación de E/S la UCP ejecuta operaciones por o portout con la dirección de puerto del dispositivo y con parámetros para indicar qué registro se quiere manipular. Sin embargo. se reserva una zona de memoria física para asignar las direcciones de E/S. Gestionan flujos de caracteres de forma lineal y sin ningún tipo de estructura de bloque. asigna a cada dispositivo de E/S un rango de direcciones de memoria a través de las cuales se escribe sobre los registros del controlador. etcétera. siendo un sector la unidad mínima de transferencia que el controlador del disco puede manejar. Este modelo. impresoras. Estos bloques se pueden direccionar de manera independiente. tarjetas de red. por lo que a su vez se denominan dispositivos de bloques. no almacenan información en bloques de tamaño fijo. El modelo de dispositivos por puertos es clásico en las arquitecturas de Intel. la UCP tiene que escribir sobre los registros anteriores los datos de la operación a través de una dirección de E/S o de memoria asignada únicamente al controlador. impresoras. lo que permite gestionar un mapa único de direcciones de memoria. cuando se instala un dispositivo. . Está conectado a una UART (Universal Asynchronous Receiver/Transmiter) que recibe un carácter del teclado cada vez que se pulsa una tecla. ratón. Un teclado es un buen ejemplo de estos dispositivos. Tienen una conexión al bus de la computadora y otra para el dispositivo (generalmente mediante cables internos o externos). discos. sino que las operaciones se llevan a cabo mediante instrucciones máquina de manejo de memoria. • Controladores de dispositivos o unidades de E/S. como los terminales. una interrupción hardware y un vector de interrupción. Para empezar una operación de E/S. Se encargan de hacer la transferencia de información entre la memoria principal y los periféricos.• Periféricos o dispositivos de E/S. módems. No es posible leer un bloque de teclas de un golpe o buscar dentro del dispositivo por ninguna unidad. En ellas. típico de las arquitecturas de Motorola. Todas las operaciones de entrada/salida (pantalla gráfica. denominadas bloques. para no tener conflictos con otros accesos a memoria y para optimizar las operaciones.

Un buen ejemplo lo constituyen los dispositivos SCSI (Srna Il? Computer Svstern interftice).para usarlo. en los últimos años ha existido un esfuerzo importante de estandarización de los dispositivos. Otro buen ejemplo son los controladores IDE (In tegrated Drive Electronics). el procedimiento necesita de ingeniería inversa y otros métodos difíciles o con riesgos legales. En este caso. pantallas (displays). y sea como sea el controlador. Si no la hay. lo que permite usar un mismo controlador para dispositivos de distintos fabricantes. y es frecuente encontrar más de un controlador posible para el mismo dispositivo. o. como los de canales de E/S. Por ejemplo. incluyen su propia UCP y bus para controlar la E/S por programa y evitar interrupciones en la UCP de la computadora. un CD-ROM. aparte de los oficiales (normalmente disponibles en la página web del fabricante). Otros. haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada. • Dispositivos multimedia. en inglés. Por tanto. • Teclados. por ejemplo en los sistemas operativos libres. • Dispositivos de visualización. cada uno ofreciendo un nivel distinto de funcionalidades. como los de disco. casi tanto como los dispositivos de E/S. módems.Un controlador de dispositivo (llamado normalmente controlador. Normalmente son los fabricantes del hardware quienes escriben sus controladores. De cualquier forma. Existen tantos tipos de controladores como tipos de periféricos. pero también se encuentran controladores libres. driver) es un programa informático que permite al sistema operativo interactuar con un periférico. En cualquier caso. aunque a veces hay una cooperación con ellos. que suelen usarse para conectar los discos en todas las computadoras personales. cuyos controladores ofrecen una interfaz común independientemente de que se trate de un disco. pueden controlar múltiples dispositivos. También se distribuyen actualizaciones a nuevas versiones. • Dispositivos de comunicación (infrarrojos. . es una pieza esencial. etc). ya que conocen mejor el funcionamiento interno de cada aparato. Estos controladores pueden ser genéricos (válidos para más de un modelo del mismo periférico) o específicos para cada modelo. los creadores no son de la empresa fabricante. una cinta. que pueden dar un mejor funcionamiento. su misión es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a través de una interfaz de programación bien definida. se pueden encontrar también los proporcionados por el sistema operativo. cosa que facilita el desarrollo. Se puede esquematizar como un manual de instrucciones que le indica cómo debe controlar y comunicarse con un dispositivo en particular. Muchos de ellos. • Ratón (“mouse” y otros señaladores gráficos). o también versiones no oficiales hechas por terceros. sin la cual no se podría usar el hardware. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases: • Adaptadores de audio (tarjetas de sonido). etc. Los controladores son muy variados.

Los distintos bits de este . que se pueden acceder mediante instrucciones de máquina de E/S. Verifique los resultados de la operación. los parámetros de los comandos también se cargan en los registros de los controladores. -Copiar el bloque en la memoria principal. Hay tres registros importantes en casi todos los controladores: registro de datos. realiza la e/s al escribir comandos en los registros de los controladores. Al aceptar el comando. Otros bits de este registro sirven para que el controlador indique los problemas que ha encontrado en la ejecución de la última operación de E/S. Al terminar el comando.: -Obtenga el control de la cpu. El S.• Dispositivos de Red. O. • Almacenamiento mecanismos y funciones de los manejadores de dispositivos (device drivers) El controlador es el componente más importante desde el punto de vista del sistema operativo. -Para la mayoría de los mainframes: Modelo de varios buses y computadoras especializadas en e/s llamadas canales de e/s. Pueden utilizar un espacio de direcciones especial para la e/s. Un bit del registro de estado sirve para indicar que el controlador puede transferir una palabra. Sigue con una serie de bits (de un sector de disco. por ej. El registro de control sirve para indicarle al controlador las operaciones que ha de realizar. 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. -Efectuar cualquier corrección de errores necesaria.). Concluye con una suma para verificación o un código corrector de errores. mientras que en las de escritura significa que necesita un nuevo dato. la cpu puede dejar al controlador y dedicarse a otro trabajo. El controlador debe: -Convertir el flujo de bits en serie en un bloque de bytes. Su programación se lleva a cabo mediante una interfaz de muy bajo nivel que proporciona acceso a una serie de registros del controlador. asignando a cada controlador una parte de él. • Impresoras. generalmente trabaja con el controlador y no con el dispositivo. el tamaño de sector y otros datos similares. El registro de datos sirve para el intercambio de datos. La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador. estado y control. O. Contiene el número de cilindro y sector. el controlador provoca una interrupción para permitir que el S. En las operaciones de lectura esto significa que ha cargado en el registro de datos un nuevo valor. Los modelos más frecuentes de comunicación entre la cpu y los controladores son: -Para la mayoría de las micro y mini computadoras: Modelo de bus del sistema. incluidos en el mapa de E/S de la computadora. La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel: -La comunicación es mediante un flujo de bits en serie que: Comienza con un preámbulo. El S. En él irá el controlador cargando los datos leídos y de él irá extrayendo los datos para su escritura en el periférico. ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde la UCP. -El preámbulo: Se escribe al dar formato al disco. O.

En el caso de un controlador de disco. En general hay dos modelos de direccionamiento de E/S. En ambos casos. Este modelo vale tanto para los terminales o la pantalla como para los discos. los que usan puertos y los que proyectan los registros en memoria.registro indican distintas acciones que ha de realizar el periférico. ya que definen el aspecto del periférico para el sistema operativo. Aunque esta técnica es muy antigua. Cuando esto ocurra. leer o escribir los registros. tienen múltiples dispositivos de E/S. la técnica es la misma: dedicar una UCP especial para la E/S. que se denomina E/S programada. a su vez. programar la operación y esperar a que se indique que los . en ese caso. deberá encargarse de transferirlo a memoria principal. la transferencia de información entre un periférico y el procesador se realiza mediante la ejecución de una instrucción de E/S. El controlador debe encargarse además de sincronizar la velocidad del procesador con la del periférico y de detectar los posibles errores que se produzcan en el acceso a los periféricos. • Interacción computadora-controlador. éste debe encargarse de convertir un flujo de bits procedente del disco a un bloque de bytes detectando y corrigiendo. La información 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. Un controlador de dispositivo o unidad de E/S se encarga de controlar uno o más dispositivos del mismo tipo y de intercambiar información entre ellos y la memoria principal o unidad central de proceso de la computadora. Los dispositivos suelen usar unidades de transferencia de tamaño fijo. lo que provoca que el procesador tenga que esperar mientras se realiza la transferencia entre el periférico y el controlador. Las características del controlador son muy importantes. actualmente los canales de E/S y algunos multiprocesadores usan esta técnica para evitar que lleguen a la UCP de la computadora muchas interrupciones de E/S. • Unidad de transferencia. Una vez obtenido el bloque y comprobado que se encuentra libre de errores. Con esta técnica. debe mirar su registro de estado hasta que los bits indiquen que no está ocupado. 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. es el procesador el responsable de extraer o enviar datos entre el procesador y el controlador de dispositivo. En este caso no existe ningún tipo de concurrencia entre la E/S y el procesador ya que éste debe esperar a que finalice la operación. Con esta técnica. si es posible. se pueden observar los siguientes aspectos distintivos: • Dirección de E/S. La computadora tiene que interaccionar con la computadora para realizar las operaciones de E/S y saber cuándo terminan. Dado que los periféricos son sensiblemente más lentos que el procesador. éste deberá esperar una gran cantidad de tiempo hasta que se complete la operación de E/S. Si la UCP quiere escribir en uno de ellos. Hay dos modelos clásicos de dispositivos: de caracteres y de bloques. los errores que se produzcan en esta transferencia. La forma de hacerlo es muestrear continuamente los registros de estado de los controladores para ver si están disponibles y. ya que proviene del tiempo en que los controladores no tenían interrupciones. Atendiendo a las características del hardware de los dispositivos. Imagine un canal de E/S al que hay conectados múltiples buses de E/S que. Para empezar una operación de E/S. deberá esperar a que los bits de estado le indiquen que está disponible. la UCP tiene que escribir sobre los registros anteriores los datos de la operación a través de una dirección de E/S o de memoria asignada únicamente al controlador.

datos están disponibles. siempre existe pérdida de ciclos debido a la existencia de las esperas. el propio . Manejadores de interrupción Los manejadores de interrupción se encargan de tratar las interrupciones que generan los controladores de dispositivos una vez que éstos están listos para la transferencia de datos o bien han leído o escrito los datos de memoria principal en caso de acceso directo a memoria. existen situaciones en que esto no es así. Este software está formado por la parte de alto nivel de los manejadores. o cuando la cantidad de información a transferir es muy pequeña. sino también el propio dispositivo. de un disco duro. el fallo de un controlador puede ser más grave que otros errores de software. Cuando una interrupción ocurre muy frecuentemente. comunicar el evento al manejador del dispositivo y restaurar la ejecución de un proceso (que no tiene por qué ser el interrumpido). Llamadas al sistema que usan las aplicaciones de usuario. • Manejadores de dispositivos o drivers. Cuando un proceso solicita una operación de E/S. sería muy costoso comunicar siempre el evento al manejador de dispositivo asociado. El sistema operativo estructura el software de gestión de E/S de esta forma para ofrecer a los usuarios una serie de servicios de E/S independientes de los dispositivos. Sin embargo. • Interfaz del sistema operativo. de un CD-ROM o de un teclado. Estructuras de datos para manejo de dispositivos. encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no sólo hay que monitorizar el programa. caso del teclado. incluso aunque la UCP esté controlando varios dispositivos de E/S. Para tratar dicha interrupción se ejecuta el correspondiente manejador de interrupción cuyo efecto es el de salvar los registros. el sistema operativo prepara dicha operación y bloquea al proceso hasta que se recibe una interrupción del controlador del dispositivo indicando que la operación está completa. Hay que recalcar que el controlador al ser una parte crítica del sistema operativo. •Software de EIS independiente de los dispositivos. Esta independencia implica que deben emplearse los mismos servicios y operaciones de E/S para leer datos de un disquete. caso del reloj. Evidentemente. Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Las peticiones se procesan de forma estructurada en las siguientes capas: • Manejadores de interrupción. Debido a que el hardware es (necesariamente) indeterminista. Los manejadores de interrupción suelen hacer algo más que comunicar el evento al manejador de dispositivo. el gestor de bloques y el servidor de archivos. el gestor de cache. pudiendo bloquear el ordenador o incluso dañar el hardware. En estos casos.

el gestor de bloques. controla la existencia de errores y devuelve al nivel superior el estado de terminación de la operación. La siguiente figura muestra un diagrama de flujo con las operaciones de un manejador. lo que permite ocultar que cada dispositivo puede tener distinto tamaño de sector y distinta geometría. de la parte del código de E/S independiente del dispositivo. en caso de que le toque ejecutar después de la operación de E/S. Si tiene operaciones pendientes en la cola de peticiones. como el modem o las redes. En caso contrario se bloquea. o cada clase de dispositivos. dependiendo de la velocidad del dispositivo. La notificación al manejador se hace únicamente cada cierto número de ocurrencias del evento. o activando unflag que indica que hay datos en el buffer del teclado. como el teclado. gestión de los dispositivos. Estos detalles quedan ocultos por la capa de software independiente de dispositivo que ofrece una interfaz sobre la base de bloques lógicos del sistema de archivos. Para los lentos (discos) se bloquea esperando una interrupción. El tamaño de acceso a nivel de bloques se hace usando tamaños de bloque de acceso comunes para todo un sistema de archivos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto. Lo mismo ocurre con los dispositivos de caracteres. Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La principal función de esta capa de software es ejecutar las funciones de E/S que son comunes a todos los dispositivos a través de una interfaz uniforme. El manejador explora la lista de peticiones. enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan. La política de extracción de peticiones de la lista es dependiente de manejador y puede ser FIFO. en el caso del reloj. discos RAM. la cache de bloques y una parte de los manejadores de dispositivo. bien mediante el incremento de una variable global para el reloj o la acumulación de caracteres en un buffer del teclado. Software de E/S independiente del dispositivo La mayor parte del sistema de E/S es software independiente de dispositivo. mientras otros trabajan con flujos de caracteres. en este nivel se proporciona acceso a nivel de bloques o caracteres. Una vez enviada la petición al controlador. almacenamiento intermedio. planificación de la E/S y control de errores. extrae una petición pendiente y ordena su ejecución. etcétera) responde inmediatamente. Para los rápidos (pantalla. Después de recibir el fin de operación.manejador de interrupción registra la ocurrencia del evento. . Manejadores de dispositivos Cada dispositivo de E/S. Este nivel incluye el sistema de archivos y el de gestión de red. tiene un manejador asociado en el sistema operativo. Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores. el manejador se bloquea o no. algunos de los cuales trabajan con un carácter cada vez. atiende a la siguiente. Internamente. traducir dichas peticiones a términos que entienda el controlador.

se merece. Cuando un manejador de disco queda libre. grupo y mundo) y este nivel de software asegura que los requisitos de protección se cumplen. ajuicio de los diseñadores del sistema operativo. Este mecanismo permite optimizar la E/S al conceder a cada mecanismo la importancia que. todos los sistemas de E/S planifican las actividades en varios lugares. La razón que hay detrás de esta política es conseguir un sistema muy interactivo. busca la cola global para ver si hay peticiones para él y. . por ejemplo. Por ejemplo. protección y control de acceso. las operaciones de disco son más prioritarias que las del ratón para poder desbloquear rápidamente a los procesos que esperan por la E/S. • Ocultar las diferencias de velocidad con que cada dispositivo y usuario manejan los datos.: /dev/cdrom) que se traduce en un único identificador interno (o nodo-i). Cada dispositivo tiene asociada una información de protección (en UNIX mediante 3 bits para dueño. como UNIX. se guardan copias de los bloques en memoria para no tener que acceder al disco si se vuelven a leer. el ratón es el dispositivo de E/S más prioritario del sistema. Si se usa una línea serie para leer datos de un sistema remoto y almacenarlos en el disco. como una impresora. Sea cual sea el criterio de planificación.Para optimizar la E/S y para armonizar las peticiones de usuario. El sistema de E/S mantiene buffers en distintos componentes. La gestión de los dispositivos agrupa a su vez tres servicios: nombrado. Además proporciona control de acceso para que un dispositivo dedicado. Por ejemplo. las traslada a su cola de peticiones particular ordenadas según la política SCAN. En el caso de Windows NT. ordenadas en orden FIFO. Para ello se usan colas de peticiones para cada clase de dispositivo. Cada una de estas colas se ordena siguiendo una política de planificación. 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. sea accedido por un único usuario cada vez. en UNIX. En otros sistemas. ej. si existen. para los discos instalados. se puede usar un buffer para guardar temporalmente los datos hasta que tengan una cierta entidad y sea rentable escribirlos a disco. El nombrado permite traducir los nombres de usuario a identificadores del sistema. de las que se extraen las peticiones de cada dispositivo en particular. por ejemplo. Esta facilidad se usa para tres cosas: • Optimizar la E/S evitando accesos a los dispositivos. Imagine el caso de LINUX. que puede ser distinta en cada nivel. Si se está leyendo o escribiendo un archivo. Una de las funciones principales del sistema de E/S es la planificación de la E/S de los distintos componentes. con los bloques que maneja el sistema de archivos. que a su vez se traduce en un único número de dispositivo principal (clase de dispositivo) y secundario (elemento de la clase). • Facilitar la implementación de la semántica de compartición. el software de E/S proporciona almacenamiento intermedio en memoria del sistema operativo. al existir una copia única de los datos en memoria. cada dispositivo tiene un nombre (p. donde existe una cola global de peticiones de E/S. que pueden ser de cualquier tamaño.

Las entradas son las señales recibidas por la unidad. checksums. Es importante notar que la designación de un dispositivo. Imagine. mientras que los monitores e impresoras son vistos como dispositivos de salida de una computadora. Además. Operaciones de Entrada / Salida. La CPU y su circuitería complementaria proveen métodos de entrada/salida que se usan en programación de bajo nivel para la implementación de controladores de dispositivos. cambia al cambiar la perspectiva desde el que se lo ve. De hecho. En computación. Un error permanente de lectura no puede ser resuelto y debe ser comunicado al usuario para que tome las medidas adecuadas. . los monitores e impresoras toman como entrada las señales que la computadora produce como salida. En general. Luego. este nivel proporciona gestión de errores para aquellos casos que el manejador de dispositivo no puede solucionar. es la colección de interfaces que usan las distintas unidades funcionales (subsistemas) de un sistema de procesamiento de información para comunicarse unas con otras. sea de entrada o de salida. es importante resaltar que los sistemas operativos son cada vez más robustos y cada vez incluyen más control y reparación de errores. Los dispositivos típicos para la comunicación entre computadoras realizan las dos operaciones. por medio de la vista. La salida de estos dispositivos son una entrada para la computadora. todos los sistemas operativos incluyen alguna forma de control de errores internos y de notificación al exterior en caso de que esos errores no se puedan resolver. etc. "realizar una entrada/salida" se refiere a ejecutar una operación de entrada o de salida. El término puede ser usado para describir una acción. por ejemplo. Sin embargo. la información que proporcionan cuando hay un error es cada vez mayor. que funciona como entrada. a la combinación de una unidad central de procesamiento (CPU) y memoria principal (aquélla que la CPU puede escribir o leer directamente mediante instrucciones individuales) se la considera el corazón de la computadora y cualquier movimiento de información desde o hacia ese conjunto se lo considera entrada/salida. tanto entrada como salida. De manera análoga. que una aplicación quiere leer de un dispositivo que no existe. y entre otros se encuentran los módems y tarjetas de red. La interpretación será. En arquitectura de computadoras. Los teclados y ratones toman como entrada el movimiento físico que el usuario produce como salida y lo convierten a una señal eléctrica que la computadora pueda entender. también abreviado E/S o I/O (del original en inglés input/output). Un error transitorio de lectura de un bloque se resuelve en el manejador reintentando su lectura. 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 aplicación. a los teclados y ratones se los considera dispositivos de entrada de una computadora. por ejemplo. convierten esas señales en representaciones inteligibles que puedan ser interpretadas por el usuario. códigos correctores de error. Los dispositivos de E/S los usa una persona u otro sistema para comunicarse con una computadora. entrada/salida. mientras que las salidas son las señales enviadas por ésta.Por último. para lo cual usan métodos de paridad. o las señales (información) enviadas a través de esas interfaces.

un sistema operativo brinda aplicativos que manejan el concepto de archivos. [editar] Dispositivos de entrada y salida • Entrada: • Teclado • Ratón • Joystick • Lápiz óptico • Micrófono • Webcam • Escáner • Escáner de código de barras • Salida: • Monitor • Altavoz • Auriculares • Impresora • Plotter • Proyector • Entrada/salida: • Unidades de almacenamiento • CD • DVD • Módem • Fax • Memory cards • USB • Router • Pantalla táctil . que permite que los programas describan su E/S y que las acciones se lleven a cabo fuera del programa. pero ahora una programación puramente funcional resultaría práctica. pues las funciones de E/S introducirían un efecto colateral para cualquier lenguaje de programación. Una alternativa para las funciones primitivas especiales es la mónada de E/S. Esto resulta interesante. Por ejemplo.Los sistemas operativos y lenguajes de programación de más alto nivel brindan conceptos y primitivas de entrada/salida distintos y más abstractos. es decir. les permiten leer datos desde y escribir datos hacia sus programas. El lenguaje de programación C define funciones que les permiten a sus programas realizar E/S a través de streams.

Especifica la operación que debe realizar la CCW. indica al canal que la siguiente CCW especifica una nueva operación de E/S que debe realizarse con el mismo dispositivo. Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operación de lectura. es el controlador el que se encarga directamente de transferir los datos entre el periférico y la memoria principal. Esta técnica se denomina acceso directo a memoria (DMA. Direct Memory Access). La unidad de control decodifica este campo y envía las señales adecuadas de control al dispositivo. como rebobinar una cinta magnética.Tanto en la E/S programada como la basada en interrupciones. El canal ejecuta las CCW en secuencia. empezando en la dirección especificada en el campo dirección del dato. Bifurcación: cumple en el programa de canal la misma función que una instrucción de salto en un programa normal. en orden ascendente de direcciones. sin requerir intervención alguna por parte del procesador. . 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. las más importantes son las siguientes: Lectura: el canal transfiere a memoria principal un bloque de palabras de tamaño especificado en el campo nº de palabras. Donde el campo Operación corresponde al código de operación de las instrucciones máquina normales. Después ejecuta la siguiente sobre el mismo dispositivo. la UCP debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Esta técnica funciona de la siguiente manera: cuando el procesador desea que se imprima un bloque de datos. Existen varias operaciones. liberando de este trabajo a la UCP. • El número de bytes a transferir (contador). etc. Cuando se utiliza acceso directo a memoria. Flags: Los bits de este campo indican lo siguiente: CC (Encadenamiento de comando): cuando este bit está a 1. salvo cuando aparece una CCW de este tipo. El canal ejecuta primero la operación de E/S especificada en la CCW que tiene a 1 el flag CC. • La dirección de memoria desde la que se va a leer o a la que va a escribir directamente con el controlador de dispositivo (dirección). • Periférico involucrado en la operación. envía una orden al controlador indicándole la siguiente información: • Tipo de operación: lectura o escritura. Control: se utiliza esta orden para enviar instrucciones específicas al dispositivo de E/S. las dos operaciones resultantes de la primera y segunda CCW aparecen como dos comandos de E/S separados. e interrumpir a la UCP sólo cuando haya terminado la operación completa de EIS. que utiliza el campo dirección del dato como la dirección de la siguiente CCW a ejecutar. Desde el punto de vista del dispositivo.

cuando está a 1. Programación de la operación de E/S. incrementa dicha posición de memoria y decrementa el contador de datospendientes de transferir. este flag hace que los datos se lean del dispositivo sin que se transfieran a la memoria principal. no corta la conexión con el dispositivo de E/S. . Se indica al controlador la operación. El controlador le ordena al dispositivo que lea (para operación de lectura) una cierta cantidad de datos desde una posición determinada del dispositivo a su memoria interna. ésta debe hacerse a velocidad constante para evitar transferencias parciales y nuevas esperas de posicionamiento del dispositivo sobre los datos (latencia). Cuando se utiliza con la orden de lectura. mediante la orden especificada por la CCW actual. La transferencia se realiza palabra a palabra. Una vez transferidos los datos a la memoria del controlador. genera una interrupción que activa la rutina de tratamiento correspondiente. 4. 5. no tiene que copiar el bloque a memoria porque ya está allí. SKIP (Salto): este bit. el procesador continúa realizando otro trabajo sin necesidad de transferir el bloque de datos.CD (Encadenamiento de datos): una CCW con el bit CD a 1. Cuando el controlador ha completado la transferencia. La razón para este almacenamiento intermedio reside en que una vez que el dispositivo empieza la transferencia de datos. 2. Por tanto. hace que el programa de canal salte un número de palabras igual al especificado en el campo nº de palabras. Los pasos 3 y 4 se repiten hasta que no quedan más datos por leer. cuando el sistema operativo despierta al proceso que pidió la E/S. Utilizando acceso directo a memoria el procesador únicamente se ve involucrado al inicio y al final de la transferencia. la interrupción se genera después de que hayan concluido todas las transferencias de datos. PCI (Interrupción controlada por programa): el canal produce una interrupción cuando ejecuta una CCW con el flag PCI a 1. 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. éste los copia en memoria principal aprovechando el ancho de banda libre del bus. Cuando los datos están listos.3. Cuando el canal termina la transferencia de datos especificada en la CCW con el bit CD a 1. El controlador contesta aceptando la petición de E/S. 7. Una vez emitida la orden. de tal manera que se sepa que la operación ha concluido. el controlador los copia a la posición de memoria que tiene en sus registros. los datos a transferir y la dirección de memoria sobre la que se efectuará la operación. 3. continúa la transferencia utilizando la dirección y el nº de palabras de la siguiente CCW. Los pasos a seguir en una operación de E/S con DMA son los siguientes: 1. Si esta CCW va precedida por otra CCW con encadenamiento de comandos. Éstos deben utilizarse para transferir un segundo bloque de datos hacia o desde el dispositivo de E/S. Es el propio controlador el que se encarga de transferir el bloque de datos del periférico a memoria. indica al canal que la siguiente CCW contiene una nueva dirección del dato y un nuevo nº de palabras.

Más formalmente. el controlador interrumpe a la UCP para in dicar que la operación de DMA ha terminado. el acceso. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las operaciones de E/S. los sistemas de archivos pueden ser representados de forma textual (ej. En el IBM S/370 existen cuatro instrucciones máquina que la CPU puede utilizar para estos fines. Los sistemas de archivos comparten mucho en común con la tecnología de las bases de datos. TEST CHANNEL Prueba el estado del canal. Una operación de E/S se inicia con la instrucción START I/O. la organización jerárquica. En ellos. el programa de canal. para hacer más fácil la tarea encontrarlos y accederlos. el subcanal y el dispositivo de E/S. Inicio y control de los programas de canal Hemos visto como se utilizan los programas de canal para realizar operaciones de E/S. SISTEMAS DE ARCHIVOS En computación. los sistemas operativos tienen su propio sistema de archivos. Estos programas residen en la memoria principal del computador y se ejecutan en el canal.6. En general. un sistema de archivos es un conjunto de tipo de datos abstractos que son implementados para el almacenamiento. . HALT I/O Finaliza la operación del canal. un sistema de archivos es un método para el almacenamiento y organización de archivos de computadora y los datos que estos contienen. El campo de dirección de la instrucción seemplea para especificar el canal y el dispositivo de E/S que participa en la operación. que siempre está almacenada en la posición 72 de la memoria principal. Cuando el registro de contador está a cero. Los sistemas de archivos son usados en dispositivos de almacenamiento como discos duros y CD-ROM e involucran el mantenimiento de la localización física de los archivos. la manipulación.: el shell de DOS) o gráficamente (ej.: Explorador de archivos en Windows) utilizando un gestor de archivos. La ubicación del programa de canal en la memoria principal viene definida en la palabra de dirección de canal (CAW: Channel A ddress word). es decir. Son las siguientes: START I/O Inicia una operación de E/S. el direccionamiento y la recuperación de datos. TEST I/O Prueba el estado del canal.

usualmente de 512 bytes de longitud. El acceso seguro a sistemas de archivos básicos puede estar basado en los esquemas de lista de control de acceso o capacidades.. a veces llamados sectores. enlaces adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (“. Los sistemas de archivos o ficheros (en inglés:filesystem). Los sistemas de archivos tradicionales proveen métodos para crear. Los sistemas operativos comerciales aún funcionan con listas de control de acceso. mover. etc.[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 tamaño. estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora). El software del sistema de archivos es responsable de la organización de estos sectores en archivos y directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados. que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. por lo que los sistemas operativos experimentales utilizan el acceso por capacidades. Los sistemas de archivos pueden ser clasificados en tres categorías: sistemas de archivo de disco. XFS. NTFS. usualmente de 512 bytes de longitud. ext2. como los recibidos a través de una conexión de red (sin la intervención de un dispositivo de almacenamiento). Ejemplos de sistemas de archivos son: FAT. Reiser FS?. manteniendo un registro de qué bloques pertenecen a qué archivos. por ejemplo. ext3. UDF. Y el termino de wikipedia Los sistemas de archivos (filesystem en inglés). que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. qué bloques no se han utilizado y las direcciones físicas de cada bloque. un sistema de archivos también puede ser utilizado para acceder a datos generados dinámicamente.” en Unix). La mayoría de los sistemas operativos manejan su propio sistema de archivos. pero carecen de métodos para crear. Las listas de control de acceso hace décadas que demostraron ser inseguras. La mayoría de los sistemas operativos poseen su propio sistema de archivos.El software del sistema de archivos se encarga de organizar los archivos (que suelen estar segmentados físicamente en pequeños bloques de pocos bytes) y directorios. renombrar y eliminar tanto archivos como directorios. ext4. a veces llamados sectores. Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamaño. sistemas de archivos de red y sistemas de archivos de propósito especial. En la práctica. UMSDOS. estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora). El software del sistema de archivos es responsable de la organización de estos .

ramificada o "en árbol"." en Unix). usualmente. El acceso seguro a sistemas de archivos básicos puede estar basado en los esquemas de lista de control de acceso o capacidades. La estructura de directorios suele ser jerárquica. los nombres de archivos son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente. La nomenclatura para rutas varía ligeramente de sistema en sistema.[cita requerida] Rutas y nombre de archivos Normalmente los archivos y carpetas se organizan jerárquicamente. se declara la ubicación precisa de un archivo con una cadena de texto llamada "ruta" —o path en inglés—. un sistema de archivos también puede ser utilizado para acceder a datos generados dinámicamente. Los sistemas de archivos tradicionales proveen métodos para crear. en un sistema tipo Unix como GNU/Linux. ordenados jerárquicamente de izquierda a derecha y separados por algún carácter 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. . por ejemplo. renombrar y eliminar tanto archivos como directorios.ogg" del usuario "álvaro" sería algo como: /home/álvaro/música/canción. En otros. enlaces adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (".ogg donde: • '/' representa el directorio raíz donde está montado todo el sistema de archivos. por ejemplo. En la práctica. [editar] Ejemplo de 'ruta' en un sistema Unix Así. En algunos sistemas de archivos los nombres de archivos son estructurados. aunque en algún caso podría ser plana. Las listas de control de acceso hace décadas que demostraron ser inseguras. Los sistemas operativos comerciales aún funcionan con listas de control de acceso. la ruta para la canción llamada "canción. Una ruta viene dada por una sucesión de nombres de directorios y subdirectorios. pero carecen de métodos para crear. En los sistemas de archivos jerárquicos.sectores en archivos y directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados.. con sintaxis especiales para extensiones de archivos y números de versión. pero mantienen por lo general una misma estructura. como los recibidos a través de una conexión de red (sin la intervención de un dispositivo de almacenamiento). por lo que los sistemas operativos experimentales utilizan el acceso por capacidades. mover.

con qué programa se puede editar o reproducir el archivo.) • Mecanismo para evitar la fragmentación • Capacidad de enlaces simbólicos 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á diseñado para el almacenamiento de archivos en una unidad de disco. Otros. o por sus siglas en inglés. • 'canción' es el nombre del archivo. [editar] Resumen de características de los sistemas de Archivos • Seguridad o permisos • listas de control de acceso (ACLs) • UGO (Usuario. que se establece como único.ogg donde: • 'C:' es la unidad de almacenamiento en la que se encuentra el archivo. . HFS es el Sistema de Archivo de Mac. [editar] Ejemplo de 'ruta' en un sistema Windows Un ejemplo análogo en un sistema de archivos de Windows (específicamente en Windows XP) se vería como: C:\Documents and Settings\alvaro\Mis Documentos\Mi Música\canción. • 'canción. Grupo. este elemento. Otros sistemas de archivos -HFS. User. es especialmente relevante en los sistemas Windows.• 'home/álvaro/música/' es la ruta del archivo. es decir.: sólo añadir al archivo pero no modificar. parte del nombre. ya que sirve para identificar qué aplicación está asociada con el archivo en cuestión. • '. desde CD y DVD hasta el Disco Duro.ogg' es el nombre del archivo.ogg' es la extensión del archivo. que puede estar conectada directa o indirectamente a la computadora. etc. • '\Documents and Settings\alvaro\Mis Documentos\Mi Música\' es la ruta del archivo. Group. Se usa en todo tipo de medio de almacenamiento. Others) • Capacidades granuladas • Atributos extendidos (ej. no modificar nunca.

ni sistemas de archivos de red. Dentro de esta clasificación 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). plumber (Plan 9). Las instancias del componente File System Watcher permiten inspeccionar cambios en los directorios y archivos y reaccionar cuando se producen. ARCHIVO REAL Y VIRTUAL La mayoría de usuarios de computadoras comprenderán con mucha facilidad el término archivo relacionándolo directamente con ejemplos tales como los archivos de texto que se pueden generar con cualquier procesador de texto. ftpfs. es decir aquel tipo de memoria cuya información se pierde al interrumpirse el flujo de corriente eléctrica. TMPFS. udev. unicode y mucho más. Por ejemplo. LUFS. Una característica de este tipo de archivos es que a mayor texto que almacena el archivo. sysfs. pues este tipo de archivos no consumen espacio en el disco duro. (ver Anexo:Sistemas de archivos de red) [editar] Sistemas de archivos de propósito especial (Special purpose file system). Aquellos tipos de sistemas de archivos que no son ni sistemas de archivos de disco. una línea corta de texto ocupa menos espacio en disco que esa misma línea copiada cien veces. lnfs. archfs. devfs. . esto es. ROMFS. sino que se almacenan en la memoria volátil. nntpfs. wikifs. (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 través de una red. la memoria RAM. cfs. Sin embargo al hablar de “archivos virtuales”las cosas son diferentes. Ejemplos: acme (Plan 9). El componente Timer permite configurar programaciones simples de producción de eventos y ejecutar el procesamiento asociado. procfs. swap. etc. cdfs. HFS+ es la variante moderna de HFS con soporte para una mayor capacidad de almacenamiento.-HFS+. COMPONENTES DE UN SISTEMA DE ARCHIVOS Los componentes del sistema de archivos y de programación permiten interactuar con los recursos del sistema de archivos y de directorio y provocar eventos en intervalos programados. mayor es el espacio en disco que consume dicho archivo.

es volátil y pierde su contenido en los f allos del sistema. y permanezcan en la lista para siempre. memoria. • Ofrecer mecanismos para que se comuniquen y sincronicen.Componentes de un sistema operativo Gestión de procesos Un proceso es simplemente. El SO es el responsable de: • Crear y destruir los procesos. baja por ejemplo. un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU. Gestión del almacenamiento secundario Un sistema de almacenamiento secundario es necesario. • Parar y reanudar los procesos. Una vez realizada la tarea se tacha. El SO es el responsable de: • Conocer qué partes de la memoria están siendo utilizadas y por quién. Este almacén de datos de rápido accesos es compartido por la CPU y los dispositivos de E/S. • Decidir qué procesos se cargarán en memoria cuando haya espacio disponible. Gestión de la memoria principal La Memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Para solucionar esto. se puede asignar alta prioridad a las tareas más antiguas. ya que la memoria principal (almacenamiento primario) es . La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta. Componentes del Sistema Operativo. archivos y dispositivos de E/S. media. • Asignar y reclamar espacio de memoria cuando sea necesario. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y después las de baja. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse.

EXT3. XFS. Verificar que los datos se guarden en orden El sistema de E/S Consiste en un sistema de almacenamiento temporal (caché). NTFS.volátil y además muy pequeña para almacenar todos los programas y datos. Realizar copias de seguridad de archivos. etc. Existen diferentes Sistemas de Archivos. existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. existen diferencias muy importantes. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de: Planificar los discos. Establecer la correspondencia entre archivos y unidades de almacenamiento. Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes. definidas por sus creadores. Ofrecer funciones para manipular archivos y directorios. existen los sistemas de archivos FAT. sin embargo. que se utilizan . Por ejemplo. Por ejemplo. El SO es responsable de: Construir y eliminar archivos y directorios. una interfaz de manejadores de dispositivos y otra para dispositivos concretos. Gestionar el espacio libre. textos. es decir. información de bases de datos. Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista. etc. Los archivos son colecciones de información relacionada. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S. FAT32. los sistemas de ficheros FAT32 y NTFS. Asignar el almacenamiento.

• Información del estado del sistema. siendo algunas de las tareas que realizan: • Manipulación y modificación de archivos. • Especificar los controles de seguridad a realizar. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información. sin embargo. • Soporte a lenguajes de programación. • Forzar el uso de estos mecanismos de protección. • Comunicaciones. Ofrecen un entorno útil para el desarrollo y ejecución de programas. Gestor de recursos Como gestor de recursos. Sistemas de protección Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema.fundamentalmente en sistemas operativos de Microsoft. El SO se encarga de: • Distinguir entre uso autorizado y no autorizado. Programas de sistema Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente. el Sistema Opera{tivo administra: . en un sistema NTFS el tamaño es considerablemente mayor. tienen una gran diferencia para un usuario que utilice una base de datos con bastante información ya que el tamaño máximo de un fichero con un Sistema de Archivos FAT32 está limitado a 4 gigabytes. Sistema de comunicaciones Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red.

La organización física del archivo en almacenamiento secundario depende de la estrategia de agrupación y de la estrategia de asignación de archivos. donde está alojado el microprocesador). ORGANIZACION LOGICA Y FISICA En esta parte vamos a usar el término organización de archivos para referirnos a la estructura lógica de los registros determinada por la manera en que se accede a ellos. Los procesos (o programas en ejecución). La mayor parte de las estructuras empleadas en los sistemas reales se encuadran en una de estas categorías o puede implementarse como una combinación de estas: <<<<<<< Pilas Archivos secuenciales Archivos Secuenciales indexados Archivos indexados Archivos directos o de dispersión 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. y en general todos los recursos del sistema. Para seleccionar una organización de archivos hay diversos criterios que son importantes: • • • • • Acceso Rápido para recuperar la información Fácil actualización Economía 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.La CPU (Unidad Central de Proceso. Los discos (o memoria secundaria). Los dispositivos de E/S (entrada y salida) La memoria principal (o de acceso directo). El número de alternativas de organización de archivos que se han implementado o propuesto es inmanejable. incluso para un libro dedicado a los sistemas de archivos. El acceso secuencial es a veces la única forma .

También puede ser el método de acceso elegido. Fuente Metodo de Acceso Secuencial Indexado: Método de acceso secuencial indexado. Otras Definiciones Creo Mas Mejores y Exactas ya que se Refiere al Sistema de Archivos. generalmente el primero de cada registro se conoce como el campo clave. para simplemente procesar una secuencia de datos en orden. se necesita una estructura que utilice múltiples índices. Todos los registros tienen el mismo tamaño. Para alcanzar esta flexibilidad. El orden secuencial sería el más comúnmente usado para el procesamiento por lotes y la impresión (número de cuenta. así. En algunas aplicaciones esta flexibilidad es deseable.de acceder a los datos. En este tipo de archivo. Los archivos secuenciales son típicamente utilizados en aplicaciones de proceso de lotes Y son óptimos para dichas aplicaciones si se procesan todos los registros. Se suelen utilizar dos tipos de índices. constan del mismo numero de campos de tamaño fijo en un orden particular. Un índice exhaustivo contiene una entrada para cada registro del archivo principal. Para las aplicaciones interactivas que incluyen peticiones o actualizaciones de registros individuales. Método común de acceso a disco que almacena datos en forma secuencial. solamente los valores de los campos se necesitan almacenarse. algunos registros no contendrán todos los campos. al tiempo que mantiene un índice de campos claves para todos los registros en el archivo para acceso directo. nombre.). Fuente Bibliografica Archivos Secuenciales La forma mas común de estructura de archivo es el archivo secuencial. por ejemplo en una cinta de cassette. un formato fijo es usado para los registros. Con registros de longitud variable. Como se conocen la longitud y la posición de cada campo. los valores de la clave para registros diferentes son siempre diferentes. El campo clave identifica unívocamente al registro. La organización secuencias de archivos es la única que es fácil de usar tanto en disco como en cinta. Otro índice parcial contendrá entradas a los registros donde este el campo de interés. uno para cada tipo de campo que pueda ser objeto de la búsqueda. etc. . Los archivos indexados son muy utilizados en aplicaciones donde es critica la oportunidad de la información y donde los datos son rara vez procesados de forma exhaustiva. el nombre del campo y longitud de cada campo son atributos de la estructura de archivos. Metodo de Acceso Indexado: Los archivos secuenciales indexados retienen la limitación del archivo secuencial: la eficacia en el procesamiento se limita al basado en un único campo del archivo. Un campo particular. Metodo de Acceso Hashed: Pendiente la definicion. Cuando es necesario buscar un registro basándose en algún otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. los archivos secuenciales ofrecen un rendimiento pobre.

Con registros de longitud variable. Dos características se añaden: un índice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento ( overflow ). En la estructura secuencial indexada mas simple. algunos registros no contendran todos los campos. Archivos Secuenciales indexados Un método popular para superar las desventajas de los archivos secuenciales es el del archivo secuencias indexado. Uno indice exhaustivo contiene una entrada par cada registro del archivo principal. en un orden secuencial simple de los registros. La busqueda continua en el archivo principal a partir de la posición indicada por el puntero. llamado archivo de registro (log file) o archivo de transacciones. El archivo secuencial indexado mantiene las caracteristicas básicas de los archivos secuenciales: los registros están organizados en una secuencia basada en un campo. se . Archivos Indexados Los archivos secuenciales indexados retienen la limitación del archivo secuencial: la eficacia en el procesamiento se limita al basado en un único campo del archivo. Se suelen utilizar dos tipos de índices. 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. el procedimiento para ubicar los nuevos registros en un archivo de pila separado. En algunas aplicaciones esta flexibilidad es deseable. pero esta intregrado de forma que los registros del archivo de desbordamiento se ubican en la dirección de un puntero desde su registro precedente. Cuando es necesario buscar un registro basándose en algún otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. es un archivo secuencial simple. Cada registro del archivo indice tiene dos campos: un campo clave. Periódicamente. que es el mismo que el campo clave del archivo principal y un puntero al archivo principal. El indice provee una capacidad de búsqueda para llegar rapidamente a las proximidades de un registro deseado. se necesita una estructura que utilice múltiples índices. La organización física del archivo en una cinta o disco se corresponde exactamente con la ubicación lógica del archivo. en este caso. Archivos Directos o de Dispersión (Hashed) Los archivos directos explotan la capacidad de los discos para acceder directamente a cualquier bloque de dirección conocida. uno para cada tipo de campo que pueda ser objeto de la búsqueda. Para alcanzar esta flexibilidad. Otro índice parcial contendrá entradas a los registros donde este el campo de interés. En este caso. El indice. se usa un solo nivel de indexacion. 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. Como en los archivos secuenciales y secuenciales indexados. El archivo de desbordamiento (overflow) es similar al archivo de registro usado en un archivo secuencial.Normalmente un archivo secuencial se almacena en bloques. se realiza una actualización por lotes que mezcla el archivo de registro con el archivo maestro para producir un nuevo archivo en secuencia correcta de claves.

donde cada sector es representado por un bit y si el sector es libre el bit es cero de lo contrario está asignado. Asignación ligada . * Contigua * Ligada * Indexada Asignación contigua Este método 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. y así sucesivamente hasta que se encuentre una marca indicando que ya no hay espacio libre. El sistema de archivos se ocupa primordialmente de administrar el espacio de almacenamiento secundario. se tiene por cada apuntador. El manejo del espacio libre en disco se lleva a cabo de la siguiente manera: * Vector de bits * Lista ligada (lista libre) * Por conteo (agrupación) Vector de bits El espacio libre en disco es frecuentemente implementado como un mapa de bits. Lista ligada Existe una cabecera en la que se tiene la dirección del primer sector vacio. sobre todo el espacio en disco. Sin embargo. tiene un apuntador al siguiente sector. por cada conjunto de sectores contiguos que estén vacios. Por conteo Aquí. Métodos de asignación de espacio en disco Un método de asignación de espacio en disco determina la manera en que un Sistema Operativo controla los lugares del disco ocupados por cada archivo de datos. un número de inicio y el tamaño del grupo de sectores vacios. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA 5. aquí no hay concepto de ordenamiento secuencial.6.requiere un campo clave en cada registro. ese sector a su vez.- MANEJO DE ESPACIO EN MEMORIA SECUNDARIA.

Gracias a un principio llamado cercanía de referencias. acoplados a una unidad central de procesamiento (CPU por su sigla en inglés. En cada uno de los bloques donde se encuentra un archivo hay un apuntador al siguiente bloque de la lista. El cual es un arreglo de direcciones de bloques de disco.En este método. la retención o almacenamiento de información. de modo que no haya tiempos de espera entre cálculo y cálculo. con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. En el directorio hay un apuntador al bloque de inicio y un apuntador al bloque final para cada archivo. más podrá utilizarse. • Se busca entonces contar con capacidad suficiente de memoria. Es uno de los componentes fundamentales de todas las computadoras modernas que. la memoria (también llamada almacenamiento) se refiere a parte de los componentes que forman parte de una computadora. • Como puede esperarse los tres factores compiten entre sí. cuanto más memoria haya disponible. La velocidad óptima para la memoria es la velocidad a la que el procesador puede trabajar. Las memorias de computadora proporcionan unas de las principales funciones de la computación moderna. Asignación indexada Cada archivo tiene su bloque índice. Las siguientes afirmaciones son válidas: 1. cada archivo es una lista ligada de bloques de disco. A mayor capacidad menor velocidad. para que sea factible construir un equipo accesible. usado desde los años 1940. utilizados para traer operandos o guardar resultados. La iésima entrada en el bloque índice apunta al i-ésimo bloque que conforma el archivo. Son dispositivos que retienen datos informáticos durante algún intervalo de tiempo. Modelo Jerarquico Memoria Secundaria Tanenbaum y Woodhull (1997) definen lo siguiente en su investigación: • La cuestión de la cantidad es simple. . es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida. central processing unit). En suma. el costo de la memoria no debe ser excesivo. implementa lo fundamental del modelo de computadora de Arquitectura de von Neumann. por lo que hay que encontrar un equilibrio. A menor tiempo de acceso mayor coste 2. A mayor capacidad mayor coste 3. Memoria (informática) En informática.

o un megabyte. La unidad de almacenamiento más común es el byte. La habilidad para almacenar las instrucciones que forman un programa de computadora y la información que manipulan las instrucciones es lo que hace versátiles a las computadoras diseñadas según la arquitectura de programas almacenados Una computadora digital representa toda la información usando el sistema binario. números. si se elimina el almacenamiento. o dígitos binarios. Por tanto. 1 Memoria (informática) Almacenamiento primario . para memorias de acceso aleatorio. Estas distinciones contemporáneas son de ayuda porque son fundamentales para la arquitectura de computadores en general. el espacio de almacenamiento y los dispositivos de entrada/salida. puede ser usado para editar una novela pequeña. imágenes. sonido y casi cualquier otra forma de información puede ser transformada en una sucesión de bits. una computadora con un espacio de almacenamiento de ocho millones de bits. Por ejemplo. Esto se explica en las siguientes secciones. Simplificando mucho. Además. Una determinada información puede ser manipulada por cualquier computadora cuyo espacio de almacenamiento es suficientemente grande como para que quepa el dato correspondiente o la representación binaria de la información. pero de naturaleza más permanente. se refiere a formas de almacenamiento masivo como discos ópticos y tipos de almacenamiento magnético como discos duros y otros tipos de almacenamiento más lentos que las memorias RAM. Se han inventado varias formas de almacenamiento basadas en diversos fenómenos naturales. en las que el término tradicional "almacenamiento" se usa como subtítulo por conveniencia. como se muestra en el diagrama. memoria suele referirse a una forma de almacenamiento de estado sólido conocido como memoria RAM (memoria de acceso aleatorio. cada uno de los cuales tiene un valor de 1 ó 0.En la actualidad. No existen ningún medio de almacenamiento de uso práctico universal y todas las formas de almacenamiento tienen sus desventajas. Propósitos del almacenamiento Los componentes fundamentales de las computadoras de propósito general son la CPU. se refleja una diferencia técnica importante y significativa entre memoria y dispositivos de almacenamiento masivo. cada uno con su propósito individual. igual a 8 bits. un sistema informático contiene varios tipos de almacenamiento. De forma similar. el aparato sería una simple calculadora en lugar de una computadora. Texto. y "almacenamiento secundario" para dispositivos de almacenamiento masivo. RAM por sus siglas en inglés random access memory) y otras veces se refiere a otras formas de almacenamiento rápido pero temporal. que se ha ido diluyendo por el uso histórico de los términos "almacenamiento primario" (a veces "almacenamiento principal").

• La memoria caché es un tipo especial de memoria interna usada en muchas CPU para mejorar su eficiencia o rendimiento. Comparada con los registros. la "caché secundaria" que es más grande y lenta. es el sistema más rápido de los distintos tipos de almacenamientos de la computadora. pero es mucho más lenta. En las computadoras modernas se usan memorias de acceso aleatorio basadas en electrónica del estado sólido. que está directamente conectada a la CPU a través de buses de direcciones. También es de uso común la memoria caché multi-nivel – la caché primaria" que es más pequeña. Técnicamente. El almacenamiento primario consiste en tres tipos de almacenamiento: • Los registros del procesador son internos de la CPU. Se puede transferir información muy rápidamente entre un registro del microprocesador y localizaciones del almacenamiento principal. Un disco duro es un ejemplo de almacenamiento secundario. aunque de mucha menor capacidad que la memoria principal. siendo transistores de conmutación integrados en el chip de silicio del microprocesador (CPU) que funcionan como "flip-flop" electrónicos. Esto ilustra cuan significativa es la diferencia entre la velocidad de las memorias de estado sólido y la velocidad de los dispositivos rotantes de almacenamiento magnético u óptico: los discos duros son del orden de un millón de veces más lentos que la memoria (primaria). Sin embargo. En cambio. la caché es ligeramente más lenta pero de mayor capacidad. La memoria secundaria también se llama "de almacenamiento masivo". es más rápida. Los dispositivos . • La memoria principal contiene los programas en ejecución y los datos con que operan. En las computadoras modernas. la memoria secundaria o de almacenamiento masivo tiene mayor capacidad que la memoria primaria.La memoria primaria está directamente conectada a la CPU de la computadora.(A esta utilización del almacenamiento secundario se le denomina memoria virtual). los discos duros suelen usarse como dispositivos de almacenamiento masivo. la mayoría 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. Parte de la información de la memoria principal se duplica en la memoria caché. Habitualmente. el tiempo para acceder al mismo tipo de información en una memoria de acceso aleatorio (RAM) se mide en mil-millonésimas de segundo (nanosegundos). rápida y cercana al dispositivo de procesamiento. pero más rápida y mucho más pequeña que la memoria principal. El tiempo necesario para acceder a un byte de información dado almacenado en un disco duro de platos magnéticos es de unas milésimas de segundo (milisegundos). Sin embargo. Almacenamiento secundario La memoria secundaria requiere que la computadora use sus canales de entrada/salida para acceder a la información y se utiliza para almacenamiento a largo plazo de información persistente. Debe estar presente para que la CPU funcione correctamente. datos y control.

ralentiza apreciablemente el funcionamiento de cualquier computadora. Por lo tanto. Esa ventaja es menos relevante hoy en día. incluyendo las unidades USB. Almacenamiento fuera de línea El almacenamiento fuera de línea es un sistema donde el medio de almacenamiento puede ser extraído fácilmente del dispositivo de almacenamiento. muchos sistemas operativos siguen implementándola. Aun así. la computación científica en grandes sistemas informáticos y en redes empresariales. Los dispositivos de almacenamiento fuera de línea usados en el pasado son cintas magnéticas en muchos tamaños y formatos diferentes. En computadoras modernas son de uso habitual para este propósito los disquetes. la memoria virtual resultaba mucho más barata que la memoria real. También hay discos duros USB que se pueden conectar en caliente. el uso de la memoria virtual. Almacenamiento de red . que es cerca de un millón de veces más lenta que memoria “verdadera”. La principal ventaja histórica de la memoria virtual es el precio. a pesar de provocar un funcionamiento significativamente más lento. 2 Memoria (informática) Almacenamiento terciario La memoria terciaria es un sistema en el que un brazo robótico montará (conectará) o desmontará (desconectará) un medio de almacenamiento masivo fuera de línea (véase el siguiente punto) según lo solicite el sistema operativo de la computadora.rotantes de almacenamiento óptico (unidades de CD y DVD) son incluso más lentos que los discos duros. aunque es probable que su velocidad de acceso mejore con los avances tecnológicos. y las baterías extraíbles de discos Winchester. Estos medios de almacenamiento suelen usarse para transporte y archivo de datos. Este tipo de memoria es algo que los usuarios de computadoras personales normales nunca ven de primera mano. discos ópticos y las memorias flash. La memoria terciaria se usa en el área del almacenamiento industrial. Muchos sistemas operativos implementan la memoria virtual usando términos como memoria virtual o "fichero de caché".

El almacenamiento de red es cualquier tipo de almacenamiento de computadora que incluye el hecho de acceder a la información a través de una red informática. 3 . terciarias y fuera de línea. ya que pierde información en la falta de energía eléctrica. secundario. fuera de línea se basa en la jerarquía de memoria o distancia desde la unidad central de proceso. • Las redes de computadoras son computadoras que no contienen dispositivos de almacenamiento secundario. como es el caso de la memoria ROM. • La memoria no volátil retendrá la información almacenada incluso si no recibe corriente eléctrica constantemente. La memoria volátil se suele usar sólo en memorias primarias. en el caso de almacenamientos de archivos en línea. una red de área extensa. Volatilidad de la información • La memoria volátil requiere energía constante para mantener la información almacenada. 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 través de una red de área local. Se usa para almacenamientos a largo plazo y. los documentos y otros datos son almacenados en un dispositivo de la red. Características de las memorias La división entre primario. se usa en memorias secundarias. internet. o leída y reescrita sin modificaciones. terciario. En su lugar. • La memoria dinámica es una memoria volátil que además requiere que periódicamente se refresque la información almacenada. Discutiblemente. el almacenamiento de red permite centralizar el control de información en una organización y reducir la duplicidad de la información. Hay otras formas de caracterizar a los distintos tipos de memoria. una red privada virtual o. La memoria RAM es una memoria volátil. por tanto.

También están las memorias inmutables. Las computadora modernas también usan habitualmente memorias de lectura/escritura como memoria secundaria. que se utilizan en memorias terciarias y fuera de línea. • Las memorias de escritura lenta y lectura rápida son memorias de lectura/escritura que permite que la información se reescriba múltiples veces pero con una velocidad de escritura mucho menor que la de lectura. Un ejemplo son los CD-ROMs. Un ejemplo son los CD-RW. • Acceso secuencial significa que acceder a una unidad de información tomará un intervalo de tiempo variable. o dar vueltas (esperando a que la posición adecuada aparezca debajo del cabezal de lectura/escritura en un medio que gira continuamente). Direccionamiento de la información . Una computadora sin algo de memoria de lectura/escritura como memoria principal sería inútil para muchas tareas. • La memorias de sólo lectura retienen la información almacenada en el momento de fabricarse y la memoria de escritura única (WORM) permite que la información se escriba una sola vez en algún momento tras la fabricación. normalmente pequeño. Habilidad para cambiar la información • Las memorias de lectura/escritura o memorias cambiables permiten que la información se reescriba en cualquier momento. El dispositivo puede necesitar buscar (posicionar correctamente el cabezal de lectura/escritura de un disco).Memoria (informática) Habilidad para acceder a información no contigua • Acceso aleatorio significa que se puede acceder a cualquier localización de la memoria en cualquier momento en el mismo intervalo de tiempo. dependiendo de la unidad de información que fue leída anteriormente.

como las utilizadas en la serie de computadoras IBM 370. la información se divide en Archivos informáticos de longitud variable y un fichero concreto se localiza en directorios y nombres de archivos "legible por humanos". • En las memorias de sistema de archivos. pero difícil de usar para los humanos. las memorias secundarias. La velocidad de los computadores se incrementó. terciarias y fuera de línea usan sistemas de archivos.000 aproximadamente y la capacidad de . cada unidad de información accesible individualmente en la memoria se selecciona con su dirección de memoria numérica. multiplicada por 100. El dispositivo subyacente sigue siendo de localización direccionable. La memoria de contenido direccionable pueden construirse usando software o hardware. A inicios de 1970 aparecen las memorias realizadas por semiconductores. la opción hardware es la opción más rápida y cara. En las computadoras modernas. cada unidad de información legible individualmente se selecciona con una valor hash o un identificador corto sin relación con la dirección de memoria en la que se almacena la información. • En las memorias de contenido direccionable (content-addressable memory). que se leen internamente por programas de computadora ya que la localización direccionable es muy eficiente.• En la memoria de localización direccionable. la memoria de localización direccionable se suele limitar a memorias primarias. En las computadora modernas. Los primeros programas de ajedrez funcionaban en máquinas que utilizaban memorias de base magnética. pero el sistema operativo de la computadora proporciona la abstracción del sistema de archivos para que la operación sea más entendible. Capacidad de memoria Memorias de mayor capacidad son el resultado de la rápida evolución en tecnología de materiales semiconductores.

unidades de disquete. no es un abuso pensar que la capacidad de memoria continuará creciendo de manera impresionante. • Macrocomputadoras: son aquellas que dentro de su configuración básica contienen unidades que proveen de capacidad masiva de información. etc. • Minicomputadoras: se caracterizan por tener una configuración básica regular que puede estar compuesta por un monitor. Su capacidad de memoria varía de 16 a 256 kbytes. Su capacidad de memoria varía desde 256 a 512 kbytes. El origen de las microcomputadoras tuvo lugar en los Estados Unidos a partir de la comercialización de los primeros microprocesadores (INTEL 8008. 8080). etc. las cuales mantendrán la información en forma permanente. disco. Este hecho es particularmente importante para los programas que utilizan tablas de transposición: 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. también puede tener varios megabytes o hasta gigabytes según las necesidades de la empresa. • Microcomputadores y computadoras personales: con el avance de la microelectrónica en la década de los 70 resultaba posible incluir todos los componente del procesador central de una computadora en un solo circuito integrado llamado microprocesador. En la década de los 80 comenzó la . terminales (monitores).memoria creció en una proporción similar. Memorias de mayor capacidad podrán ser utilizadas por programas con tablas de Hash de mayor envergadura. impresora. 4 Memoria (informática) Se espera que la capacidad de procesadores siga aumentando en los próximos años. Ésta fue la base de creación de unas computadoras a las que se les llamó microcomputadoras.

usado para memoria fuera de línea. El ordenador personal ha pasado por varias transformaciones y mejoras que se conocen como XT(Tecnología Extendida). el almacenamiento magnético es de acceso secuencial y debe buscar. Como el cabezal de lectura/escritura solo cubre una parte de la superficie. tenía características interesantes que hacían más amplio su campo de operaciones. Cinta magnética. dispositivos y medios Memorias magnéticas Las memorias magnéticas usan diferentes patrones de magnetización sobre una superficie cubierta con una capa magnetizada para almacenar información. usado para memoria secundario. usada para memoria terciaria y fuera de línea. Las memorias magnéticas son no volátiles. dar vueltas o las dos cosas. Esta máquina. la superficie magnética será de alguno de estos tipos: • • • • Disco magnético. En computadoras modernas. En las primeras computadoras.verdadera explosión masiva.. Se llega a la información usando uno o más cabezales de lectura/escritura. Tecnologías. de los ordenadores personales (Personal Computer PC) de IBM. el almacenamiento magnético se usaba también como memoria principal en forma de . AT(Tecnología Avanzada) y PS/2. basada en el microprocesador INTEL 8008. Disquete. sobre todo porque su nuevo sistema operativo estandarizado (MS-DOS. la hacían más atractiva y fácil de usar.. Disco duro. Microsoft Disk Operating Sistem) y una mejor resolución óptica.

Los discos ópticos son no volátil y de acceso secuencial. la memoria principal consiste casi exclusivamente en memoria de semiconductor volátil y dinámica.memoria de tambor. Memorias de disco óptico Las memorias en disco óptico almacenan información usando agujeros minúsculos grabados con un láser en la superficie de un disco circular. Dicho crecimiento se ha dado. Existen memorias de semiconductor de ambos tipos: volátiles y no volátiles. En las computadoras modernas. principalmente en el campo de las memorias fuera de línea en 5 Memoria (informática) computadoras domésticas. Los siguientes formatos son de uso común: . La información se lee iluminando la superficie con un diodo láser y observando la reflexión. memoria de Twistor o memoria burbuja. también conocida como memoria dinámica de acceso aleatorio o más comúnmente RAM. Además. las cintas magnéticas se solían usar como memoria secundaria. memoria película delgada. Las memorias de semiconductor no volátiles se están usando también como memorias secundarias en varios dispositivos de electrónica avanzada y computadoras especializadas y no especializadas. a diferencia de hoy. Con el cambio de siglo. Memoria de semiconductor La memoria de semiconductor usa circuitos integrados basados en semiconductores para almacenar información. memoria de núcleo. memoria en hilera de núcleo. su acrónimo inglés. Un chip de memoria de semiconductor puede contener millones de minúsculos transistores o condensadores. ha habido un crecimiento constante en el uso de un nuevo tipo de memoria de semiconductor no volátil llamado memoria flash.

La información se lee ópticamente y se escribe combinando métodos magnéticos y ópticos. vídeo. • CD-R. DVD-RAM: Memoria de escritura lenta y lectura rápida usada como memoria terciaria y fuera de línea. DVD: Memorias de simplemente solo lectura. Sony o Phillips. Se usa como memoria terciaria y fuera de línea. CD-ROM. Para su desarrollo se creó la BDA. • Blu-ray: Formato de disco óptico pensado para almacenar vídeo de alta calidad y datos. DVD+RW. DVD-R. usada para distribución masiva de información digital (música. entre otros. una de las precursoras de IBM. IBM desarrolló la tecnología . DVD+R: Memorias de escritura única usada como memoria terciaria y fuera de línea. conocido como telar de Jacquard. • CD-RW. DVD-RW. • 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 información se almacena en el estado magnético de una superficie ferromagnética. programas informáticos). Otros métodos iniciales Las tarjetas perforadas fueron utilizados por primera vez por Basile Bouchon para el control de telares textiles en Francia. de escritura lenta y lectura rápida. Las memorias de discos magneto ópticos son de tipo no volátiles.[1] En 1801 el sistema de Bouchon fue perfeccionado por Joseph Marie Jacquard. de acceso secuencial.• CD. en la que se encuentran. quien desarrolló un telar automático.[2] Herman Hollerith desarrolló la tecnología de procesamiento de datos de tarjetas perforadas para el censo de Estados Unidos de 1890 y posteriormente fundó la Tabulating Machine Company.

los tubos Williams usaban un tubo de rayos catódicos y los tubos Selectrón usaban un gran tubo de vacío. 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. Durante los años 1960. las tarjetas perforadas fueron gradualmente Tarjetas perforadas en un telar de Jacquard. reemplazadas por las cintas magnéticas. La información se grababa en las tarjetas perforando agujeros en el papel o la tarjeta. 6 Memoria (informática) Para almacenar información. de acceso aleatorio podría ser usada como memoria primaria. ciclo secuencial de lectura/escritura. Se usaba como memoria principal. Dicha información se lee observando la resistencia eléctrica variable del material.de la tarjeta perforada como una potente herramienta para el procesamiento de datos empresariales y produjo una línea extensiva de máquinas de registro que utilizaban papel perforado para el almacenamiento de datos y su procesado automático. aunque su uso fue muy común hasta medidados de los años 1970 con la aparición de los discos magnéticos. secundaria y . En el año 1950. Otros métodos propuestos La memoria de cambio de fase usa las fases de un material de cambio de fase para almacenar información. La memoria de línea de retardo era una memoria dinámica volátil. La lectura se realizaba por sensores eléctricos (más tarde ópticos) donde una localización particular podía estar agujereada o no. La memoria de línea de retardo usaba ondas sonoras en una sustancia como podía ser el Mercurio para guardar información. La memoria de cambio de fase sería una memoria de lectura/escritura no volátil. las tarjetas IBM y las unidades máquinas de registro IBM se habían vuelto indispensables en la industria y el gobierno estadounidense.

La destrucción de la información.MÉCANISMOS DE RECUPERACION EN CASO DE FALLAS.[cita requerida] 5. Puede ser usada tanto como memoria secundaria como fuera de línea. Recientemente se ha propuesto utilizar el spin de un electrón como memoria. a diferencia de las memorias de discos ópticos.8. ya sea accidental o intencional. La memoria holográfica podría ser no volátil. es una realidad y tiene distintas causas: • • • • • Fallas de hardware y de software Fenómenos meteorológicos atmosféricos Fallas en el suministro de energía Incendios e inundaciones Robos. vandalismo (incluso terrorismo) Esta posible destrucción de la información debe ser tenida en cuenta por: • Los sistemas operativos en general • Los sistemas de archivos en particular Una técnica muy usada para asegurar la disponibilidad de los datos es realizar respaldos periódicos: . Debido a que los archivos se mantienen tanto en memoria principal como en el disco. de acceso secuencial y tanto de escritura única como de lectura/escritura. que están limitadas a un pequeño número de superficies en capas. Se ha demostrado que es posible desarrollar un circuito electrónico que lea el spin del electrón y lo convierta en una señal eléctrica. debemos asegurarnos de que un fallo del sistema no de por resultado la perdida de datos o inconsistencia en los mismos. Las memorias holográficas pueden utilizar todo el volumen del medio de almacenamiento.. La memoria holográfica almacena ópticamente la información dentro de cristales o fotopolímeros.fuera de línea. La memoria molecular puede ser especialmente interesante como memoria principal. La memoria molecular almacena la información en polímeros que pueden almacenar puntas de carga eléctrica.

Cada objeto se referencia por un nombre y tiene habilitadas un conjunto de operaciones sobre él. Es posible que un objeto se encuentre en varios dominios con “distintos” derechos en cada dominio. Mecanismos de Protección Dominios de Protección Muchos objetos del sistema necesitan protección. la caída total o parcial del sistema se puede subsanar en parte si hay puntos de restauración del sistema (chkpt). segmentos de memoria. bases de datos. unidades de disco. un proceso del sistema efectúa el respaldo de los archivos marcados. Un derecho es el permiso para realizar alguna de las operaciones. En cualquier caso. • Cada objeto tiene cierto conjunto de derechos. Un dominio es un conjunto de parejas (objeto. Se debe tener presente que es muy difícil garantizar una seguridad absoluta de los archivos. impresoras. Un proceso se ejecuta en alguno de los dominios de protección: • Existe una colección de objetos a los que puede tener acceso. terminales. Esta posibilidad aumenta la disponibilidad de recuperación en caso de fallos. puede reconstruirse todo el trabajo perdido si el disco de reserva no se dañó también También existe la posibilidad del respaldo incremental: • Durante una sesión de trabajo los archivos modificados quedan marcados. La inclusión de equipos de test en el sistema es esencial para mantener esta capacidad de monitorización. tales como la cpu. El método correcto de manejar fallos consiste básicamente en detectarlos a tiempo y de forma correcta. copiándolas en otro disco: • Genera una redundancia que puede ser costosa • En caso de fallas en el disco principal. Todas las actualizaciones realizadas luego del último respaldo pueden perderse Otra técnica es pasar todas las transacciones a un archivo. • Cuando un usuario se retira del sistema (deja de trabajar). o Un subconjunto de las operaciones que se pueden llevar a cabo en él. archivos. derechos): • Cada pareja determina: o Un objeto. .1. Hacer con regularidad una o más copias de los archivos y colocarlas en lugar seguro 2. etc. procesos.

grabación (w). w. 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. Una forma de implementar las ACL consiste en: • Asignar tres bits (r. por ej. O. Una forma en la que el S. ejecución (x)). O.Los procesos pueden alternar entre los dominios durante la ejecución. . escribir. lleva un registro de los objetos que pertenecen a cada dominio es mediante una matriz : • Los renglones son los dominios. O. para: o El propietario. los dominios se llaman anillos. el grupo del propietario y los demás usuarios. x) para cada archivo. Listas Para Control de Acceso Las “matrices de protección” son muy grandes y con muchos lugares vacíos Desperdician espacio de almacenamiento. o La forma de dicho acceso (ej: lectura ®. La lista de objetos se denomina lista de posibilidades y los elementos individuales se llaman posibilidades. Una llamada al S. provoca una alternancia de dominio. Cada posibilidad tiene: • Un campo tipo: o Indica el tipo del objeto. • Las columnas son los objetos. ejecutar. • Se le indican las operaciones permitidas en cada uno. • Permitir que el propietario de cada objeto pueda modificar su ACL en cualquier momento: o Permite prohibir accesos antes permitidos. • Esto define su dominio. • Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio. Posibilidades La matriz de protección también puede dividirse por renglones Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso.: leer. • Existen métodos prácticos que almacenan solo los elementos no vacíos por filas o por columnas. En algunos S.

• Un campo derechos: o Mapa de bits que indica las operaciones básicas permitidas en este tipo de objeto. • Un campo objeto: o Apuntador al propio objeto (por ej.: su número de nodo-i).

6.

proteccion y seguridad

Los mecanismos de protección proporcionan un acceso controlado limitando los tipos de acceso a archivos que los diferentes usuarios pueden efectuar. También se requiere protección para asegurar que sólo los procesos que hayan obtenido la autorización debida del sistema operativo puedan operar no sólo con los archivos sino también con los segmentos de memoria, UCP y otros recursos. La protección se proporciona con un mecanismo que controla el acceso de los programas, proceso o usuarios a los recursos definidos por el sistema que se impondrán, y hacer cumplir las restricciones. El sistema de seguridad impide el acceso no autorizado a un sistema, que podría dar pie a la destrucción o alteración mal intencionada de los datos. La seguridad se encarga de validar a los usuarios del sistema para proteger la integridad de la información almacenada en el sistema, así como los recursos físicos del sistema de computación.

6.1

concepto y objetivos de proteccion

La protección es un mecanismo control de acceso de los programas, procesos o usuarios al sistema o recursos. Hay importantes razones para proveer protección. La más 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 políticas 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 protección proveen maneras de distinguir entre uso autorizado y desautorizado. Objetivos de la Protección • Inicialmente protección del SO frente a usuarios poco confiables. • Protección: control para que cada componente activo de un proceso sólo pueda acceder a los recursos especificados, y sólo en forma congruente con la política establecida. • La mejora de la protección implica también una mejora de la seguridad. • Las políticas de uso se establecen:

o Por el hardware. o Por el administrador / SO. o Por el usuario propietario del recurso. • Principio de separación entre mecanismo y política: a la protección. o Política es el conjunto de decisiones que se toman para especificar cómo se usan esos elementos de protección. • La política puede variar o dependiendo de la aplicación, o a lo largo del tiempo. • La protección no sólo es cuestión del administrador, sino también del usuario. 6.2 Funciones del sistema de proteccion

FUNCIONES DE UN SISTEMA DE PROTECCIÓN. Dado que los sistemas de computo se han venido haciendo cada vez más sofisticados en sus aplicaciones, la necesidad de proteger su integridad, también ha crecido. Los aspectos principales de protección en un Sistema Operativo son: 1. Protección de los procesos del sistema contra los procesos de usuario. 2. Protección de los procesos de usuario contra los de otros procesos de usuario. 3. Protección de Memoria. 4. Protección de los dispositivos. 6.3 Implantacion de matrices de acceso

¿Qué es el Dominio de Protección? 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 ejecución. Los segmentos de memoria se pueden leer y escribir. Un archivo puede ser leído, escrito, ejecutado y borrado. 6.4 Proteccion basada en el lenguaje

La protección que se ofrece en los sistemas de computación existentes casi siempre se ha logrado con la ayuda del núcleo de un sistema operativo, que actúa como agente de seguridad que

inspecciona y valida cada intento por acceder a un recurso protegido. Puesto que la validación de todos los accesos puede dar pie a un gasto extra considerable, debemos apoyarla con hardware para reducir el costo de cada validación o bien debemos aceptar que el diseñador del sistema podría inclinarse por sacrificar los objetivos de la protección. Es difícil satisfacer todos estos objetivos si los mecanismos de soporte con que se cuenta restringen la flexibilidad para implementar diversas políticas de protección. A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el usuario, lo objetivos de la protección se han vuelto mucho más refinados. En esta refinación observamos que los diseñadores de los sistemas de protección se han apoyado mucho en ideas que se originaron en los lenguajes de programación y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la identidad de un recurso al cual se intenta acceder, sino también de la naturaleza funcional de ese acceso. En los sistemas de protección más nuevos, el interés en la función que se invocará se extiende más allá de un conjunto de funciones definidas por el sistema, como los métodos de acceso a archivos estándar, para incluir funciones que también podrían ser definidas por el usuario. Las políticas para el uso de recursos también podrían variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por estas razones, la protección ya no puede considerarse como un asunto que sólo concierne al diseñador de un sistema operativo; también debe estar disponible como herramienta que el diseñador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicación contra intervenciones o errores. Aquí es donde los lenguajes de programación entran en escena. Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una declaración acerca del recurso. Este tipo de declaración se puede integrar en un lenguaje mediante una extensión de su mecanismo de tipificación. Si se declara la protección junto con la tipificación de los datos, el diseñado de cada subsistema puede especificar sus necesidades de protección así debería darse directamente durante la redacción del programa, y en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene varias ventajas importantes: 1. Las necesidades de protección se declaran de forma sencilla en vez de programarse como una secuencia de llamadas a procedimientos de un sistema operativo. 2. Las necesidades de protección pueden expresarse independientemente de los recursos que ofrezca un sistema operativo en particular. 3. El diseñador de un subsistema no tiene que proporcionar los mecanismos para hacer cumplir la protección. 4. Una notación declarativa es natural porque los privilegios de acceso están íntimamente relacionados con el concepto lingüístico de tipo de datos. Hay diversas técnicas que una implementación de lenguaje de programación puede utilizar para hacer cumplir la protección, pero cualquiera de ellas deberá depender hasta cierto punto del grado de soporte de una máquina subyacente y su sistema operativo. ¿Qué ventajas relativas tiene entonces el cumplimiento basado exclusivamente en un núcleo, en comparación con el cumplimiento forzado en gran medida por un compilador?

informaciones tales como notificaciones de propiedad intelectual y datos comerciales estratégicos son también almacenados. crímenes y espionajes o sabotajes. sino también considerar el entorno externo en el que el sistema opera. destrucción o alteración mal intencionada. de la seguridad de los archivos desde los que se carga el programa. ataques. La información almacenada en el sistema. 6. En la medida en que se requiera soporte de software. y la introducción accidental de inconsistencia. en última instancia.5 Concepto de seguridad La seguridad está definida en el diccionario como el conjunto de medidas tomadas para protegerse contra robos. tienen que protegerse contra acceso no autorizado. Entre ellos se incluyen diseños de ventas. que el que ofrece la generación de código de verificación de protección por un compilador. En síntesis. no problemas del sistema operativo. En un esquema apoyado por compilador. La protección interna no es útil si la consola del operador está al alcance de personal no autorizado. Entre ellos se incluyen registros sobre individuos. la seguridad depende de lo correcto que sea el traductor. Más recientemente. o si los archivos se pueden sacar simplemente del sistema de computación y llevarse a un sistema sin protección. el cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento del acceso estático fuera de línea en el momento de la compilación. Con un lenguaje de programación. La seguridad implica la cualidad o estado de estar seguro. contratos legales y muchos otros. así como los recursos físicos del sistema de computación.• Eficiencia: Se logra la eficiencia máxima cuando hardware apoya directamente el cumplimiento de la protección. • Flexibilidad: Hay límites a la flexibilidad de un núcleo de protección para implementar una política definida por el usuario. es decir. Grandes cantidades de datos vitales sensibles se están confiando y almacenado cada vez más en computadores. Grandes transacciones monetarias tienen lugar diariamente en forma de transferencia electrónicas de fondos. de algún mecanismo subyacente de gestión de almacenamiento que proteja los segmentos desde los cuales se ejecuta el código compilador y. procesados y diseminados mediante computadores. El uso creciente y la confianza en los computadores en todo el mundo ha hecho surgir una preocupación legítima con respecto a la seguridad informática. no solo requiere un sistema de protección apropiado.• Seguridad: La obligación del cumplimiento por un núcleo ofrece un mayor grado de seguridad del sistema de protección mismo. gubernamentales. se puede declarar la política de protección y hacerse cumplir según sea necesario en una implementación. Estos problemas de seguridad son esencialmente de administración. militares e incluso en los hogares. la especificación de la protección en un lenguaje de programación permite describir un alto nivel de políticas de asignación y uso de recursos. . aunque podría proporcionar recursos suficientes para que el sistema haga cumplir sus propias políticas. la evitación de exposiciones a situaciones de peligro y la actuación para quedar a cubierto frente a contingencias adversas. La seguridad. El uso de los computadores ha extendido en ambientes comerciales. negocios y diferentes registros públicos y secretos gubernamentales y militares.

Nivel Aes el Sistemas de seguridad certificados para acceder a este nivel. Nivel B es el Control de acceso obligatorio en este nivel.es decir dos tipos: 1. que tienen privilegios sobre los mismos. 2. Nivel D es el Sistemas con protección mínima o nula no pasan las pruebas de seguridad mínima. como Unix. MS-DOS y Windows 3. Entonces esto significa que un objeto puede estar disponible para lectura. o usuarios. Diseño verificado. Linux o Windows NT se clasifican en este nivel. Y el dominio de seguridad. que deben existir obligatoriamente. Etiqueta de seguridad obligatoria. . En esta clasificación especifica. Es decir que son tres y son: 1.7 de tarea 6. Desarrollo controlado. Nivel C a la Capacidad discrecional para proteger recursos.8 cifrado Validacion y amenazas al sistema Concepto de Cifrado. Protección estructurada. Puesto que están pensados para un sistema mono proceso y mono usuario.6.es decir dos son: 1. 6. Control de acceso individualizado. escritura o cualquier otra operación. Esto significa que todo objeto controlado debe tener protección sea del tipo que sea. 1 son sistemas de nivel d. 2. 2. se describen estos niveles de seguridad y las características de cada uno. 3. Y entonces casi todos los sistemas operativos comerciales de propósito general. Control de acceso por dominios.6 Clasificacion de la seguridad **Clasificación de seguridad**-Es decir que la clasificación de los sistemas de computación según sus requerimientos de la seguridad ha sido ampliamente discutida de la seguridad del sistema. no proporcionan ningún tipo de control de acceso ni de separación de recursos. los controles de acceso no son discrecionales de los usuarios o los dueños de los recursos. c y d… a continuación. hay cuatro niveles de seguridad: a. La aplicación de los mecanismos de protección depende del usuario. b. la política de seguridad y los mecanismos de protección del sistema deben ser verificados y certificados por un organismo autorizado para ello.

• La sustitución homófona hace posible que cada una de las letras del mensaje del texto plano se corresponda con un posible grupo de caracteres distintos. Existen varios tipos de criptosistemas de sustitución: • La sustitución monoalfabética consiste en reemplazar cada una de las letras del mensaje por otra letra del alfabeto. El algoritmo más simple (como un OR exclusivo) puede . El Cifrado Simétrico. Por ejemplo. Cifrado de sustitución El cifrado de sustitución consiste en reemplazar una o más entidades (generalmente letras) de un mensaje por una o más entidades diferentes. El cifrado simétrico (también conocido como cifrado de clave privada o cifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado. por ejemplo. a su código ASCII. si realiza una compra a través de Internet. Cifrado de Transposición El método de cifrado por transposición consiste en reordenar datos para cifrarlos a fin de hacerlos ininteligibles. El cifrado consiste en aplicar una operación (un algoritmo) a los datos que se desea cifrar utilizando la clave privada para hacerlos ininteligibles. la información de la transacción (como su dirección. Use el cifrado cuando desee un alto nivel de protección de la información. Métodos y Técnicas de Cifrado. la mitad de 26. reordenar los datos geométricamente para hacerlos visualmente inutilizables. Cifrado ROT 13 El caso específico del cifrado César donde la clave de cifrado es N (la 13º letra del alfabeto) se denomina ROT 13? (se eligió el número 13. de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo.El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido. número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. El principio de cifrado se basa en la adición de un valor constante a todos los caracteres de un mensaje o. • La sustitución polialfabética consiste en utilizar una serie de cifrados monoalfabéticos que son re-utilizados periódicamente. más precisamente. Esto puede significar. Cifrado César Este código de cifrado es uno de los más antiguos ya que su uso se remonta a Julio César. para que sea posible cifrar y descifrar fácilmente mensajes textuales). • La sustitución poligráfica consiste en reemplazar un grupo de caracteres en un mensaje por otro grupo de caracteres.

Los usuarios intercambian esta clave pública mediante un canal no seguro. A partir de esta clave. En un criptosistema asimétrico (o criptosistema de clave pública). automáticamente se deduce un algoritmo (la clave pública). El Cifrado Asimétrico.lograr que un sistema prácticamente a prueba de falsificaciones (asumiendo que la seguridad absoluta no existe). En un sistema de cifrado con clave pública. • Una clave secreta para el descifrado. las claves se dan en pares: • Una clave pública para el cifrado. . los usuarios eligen una clave aleatoria que sólo ellos conocen (ésta es la clave privada). El cifrado asimétrico (también conocido como cifrado con clave pública).

escritura o cualquier otra operación.Nivel C a la Capacidad discrecional para proteger recursos. como Unix. número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. Nivel B es el Control de acceso obligatorio en este nivel. Nivel Aes el Sistemas de seguridad certificados para acceder a este nivel. 2. Control de acceso individualizado. . La aplicación de los mecanismos de protección depende del usuario. Es decir que son tres y son: 1. Etiqueta de seguridad obligatoria. los controles de acceso no son discrecionales de los usuarios o los dueños de los recursos. Desarrollo controlado.es decir dos tipos: 1. Cifrado de sustitución El cifrado de sustitución consiste en reemplazar una o más entidades (generalmente letras) de un mensaje por una o más entidades diferentes. que tienen privilegios sobre los mismos. 6. la política de seguridad y los mecanismos de protección del sistema deben ser verificados y certificados por un organismo autorizado para ello. Protección estructurada. Por ejemplo. Control de acceso por dominios. Use el cifrado cuando desee un alto nivel de protección de la información. 2.7 Validacion y amenazas al sistema de tarea 6. Métodos y Técnicas de Cifrado. la información de la transacción (como su dirección. Entonces esto significa que un objeto puede estar disponible para lectura. Esto significa que todo objeto controlado debe tener protección sea del tipo que sea. que deben existir obligatoriamente. Linux o Windows NT se clasifican en este nivel. o usuarios. 3. si realiza una compra a través de Internet.8 cifrado Concepto de Cifrado. El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido.es decir dos son: 1. Diseño verificado. Y entonces casi todos los sistemas operativos comerciales de propósito general. Y el dominio de seguridad. de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para descodificarlo. 2.

El principio de cifrado se basa en la adición de un valor constante a todos los caracteres de un mensaje o. Cifrado de Transposición El método de cifrado por transposición consiste en reordenar datos para cifrarlos a fin de hacerlos ininteligibles. por ejemplo. la mitad de 26. El cifrado asimétrico (también conocido como cifrado con clave pública). El Cifrado Asimétrico. a su código ASCII. El cifrado consiste en aplicar una operación (un algoritmo) a los datos que se desea cifrar utilizando la clave privada para hacerlos ininteligibles. • Una clave secreta para el descifrado. para que sea posible cifrar y descifrar fácilmente mensajes textuales). • La sustitución poligráfica consiste en reemplazar un grupo de caracteres en un mensaje por otro grupo de caracteres. El cifrado simétrico (también conocido como cifrado de clave privada o cifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado. más precisamente. En un criptosistema asimétrico (o criptosistema de clave pública). • La sustitución polialfabética consiste en utilizar una serie de cifrados monoalfabéticos que son re-utilizados periódicamente. El Cifrado Simétrico.Existen varios tipos de criptosistemas de sustitución: • La sustitución monoalfabética consiste en reemplazar cada una de las letras del mensaje por otra letra del alfabeto. . reordenar los datos geométricamente para hacerlos visualmente inutilizables. las claves se dan en pares: • Una clave pública para el cifrado. Cifrado ROT 13 El caso específico del cifrado César donde la clave de cifrado es N (la 13º letra del alfabeto) se denomina ROT 13? (se eligió el número 13. El algoritmo más simple (como un OR exclusivo) puede lograr que un sistema prácticamente a prueba de falsificaciones (asumiendo que la seguridad absoluta no existe). • La sustitución homófona hace posible que cada una de las letras del mensaje del texto plano se corresponda con un posible grupo de caracteres distintos. Cifrado César Este código de cifrado es uno de los más antiguos ya que su uso se remonta a Julio César. Esto puede significar.

los usuarios eligen una clave aleatoria que sólo ellos conocen (ésta es la clave privada). . A partir de esta clave. Los usuarios intercambian esta clave pública mediante un canal no seguro.En un sistema de cifrado con clave pública. automáticamente se deduce un algoritmo (la clave pública).

Sign up to vote on this title
UsefulNot useful