Sie sind auf Seite 1von 10

Repblica Bolivariana de Venezuela Ministerio del Poder Popular para la Educacin Superior Universidad Alejandro de Humboldt Ctedra: SISTEMAS

OPERATIVOS II

Ernesto Flames CI.N: 17.855.837 Yonathan Villarreal CI.N: 20.595.164 Seccion: D-08 Caracas, Noviembre del 2008

INTRODUCCIN En introduccin al siguiente informe o trabajo podemos sealar antes que todo que en los sistemas operativos multiprogramados surge el concepto de proceso, asociado a la ejecucin de un programa. En general, un proceso es un flujo de ejecucin, representado bsicamente por un contador de programa, y su contexto de ejecucin, que puede ser ms o menos amplio. As, un proceso incluye en su contexto el estado de la pila, el estado de la memoria y el estado de la E/S, mientras que un thread tpico tiene como contexto propio poco ms que la pila. En algunos sistemas es posible determinar el contexto propio de un proceso en el momento de su creacin, Por esta misma razn sealaremos lo que es una sincronizacin de multiprocesos o multiprocesadores.

SISTEMAS MULTIPROCESO

Multiproceso es tradicionalmente conocido como el uso de mltiples procesos concurrentes en un sistema en lugar de un nico proceso en un instante determinado. Como la multitarea que permite a mltiples procesos compartir una nica CPU, mltiples CPUs pueden ser utilizados para ejecutar mltiples hilos dentro de un nico proceso. El multiproceso para tareas generales es, a menudo, bastante difcil de conseguir debido a que puede haber varios programas manejando datos internos (conocido como estado o contexto) a la vez. Los programas tpicamente se escriben asumiendo que sus datos son incorruptibles. Sin embargo, si otra copia del programa se ejecuta en otro procesador, las dos copias pueden interferir entre s intentando ambas leer o escribir su estado al mismo tiempo. Para evitar este problema se usa una variedad de tcnicas de programacin incluyendo semforos y otras comprobaciones y bloqueos que permiten a una sola copia del programa cambiar de forma exclusiva ciertos valores.

Sistemas operativos multiproceso Un sistema operativo multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente, la razn es porque actualmente nuestras CPUs slo pueden ejecutar un proceso cada vez. La nica forma de que se ejecuten de forma simultnea varios procesos es tener varias CPUs (ya sea en una mquina o en varias, en un sistema distribuido). La magia de un sistema operativo multiproceso reside en la operacon llamada cambio de contexto. Esta operacin consiste en quitar a un proceso de la CPU, ejecutar otro proceso y volver a colocar el primero sin que se entere de nada. Un sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente, la razn es porque actualmente la mayora de las CPUs slo pueden ejecutar un proceso cada vez. La nica forma de que se ejecuten de forma simultnea varios procesos es tener varias CPUs (ya sea en una mquina o en varias, en un sistema distribuido.

La ventaja de un sistema multiproceso reside en la operacin llamada cambio de contexto. Esta operacin consiste en quitar a un proceso de la CPU, ejecutar otro proceso y volver a colocar el primero sin que se entere de nada. El multiproceso no es algo difcil de entender: ms procesadores significa ms potencia computacional. Un conjunto de tareas puede ser completado ms rpidamente si hay varias unidades de proceso ejecutndolas en paralelo. Esa es la teora, pero otra historia es la prctica, como hacer funcionar el multiproceso, lo que requiere unos profundos conocimientos tanto del hardware como del software. Es necesario conocer ampliamente como estn interconectados dichos procesadores, y la forma en que el cdigo que se ejecuta en los mismos ha sido escrito para escribir aplicaciones y software que aproveche al mximo sus prestaciones. Para lograrlo, es necesario modificar varias facetas del sistema operativo, la organizacin del cdigo de las propias aplicaciones, as como los lenguajes de programacin. Se configuran dos computadoras de gran capacidad interconectados electrnicamente entre si. Esta configuracin recibe el nombre de multiproceso y se caracteriza porque permite proceso de datos continuo an en el caso de que surjan problemas de funcionamiento en alguno de las computadoras. Un ejemplo de este tipo de sistema se muestra en la figura 6.3. ste es un modelo sencillo de un sistema de control de trfico areo. Un conjunto de sensores distribuidos recolecta la informacin del flujo de trfico y la procesa localmente antes de enviarla al cuarto de control. Los operadores toman decisiones utilizando esta informacin y dan instrucciones a un proceso de control de diversas luces de trfico. En este ejemplo existen varios procesos lgicos para administrar los sensores, el cuarto de control y las luces de trfico. Estos procesos lgicos son procesos sencillos a un grupo de procesos. En este ejemplo se ejecutan en procesadores diferentes. Los sistemas de software compuestos de procesos mltiples no necesariamente son sistemas distribuidos. Si ms de un procesador est disponible, entonces se puede implementar la distribucin, pero los diseadores del sistema no siempre consideran lo puntos de distribucin durante el proceso de diseo. El enfoque de diseo para este tipo de sistemas es esencialmente el mismo que para los de tiempo real.

Ventajas Es econmica. El uso de componentes comnmente disponibles, en grandes cantidades, permite ofrecer mayor rendimiento, a un precio menor que el de mquinas con procesadores especialmente diseados (como por ejemplo las mquinas de procesadores vectoriales y de propsito especfico). Adicionalmente, las computadoras paralelas son inherentemente escalables, permitiendo actualizarlas para adecuarlas a una necesidad creciente. Las arquitecturas tradicionales se actualizan haciendo los procesadores existentes obsoletos por la introduccin de nueva tecnologa a un costo posiblemente elevado. Por otro lado, una arquitectura paralela se puede actualizar en trminos de rendimiento simplemente agregando ms procesadores. Desventajas En ocasiones se menciona tambin la limitante fsica; existen factores que limitan la velocidad mxima de un procesador, independientemente del factor econmico. Barreras fsicas infranqueables, tales como la velocidad de la luz, efectos cunticos al reducir el tamao de los elementos de los procesadores, y problemas causados por fenmenos elctricos a pequeas escalas, restringen la capacidad mxima de un sistema uniprocesador, dejando la opcin obvia de colocar muchos procesadores para realizar clculos cooperativamente.

Sincronizacin del multiprocesador

El concepto de exclusin mutua es crucial en el desarrollo de los sistemas operativos. Se refiere a la garanta de que slo un hilo pueda acceder a un recurso particular en un momento dado. La exclusin mutua es necesaria cuando un recurso no se presta a acceso compartido o cuando la comparticin tendra un resultado impredecible. Por ejemplo, si dos hilos copian un fichero a un puerto de impresora a la vez, su salida podra ser entremezclada. De manera similar, si un hilo lee una localizacin de memoria mientras otro hilo escribe en ella, el primer hilo recibir datos impredecibles. En general, los

recursos susceptibles de ser escritos no pueden compartirse sin restricciones, mientras que los recursos que no estn sujetos a modificaciones si pueden ser compartidos. La Ilustracin 6 ilustra lo que sucede cuando dos hilos que se ejecutan en diferentes procesadores escriben datos en una cola circular.

Sincronizacin de subprocesos Cuando se crea una aplicacin multiproceso, se deben sincronizar los subprocesos individuales con otras partes del programa. La sincronizacin ofrece un compromiso entre la naturaleza desestructurada de la programacin multiproceso y el orden estructurado del procesamiento sincrnico. Las tcnicas de sincronizacin se utilizan: Para controlar explcitamente el orden en que se ejecuta el cdigo, siempre que sea necesario ejecutar tareas en una secuencia especfica O bien Para evitar los problemas que pueden producirse cuando dos subprocesos comparten los mismos recursos al mismo tiempo. Por ejemplo, puede utilizar la sincronizacin para hacer que un procedimiento de presentacin espere hasta que se complete un procedimiento de recuperacin de datos que se est ejecutando en otro subproceso.

Concepto de proceso o tarea Un proceso, o tarea, es un programa en ejecucin. Los procesos en un sistema operativo tradicional multiproceso (como en los antiguos UNIX) se caracterizan por: Un proceso para empezar su ejecucin ha de residir completamente en memoria y tener asignados todos los recursos que necesite. Cada proceso est protegido del resto de procesos, ningn otro proceso podr escribir en las zonas de memoria pertenecientes a ese proceso.

Los procesos pertenecientes a los usuarios se ejecutan en el modo usuario del procesador (con restricciones de acceso a los recursos), los que pertenecen al sistema se ejecutaran en el modo kernel del procesador (podrn acceder a cualquier recurso). Para que un proceso de usuario acceda a los recursos tendr que hacerlo por medio de llamadas al sistema. Cada proceso tendr una estructura de datos llamada bloque de control de proceso (BCP), donde se almacenar informacin acerca del proceso, como: Identificacin del proceso (pid). Prioridad. Estado del proceso (ejecucin, preparado, suspendido o zombie). Estado hardware (registros y flags del procesador). Informacin de planificacin y estadsticas de uso. Informacin de gestin de memoria. Estado de E/S (dispositivos asignados, operaciones pendientes). Informacin de gestin de archivos (archivos abiertos, derechos). Informacin de mantenimiento.

Los procesos se podrn comunicar, sincronizarse y colaborar entre ellos. Estas operaciones se realizan por: Comunicacin: memoria compartida e intercambio de mensajes. Sincronizacin: semforos. Colaboracin: por LPC y RPC (llamadas a procedimientos locales y remotos). La razn principal de estas operaciones es que, al residir cada proceso en zonas de memoria independientes, se ha de llamar al sistema para compartir los datos entre los procesos. Espacio de direcciones lgicas. En este espacio de direcciones reside el proceso (en la parte baja) y las llamadas al sistema (en la parte alta), esto es as para tener un acceso directo a los recursos del sistema. Este espacio de memoria es igual al mximo que nuestro sistema operativo es capaz de

gestionar (en un sistema operativo de 32 bits se llegr hasta 4 GB), y aqu entra en juego la memoria virtual: Los procesos se dividen en trozos de igual tamao, llamados pginas, cuando se carga un proceso lo que se hace es llevarlo a la memoria virtual y asignarle un nmero mximo de pginas en memoria real a emplear (working set). Cuando el proceso es ejecutado, si quiere acceder a una pgina que no est en memoria real, se la busca en memoria virtual y se carga en memoria real. Cuando se llega al nmero mximo de pginas utilizadas en memoria real por un proceso se proceder a descargar una pgina de memoria real a la virtual, normalmente se descarga la ms antiguamente utilizada. Los problemas de este sistema es que, si tenemos un programa mal programado, pueden ocurrir problemas de hiperpaginacin (se da un gran nmero de faltas de pgina que sern utilizadas prontamente).

Tcnicas de sincronizacin

Hay dos enfoques para la sincronizacin, el sondeo y el uso de objetos de sincronizacin. Sondeo El sondeo comprueba repetidamente el estado de una llamada asincrnica desde el interior de un bucle. El sondeo es el modo menos eficiente para administrar subprocesos, porque desperdicia recursos al comprobar repetidamente el estado de las diversas propiedades del subproceso. Por ejemplo, es posible utilizar la propiedad IsAlive durante el sondeo para ver si se ha salido de un subproceso. Utilice esta propiedad con cuidado, porque un subproceso activo puede no estar necesariamente en ejecucin. Se puede utilizar la propiedad ThreadState del subproceso para obtener informacin ms detallada sobre su estado. Ya que los subprocesos pueden estar en ms de un estado en un momento determinado, el valor almacenado en ThreadState puede ser una combinacin de los valores de la enumeracin System.Threading.ThreadState. En consecuencia, es recomendable comprobar

minuciosamente todos los estados relevantes del subproceso al utilizar el sondeo. Por ejemplo, si el estado de un subproceso indica un valor distinto de Running, es posible que haya terminado. Por otra parte, puede estar suspendido o inactivo. Esperar la finalizacin de un subproceso El mtodo System.Threading.Thread.Join es til para determinar si un subproceso ha finalizado antes de iniciarse otra tarea. El mtodo Join espera durante un tiempo determinado a que finalice un subproceso. Si el subproceso finaliza antes del tiempo de espera, Join devuelve True; de lo contrario devuelve False. Como puede imaginar, el sondeo sacrifica muchas de las ventajas del multiproceso en favor de un mayor control sobre el orden en que se ejecutan los subprocesos. Debido a su ineficacia, el sondeo no suele ser recomendable. Un enfoque ms eficaz utilizara el mtodo Join para controlar los subprocesos. Join determina que un procedimiento que realiza una llamada espere hasta que finalice un subproceso o hasta que finalice el tiempo de espera de la llamada, si se especifica un tiempo de espera. El nombre "join" (unir) se basa en la idea de que la creacin de un nuevo subproceso es una bifurcacin en la ruta de ejecucin. Join se utiliza para combinar de nuevo rutas de ejecucin separadas en un solo subproceso.

Un punto debe quedar claro: Join es una llamada sincrnica o de bloqueo. Cuando se llama a Join o a un mtodo de espera de un controlador de espera, el procedimiento de llamada se detiene y espera a que el subproceso indique su finalizacin.

Das könnte Ihnen auch gefallen