Você está na página 1de 50

Unidad I Introduccin a los sistemas operativos. 1.1.- Definicin y concepto de los sistemas operativos. 1.2.

- Caractersticas de los sistemas operativos. 1.3.- Clasificacin de los sistemas operativos. 1.4.- Historia y desarrollo de los sistemas operativos. Unidad II Estructura del sistema. 2.1.- Metodologa del diseo. 2.2.- Ncleo o Kernel y niveles de un sistema operativo. 2.3.- Programacin de entrada y salida. 2.4.- Interrupciones del procesador. Unidad III Administracin de procesos. 3.1.- Concepto de procesos. 3.2.- Concurrencia y secuenciabilidad. 3.3.- Regiones crticas. 3.4.- Exclusin mutua. 3.5.- Sincronizacin o semforos. Unidad V Control de procesos y recursos. 5.1.- Planificacin. 5.2.- Planificadores. 5.3.- Algoritmo de planificacin FIFO. 5.4.- El trabajo mas corto primero. 5.5.- Planificacin por prioridad. 5.6.- Round-Robin. 5.7.- Mtodos de Asignacin. 5.8.- Introduccin y procesos de E/S. 5.9.- Despachador.

INTRODUCCIN: Sin el software una computadora es en esencia una masa metlica sin utilidad. Con el software, una computadora puede almacenar, procesar y recuperar informacin, encontrar errores de ortografa e intervenir en muchas otras valiosas actividades para ganar el sustento. El software para computadoras puede clasificarse en general, en 2 clases: los programas de sistema, que controlan la operacin de la computadora en s y los programas de aplicacin, los cuales resuelven problemas para sus usuarios. El programa fundamental de todos los programas de sistema, es el Sistema Operativo, que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicacin. Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware de un computador y su propsito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. El objetivo principal de un Sistema Operativo es, entonces, lograr que el Sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. Esta pagina fue elaborada con el fin de brindar informacin acerca de los sistemas operativos, debido a que el auge de la INTERNET cada da crece ms, y se considera que esta informacin es de gran ayuda para prximas generaciones. 1.1 Concepto y definicin de Sistemas Operativos.

Un Sistema Operativo es una parte importante de cualquier sistema de computacin. Un sistema de computacin puede dividirse en cuatro componentes: el hardware, el Sistema Operativo, los programas de aplicacin y los usuarios. El hardware (Unidad Central de Procesamiento (UCP), memoria y dispositivos de entrada/salida (E/S)) proporciona los recursos de computacin bsicos. Los programas de aplicacin (compiladores, sistemas de bases de datos, juegos de video y programas para negocios) definen la forma en que estos recursos se emplean para resolver los problemas de computacin de los usuarios.

Figura. Algunos recursos que administra el Sistema Operativo

Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definicin exacta, es decir una que sea estndar; a continuacin se presentan algunas: 1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cmputo"; los sistemas operativos ponen dicha capacidad de cmputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento. 2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador ;adems de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicacin y los datos. 3.- Un Sistema Operativo es un programa que acta como intermediario entre el usuario y el hardware del computador y su propsito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computacin se use de manera cmoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecucin de programas de aplicacin y acta como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema. En resumen, se podra decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son: Gestionar el hardware.- Se refiere al hecho de administrar de una forma ms eficiente los recursos de la mquina. Facilitar el trabajo al usuario.-Permite una comunicacin con los dispositivos de la mquina.

El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de cdigo que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicacin y software variado.

1.2 Caractersticas de los Sistemas Operativos.

En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas: Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora.

Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible.

Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El Sistema Operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos perifricos, cuando el usuario as lo requiera.

Organizar datos para acceso rpido y seguro. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin y uso de las redes de computadoras. Procesamiento por bytes de flujo a travs del bus de datos. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. Tcnicas de recuperacin de errores.

Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informndoles si esa aplicacin esta siendo ocupada por otro usuario. Generacin de estadsticas. Permite que se puedan compartir el hardware y los datos entre los usuarios.

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

1.3 Clasificacin de los sistemas operativos. Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas: Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecucin de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento cientfico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento acadmico. Algunas otras caractersticas con que cuentan los Sistemas Operativos por lotes son: Requiere que el programa, datos y rdenes al sistema sean remitidos todos juntos en forma de lote. Permiten poca o ninguna interaccin usuario/programa en ejecucin. Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios. No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea. Conveniente para programas de largos tiempos de ejecucin (ej, anlisis estadsticos, nminas de personal, etc.). Se encuentra en muchos computadores personales combinados con procesamiento serial. Planificacin del procesador sencilla, tpicamente procesados en orden de llegada. Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso.

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

ramo automovilstico y de la electrnica de consumo, las aplicaciones de tiempo real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los siguientes: Control de trenes. Telecomunicaciones. Sistemas de fabricacin integrada. Produccin y distribucin de energa elctrica. Control de edificios. Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas: Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sistema computacional, en breve tiempo o dentro de ciertos plazos. Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc. Objetivo es proporcionar rpidos tiempos de respuesta. Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. Proceso de mayor prioridad expropia recursos. Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria. Poblacin de procesos esttica en gran medida. Poco movimiento de programas entre almacenamiento secundario y memoria. Gestin de archivos se orienta ms a velocidad de acceso que a utilizacin eficiente del recurso.

Sistemas Operativos de multiprogramacin (o Sistemas Operativos de multitarea). Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos activos (que se estn ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al mximo su utilizacin. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est usando el procesador, o un procesador distinto, es decir, involucra mquinas con ms de una UCP. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes: Mejora productividad del sistema y utilizacin de recursos. Multiplexa recursos entre varios programas. Generalmente soportan mltiples usuarios (multiusuarios). Proporcionan facilidades para mantener el entorno de usuarios individuales. Requieren validacin de usuario para seguridad y proteccin. Proporcionan contabilidad del uso de los recursos por parte de los usuarios. Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real. Sistemas multiprocesadores son sistemas multitareas por definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre diferentes procesadores. En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos perifricos.

Sistemas Operativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecer en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusin de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Caractersticas de los Sistemas Operativos de tiempo compartido: Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseo asistido por computador, procesamiento de texto, etc. Dan la ilusin de que cada usuario tiene una mquina para s. Mayora utilizan algoritmo de reparto circular. Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio. Evitan monopolizacin del sistema asignando tiempos de procesador (time slot). Gestin de memoria proporciona proteccin a programas residentes. Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accesando un mismo archivos.

Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caractersticas de los Sistemas Operativos distribuidos: Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software . Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios. Objetivo clave es la transparencia. Generalmente proporcionan medios para la comparticin global de recursos. Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.).

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

Figura. Se muestra un Sistema Operativo en red. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo.

En UNIX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

1.4 Historia de los Sistemas Operativos.

Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales caractersticas de un Sistema Operativo contemporneo, es til considerar como han ido evolucionando stos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podra ser esta: En los 40's, se introducen los programas bit a bit, por medio de interruptores mecnicos y despus se introdujo el leng. mquina que trabajaba por tarjetas perforadas. Con las primeras computadoras, desde finales de los aos 40 hasta la mitad de los aos 50, el programador interactuaba de manera directa con el hardware de la computadora, no exista realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a travs del lenguaje mquina (bits) o a travs de interruptores. Durante los aos 50's y 60's.- A principio de los 50's, la compaa General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseadores, capturistas, etc.), se encarguen de modificar sus programas. Establecan o apartaban tiempo, metan o introducan sus programas, corregan y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traduca en prdida de tiempo y tiempos de programas excesivos. En los aos 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta poca surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo. En los 80's, inici el auge de la INTERNET en los Estados Unidos de Amrica. A finales de los aos 80's comienza el gran auge y evolucin de los Sistemas Operativos. Se descubre el concepto de multiprogramacin que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema

principal

de

los

Sistemas

Operativos

actuales.

Los 90's y el futuro, entramos a la era de la computacin distribuida y del multiprocesamiento a travs de mltiples redes de computadoras, aprovechando el ciclo del procesador. Se tendr una configuracin dinmica con un reconocimiento inmediato de dispositivos y software que se aada o elimine de las redes a travs de procesos de registro y localizadores. La conectividad se facilita gracias a estndares y protocolos de sistemas abiertos por organizaciones como la Org. Intern. de normas, fundacin de software abierto, todo estar mas controlado por los protocolos de comunicacin OSI y por la red de servicios digital ISDN. Se ha desarrollado otra versin, la cual se ha hecho en base a etapas o generaciones: 1a. Etapa (1945-1955) : Bulbos y conexiones.

Despus de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construccin de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la dcada de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), as como Conrad Zuse (Alemania), entre otros lograron construir mquinas de clculo mediante bulbos. Estas mquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho ms lentas que la computadora casera ms econmica en nuestros das. Toda la programacin se llevaba a cabo en lenguaje de mquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones bsicas de la mquina. Los lenguajes de programacin eran desconocidos (incluso el lenguaje ensamblador). No se oa de los Sistemas Operativos el modo usual de operacin consista en que el programador reservaba cierto perodo en una hoja de reservacin pegada a la pared, iba al cuarto de la mquina, insertaba su conexin a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o ms bulbos se quemara durante la ejecucin. La inmensa mayora de los problemas eran clculos numricos directos, por ejemplo, el clculo de valores para tablas de senos y cosenos.

A principio de la dcada de los 50's la rutina mejoro un poco con la introduccin de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo dems el proceso era el mismo. 2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes.

La introduccin del transistor a mediados de los aos 50's modific en forma radical el panorama. Las computadoras se volvieron confiables de forma que podan fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por dems rpidas vas para reducir el tiempo invertido. La solucin que, por lo general se adopt, fue la del sistema de procesamiento por lotes. 3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramacin.

La 360 de IBM fue la primera lnea principal de computadoras que utiliz los circuitos integrados, lo que proporcion una gran ventaja en el precio y desempeo con respecto a las mquinas de la segunda generacin, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamao y sus problemas el sistema operativo de la lnea IBM 360 y los sistemas operativos similares de esta generacin producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayora de sus clientes. Tambin popularizaron varias tcnicas fundamentales, ausentes de los sistemas operativos de la segunda generacin, de las cuales la ms importante era la de multiprogramacin. Otra caracterstica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cmputo. As, siempre que concluyera un trabajo el sistema operativo poda cargar un nuevo trabajo del disco en la particin que quedara desocupada y ejecutarlo. 4ta Etapa (1980-Actualidad) : Computadoras personales. Un interesante desarrollo que comenz a llevarse a cabo a mediados de la dcada de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos.

En los sistema operativo de red, los usuarios estn conscientes de la existencia de varias computadoras y pueden conectarse con mquinas remotas y copiar archivos de una mquina a otra. Cada mquina ejecuta su propio sistema operativo local y tiene su propio usuario. Por el contrario, un sistema operativo distribuido es aqul que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando est compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automtica y eficaz por el sistema operativo.

2.1 Metodologa de diseo Existen autores que son partidarios de un enfoque jerrquico para el diseo de sistemas operativos. En la base de la jerarqua se encuentra el hardware del computador, a veces denominado simplemente mquina pura o los hierros desnudos. En el siguiente nivel de la jerarqua (o en varios de los siguientes niveles en algunos diseos) estn las diferentes funciones del ncleo, las cuales se ven como si formaran una mquina ampliada, es decir, un computador que ofrece no slo su lenguaje de mquina como apoyo al sistema operativo y a sus usuarios, sino tambin un grupo de funciones adicionales proporcionadas por el ncleo. Estas posibilidades adicionales se denominan a menudo primitivas. Arriba del ncleo, en jerarqua, se encuentran los diferentes procesos del sistema operativo que trabajan en apoyo de los procesos de usuario; por ejemplo, los procesos de administracin de los dispositivos, que se encargan en la prctica de supervisar las operaciones de entrada/salida de los dispositivos del sistema para beneficio de los diversos usuarios. En la cima de la jerarqua se encuentran los procesos de usuario. Se ha visto que los diseos jerrquicos son ms fciles de depurar, modificar y verificar. En los diseos en que el ncleo est distribuido en varios niveles de jerarqua, elegir qu funcin colocar en cada nivel requiere un anlisis cuidadoso. En tales diseos, con frecuencia slo se permite hacer llamadas a funciones situadas jerrquicamente por debajo de quin hace la llamada; es decir, cada nivel slo puede llamar a las funciones que estn colocadas en el nivel inmediato inferior.

En los sistemas ms recientes existe la tendencia de colocar gran parte del ncleo en micro cdigo. sta es una tcnica de seguridad efectiva, pues impide la alteracin del ncleo y con una cuidadosa codificacin se puede lograr que se ejecuten ms eficientemente las funciones del ncleo. 2.2 Ncleo o Kernel y niveles de un sistema operativo El Kernel consiste en la parte principal del cdigo del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas: Nivel 1. Gestin de Memoria: que proporciona las facilidades de bajo nivel para la gestin de memoria secundaria necesaria para la ejecucin de procesos. Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas.

Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos. Nivel 4. Informacin o Aplicacin o Interprete de Lenguajes: Facilita la comunicacin con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. Nivel 5. Control de archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulacin de archivos con nombre, va asignando espacio y acceso de datos en memoria. El ncleo y los procesos El ncleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misin es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalacin. Toda esta gestin la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. Los procesos relacionados con la entidad bsica de los sistemas operativos actuales: Los procesos. El esquema general del mismo es el siguiente: Definicin y concepto de proceso. El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso. Estados por los que pasa un proceso a lo largo de su existencia en la computadora. Operaciones que se pueden realizar sobre un proceso. Clasificacin de los procesos segn su forma de ejecucin, de carga, etc.

Procesos

Uno de los conceptos mas importantes que gira entorno a un sistema operativo es el de proceso. Un proceso es un programa en ejecucin junto con el entorno asociado (registros, variables ,etc.). El corazn de un sistema operativo es el ncleo, un programa de control que reacciona ante cualquier interrupcin de eventos externos y que da servicio a los procesos, crendolos, terminndolos y respondiendo a cualquier peticin de servicio por parte de los mismos. Un proceso es una actividad que se apoya en datos, recursos, un estado en cada momento y un programa.

El Bloque de Control de Procesos (PCB) Un proceso se representa desde el punto de vista del sistema operativo, por un conjunto de datos donde se incluyen el estado en cada momento, recursos utilizados, registros, etc., denominado Bloque de Control de Procesos (PCB). Los objetivos del bloque de control de procesos son los siguientes:

Localizacin de la informacin sobre el proceso por parte del sistema operativo. Mantener registrados los datos del proceso en caso de tener que suspender temporalmente su ejecucin o reanudarla.

La informacin contenida en el bloque de control es la siguiente:

Estado del proceso. Informacin relativa al contenido del controlador del programa (Program Counter, PC), estado de procesador en cuanto a prioridad del proceso, modo de ejecucin, etc., y por ultimo el estado de los registros internos de la computadora. Estadsticas de tiempo y ocupacin de recursos para la gestin de la planificacin del procesador. Ocupacin de memoria interna y externa para el intercambio (swapping). Recursos en uso (normalmente unidades de entrada/salida). Archivos en uso. Privilegios.

Estas informaciones se encuentran en memoria principal en disco y se accede a ellas en los momentos en que se hace necesaria su actualizacin o consulta. Los datos relativos al estado del proceso siempre se encuentran en memoria principal. Existe un Bloque de Control de Sistema (SCB) con objetivos similares al anterior y entre los que se encuentra el enlazado de los bloques de control de procesos existentes en el sistema. El cambio de contexto se producir en caso de ejecucin de una instruccin privilegiada, una llamada al sistema operativo o una interrupcin, es decir, siempre que se requiera la atencin de algn servicio del sistema operativo.

Estado de los procesos Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario. Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.

1.- Estados activos: Son aquellos que compiten con el procesador o estn en condiciones de hacerlo. Se dividen en: Ejecucin. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado slo lo puede tener un proceso.

Preparado. Aquellos procesos que estn dispuestos para ser ejecutados, pero no estn en ejecucin por alguna causa (Interrupcin, haber entrado en cola estando otro proceso en ejecucin, etc.). Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algn recurso no disponible (generalmente recursos de entrada/salida).

2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio. Son de dos tipos:

Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo. Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.

Transacciones de estado Todo proceso a lo largo de su existencia puede cambiar de estado varias veces. Cada uno de estos cambios se denomina transaccin de estado. Estas transacciones son las siguientes:

Comienzo de la ejecucin. Todo proceso comienza al ser dada la orden de ejecucin del programa insertndose en la cola de preparados. El encolamiento depender de la poltica de gestin de dicha cola. Paso de estado de ejecucin. Cuando el procesador se encuentra inactivo y en la cola de preparados exista algn proceso en espera de ser ejecutado, se pondr en ejecucin el primero de ellos. Paso a estado bloqueado. Un proceso que se encuentre en ejecucin y que solicite una operacin a un dispositivo externo, teniendo que esperar a que dicha operacin finalice, ser pasado de estado de ejecucin a estado bloqueado insertndose su PCB en la cola correspondientes de bloqueado. A partir de este momento el procesador pone en ejecucin el siguiente proceso, que ser el primero de la cola de preparados. Paso a estado preparado. Este paso puede ser producido por alguna de las siguientes causas. Orden de ejecucin de un programa, con la cual, ya se ha mencionado, el proceso pasa a la cola de preparados.

Si un proceso est en estado bloqueado por causa de una operacin de entrada/salida y est finaliza, pasar de la cola de bloqueados a la de preparados. Si un proceso est en ejecucin y aparece una interrupcin que fuerza al sistema operativo a ejecutar otro proceso, el primero pasar al estado de preparado y su PCB a la cola de preparados. Activacin. Un proceso suspendido previamente sin estar bloqueado pasar al estado preparado al ser activado nuevamente.

Paso a estado suspendido bloqueado. Si un proceso est bloqueado y el sistema operativo recibe la orden de suspenderlo, su PCB entrar en la cola de procesos suspendidos bloqueados.

Paso a estado suspendido preparado. Este paso se puede producir bajo tres circunstancias: Suspensin de un proceso preparado pasando ste de la cola de procesos preparados a la de suspendidos preparados. Suspensin de un proceso en ejecucin, con lo cual el proceso pasa a la cola de suspendidos preparados. Desbloqueo de un proceso suspendido bloqueado por desaparecer la causa que impeda el ser activado de nuevo.

Operaciones sobre procesos Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulacin de los procesos. Las operaciones que se pueden hacer sobre un proceso son las siguientes:

Crear el proceso. Se produce con la orden de ejecucin del programa y suele necesitar varios argumentos, como el nombre y la prioridad del proceso. Aparece en este momento el PCB, que ser insertado en la cola de procesos preparados.

La creacin de un proceso puede ser de dos tipos:

Jerrquica. En ella, cada proceso que se crea es hijo del proceso creador y hereda el entorno de ejecucin de su padre. El primer proceso que ejecuta un usuario ser hijo del intrprete de comandos con el que interacta. No jerrquica. Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un entorno diferente. Es un tipo de creacin que no suele darse en los sistemas operativos actuales.

Destruir un proceso. Se trata de la orden de eliminacin del proceso con la cual el sistema operativo destruye su PCB. Suspender un proceso. Es un proceso de alta prioridad que paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del sistema. Reanudar un proceso. Trata de activar un proceso que a sido previamente suspendido. Cambiar la prioridad de un proceso. Temporizar la ejecucin de un proceso. Hace que un determinado proceso se ejecute cada cierto tiempo (segundos, minutos, horas...) por etapas de una sola vez, pero transcurrido un periodo de tiempo fijo. Despertar un proceso. Es una forma de desbloquear un proceso que habr sido bloqueado previamente por temporizacin o cualquier otra causa.

Prioridades Todo proceso por sus caractersticas e importancia lleva aparejadas unas determinadas necesidades de ejecucin en cuanto a urgencia y asignacin de recursos. Las prioridades segn los sistemas operativos se pueden clasificar del siguiente modo:

Asignadas por el sistema operativo. Se trata de prioridades que son asignadas a un proceso en el momento de comenzar su ejecucin y dependen fundamentalmente de los privilegios de su propietario y del modo de ejecucin. Asignadas por el propietario. Estticas. Dinmicas.

El Ncleo del Sistema Operativo Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada ncleo (nucleus, core o kernel, en ingls). El ncleo normalmente representa slo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el cdigo que ms se utiliza. Por esta razn, el ncleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal slo cuando se necesitan.

Los ncleos se disean para realizar el mnimo posible de procesamiento en cada interrupcin y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el ncleo se habilita para atender otras interrupciones.

Resumen de las Funciones del Ncleo El ncleo de un sistema operativo normalmente contiene el cdigo necesario para realizar las siguientes funciones: Manejo de interrupciones. Creacin y destruccin de procesos. Cambio de estado de los procesos. Despacho. Suspensin y reanudacin de procesos. Sincronizacin de procesos. Comunicacin entre procesos. Manipulacin de los bloques de control de procesos. Apoyo para las actividades de entrada/salida. Apoyo para asignacin y liberacin de memoria. Apoyo para el sistema de archivos. Apoyo para el mecanismo de llamada y retorno de un procedimiento. Apoyo para ciertas funciones de contabilidad del sistema.

Estructura Jerrquica del Sistema Un computador que ofrece no slo su lenguaje de mquina como apoyo al sistema operativo y a sus usuarios, sino tambin un grupo de funciones adicionales proporcionadas por el ncleo. Arriba del ncleo, en jerarqua, se encuentran los diferentes procesos del sistema operativo que trabajan en apoyo de los procesos de usuario, que se encargan en la prctica de supervisar las operaciones de entrada/salida de los dispositivos del sistema para beneficio de los diversos usuarios. En los diseos en que el ncleo est distribuido en varios niveles de jerarqua, elegir qu funcin colocar en cada nivel requiere un anlisis cuidadoso. En tales diseos, con frecuencia slo se permite hacer llamadas a funciones situadas jerrquicamente por debajo de quien hace la llamada; es decir, cada nivel slo puede llamar a las funciones que estn colocadas en el nivel inmediato inferior. Migracin del ncleo a micro cdigo En los sistemas ms recientes existe la tendencia de colocar gran parte del ncleo en micro cdigo. Esta es una tcnica de seguridad efectiva, pues impide la alteracin del ncleo y con una cuidadosa codificacin se puede lograr que se ejecuten ms eficientemente las funciones del ncleo. El bloque de control de proceso (PCB) es una estructura de datos que contiene la informacin que permite al sistema operativo localizar toda la informacin importante sobre un proceso, incluyendo su estado actual, identificacin, prioridad, memoria, recursos, valores de los registros, etctera. El PCB define el proceso al sistema operativo.

Los sistemas operativos contienen mecanismos para realizar diversas operaciones sobre los procesos, como crear, destruir, reanudar, cambiar la prioridad, bloquear, despertar y despachar.

El kernel de UNIX UNIX es el kernel (ncleo) de un sistema operativo de tiempo compartido. El ncleo del sistema es un programa que siempre est residente en memoria y entre otros, brinda los siguientes servicios:

Controla los recursos del hardware Controla los dispositivos perifricos (discos, terminales, impresoras, etc.) Permite a distintos usuarios compartir recursos y ejecutar sus programas. Proporciona un sistema de archivos que administra el almacenamiento de informacin (programas, datos, documentos, etc.) En un sentido ms amplio, UNIX abarca tambin un conjunto de programas estndar, como pueden ser: Compilador de lenguaje C (cc). Editor de texto (vi). Intrprete de rdenes (sh, ksh, csh) Programas de gestin de archivos y directorios (cp, rm, mv, mkdir, rmdir, etc. )

Los niveles dentro de la arquitectura de UNIX

El nivel ms interno no pertenece realmente al sistema operativo, si no que es el hardware, la mquina sobre la que est implementado el sistema y cuyos recursos queremos gestionar. Directamente en contacto con el hardware se encuentra el kernel del sistema. Este kernel est escrito el lenguaje C en su mayor parte, aunque coexistiendo con cdigo ensamblador. En el tercer nivel de nuestra estructura se encuentran programas estndar de cualquier sistema UNIX (vi, grep, sh, who, etc.) y programas generados por el usuario (a.out programa ejecutable estndar creado por defecto por el compilador cc, o cualquier otro programa ejecutable). Hay que hacer notar que estos programas del tercer nivel nunca van a actuar sobre el hardware de forma directa. Por lo tanto, debe existir algn mecanismo que nos permita indicarle al kernel que necesitamos operar sobre un determinado recurso hardware. Este mecanismo es lo que se conoce como llamadas al sistema (system calls). Por encima del tercer nivel tenemos aplicaciones que se sirven de otros programas ya creados para llevar a cabo su funcin. Estas aplicaciones no se comunican directamente con el kernel.

Los bloques funcionales bsicos de que consta el kernel de UNIX Las llamadas al sistema y su librera asociada representan la frontera entre los programas del usuario y el kernel. La librera asociada a las system calls es el mecanismo mediante el cual podemos invocar una system call desde un programa C y se encuentra en el fichero /usr/lib/libc.a. Las llamadas al sistema se ejecutan en modo kernel (para muchos microprocesadores, modo supervisor) y para entar en este modo hay que ejecutar una sentencia en cdigo mquina conocida como trap (o interrupcin software) El kernel est dividido en dos subsistemas principales: subsistema de ficheros y subsistema de control de procesos. El subsistema de ficheros controla los recursos del sistema de archivos y tiene funciones como reservar espacio para los archivos, administrar el espacio libre, controlar el acceso a los archivos, permitir el intercambio de datos entre los archivos y el usuario, etc. El subsistema de control de procesos es el responsable de la planificacin de los procesos (scheduler), su sincronizacin, comunicacin entre los mismos (IPC inter process comunication) y del control de la memoria principal. Al mdulo gestor de memoria (swapping) se le conoce tambin como swapper. El planificador o scheduler se encarga de gestionar el tiempo de CPU que tiene asignado cada proceso. El scheduler entra en ejecucin cada cuanto de tiempo y decide si el proceso actual tiene derecho a seguir ejecutndose (esto depende de la prioridad y de sus privilegios). La comunicacin entre procesos puede realizarse de forma asncrona (seales) o sncrona (colas de mensajes, semforos).

Por ltimo, el mdulo de control del hardware es la parte del kernel encargada del manejo de las interrupciones y de la comunicacin con la mquina. Los dispositivos pueden interrumpir a la CPU mientras est ejecutando un proceso. Si esto ocurre, el kernel debe reanudar la ejecucin del proceso despus de atender a la interrupcin. Las interrupciones no son atendidas por procesos, sino por funciones especiales, codificadas en el kernel, que son invocadas durante la ejecucin de cualquier proceso.

2.3 Interrupciones de Entrada y Salida Son iniciadas por hardware de entrada y salida. Estas interrupciones indican a la UCP el cambio de estado de un canal o dispositivo. Las interrupciones de E/S se producen cuando finaliza una operacin de E/S o cuando un dispositivo pasa al estado listo.

2.4 Interrupciones del procesador

Una interrupcin es un evento que altera la secuencia en que el procesador ejecuta las instrucciones. La interrupcin es generada por el hardware del sistema de cmputo. Cuando ocurre una interrupcin:

El sistema operativo toma el control (es decir, el hardware pasa el control al sistema operativo). El sistema operativo guarda el estado del proceso interrumpido. En muchos sistemas esta informacin se guarda en el bloque de control de proceso interrumpido. El sistema operativo analiza la interrupcin y transfiere el control a la rutina apropiada para atenderla; en muchos sistemas actuales el hardware se encarga de esto automticamente. La rutina del manejador de interrupciones procesa la interrupcin. Se restablece el estado del proceso interrumpido (o del siguiente proceso). Se ejecuta el proceso interrumpido (o el siguiente proceso).

Una interrupcin puede ser iniciada especficamente por un proceso en ejecucin (en cuyo caso se suele denominar trampa (trap), y se dice que est sincronizada con la operacin del proceso) o puede ser causada por algn evento que puede estar relacionado o no con el proceso en ejecucin (en cuyo caso se dice que es asncrona con la operacin del proceso). Los sistemas orientados hacia las interrupciones pueden sobrecargarse. Si ests llegan con mucha frecuencia, el sistema no ser capaz de atenderlas. En algunos sistemas orientados hacia el teclado, cada tecla presionada almacena en la memoria un cdigo de un byte y genera un interrupcin para informar a la UCP que un carcter est listo para ser procesado. Si la UCP no puede procesar el dato antes de que se presione la siguiente tecla, se pierde el primer carcter. Clases de Interrupciones Existen seis clases de interrupciones:

Interrupciones SVC (supervisor call, llamadas al supervisor). Son iniciadas por un proceso en ejecucin que ejecute la instruccin SVC. Una SVC es una peticin generada por el usuario de un servicio particular del sistema, como realizar una operacin de entrada/salida, obtener ms memoria o comunicarse con el operador del sistema. El mecanismo de las SVC ayuda a proteger el sistema operativo de las acciones de los usuarios. Un usuario no puede entrar arbitrariamente al sistema operativo, sino que debe solicitar un servicio por medio de una SVC. El sistema operativo est al tanto de todos los usuarios que intentan rebasar sus limites y puede rechazar ciertas peticiones si el usuario no tiene los privilegios necesarios. Interrupciones de E/S. Son iniciadas por hardware de entrada y salida. Estas interrupciones indican a la UCP el cambio de estado de un canal o dispositivo. Las

interrupciones de E/S se producen cuando finaliza una operacin de E/S o cuando un dispositivo pasa al estado listo. Interrupciones externas. Son causadas por diversos eventos, incluyendo la expiracin de un cuanto de un reloj que interrumpe, la pulsacin de la tecla de interrupcin de la consola o la recepcin de una seal procedente de otro procesador en un sistema de mltiples procesadores. Interrupciones de Reinicio. Se produce cuando se presiona el botn de reinicio de la PC o cuando llega de otro procesador una instruccin de reinicio en un sistema de multiprocesamiento Interrupciones de verificacin del programa. Son causadas por una amplia clase de problemas que pueden ocurrir cuando se ejecutan las instrucciones en lenguaje mquina de un programa. Dichos problemas incluyen la divisin entre cero, el exceso o defecto de los nmeros que pueden ser manejados por las operaciones aritmeticas, el intento de hacer referencia a una localidad de memoria que est fuera de los lmites de la memoria real. Muchos sistemas ofrecen a los usuarios la opcin de especificar las rutinas que deben ejecutarse cuando ocurra una interrupcin de verificacin del programa. Interrupciones de verificacin de la mquina. Son ocasionadas por el mal funcionamiento del hardware.

<![endif]> 3. INTRODUCCIN A LOS PROCESOS Todas las computadoras modernas hacen varias cosas al mismo tiempo. A la vez que ejecuta un programa del usuario, una computadora puede leer de un disco e imprimir en una terminal o impresora. En un sistema de multiprogramacin, la CPU tambin alterna de programa en programa, ejecutando cada uno de ellos por decenas o cientos de milisegundos. Aunque, en sentido estricto, la CPU ejecuta en cierto instante un solo programa, durante un segundo puede trabajar con varios de ellos, lo que da una apariencia de paralelismo. A veces, las personas hablan de pseudoparalelismo para indicar este rpido intercambio de los programas en la CPU, para distinguirlo del paralelismo real del hardware, donde se hacen clculos en la CPU a la vez que operan uno o ms dispositivos de entrada/salida. Es difcil mantener un registro de las distintas actividades paralelas. Por lo tanto, los diseadores del sistema operativo han desarrollado con el tiempo un modelo que facilita el uso del paralelismo. 3.1 CONCEPTO DE PROCESO. El trmino "PROCESO", fue utilizado por primera vez por los diseadores del sistema Multics en los aos 60s. Desde entonces, el trmino proceso , utilizado a veces como sinnimo de tarea, ha tenido muchas definiciones . A continuacin se presentan algunas: Un programa en ejecucin ejecucin Una actividad asncrona El "espritu animado" de un procedimiento El "centro de control" de un procedimiento en

Lo que se manifiesta por la existencia de un "bloque de control del proceso" en el sistema operativo La entidad a la que se asignan los procesadores La unidad "despachable"

Aunque se han dado muchas otras definiciones, no hay una definicin universalmente aceptada, pero el concepto de "Programa en ejecucin" parece ser el que se utiliza con mas frecuencia. Un programa es una entidad inanimada; slo cuando un procesador le "infunde vida" se convierte en la entidad "activa" que se denomina proceso. Un proceso pasa por una serie de datos discretos. Se dice que un proceso se est ejecutando (estado de ejecucin), si tiene asignada la UCP.Se dice que un proceso est listo (estado listo)si pudiera utilizar una UCP en caso de haber una disponible. Un proceso est bloqueado (estado bloqueado) si est esperando que suceda algn evento antes de poder seguir la ejecucin.

3.2 Concurrencia y Secuenciabilidad 3.2.1 Concepto de Concurrencia 3.2.1.1 Beneficios del uso de la concurrencia 3.2.1.2 Desventajas de la concurrencia 3.2.2 La Sincronizacin

3.2.1 CONCEPTO DE CONCURRENCIA. Los procesos son concurrentes si existen simultneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asncronos, lo cual significa que en ocasiones requieren cierta sincronizacin o cooperacin.

Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o ms procesos sean concurrentes , es necesario que tengan alguna relacin entre ellos como puede ser la cooperacin para un determinado trabajo o el uso de informacin o recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramacin es una condicin necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente. Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre s ya sea para utilizar informacin en comn o para cualquier otra cosa.

3.2.1.1 BENEFICIOS DE LA CONCURRENCIA Trata de evitar los tiempos muertos de la UCP Comparte y optimiza el uso de recursos Permite la modularidad en las diferentes etapas del proceso Acelera los clculos Da mayor comodidad

3.2.1.2 DESVENTAJAS DE LA CONCURRENCIA Inanicin e interrupcin de procesos Ocurrencia de bloqueos Que dos o ms procesos requieran el mismo recurso (no apropiativo)

3.2.2 LA SINCRONIZACION En muchos casos, los procesos se renen para realizar tareas en conjunto, a este tipo de relacin se le llama procesos cooperativos. Para lograr la comunicacin, los procesos deben sincronizarse, de no ser as pueden ocurrir problemas no deseados. La sincronizacin es la transmisin y recepcin de seales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos. Es la coordinacin y cooperacin de un conjunto de procesos para asegurar la comparacin de recursos de cmputo. La sincronizacin entre procesos es necesaria para prevenir y/o corregir errores de sincronizacin debidos al acceso concurrente a recursos compartidos, tales como estructuras de datos o dispositivos de E/S, de procesos contendientes. La sincronizacin entre procesos tambin permite intercambiar seales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones especficas de precedencia impuestas por el problema que se resuelve. Sin una sincronizacin adecuada entre procesos, la actualizacin de variables compartidas puede inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia difciles de depurar. Una de las causas principales de este problema es que procesos concurrentes puedan observar valores temporalmente inconsistentes de una variable compartida mientras se actualizan. una aproximacin para resolver este problema es realizar actualizaciones de variables compartidas de manera mutuamente exclusiva. Se pueden mejorar permitiendo que a lo ms un proceso entre a la vez en la seccin crtica de cdigo en la que se actualiza una variable compartida o estructura de datos en particular.

3.3 REGIONES CRITICAS. Cmo evitar las condiciones de competencia? La clave para evitar los problemas en sta y otras situaciones relacionadas con la memoria compartida, archivos compartidos y cualquier otra cosa compartida, es determinar una forma de prohibir que ms de algn proceso lea o escriba en los datos compartidos a la vez. En otras palabras, lo que necesitamos es la exclusin mutua (una forma de garantizar que si un proceso utiliza una variable o archivos compartidos, los dems procesos no puedan utilizarlos). El problema de evitar las condiciones de competencia tambin se puede formular de manera abstracta. Durante cierta parte del tiempo, un proceso est ocupado realizando clculos internos y otras labores que no conducen a condiciones de competencia. Sin embargo, en algunas ocasiones un proceso puede tener acceso a la memoria compartida de archivos o realizando labores crticas que pueden llevar a conflictos. Esa parte del programa, en la cual se tiene acceso a la memoria compartida se llama la Seccin o Regin Crtica. Aunque esta condicin evita los conflictos, no es suficiente para que los procesos paralelos cooperen en forma correcta y usen de modo eficaz los datos compartidos. La exclusin mutua debe ponerse en prctica, slo cuando los procesos obtienen acceso a datos compartidos modificables; cuando los procesos realizan operaciones que no entran en conflictos con otras, deben permitirse que procedan concurrentemente. Cuando un proceso obtiene acceso a datos compartidos modificables, se dice que se encuentra en una seccin crtica. Para evitar alguna clase de problemas se debe asegurar que cuando un proceso se encuentre en una seccin crtica, los dems procesos no pueden entrar a sus propias secciones crticas.

Seccin Critica

Archivo De Datos Proceso A Proceso B

Si un proceso se encuentra en su seccin crtica, otros procesos pueden seguir ejecutndose fuera de sus secciones crticas. Cuando un proceso abandona su regin, otro proceso que esperaba entrar en su propia seccin podr hacerlo. El problema de la programacin concurrente est en que se cumpla la exclusin mutua. Cuando se encuentra en una regin crtica se est hablando de un estado especial que se concede a un proceso. El proceso tiene acceso exclusivo a los datos compartidos y los dems procesos que requieren acceso a esos datos y en ese momento deben esperar; por esto las secciones crticas deben ejecutarse tan rpido como sea posible. Un proceso no se debe bloquear dentro de su propia seccin crtica y estas deben codificarse con mucho cuidado. Si un proceso de una seccin crtica termina, el S.O. al realizar su mantenimiento de terminaciones, debe liberar la exclusin mutua para que otros procesos puedan entrar en sus regiones crticas. Necesitamos 4 condiciones para poder obtener una buena solucin: 1. 1. Dos procesos no deben encontrarse al mismo tiempo dentro de sus secciones crticas . 2. 2. No se deben hacer hiptesis sobre la velocidad o el nmero de UCP. 3. 3. Ninguno de los procesos que estn en ejecucin fuera de su seccin crtica puede bloquear a otros procesos. 4. 4. Ningn proceso debe esperar eternamente para entrar a su seccin crtica

3.4 EXCLUSIN MUTUA Considrese un sistema con muchas terminales en tiempo compartido. Supngase que los usuarios terminan con un retorno del carro cada lnea que introducen en el sistema, que es necesario vigilar continuamente el nmero total de lneas introducidas por los usuarios desde que comenz el da y que cada terminal de usuario est vigilada por un proceso diferente. Cada vez que uno de estos procesos recibe una lnea desde una terminal de usuario, suma a una variable global compartida por todo el sistema, LNEAS_INTRO. Considrese que sucedera si dos procesos tratan de incrementar LNEAS_INTRO simultneamente. Supngase que cada proceso tiene su propia copia de cdigo CARGAR LNEAS_INTRO SUMAR 1 ALMACENAR LNEAS_INTRO Supngase que LNEAS_INTRO tiene en este momento el valor 21687. Ahora supngase que el primer proceso ejecuta las instrucciones CARGAR y SUMAR, dejando por tanto el valor 21688 en un acumulador. Despus el proceso pierde el procesador (por haber expirado un cuanto) y el segundo proceso se apropia de l. El segundo proceso ejecuta las tres instrucciones y deja el valor de 21688 en LINEAS_INTRO. Debido al

acceso no controlado a la variable compartida LINEAS_INTRO, el sistema ha perdido de hecho el rastro de una de las lneas; el total correcto debera ser 21689. Com evitar las condiciones de competencia?

3.5 SINCRONIZACIN POR SEMFOROS En 1965, E.W. Dijkstra sugiri el uso de una variable entera para contar el nmero de despertares almacenados para su uso posterior. En su propuesta se present un nuevo tipo de variable, llamada Semforo. Un semforo puede tener el valor 0, lo que indica que no existen despertares almacenados; o bien algn valor positivo si estn pendientes uno o ms despertares. Dijkstra, propuso dos operaciones, DOWN y UP (generalizaciones de SLEEP y WAKEUP, respectivamente). La operacin Down verifica si el valor de un semforo es mayor que 0. En este caso, decrementa el valor (es decir, utiliza un despertar almacenado) y contina. Si el valor es cero, el proceso se va a dormir. La verificacin y modificacin del valor, as como la posibilidad de irse a dormir se realiza en conjunto, como una sola e indivisible accin atmica. Se garantiza que al iniciar una operacin con un semforo, ningn otro proceso puede tener acceso a semforo hasta que la operacin termine o se bloquee. Esta atomicidad es absolutamente esencial para resolver los problemas de sincronizacin y evitar condiciones de competencia. La operacin UP incrementa el valor del semforo correspondiente. Si uno o ms procesos dorman en ese semforo y no podan completar una operacin Down anterior, el sistema elige alguno de ellos (por ejemplo, en forma aleatoria) y se le permite terminar Down. As, despus de un UP en un semforo con procesos durmiendo, el semforo seguir con valor cero, pero habr un menor nmero de procesos durmiendo. La operacin de incremento del semforo y despertar de un proceso tambin es indivisible. Ningn proceso llega a bloquear mediante un UP. Un semforo es una variable protegida, cuyo valor slo puede ser ledo y alterado mediante las operaciones P y V, y una operacin de asignacin de valores iniciales y (Inicia semforo).

TIPOS DE SEMFOROS

SEMFOROS BINARIOS (VALORES DE SEMFOROS CONTADORES (Valores enteros no negativos) Operacin P (Sobre el semforo S) si S>0 entonces S:=S-1; sino (esperar S)

1,0)

Operacin V (Sobre el semforo S) si (Uno o ms procesos esperan S) entonces (dejar que prosiga uno de esos procesos) sino S:=S+1 La exclusin mutua sobre el semforo S se implanta dentro de P(S) y V(S). Si varios procesos desean ejecutar una operacin P(S) de manera simultnea , slo se podr ejecutar uno de ellos, pero esto no quiere decir que se aplazarn en forma indefinida.

5.1 Planificacin En pocas pasadas de los sistemas de procesamiento por lotes, con una entrada en forma de imgenes de tarjetas en una cinta magntica, el algoritmo de planificacin era sencillo: slo haba que ejecutar el siguiente trabajo en la cinta. En los sistemas de multiusuario de tiempo compartido, que se combinaban con un fondo de trabajos procesados en lote, el algoritmo era ms complejo. En forma invariable, existan varios usuarios en espera de servicio y podan existir tambin otros trabajos para ser procesados en lote. Incluso en los sistemas puros de tiempo compartido existen con frecuencia los trabajos colaterales, como el sistema de correo electrnico, que a menudo se ejecuta todo el tiempo para enviar o recibir correo o noticias. Cuando ms de un proceso es ejecutable, el Sistema Operativo debe decidir cual de ellos deber ejecutarse primero. Hay que tener una planificacin de los procesos que quieren ejecutarse en el sistema. La planificacin es una funcin primordial del Sistema Operativo. La mayora de los recursos, si no es que todos, se planifican antes de que se utilicen. La asignacin de procesadores fsicos a los procesos hace posible que stos realicen su trabajo, y tal asignacin es un problema complejo manejado por el Sistema Operativo. En este trabajo se describe el concepto de planificacin, as como sus principales objetivos.

CONCEPTO DE PLANIFICACIN

La planificacin es una funcin fundamental del Sistema Operativo. La mayor parte de los recursos se planifican antes de que se usen. Desde luego, la UCP es uno de los principales recursos de la computadora, por lo que su planificacin es importante para el diseo de los Sistemas Operativos.

Se conoce como planificacin al estudio de los problemas: cundo asignar procesadores? y a cules procesos asignarlos?. La planificacin se refiere a un conjunto de polticas y mecanismos que poseen los actuales Sistemas Operativos y por los que se rige el orden en que se completa el trabajo que hay que realizar por los procesos.

En Windows NT los subprocesos tienen asignadas prioridades. El rango de prioridades va de 1 a 31, siendo 31 la prioridad mayor. La UCP trata de manera idntica a todos los subprocesos de la misma prioridad. Esto es simplemente asigna el primer subproceso de prioridad 31 a una UCP, y una vez que su intervalo de tiempo ha finalizado asigna el siguiente subproceso de prioridad 31 a la UCP. Cuando todos los subprocesos de prioridad 31 han tenido un intervalo de tiempo de la UCP, el kernel de Windows NT asigna de nuevo el primer subproceso de prioridad 31 a la UCP. Como se ve, si siempre existe un subproceso de prioridad inferior de 31 nunca se ejecutar.

OBJETIVOS DE LA PLANIFICACIN

El objetivo principal de la planificacin es optimizar el rendimiento del sistema y proporcionar un buen servicio a todos los procesos que se encuentren en l. En general, la planificacin trata de cubrir los siguientes objetivos: Justicia. La planificacin debe ser lo ms justa posible con todos los procesos, sin favorecer a unos y perjudicar a otros. Mxima capacidad de ejecucin. Debe dar un servicio eficiente para que todos los trabajos se realicen lo ms rpidamente posible. Esto se puede lograr disminuyendo el nmero de cambios de proceso. Mximo nmero de usuarios interactivos. En los sistemas de tiempo compartido se tratar de que puedan estar trabajando el mayor nmero de usuarios al mismo tiempo. Predecibilidad. La planificacin debe realizarse de tal forma que en todo momento pueda saberse como ser su ejecucin. Minimizacin de la sobrecarga. La computadora debe tener poca sobrecarga ya que sta afecta directamente al rendimiento final del sistema: a menor sobrecarga mayor velocidad de proceso. Equilibrio en el uso de recursos. Para obtener un mayor rendimiento en el uso de los recursos y que estos estn ocupados equitativamente el mayor tiempo posible. Seguridad de las prioridades. Si un proceso tiene mayor prioridad que otro, ste debe ejecutarse ms rpidamente. Evitar la postergacin indefinida. Esto se logra aumentando la prioridad de un proceso mientras espere por un recurso. La prioridad llegar a ser tan alta que al proceso le ser asignado el recurso que pidi.

5.2 Planificadores

El planificador o scheduler es un componente del Sistema Operativo que se encarga de elegirla tarea siguiente que hay que admitir en el sistema y el proceso siguiente que hay que ejecutar.

La finalidad del planificador es asignar procesos para que sean ejecutados por el procesador o procesadores con el fin de obtener mejores tiempos de respuesta, mayor productividad o rendimiento y eficiencia del procesador. En la mayora de los sistemas esta actividad de planificacin se realiza en tres tipos de planificadores que se explican a continuacin. En UNX, las tareas de planificacin las resuelve el scheduler (planificador) mediante un mecanismo de prioridades. Cada proceso tiene asignada una prioridad. Las prioridades de los procesos de los usuarios son siempre menores que la prioridad ms pequea de un proceso del sistema. El componente que se encarga de administrar los procesos de Windows 95 trabaja con dos modelos de Multitarea: Multitarea Cooperativa La Multitarea con Derecho Preferente

Mediante el mtodo de Multitarea Cooperativa, el Sistema Operativo deja que sea el proceso quien compruebe la cola de procesos que quieren ejecutarse y que cada proceso, deje tiempo de UCP al resto de aplicaciones que se estn ejecutando. Puede ocurrir que el programa que esta en ejecucin, no compruebe peridicamente la cola y se apodere completamente de la UCP, con lo cual ningn proceso responder hasta que termine el que est en ejecucin. En la Multitarea con Derecho Preferente, es el Planificador de Procesos quien quita o da el control a un proceso y adems determina el tiempo que dicho proceso va a ocupar la UCP. El cambio de un proceso a otro, generalmente est dado a un suceso o evento (un clic del ratn, minimizar una ventana). En la Multitarea con Derecho, el Planificador asigna unas prioridades a los procesos que determinan la forma de ejecucin, sin embargo estas prioridades varan segn avanza la ejecucin, ya que, en caso contrario, cuando un proceso de mxima prioridad tomase la UCP nunca la soltara. Windows 95 solo utiliza la Multitarea Cooperativa, con las aplicaciones de 16 bits. Todas las aplicaciones de 32 bits se ejecutan en Multitarea con Derecho Preferente. Planificador a largo plazo (Planificador de trabajos) Cada vez que un usuario inicia la ejecucin de un programa, el planificador a largo plazo recibe la orden de ejecucin, crea el proceso correspondiente y lo pasa al planificador a corto plazo, colocndose en la cola de procesos listos. Este planificador es, por tanto, el encargado de crear los procesos. Cada vez que termina un trabajo, el planificador tomara la decisin de aadir uno o mas trabajos nuevos. Planificador a mediano plazo (planificador de intercambio) Este planificador decide si un proceso que esta en estado bloqueado o suspendido debe ser retirado de la memoria temporalmente. Posteriormente, cuando el sistema se encuentra mas descargado, devolver dicho proceso a la memoria y al estado de ejecucin. Esta tcnica se conoce con el nombre de intercambio (swapping). Este nivel, por tanto, gestiona los procesos suspendidos en espera de algn recurso no disponible en el momento de la suspensin. Planificador a corto plazo (Planificador del procesador) El planificador acorto plazo tambin conocido como despachador, es el encargado de decidir como y cuando tendr acceso al procesador un proceso que esta listo para utilizarlo. Solo considera losa procesos que estn en memoria. Ha de ser rpido y eficiente ya que se ejecuta muy a menudo. Este nivel, es donde se debe de

dar un buen servicio a los procesos para que el usuario no perciba, o lo haga un pequeo grado, que esta compitiendo por el procesador junto con otros usuarios. Planificacin de Procesos Cuando ms de un proceso es ejecutable, el Sistema Operativo debe decidir cual de ellos debe ejecutarse en primer termino. Esa parte del sistema operativo que debe de llevar a cabo esa decisin se llama planificador y el algoritmo que utiliza se llama algoritmo de planificacin. El planificador intenta conseguir con su administracin de procesos lo siguiente: Equidad: Garantizar que cada proceso obtenga su proporcin justa de la CPU. Es decir, que ningn proceso llegue a apoderarse por completo de la CPU. Eficiencia: Mantener ocupada la CPU al 100 %, esto con el fin de evitar los tiempos ociosos que pueda tener el CPU. Rendimiento: Maximizar el nmero de tareas procesadas por hora, es decir, que el CPU pueda atender todos y cada una de las peticiones que le fueron hechas. Para garantizar que ningn proceso se ejecute un tiempo excesivo, casi todas las computadoras tienen un cronmetro electrnico o un reloj incluido, que provoca una interrupcin en forma peridica. En cada interrupcin del reloj, el sistema operativo logra ejecutarse y decidir si el proceso que se ejecuta en ese momento tiene permiso de continuar o si tiene el tiempo suficiente en la CPU por el momento, para despus suspenderlo para que otro proceso utilice la CPU.

Algunos algoritmos especficos de planificacin

Planificacin Round Robin Uno de los ms antiguos, sencillo, justo y de uso ms amplio es el round robin. Cada proceso tiene asignado un intervalo de tiempo de ejecucin, llamado su quantum. Si el proceso en ejecucin al final de su quantum, otro proceso se apropia de la CPU. Si el proceso esta bloqueado o a terminado antes de consumir su quantum, se altera el uso de la CPU. El Roun Robin es muy fcil de implantar. Todo lo que necesita el planificador es mantener una lista de procesos ejecutables. Cuando el quantum de un proceso se consume, se le coloca al final de la lista, como se muestra a continuacin.

Planificacin Round Robin.

(a) La lista de procesos ejecutables. (b) La lista de procesos ejecutables despus de agotarse el quantum B. El nico aspecto interesante del round robin es la longitud del quantum. La alternancia entre un proceso y otro necesita cierta cantidad de tiempo para administracin. Planificacin por prioridades

La idea fundamental es directa: cada proceso tiene asociada una prioridad y el proceso ejecutable con mxima prioridad es el que tiene el permiso de ejecucin. Para evitar que los procesos de alta prioridad se ejecuten en forma indefinida, el planificador puede disminuir la prioridad del proceso en ejecucin en cada interrupcin de reloj. Si la prioridad del siguiente proceso con alta prioridad es mayor, se alternan los procesos. Las prioridades se pueden asignar en forma esttica o dinmica.

5.3 ALGORITMO DE PLANIFICACIN FIFO (First Input First Output) Este algoritmo a su vez es llamado First Come - First Served (Primero en llegar- Primero en servir). Tal vez la disciplina ms simple de planificacin sea la de primeras entradasprimeras salidas (PEPS). Los procesos se despachan de acuerdo con su tiempo de llegada a la cola de procesos listos. Cuando un proceso tiene la UCP, se ejecuta hasta terminar. Es junto en el sentido formal, pero algo injusta en cuanto a que los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los importantes. FIFO ofrece variaciones relativamente pequeas en los tiempos de respuesta y por lo tanto es ms predecible que los otros esquemas. No es til en la planificacin para los usuarios interactivos porque no puede garantizar buenos tiempos de respuesta. El esquema FIFO rara vez se usa como esquema principal en los sistemas actuales, pero a menudo est incorporado en otros sistemas. Por ejemplo, muchos esquemas de planificacin despachan los procesos de acuerdo con la prioridad, pero los procesos con la misma prioridad se despachan de acuerdo con el esquema FIFO. Este es un algoritmo que no usa apropiacin, y que consiste en atender a los procesos por estricto orden de llegada a la lista de procesos listos. Cada procesos se ejecuta hasta que termina, o hasta que hace una llamada bloqueante (de E/S). Se trata de una poltica muy simple y sencilla de llevar a la prctica, pero muy pobre en cuanto a su comportamiento. Las caractersticas principales de este algoritmo son las siguientes:

No es apropiativa Es justa, aunque los procesos largos hacen esperar mucho a los cortos. Es una poltica predecible El tiempo promedio de servicio es muy variable ya que est en funcin del nmero de procesos y la duracin promedio que tenga

Proceso P1 P2 P3 Media del tiempo de espera: Caso 1) ( 0 + 24 + 27 ) / 3 =17 Caso 2) ( 6 + 0 + 3 ) / 3 = 3

Tiempo UCP 24 3 3

de

En este esquema se tienen tres procesos (P1,.P2, P3) listos para ejecutarse, con un tiempo de ejecucin de 24, 3 y 3 unidades de tiempo (para facilidad tomaremos milisegundos como unidad de tiempo) respectivamente. Los procesos se ejecutan en ese mismo orden. El primer proceso se ejecuta de inmediato y no espera nada. El segundo proceso espera todo lo que dura en ejecutarse el primer proceso que son 24 milisegundos. Por ltimo el tercer proceso esperar la suma de lo que duran en ejecutarse los dos procesos anteriores, o sea, 27 segundos. Todo esto da como resultado un tiempo promedio de espera de 17 milisegundos. Si en cambio, el orden en que se ejecuten los procesos es como el caso 2), entonces el proceso P2 se ejecutara de inmediato, P3 esperara lo que tarde en ejecutarse P2 (3 milisegundos) y P1 esperara lo que duran los dos procesos anteriores, obteniendo un tiempo promedio de espera de 3 milisegundos. Como puede verse el tiempo promedio de espera que tengan los procesos depende por completo del orden en que llegan los procesos a ejecutarse.

5.4 EL TRABAJO MAS CORTO PRIMERO Llamado tambin SJF (Shortest Job First). Este algoritmo de planificacin reduce la preferencia en favor de los procesos ms largos dando ms importancia a los procesos cortos, como se muestra en la figura. Esta poltica funciona otorgndole el procesador al proceso ms corto. En general, esta poltica mejora el funcionamiento del sistema en trminos del tiempo de respuesta, pero gran cambia demasiado cuando se trata de procesos largos. PROCESO P1 P2 P3 P4 DURACIN 7 4 1 4

P3 P2 P4 P1 Total

0 1 5 9 16

Media del tiempo de espera: (9+1+0+5)/4=3.75 En la figura anterior tenemos cuatro procesos (P1, P2, P3, y P4) que quieren ejecutarse. Los procesos tienen una duracin de 7, 4, 1 y 4 milisegundos respectivamente. Como P3 es el proceso ms corto, ser el primero ejecutarse. Como P2 y P4 tienen la misma duracin, el que se ejecutar ser el que lleg primero, en este caso ser P2 el que se ejecute primero y despus P4. Por ltimo se ejecutar el proceso P1. Cada uno de los procesos esperar lo que duren en ejecutarse anteriores a l, con excepcin del primer proceso. El tiempo promedio de espera es de 3.75 milisegundos, lo que representa un promedio de espera aceptable. Una de las dificultades con este mtodo es que debe saber el tiempo que cada proceso va a utilizar el procesador para realizar su trabajo, lo cual es una tarea difcil, pero es posible a travs de diversos mtodos como pueden ser la informacin dada por el propio usuario, por el propio programa. Las caractersticas de este algoritmo son las siguientes: El tiempo de espera aumenta de acuerdo con el tamao de los procesos, pero el tiempo promedio de espera con respecto a otros algoritmos es ptimo. Es poco predecible. No es justo con los procesos largos. Tiene buen tiempo de servicio. Resulta difcil de llevarse a la prctica por los datos que necesita para realizarse la planificacin.

Su caracterstica principal es que cuando se activa el planificador, ste elige el proceso de menor duracin. Es decir, introduce una nocin de prioridad entre procesos. La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalizacin promedio, como puede verse en el siguiente ejemplo: Ejemplo: Supongamos que en un momento dado existen tres procesos listos R1, R2 y R3, sus tiempos de ejecucin respectivos son 24, 3 y 3 ms. El proceso R1 es la que lleva ms tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3. Veamos el tiempo medio de finalizacin (F) de los procesos aplicando FIFO y SJF: SJF F = (3 + 6 + 30) / 3 = 13 ms. FIFO F = (24 + 27 + 30) / 3 =27 ms.

Se puede demostrar que este algoritmo es el ptimo. Para ello, consideremos el caso de cuatro procesos, con tiempos de ejecucin de a, b, c y d. El primer procesos termina en el tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalizacin es (4a+3b+2c+d)/4. Es evidente que a contribuye ms al promedio que los dems tiempos, por lo que debe ser el proceso ms corto, b la siguiente, y as sucesivamente. El mismo razonamiento se aplica a un nmero arbitrario de procesos. No obstante, este algoritmo slo es ptimo cuando se tienen simultneamente todos los procesos. Como contraejemplo, considrense cinco procesos desde A hasta E, con tiempo se ejecucin de 2, 4, 1, 1 y 1 respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3. Primero se dispone de A y B, puesto que los dems procesos no han llegado an. Con el algoritmo SJF las ejecutaramos en orden A, B, C, D, y E con un tiempo de finalizacin promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio de finalizacin de 4.4.

5.5 PLANIFICACIN POR PRIORIDAD A cada proceso se le asigna una prioridad, de manera que el procesador se le asignar al proceso que tenga la mayor prioridad. Las prioridades pueden ser definidas interna o externamente. En el primer caso, el Sistema Operativo se basa en una serie de informaciones medibles para el clculo y asignacin de dichas prioridades (tiempo necesitado del procesador, necesidad de memoria, etc ). En las externas la asignacin de prioridades se basa en la categora que tenga el usuario. PROCESO P1 P2 P3 P4 Media del tiempo de espera (1 + 12 +0 +8)/4=5.25 El ejemplo de la figura cuenta con los mismos datos que el de la figura, solo que ahora se le agrego la prioridad de cada proceso que ser de 2, 4, 1, 3, respectivamente (el nmero menor indica la mayor prioridad). Como este algoritmo se basa en las prioridades de los procesos, el primero en ejecutarse ser el proceso p3 por ser el de mayor prioridad. Despus vendrn a ejecutarse los procesos P1, P4 y p2 en ese orden. Este orden de ejecucin de los procesos nos da un tiempo promedio de espera de 5.25 milisegundos. Como podr observarse el tiempo de espera es mayor que el del algoritmo anterior, ocasionado por darle mas importancia a los procesos que tiene mayor prioridad. El principal problema de este algoritmo es el bloqueo o postergacin indefinida, ya que un proceso de baja prioridad puede estar esperando su turno al grado de no ejecutarse nunca. Para evitar esta postergacin se aumenta poco a poco las prioridades de los procesos que estn, a la espera de utilizar el procesador. Cualquier algoritmo que se base en esta poltica puede ser apropiativo o no apropiativo. En el primer caso, un proceso puede ser retirado de! procesador si aparece otro de mayor prioridad. PRIORIDAD 2 4 1 3 TIEMPO UCP 7 4 1 4

El algoritmo SJF es un caso especial de planificacin por prioridad, donde la prioridad es el tamao del proceso.

5.6 ROUND-ROBIN (RR)

Volviendo a FCFS, una forma de mejorarlo es agregando apropiacin de tal forma que cada proceso no retenga el procesador por mas de un quantum o periodo de tiempo predefinido. Consiste en darle a cada proceso en ejecucin un cierto periodo de tiempo, y una vez finalizado el tiempo, si el proceso no ha terminado, es colocado al final de la cola de procesos listo, otorgndose el procesador al siguiente proceso. Trata de ser mas justo en cuanto a tiempos de respuesta tanto de los procesos cortos como de los procesos largos. El punto interesante es encontrar el quantum adecuado. Si es muy grande, puede caer en un algoritmo FCFS, pero tampoco puede ser demasiado pequeo, porque entonces el costo de cambiar de un proceso a otro es muy alto. Los valores del quantum varan entre 10 y 100 milisegundos, siendo recomendable que el 80% de los tiempos de respuesta de los procesos sean menores que el quantum. PROCESO P1 P2 P3 P4 Media del tiempo de espera: (9 + 7 + 4 + 9)/4 = 7.25 Ahora explicaremos el ejemplo de la figura 6-4. Como primer punto establecemos el quantum que tendrn los procesos para ejecutarse que ser de 2 milisegundos. Primero se ejecuta el proceso P1 durante los 2 milisegundos que estn permitidos. Como este tiempo no es suficiente para que se ejecute por completo, pasa al final de la lista de procesos para su posterior ejecucin. Luego viene el proceso P2, al cual le sucede lo mismo que al proceso anterior, por lo que se va al final de la lista. Ahora le toca el turno al proceso P3, pero a ste si le alcanza el tiempo para ejecutarse totalmente. Posteriormente se ejecuta P4 obteniendo los mismos resultados que los dos primeros procesos. Ahora el turno le corresponde de nuevo al primer proceso que se ejecut. De nuevo le sucede lo mismo que la primera vez que se ejecut. Le corresponde ahora el turno al segundo proceso, el cual, en esta ocasin ya se ejecuta por completo. Lo mismo le pasa al siguiente proceso que se ejecuta (P2). Otra vez le toca ejecutarse al proceso Pi y de nuevo no se puede ejecutar por completo. Como ahora es el nico proceso que queda en el sistema, se vuelve a ejecutar de nuevo, terminando esta vez su ejecucin. Las caractersticas de este algoritmo de planificacin son: DURACIN 7 4 1 4

Baja sobrecarga si el cambio entre un proceso y otro es eficiente y los procesos siempre estn en la memoria principal El tamao ptimo del quantum depende de: o o El tipo de sistema.

o o

o Las cargas que vaya a soportar el sistema. o El nmero de procesos en el sistema y su tipo. Es la poltica mas usada para tiempo compartido. Ofrece un servicio igual para todos los procesos. Es una poltica apropiativa. Mantiene ms equilibradas las colas de procesos listos y bloqueados.

5.7 MTODOS DE ASIGNACIN La naturaleza de acceso directo de los discos nos brinda flexibilidad en la implementacin de los archivos. En casi todos los casos, muchos archivos se almacenan en el mismo disco. El problema principal es cmo asignar espacio a esos archivos de modo que el espacio se aproveche de forma eficaz y se pueda acceder rpidamente a los archivos. Hay tres mtodos de asignacin de espacio en disco que se usan ampliamente: contigua, enlazada e indizada. Cada mtodo tiene sus ventajas y desventajas, y es por ello que algunos sistemas (como el RDOS de Data General para su lnea de computadores Nova) manejan los tres, aunque es ms comn que un sistema utilice un mtodo en particular para todos los archivos. ASIGNACIN CONTIGUA El mtodo de asignacin contigua requiere que cada archivo ocupe un conjunto de bloques contiguos en el disco. Las direcciones de disco definen un ordenamiento lineal en l. Con este ordenamiento, suponiendo que slo un trabajo est accediendo al disco, el acceso al bloque b + 1 despus del bloque b normalmente no requiere movimiento de la cabeza. Si es preciso mover la cabeza (del ultimo sector de un cilindro al primero del siguiente), slo es una pista. As, el nmero de bsquedas de disco necesarias para acceder a archivos asignados contiguamente es mnimo, lo mismo que el tiempo de bsqueda cuando finalmente se necesita una bsqueda. El sistema operativo VM/CMS de IBM utiliza asignacin contigua por el buen desempeo que provee.

La asignacin contigua de un archivo est definida por la direccin en disco y la longitud (en unidades de bloque) del primer bloque. Si el archivo tiene n bloques, y comienza en la posicin b, ocupar los bloques b, b + 1, b + 2, ... , b + n 1. La entrada de directorio para cada archivo indica la direccin del bloque inicial y la longitud del rea asignada a este archivo. El acceso a un archivo que se asign de forma contigua es fcil. Si el acceso es secuencial, el sistema de archivos recuerda la direccin en disco del ultimo bloque al que se hizo referencia y, cuando llega el momento, lee el siguiente bloque. Si el acceso es directo al bloque i de un archivo que comienza en el bloque b, podemos acceder de inmediato al bloque b + i. As, la asignacin contigua permite manejar acceso tanto secuencial como directo. Una dificultad de la asignacin contigua es encontrar espacio para un archivo nuevo. La implementacin del sistema de administracin de espacio libre, que veremos en la fig., determina la forma de efectuar esto. Se puede usar cualquier sistema de administracin, pero algunos son ms lentos que otros.

Es evidente que el problema de asignacin de espacio contiguo en disco es una aplicacin especfica del problema general de asignacin dinmica de almacenamiento, a saber, cmo satisfacer una solicitud de tamao n a partir de una lista de huecos libres. Las estrategias de primer ajuste y mejor ajuste son las que ms comnmente se usan para seleccionar un hueco libre del conjunto de huecos disponibles. Se ha demostrado mediante simulaciones que tanto el primer ajuste como el mejor ajuste son ms eficientes que el peor ajuste en trminos tanto de tiempo como de utilizacin de espacio. No se ha determinado claramente si el primer ajuste es mejor que el mejor ajuste en trminos de aprovechamiento del espacio, pero generalmente es ms rpido. Estos algoritmos padecen el problema de fragmentacin externa. Conforme los archivos se asignan y borran, el espacio libre en disco se divide en trozos pequeos. Hay fragmentacin externa siempre que el espacio libre se divide en trozos, y se convierte en un problema cuando el trozo contiguo ms grande es insuficiente para una solicitud; el almacenamiento se fragmenta en varios huecos, ninguno de los cuales es lo bastante grande como para contener los datos. Dependiendo de la cantidad total de espacio en disco y del tamao promedio de los archivos, la fragmentacin externa podra ser un problema menor o mayor. Algunos sistemas de microcomputador viejos usaban asignacin contigua en discos flexibles. Para evitar la prdida de cantidades importantes de espacio en disco por fragmentacin externa, el usuario tena que ejecutar una rutina de reempacado que copiaba todo el sistema de archivos en otro disquete o en cinta. As, el disquete original se desocupaba y se creaba un espacio libre contiguo grande. A continuacin, la rutina copiaba los archivos otra vez en el disquete asignando espacio contiguo de este hueco grande nico. Tal esquema compacta efectivamente todo el espacio libre en un solo hueco contiguo y resuelve el problema de la fragmentacin. El costo de esta compactacin es el tiempo, y es especialmente severo en el caso de discos grandes que usan asignacin contigua, en los que la compactacin de todo el espacio podra tomar horas y por fuerza se tendra que llevar a cabo bajo un rgimen semanal. Durante este tiempo de inactividad, generalmente no puede permitirse el funcionamiento normal del sistema, as que en las mquinas de produccin una compactacin semejante se evita a toda costa. La asignacin contigua tiene otros problemas. Uno de los ms importantes es determinar cunto espacio se necesita para un archivo. Cuando se crea un archivo, es preciso encontrar la cantidad total de espacio que necesitar, y asignarla. Cmo sabe el creador (programa o persona) qu tamao tendr el archivo creado? En algunos casos tal determinacin podra ser sencilla (cuando se copia un archivo existente, por ejemplo), pero en general puede ser difcil estimar el tamao de un archivo de salida. Si asignamos un espacio demasiado pequeo a un archivo, podramos encontrarnos con que ya no podemos extender ese archivo. Sobre todo si se usa una estrategia de mejor ajuste, el espacio a ambos lados del archivo podra estar ya en uso, y no podramos hacer crecer el archivo en su lugar. En tal caso hay dos posibilidades. Primera, podramos terminar el programa de usuario, con un mensaje de error apropiado. El usuario tendr entonces que asignar ms espacio y ejecutar de nuevo el programa. Tales ejecuciones repetidas podran ser costosas. Para evitarlas, el usuario normalmente sobreestimar la cantidad de espacio requerida, y el resultado ser un desperdicio considerable de espacio. La otra posibilidad es encontrar un hueco ms grande, copiar el contenido del archivo en el nuevo espacio, y liberar el espacio anterior. Esta serie de acciones podra repetirse mientras haya espacio disponible, aunque tambin podra consumir mucho tiempo. La ventaja en este caso es que no es necesario informar al usuario explcitamente de lo que est sucediendo; el sistema contina a pesar del problema, aunque cada vez con mayor lentitud. Incluso si se conoce con anticipacin la cantidad total del espacio requerido para un archivo, la preasignacin podra ser ineficiente. Un archivo que crece lentamente durante un periodo largo (meses o aos) tendra que recibir inicialmente suficiente espacio para su tamao final, aunque gran parte de ese espacio no se ocupe durante largo tiempo. En este caso el archivo tiene una gran cantidad de fragmentacin interna.

Para evitar varias de estas desventajas, algunos sistemas operativos utilizan un esquema de asignacin contigua modificado, en el que inicialmente se asigna un trozo contiguo de espacio y luego, cuando ese espacio deja de ser suficiente, se aade otro trozo de espacio contiguo, una extensin, a la asignacin inicial. La ubicacin de los bloques de un archivo se registra entonces como una posicin y una cuenta de bloques, ms un enlace al primer bloque de la siguiente extensin. En algunos sistemas, el propietario del archivo puede establecer el tamao de las extensiones, pero esto puede dar lugar a ineficiencias si el propietario no acta correctamente. La fragmentacin interna puede seguir siendo un problema si las extensiones son demasiado grandes, y la fragmentacin externa puede ser tambin problemtica cuando se asignan y liberan extensiones de diferentes tamaos. ASIGNACIN ENLAZADA La asignacin enlazada resuelve todos los problemas de la asignacin contigua. Con este esquema, cada archivo es una lista enlazada de bloques de disco, los cuales pueden estar dispersos en cualquier parte del disco. El directorio contiene un puntero al primer y al ltimo bloques del archivo. Por ejemplo, un archivo de cinco bloques podra comenzar en el bloque 9, continuar en el bloque 16, luego el 1, el 10 y por ltimo el bloque 25 (Fig. ). Cada bloque contiene un puntero al siguiente bloque. Estos punteros no se proporcionan al usuario. As, si cada bloque tiene 512 bytes, y una direccin de disco (el puntero) requiere cuatro bytes, el usuario ver bloques de 508 bytes. Para crear un archivo nuevo, simplemente creamos una nueva entrada en el directorio. Con la asignacin enlazada, cada entrada de directorio tiene un puntero al primer bloque de disco del archivo. Inicialmente el puntero recibe el valor nil (el valor del puntero de fin de lista) para indicar un archivo vaco, y tambin se asigna cero al campo de tamao. Una escritura en el archivo hace que se encuentre un bloque libre a travs del sistema de administracin del espacio libre, y luego se escribe en ese bloque, enlazndolo al final del archivo. Para leer un archivo, basta con leer los bloques siguiendo los punteros de un bloque al siguiente. Cuando se usa asignacin enlazada no hay fragmentacin externa, pues cualquier bloque libre de la lista de espacio libre se puede usar para satisfacer una solicitud. Adems, no hay necesidad de declarar el tamao de un archivo en el momento de crearlo. Un archivo puede continuar creciendo en tanto haya bloques libres. Por ello, nunca es necesario compactar el disco. La asignacin enlazada no carece de problemas. El principal de ellos es que slo puede usarse efectivamente para archivos de acceso secuencial. Para encontrar el i-simo bloque de un archivo, es necesario partir del principio del archivo y seguir los punteros hasta llegar al i-simo bloque. Cada acceso a un puntero requiere una lectura del disco/ y a veces una bsqueda de disco. Por consiguiente, no resulta eficiente proveer una capacidad de acceso directo para archivos de asignacin enlazada.

Otra desventaja de la asignacin enlazada es el espacio que ocupan los punteros. Si un puntero requiere cuatro bytes de un bloque de 512 bytes, el 0.78% del disco se usar para punteros, no para informacin. Cada archivo requiere un poco ms de espacio del que requerira en otro caso. La solucin usual a este problema es juntar bloques en mltiplos, llamados cmulos (clusters), y asignar los cmulos en lugar de los bloques. Por ejemplo, el sistema de archivos podra definir un cmulo como cuatro bloques, y operar con el disco slo en unidades de cmulos. Entonces, los punteros ocuparn un porcentaje mucho ms pequeo del espacio en disco del archivo. Este mtodo permite que la correspondencia entre bloques lgicos y fsicos siga siendo sencilla, mejora el rendimiento del disco (menos bsquedas de disco) y reduce el espacio necesario para la asignacin de bloques y la administracin de la lista de espacio libre. El costo de la estrategia es un aumento en la fragmentacin interna, ya que se desperdicia ms espacio cuando un cmulo est parcialmente lleno que cuando un bloque est parcialmente lleno. Los cmulos pueden servir para mejorar el tiempo de acceso a disco con muchos otros algoritmos, y es por ello que se usan en casi todos los sistemas operativos. Un problema adicional es la confiabilidad. Dado que los archivos se enlazan mediante punteros que estn dispersos por todo el disco, consideremos lo que sucedera si un puntero se perdiera o daara. Un error en el software del sistema operativo o un fallo en el hardware del disco podra hacer que se obtuviera un puntero equivocado. Esto podra hacer que un archivo se enlazara con la lista de espacio libre o con i archivo. Dos soluciones parciales seran usar listas doblemente enlazadas o almacenar el nombre del archivo y el nmero de bloque relativo en cada bloque; sin embargo, tales esquemas requieren un gasto extra an mayor para cada archivo. Una variacin importante del mtodo de asignacin enlazada es usar una tabla de asignacin de archivos (FAT, file-allocation table). Este sencillo pero eficiente mtodo asignacin de espacio en disco se emplea en los sistemas operativos MS-DOS y OS/2. Se aparta una seccin del disco al principio de cada particin para guardar en ella la tabla, la cual tiene una entrada para cada bloque del disco y est indizada por nmero de bloque. La FAT se usa de manera similar a una lista enlazada. La entrada de directorio contiene el nmero de

bloque del primer bloque del archivo. entrada de la tabla indizada por ese nmero de bloque contiene el nmero del siguiente bloque del archivo. Esta cadena contina hasta el ltimo bloque, que tiene un valor especial de fn-de-archivo (end of file) como entrada de tabla. Los bloques desocupados se indican con un valor de cero en la tabla. Para asignar un bloc nuevo a un archivo, basta con encontrar la primera entrada de la tabla que valga cero y sustituir el valor de fin-de-archivo anterior por la direccin del nuevo bloque. A continuacin, el cero se sustituye por el valor de fin-de-archivo. Un ejemplo ilustrativo es la estructura de FAT de la figura para un archivo que consiste en bloques de disco 217, 618 y 339.

Cabe sealar que el esquema de asignacin por FAT puede dar pie a un nmero significativo de movimientos de la cabeza del disco, a menos que la FAT se mantenga cach. La cabeza del disco debe moverse al principio de la particin para leer la FA1 encontrar la ubicacin del bloque en cuestin, luego moverse a la posicin del bloque en s. En el peor caso, ocurrirn ambos movimientos para cada uno de los bloques. Un beneficio es que se mejora el tiempo de acceso aleatorio, porque la cabeza del disco puede encontrar la posicin de cualquier bloque leyendo la informacin en la FAT. ASIGNACIN INDIZADA La asignacin enlazada resuelve los problemas de fragmentacin externa y declaracin de tamao de la asignacin contigua, pero, si no se usa una FAT, no puede apoyar un acceso directo eficiente, ya que los punteros a los bloques estn dispersos junto con los bloques mismos por todo el disco y necesitan recuperarse en orden. La asignacin indizada resuelve este problema al reunir todos los punteros en un mismo lugar: el bloque ndice. Cada archivo tiene su propio bloque ndice, que es una matriz de direcciones de bloques de disco. La i-sima entrada del bloque ndice apunta al i-simo bloque del archivo. El directorio contiene la direccin del bloque ndice. Para leer el i-simo bloque, usamos el puntero de la i-sima entrada del bloque ndice para encontrar y leer el bloque deseado.

Cuando se crea el archivo, se asigna nil a todos los apuntadores del bloque ndice. La primera vez que se escribe el -simo bloque, se obtiene un bloque del administrador de espacio libre y su direccin se coloca en la I-sima entrada del bloque ndice. La asignacin indizada apoya el acceso directo sin sufrir fragmentacin externa, porque cualquier bloque libre del disco puede satisfacer una solicitud de espacio adicional. La asignacin indizada s desperdicia espacio. El gasto extra de los punteros del bloque ndice generalmente es mayor que el de los punteros de la asignacin enlazada. Consideremos un caso comn en el que tenemos un archivo que slo ocupa uno o dos bloques. Con la asignacin enlazada, slo perdemos el espacio de un puntero por bloque (uno o dos punteros). Con la asignacin indizada, es preciso asignar un bloque ndice entero, aun si slo uno o dos punteros son diferentes de nil. Esto hace surgir la pregunta de qu tan grande debe ser el bloque ndice. Cada archivo debe tener un bloque ndice, as que nos conviene que el bloque sea lo ms pequeo posible. Sin embargo, si el bloque ndice es demasiado pequeo no podr contener suficientes punteros para un archivo grande, y se necesitar un mecanismo para resolver este problema:

Esquema enlazado. Un bloque ndice normalmente ocupa un bloque de disco; por tanto, se puede leer y escribir directamente por s solo. Para manejar archivos grandes, podramos enlazar varios bloques ndice. Por ejemplo, un bloque ndice podra contener una cabecera pequea con el nombre del archivo y las primeras 100 direcciones de bloques de disco. La siguiente direccin (la ltima palabra del bloque ndice) es nil (si el archivo es pequeo) o un puntero a otro bloque ndice (si el archivo es grande).

ndice multinivel. Una variante de la representacin enlazada es usar un bloque ndice de primer nivel que apunte a un conjunto de bloques ndice de segundo nivel, que a su vez apuntan a los bloques de disco. Para acceder a un bloque, el sistema operativo usa el ndice de primer nivel para encontrar un bloque ndice de segundo nivel, y ese bloque para hallar el bloque de datos deseado. Este enfoque podra extenderse a un tercer o cuarto nivel, dependiendo del tamao mximo de archivo deseado. Con bloques de 4096 bytes, podramos guardar 1024 punteros de cuatro bytes en un bloque ndice. Dos niveles de

ndices permitiran apuntar a 1,048/576 bloques de datos, con lo que un archivo podra tener hasta cuatro gigabytes.

Esquema combinado. Otra alternativa, que se usa en el sistema BSD UNIX, es guardar los primeros, digamos, 15 punteros del bloque ndice en el bloque ndice (o i-nodo) del archivo. (La entrada de directorio apunta al i-nodo). Los primeros 12 de estos punteros apuntan a bloques directos; es decir, contienen direcciones de bloques que contienen datos del archivo. As, los datos de archivos pequeos (de no ms de 12 bloques) no necesitan un bloque ndice aparte. Si el tamao de bloque es de 4K, es posible acceder directamente a hasta 48K de datos. Los siguientes tres punteros apuntan a bloques indirectos. El primer puntero de bloque indirecto es la direccin de un bloque indirecto simple: un bloque ndice que no contiene datos, sino las direcciones de bloques que s contienen datos. Luego viene un puntero a un bloque indirecto doble, que contiene la direccin de un bloque que contiene las direcciones de bloques que contienen punteros a los bloques de datos reales. El ltimo puntero contendra la direccin de un bloque indirecto triple. Con este mtodo, el nmero de bloques que es posible asignar a un archivo excede la cantidad de espacio que puede direccionarse con los punteros de archivo de cuatro bytes que usan muchos sistemas operativos. Un puntero de archivo de 32 bits slo alcanza para 2 Exp.32 bytes, o 4 gigabytes. En la figura se muestra un i-nodo.

Los esquemas de asignacin indizada exhiben algunos de los mismos problemas de desempeo que la asignacin enlazada. En trminos especficos, los bloques ndice se pueden colocar en un cach en la memoria, pero los bloques de datos podran estar dispersos por toda una particin.

5.8 INTRODUCCIN Y PROCESOS DE E/S Los dispositivos que se conectan a un computador varan en muchas dimensiones: transfieren un carcter o un bloque de caracteres a la vez; se puede acceder a ellos slo secuencialmente, o de forma aleatoria; transfieren datos sincrnica o asincrnicamente; son dedicados o compartidos; pueden ser slo de lectura o de lectura y escritura. Adems, los dispositivos varan mucho en cuanto a su velocidad. En muchos sentidos, estos dispositivos tambin son los ms lentos de los componentes principales del computador. A causa de toda esta variacin en los dispositivos, el sistema operativo necesita ofrecer una gama muy amplia de funcionalidad a las aplicaciones para que ellas puedan controlar todos los aspectos de los dispositivos. Uno de los objetivos clave del subsistema de E / S de un sistema operativo es proporcionar la interfaz ms sencilla posible al resto del sistema. Dado que los dispositivos son un cuello de botella del desempeo, otra clave es optimizar la E/S de modo que la concurrencia sea mxima. Las dos tareas principales de un computador son E/S y procesamiento. En muchos casos, la tarea principal es la E/S, y el procesamiento es meramente incidental. Por ejemplo, cuando navegamos en una pgina de Web o editamos un archivo, nuestro inters inmediato es leer o escribir algo de informacin, no calcular una respuesta. El papel del sistema operativo en la E/S de un computador es administrar y controlar las operaciones de E/S y los dispositivos de E/S. Aqu reuniremos todas las piezas para presentar una imagen completa. GENERALIDADES El control de los dispositivos conectados al computador es una preocupacin importante de los diseadores de sistemas operativos. Dada la amplia variacin en la funcin y velocidad de los dispositivos de E/S (consideremos un ratn, un disco duro y un jukebox de CD-ROM), se requieren diversos mtodos para controlarlos. Estos mtodos constituyen el subsistema de E/S del ncleo, que asla el resto del ncleo de la complejidad de administrar los dispositivos de E/S. La tecnologa de dispositivos de E / S exhibe dos tendencias que estn en conflicto. Por un lado/ vemos una creciente estandarizacin de las interfaces de software y hardware. Esta tendencia nos ayuda a incorporar generaciones de dispositivos mejorados a computadores y sistemas operativos existentes. Por otro lado, vemos una variedad cada vez ms amplia de dispositivos de E/S. Algunos dispositivos nuevos son tan distintos de los anteriores que es un reto incorporarlos en nuestros computadores y sistemas operativos. Este reto se enfrenta con una combinacin de tcnicas de hardware y software. Los elementos bsicos de hardware de E/S, como puertos, buses y controladores de dispositivos, dan cabida a una amplia variedad de dispositivos de E/S. Para encapsular los detalles y peculiaridades de los diferentes dispositivos, el ncleo de un sistema operativo se estructura a modo de usar mdulos controladores de dispositivos (en software) o drivers. Los drivers presentan al subsistema de E/S una interfaz de acceso a dispositivos uniforme, as como las llamadas al sistema proporcionan una interfaz estndar entre la aplicacin y el sistema operativo

5.9 DESPACHADOR Otro componente que interviene en la funcin de planificacin de la CPU es el despachador (dispatcher). Este es el mdulo que cede el control de la CPU al proceso seleccionado por el planificador a corto plazo. Esta funcin implica:

o o o

Cambiar de contexto Cambiar a modo de usuario Saltar al punto apropiado del programa del usuario para reiniciar ese programa

El despachador debe ser lo ms rpido posible, porque se invoca en cada conmutacin de proceso. El tiempo que el despachador tarda en detener un proceso y poner otro en ejecucin se denomina latencia del despachador.

Você também pode gostar