|
Por: 04-05-2009 por EstebanYomairo |
Categorías asociadas: Paralelo "A"
INTERBLOQUEOS El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestión concurrente de procesos, no existe una solución eficiente para el caso general.
MODELO DEL SISTEMA
El interbloqueo es un problema que afecta a procesos concurrentes que utilizan recursos en un sistema. Los procesos solicitan recursos al sistema y los liberan cuando ya no los necesitan. Un recurso puede estar disponible o bien asignado a algún proceso.
Ejemplares. Puede haber varios ejemplares de un mismo tipo de recurso (ej. Varias impresoras). En este caso, cuando un proceso solicita un recurso, se le concede cualquiera de los ejemplares que esté disponible. Si un proceso solicita un recurso que no tiene ejemplares disponibles, el proceso queda bloqueado, esperando hasta que se le asigna un ejemplar.
Esquema de funcionamiento normal 1.- Solicitud.- Si la solicitud no puede ser atendida, entonces el proceso debe esperar. 2.- Uso.- El proceso debe operar sobre le recurso 3.- Liberación.- El proceso debe liberar el recurso.
Características
En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo: 1- Exclusión mutua: Cada recurso esta asignado a un único proceso o esta disponible. 2- Retención y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos. 3- No apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explicita. En la mayoría de los casos, estas condiciones son bastantes necesarias. La exclusión mutua hace falta para asegurar la consistencia de resultados y la integridad de la base de datos. De forma similar, la apropiación no se puede aplicar arbitrariamente y, cuando se encuentran involucrados recursos de datos, debe estar acompañada de un mecanismo de recuperación y reanulación, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso puede finalmente repetir sus acciones. Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condición: 4.- Espera circular: Debe existir una cadena circular de dos o mas procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena.
Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. La cuarta condición es, en realidad, una consecuencia potencial de las tres primeras. Es decir, dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un circulo vicioso de espera irresoluble. El circulo de espera de la condición 4 es irresoluble porque se mantienen las tres primeras condiciones. Las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para el interbloqueo.
GRÁFICA DE ASIGNACIÓN DE RECURSOS
PREVENCIÓN DE INTERBLOQUEOS La estrategia básica de la prevención del interbloqueo consiste, a grandes rasgos, en diseñar su sistema de manera que esté excluida, a priori, la posibilidad de interbloqueo. Los métodos para prevenir el interbloqueo son de dos tipos: - Los métodos indirectos que consisten en impedir la aparición de alguna de las tres condiciones necesarias para que se de el interbloqeo. - Los métodos directos que consisten en evitar la aparición del circulo vicioso de espera. Exclusión mutuaSi ningún recurso se puede asignar de forma exclusiva, no se producirá interbloqueo. Sin embargo, existen recursos para los que no es posible negar la condicion de exclusión mutua. No obstante, es posible eliminar esta condicion en algunos procesos. Por ejemplo, una impresora es un recurso no compatible pues si se permite que dos procesos escriban en la impresora al mismo tiempo, la salida resulta caótica. Pero con el spooling de salida varios procesos pueden generar salida al mismo tiempo. Puesto que el spooler nunca solicita otros recuersos, se elimina el bloqueo originado por la impresora. El inconveniente es que no todos los recursos pueden usarse de esta forma (por ejemplo, la tabla de procesos no se presenta al spooling y, ademas, la implementacion de esta técnica puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco finita) Retencion y esperaLa condicion de retencion y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan concederse simultáneamente. Esta solucion resulta ineficiente por dos factores: - En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que concedan todas sus solicitudes de recursos, cuando de hecho podria haber avanzado con solo algunos de los recursos. - Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos. No apropiaciónLa condición de no apropiación puede prevenirse de varias formas. Primero, si a un proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso deberá liberar sus recursos anteriores y solicitarlos d eneuvo, cuando sea necesario, junto con el recurso adicional. Por otra parte, si un proceso solicita un recurso que actualmente esta retenido por otro proceso, el sistema operativo debe expulsar al segundo proceso y exigirle que libere sus recursos. Este ultimo esquema evitará el interbloqueo sólo si nho hay dos procesos que posean la misma prioridad. Esta técnica es práctica sólo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse más tarde de una forma facil, como es el caso de un procesador. Espera circularLa condición del espera circular puede prevenirse definiendo una ordenación lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces sólo podrá realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación. Para comprobar el funcionamiento de esta estrategia, se asocia un índice a cada tipo de recurso. En tal caso, el recurso Ri antecede a Rj en la ordenación si i<j. Entonces, supóngase que dos procesos A y B, están interbloqueados, porque A ha adquirido Ri y solicitado Rj, mientras que B ha adquirido Rj y solicitado Ri. Esta condición es imposible porque implica que i<j y j<i. Como en la retención y espera, la prevención del circulo vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.
EVASIÓN DE INTERBLOQUEOS
Una forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevención, es la predicción del interbloqueo. En la prevención de interbloqueo, se obligaba a las solicitudes de recursos a impedir que sucediera , por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la aparición de una de las tres condiciones necesarias (exclusión mutua, retención y espera, no apropiación) o directamente, impidiendo la aparición de un circulo viciosos de espera. Se llega así a un uso ineficiente de los recursos y una ejecución ineficiente de los procesos. Con predicción del interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La predicción, por lo tanto, permite más concurrencia que la prevención. Con predicción del interbloqueo, se decide dinámicamente si la petición actual de asignación de un recurso podría, de concederse, llevar potencialmente a un interbloqueo. La predicción del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos. Enfoques para la predicción del interbloqueo: - No iniciar un proceso si sus demandas pueden llevar a interbloqueo. - No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo.
POR: Esteban Chamba Jiménez Referencias
SILBERSCHATZ-GALVIN-GAGNE Fundamentos De Sistemas Operativos http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO6.htm http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/CINTIN02.htm Por: 04-05-2009 por EstebanYomairo |
Categorías asociadas: Paralelo "A"
CAPÍTULO _2.3 (Materia: SISTEMAS OPERATIVOS)
SINCRONIZACIÓN DE PROCESOS
Un proceso es cooperativo si puede afectar o ser afectado por los otros procesos que se están ejecutando en el sistema. •La cooperación entre procesos requiere: la ejecución concurrente de los mismos, mecanismos de comunicación y mecanismos de sincronización
Al haber procesos concurrentes se deben emplear mecanismos para asegurar la consistencia de los datos. Como ejemplo, supongamos que tenemos 3 procesos concurrentes que quieren modificar un mismo archivo. Si los 3 acceden a este al mismo tiempo el archivo quedará con valores incorrectos. Para resolver problemas como este se ideó la sección crítica, que es el segmento de código que accede a los recursos. Sólo puede haber una sección crítica en ejecución por vez, así nos aseguramos que los datos quedan consistentes.
La sección crítica El problema de la seción crítica consiste en diseñar un protocolo que los procesos puedan usar para cooperar de esta forma. Cualquier solución al problema de la sección crítica deberá satisfacer los tres requisitos siguiente: · Exclusión mutua.- Si el proceso Pi está ejecutándose en su sección crítica, los demás procesos no pueden estar ejecutando sus secciones críticas. · Progreso.- Si ningún proceso está ejecutando su sección crítica, y algunos procesos desean entrar en sus correspondientes secciones críticas, sólo aquellos procesos que no estén ejecutando sus secciones restantes pueden participar en la decisión de cuál será el siguiente que entre en su sección crítica, y esta selección no se puede posponer indefinidamente. · Espera limitada.- Existe un límite en el número de veces que se permite que otros procesos entren en sus secciones críticas después de que un proceso haya hecho una solicitud para entrar en su sección crítica y antes de que la misma haya sido concedida.
Se usan dos métodos generales para gestionar las secciones críticas en los sistemas operativos: 1. Kernels apropiativos.- Permite que un proceso sea desalojado mientras se está ejecutando en modo kernel. 2. Kernels no apropiativos.- No apropiativo no permite que un proceso que se esté ejecutando en modo kernel sea desalojado. HARDWARE DE SINCRONIZACIÓN
En sistemas de un procesador, el problema de las secciones críticas podría ser resuelto simplemente si pudiéramos deshabilitar las interrupciones mientras una variable compartida está siendo actualizada. Esta solución no es factible para un sistema con varios procesadores debido a la demora que implica el pasaje de mensajes. En muchos sistemas existen instrucciones de hardware que pueden ser usadas para resolver el problema de las secciones críticas. Estas instrucciones permiten ejecutar atómicamente las operaciones de: – chequear y modificar el contenido de una palabra, o – intercambiar el contenido de dos palabras
SEMÁFOROS
Las soluciones por hardware presentadas no son fáciles de generalizar a problemas más complejos. Esta dificultad se puede superar usando una herramienta de sincronización llamada semáforo. Un semáforo S es una variable entera que solo es accedida a través de dos operaciones atómicas: wait y signal.
wait(S): while S <= 0 do no-op S := S - 1; signal(S): S := S +1;
PROBLEMAS CLÁSICOS DE SINCRONIZACIÓN
Buffer finito Lectores y escritores Filósofos comensales Buffer finito Buffer de tamaño N Semáforo mutex inicializado en 1 Semáforo full inicializado en 0 Semáforo empty inicializado en N
Lectores Y Escritores
Una zona de memoria es compartida por varios procesos concurrentes Lectores – sólo lee datos; no efectúan actualizaciones de datos Escritores – puede leer y escribir Problema – permitir a múltiples lectores leer simultáneamente; sólo un escritor puede acceder a los datos en forma simultánea. Recursos Compartidos Datos Semáforo mutex inicializado en 1. Semáforo wrt inicializado en 1. Entero readcount inicializado en 0. Problema de los Lectores 3 variantes: (1) Los lectores tienen prioridad Muerte por inanición de los escritores (2) Los escritores tienen prioridad Muerte por inanición de los lectores (3) Lectores y Escritores tienen la misma Prioridad No hay problemas de inanición
EL PROBLEMA DE LOS FILÓSOFOS COMENSALES
Recursos compartidos Fuente de arroz (datos) Semáforos chopstick [5] inicializados en 1
MONITORES Son mecanismos de sicronización de nivel más alto que semáforos. La construcción se realiza a nivel de lenguaje de programación que controla el acceso a datos compartidos. Un tipo monitor tiene un conjunto de operaciones definidas por el programador que gozan de la característica de exclusión mutua dentro del monitor.
Por: 04-05-2009 por EstebanYomairo |
Categorías asociadas: Mecanismos de sincronización, Paralelo "A"
Sincronización en Solaris Solaris implementa mútex adaptativo para proteger el acceso a todos los elementos críticos. En un sistema multiprocesador un mútex adaptativo se inicia como un semáforo estándar, implementado como un cerrojo de bucle sin fin. Cuando los datos están bloqueados, el mútex primeramente lo que hace es comprobar se el cerrojo está mantenido por una hebra que se está ejecutando concurrentemente en otra CPU, y se es así la hebra actual ejecuta un bucle sin fin mientras espera a que el bloqueo esté disponible, pero si la hebra que mantiene el cerrojo no está en ejecución, entonces la hebra actual se bloquea hasta que se libera el cerrojo. Este estado de bloque es para que no se ejecute en un bucle sin fin, ya que probablemente el cerrojo no se libere pronto. En los sistemas monoprocesador, la hebra que mantiene el cerrojo nunca estará ejecutándose cuando otra hebra compruebe el cerrojo, ya que sólo puede haber una hebra ejecutándose cada vez, aquí las hebras siempre pasan en un estado durmiente. En Solaris se usa el mútex adaptativo sólo para proteger los datos a los que se accede mediante segmentos de código cortos, máximo unos cientos de instrucciones, si es más largo la solución sería muy ineficiente. Para éstos segmentos largos se usan variables de condición y los semáforos, se el cerrojo ya está en uso, la hebra ejecuta una operación de espera y pasa a estado durmiente. Cuando otra hebra libere el cerrojo, ejecutará una operación signal dirigida a la siguiente hebra durmiente de la cola.
También se usan bloqueos lector-escritor se usan para proteger aquellos datos a los que se accede frecuentemente, pero que por lo general se usan en el modo sólo lectura. Solaris utiliza colas de bloqueos para orenar la lista de hebras en espera de adquirir un mútex adaptativo o un cerrojo lector-escritor. Una cola de bloqueos es una estructura de coa que contiene las hebras que están a la espera de adquirir un cierto cerrojo.
Sincronización en Windows XP Windows XP es un kernel multihebra, que proporciona soporte para aplicaciones en tiempo real y múltiples procesadores. En Windows XP cuando se accede a un recurso global en un sistema monoprocesador, se enmascara temporalmente las interrupciones de todas las rutinas de tratamiento de interrupción que también puedan acceder al recurso global. En un sistema multiprocesador protege el acceso a los recursos globales utilizando los bloqueos basados en bucles sin fin. Para la sincronización de hebras fuera del kernel, proporciona objetos despachadores, de esa manera las hebras se sincronizan empleando diferentes mecanismos compartidos requiriendo que una hebra adquiera la propiedad de mútex para acceder a los datos y libere dicha propiedad cuando termine. Los sucesos pueden notificar a una hebra en espera que una condición deseada se ha producido. Los temporizadores se emplean para notificar a una o varias hebras que ha trascurrido un determinado período de tiempo. Los objetos despachadores pueden estar en estado señalizado o no señalizado. Un estado señalizado indica que el objeto está disponible y que una hebra no se bloqueará cuando adquiera el objeto. Un estado no señalizado indica que el objeto no está disponible y que una hebra se bloqueará cuando intente adquirir el objeto.
Sincronización en Linux Anteriormente en Linux no podía se desalojado de ninguna manera un proceso que se esté ejecutando en modo kernel, o sea que era un kernel no apropiativo, pero actualmente es apropiativo, de tal manera que sí puede ser desalojada una tarea que se esté ejecutando en modo kernel. El kernel de Linux proporciona bloqueos mediante bucles sin fin y semáforos, así como versiones lector-escritor de éstos bloqueos para establecer bloqueos en el kernel. En una máquina SMP, se hace uso de bucles sin fin, y el kernel se diseña de modo que dicho tipo de bloqueo se mantenga sólo durante períodos de tiempo cortos. En las máquinas monoprocesador, se reemplazan los bloqueos de bucle sin fin por un mecanismo de activación y desactivación de la función de apropiación en el kernel.
Linux proporciona llamadas al sistema para activar y desactivar los mecanismos de desalojo del kernel, estas son: preempt_disable(), preempt_enable(). El kernel no es desalojable si hay una tarea modo kernel que esté manteniendo un bloqueo.
Sincronización en Pthreads Pthreads proporciona cerrojos mútex, variables de condición y cerrojos de lectura-escritura para la sincronización de gebras. Todos esto está disponible en una API para los programadores y no forma parte de ningún kernel. Los cerrojos mútex proporcionan una técnica fundamental de sincronización de procesos, se usan para proteger las secciones críticas de código, es decir, una hebra adquiere el cerrojo antes de entrar en una sección crítica y lo libera al salir de la misma. Muchos sistemas que usan Pthreads también proporcionan semáforos, aunque éstos no forman parte de del estándar pthreads, otras extensiones también incluyen cerrojos mediante bucle sin fin.
Nos podemos dar cuenta que cada sistema operativo tiene su particularidad para la sincronización de procesos, sin embargo todos tienen mucho en común, y esto es las técnicas que utilizan, claro que cada uno los utiliza en las momentos que han considerado oportuno los desarrolladores del SO y además con sus propios métodos, pero lo que todo buscan en minimizar los costes por consumo de recursos. Por: 04-05-2009 por jhoanita |
Categorías asociadas: Paralelo "A"
Nombre: Jhoana María Rojas Granda.
INTERBLOQUEOS
En un entorno multiprogramación, varios procesos pueden competir por un numero finito de recursos. Un proceso solicita recursos y, si los recursos no están disponibles en ese momento, el proceso pasa a estado de espera. Es posible que algunas veces, un proceso en espera no pueda nunca cambiar de estado, por que los recursos que ha utilizado estén ocupados por otros procesos que a su vez estén esperando otros recursos. Cuando se produce una situación como esta, se dice que ha ocurrido un interbloqueo. Caracterización de los interbloqueos. En un interbloqueo, los procesos nunca terminan de ejecutarse y los recursos del sistema están ocupados, lo que impide otros trabajos, a continuación algunos detalles de características. Condiciones Necesarias: Una situación de interbloqueo puede surgir si se dan simultáneamente las cuatro condiciones siguientes en un sistema. 1. Exclusión mutua: Al menos un recurso debe estar en modo no compartido; es decir, solo un proceso puede usarlo cada vez. Si otro proceso solicita otro recurso, el proceso solicitante tendrá que esperar hasta que el recurso sea liberado. 2. Retención y espera: Un proceso debe estar reteniendo al menos un recurso y esperando para adquirir otros recursos adicionales que actualmente estén retenidos por otros procesos. 3. Sin desalojo: Los recursos no pueden ser desalojados; es decir u recurso solo puede ser liberado voluntariamente por el proceso que le retiene, después de que dicho proceso haya completado su tarea. 4. Espera Circular: Debe existir un conjunto {P0,P1,…,Pn} de procesos en espera, tal que P0 este esperando a un recurso retenido por P1, P1 esté esperando a un recurso retenido por P2, …, Pn-1 este esperando a un recurso retenido por Pn’ y Pn esté esperando a un recurso retenido por P0. Grafo de asignación de recursos Los interbloqueos pueden definirse de forma mas precisa mediante un grafo dirigido, que se llama grafo de asignación de recursos del sistema. Este grafo consta de un conjunto de vértices V y de un conjunto de aristas E. Métodos para tratar los interbloqueos En general, podemos abordar el problema de los interbloqueos de una de tres formas: · Podemos emplear un protocolo para impedir o evitar los interbloqueos, asegurando que el sistema nunca entre en estado de interbloqueo. · Podemos permitir que el sistema entre en estado de interbloqueo, detectarlo y realizar una recuperación. · Podemos ignorar el problema y actuar como si nunca se produjeran interbloqueos en el sistema. Estos métodos básicos se pueden combinar, permitiéndonos seleccionar un método óptimo para cada clase de recurso existente en el sistema. La prevención de interbloqueos proporciona un conjunto de métodos para asegurar que al menos una de las condiciones necesarias no pueda cumplirse. Estos métodos evitan los interbloqueos restringiendo el modo en que se pueden realizar las solicitudes. Si un sistema no emplea un algoritmo de prevención de interbloqueo ni un algoritmo de evasión, entonces puede producirse una situación de interbloqueo. El sistema debe disponer de métodos de recuperación manual para tales condiciones y puede, simplemente, usar esas mismas técnicas para recuperarse de los interbloqueos. Prevención de interbloqueos Estas cuatro condiciones no se cumpla, podemos prevenir la aparición de interbloqueos. Exclusión mutua La condición de exclusión mutua se aplica a los recursos que no pueden ser compartidos. Un proceso no necesita esperar nunca para acceder a un recurso compartible. Sin embargo, en general, no podemos evitar los interbloqueos negando la condición de exclusión mutua, ya que algunos recursos son intrínsecamente no compartibles. Retención y espera Para asegurar que la condición de retención y espera nunca se produzca en el sistema, debemos garantizar que, cuando un proceso solicite un recurso, el proceso no esté retenido ningún otro recurso. Podemos implementar este mecanismo requerimiento que las llamadas al sistema que solicitan los recursos para un proceso precedan a todas las demás llamadas al sistema. Una posible alternativa sería un protocolo que permitiera a un proceso solicitar recursos solo cuando no tenga ninguno retenido. Ambos protocolos tienen dos desventajas importantes. Primero, la tasa de utilización de los recursos puede ser baja, dado que los recursos pueden asignarse pero no utilizarse durante un periodo largo de tiempo. La segunda desventaja es que puede producirse el fenómeno de inanición, un proceso que necesite varios recursos muy solicitados puede tener que esperar de forma indefinida, debido a que al menos uno de los recursos que necesita está siempre asignado a algún otro proceso. Sin desalojo La tercera condición necesaria para la aparición de interbloqueos es que los recursos que ya están asignados no sean desalojados. Para impedir que se cumpla esta condición, podemos usar el protocolo siguiente: si un proceso esta retenido varios recursos y solicita otro recurso que no se le puede asignar de forma inmediata, entonces todos los recursos actualmente retenidos se desalojan. Espera circular Una forma de garantizar que esta condición nunca se produzca es imponer una ordenación total de todos los tipos de recursos y requerir que cada proceso solicite sus recursos en un orden creciente de enumeración. Evasión de interbloqueos Esas restricciones aseguran que al menos una de las condiciones necesarias para que haya interbloqueo no se produzca y, por tanto, que no puedan aparecer interbloqueos. Sin embargo, esta técnica de prevención de interbloqueos tiene algunos posibles efectos colaterales, como son una baja tasa de utilización de los dispositivos y un menor rendimiento del sistema. Un método alternativo para evitar los interbloqueos consiste en requerir información adicional sobre como van a ser solicitados los recursos. Cada solicitud requiere que, para tomar la correspondiente decisión, el sistema considere los recursos actualmente disponibles, los recursos actualmente asignados a cada proceso y las solicitudes y liberaciones futuras de cada proceso. El modelo más simple y útil requiere que cada proceso declare el número máximo de recursos de cada tipo que puede necesitar. El algoritmo de evasión de interbloqueos examina dinámicamente el estado de asignación de cada recurso con el fin de asegurar que nunca se produzca una condición de espera circular. El estado de asignación del recurso esta definido por el número de recursos disponibles y asignados y la demanda máxima de los procesos. Estado seguro Un estado es seguro si el sistema puede asignar recursos a cada proceso en determinado orden sin que eso produzca un interbloqueo. Un sistema está en estado seguro solo si existe lo que se denomina una secuencia segura. Un estado seguro implica que no puede producirse interbloqueo, a la inversa, todo estado de interbloqueo es inseguro, sin embargo, no todos los estados inseguros representan un interbloqueo. Un estado inseguro puede llevar a que aparezca un interbloqueo, siempre y cuando el estado sea seguro, el sistema operativo podrá evitar los estados inseguros, el sistema operativo no puede impedir que los procesos soliciten recursos de tal modo que se produzca un interbloqueo, el comportamiento de los procesos es el que controla los estados inseguros. Detección de interbloqueos Si un sistema no emplea ni algoritmos de prevención ni de evasión de interbloqueos, entonces puede producirse una situación de interbloqueo. En este caso, el sistema debe proporcionar: · Un algoritmo que examine el estado del sistema para determinar si se ha producido un interbloqueo. · Un algoritmo para recuperarse del interbloqueo. Una sola instancia de cada tipo de recurso Si todos los recursos tienen una única instancia, entonces podemos definir un algoritmo de detección de interbloqueos que utilice una variante del grafo de asignación de recursos, denominada grafo de espera. Varias instancias de cada tipo de recurso El esquema del grafo de espera no es aplicable a los sistemas de asignación de recursos con múltiples instancias de cada tipo de recurso. Available: Un vector de longitud m que indica el numero de recursos disponibles de cada tipo. Allocation: Una matriz n * m que define el numero de recursos de cada tipo que están asignados actualmente a cada proceso. Request: Una matriz n * m que especifica la solicitud actual efectuada por cada proceso. Utilización del algoritmo de detección Los interbloqueos se producen solo cuando algún proceso realiza una solicitud que no se puede conceder de forma inmediata, esta solicitud puede ser la solicitud final que complete una cadena de procesos en espera. Si se invoca el algoritmo de detección de interbloqueo para cada solicitud de recursos, esto dará lugar a una considerable sobrecarga en el tiempo de uso del procesador. Recuperación de un Interbloqueo Cuando el algoritmo de detección determina que existe un interbloqueo, tenemos varias alternativas. Una posibilidad es informar al operador de que se ha producido un interbloqueo y dejar que lo trate de forma manual. Terminación de procesos En ambos métodos, el sistema reclama todos los recursos asignados a los procesos terminados. Interrumpir todos los procesos interbloqueados: Claramente, este método interrumpirá el ciclo de interbloqueo, pero a un precio muy alto. Interrumpir un proceso cada vez hasta que el ciclo de interbloqueo se elimine: Este método requiere una gran cantidad de trabajo adicional, ya que después de haber interrumpido cada proceso hay que invocar un algoritmo de detección de interbloqueos para determinar si todavía hay procesos en interbloqueo. Hay muchos factores que influyen en que procesos seleccionar, entre los que se incluyen: 1. La prioridad del proceso 2. Durante cuanto tiempo ha estado el proceso ejecutándose y cuanto tiempo de adicional necesita el proceso para completar sus tareas. 3. Cuantos y que tipo de recursos ha utilizado el proceso. 4. Cuantos más recursos necesita el proceso para completarse. 5. Cuantos procesos hará falta terminar. 6. Si se trata de un proceso interactivo o de procesamiento por lotes. Apropiación de recursos Para eliminar los interbloqueos utilizando el método de apropiación de recursos, desalojamos de forma sucesiva los recursos de los procesos y asignamos dichos recursos a otros procesos hasta que el ciclo de interbloqueo se interrumpa. Si se necesita el desalojo para tratar los interbloqueos, entonces debemos abordar tres cuestiones: 1. Selección de una victima 2. Anulación 3. Inanición Por: 30-04-2009 por brfigueroa |
Categorías asociadas: Paralelo "A"
Capítulo VII: Interbloqueos
Un sistema consta de un número finito de recursos, que se distribuyen entre una serie de procesos en competición, los recursos se dividen en varios tipos costando cada uno de ellos de un cierto número de instancias. El espacio de memoria, los ciclos de cerca de CPU, los archivos y dispositivos de E/S. Si un proceso solicita una instancia de un tipo de recurso, la asignación de cualquier instancia del tipo satisfará la solicitud. Un proceso debe solicitar cada recurso antes de utilizarlo y debe liberarlo después de usado, podemos decir que un proceso puede solicitar tantos recursos como necesite para llevar a cabo las tareas que tengan asignadas, un proceso puede emplear un recurso siguiendo la siguiente secuencia: o Solicitud: Si la solicitud no puede ser concedida inmediatamente, entonces el proceso solicitante tendrá que esperar hasta que pueda adquirir el recurso. o Uso: El proceso puede operar sobre el recurso. o Liberación: El proceso libera el recurso.
En un interbloqueo los procesos nunca terminan de ejecutarse y los recursos del sistema están ocupados, lo que impide que se inicien otros trabajos. Condiciones necesarias en un sistema: 1. Exclusión mutua: Al menos un recurso debe estar en modo no compartido; es decir sólo un proceso puede usarlo cada vez. 2. Retención y espera: Un proceso debe estar reteniendo al menos un recurso y esperando para adquirir otros recursos adicionales que actualmente estén retenidos por otros procesos. 3. Sin desalojo: Los recursos no puede ser desalojados, es decir un recurso sólo puede ser liberado voluntariamente por el proceso que le retiene después de que dicho proceso haya terminado su tarea. 4. Espera circular: Debe existir un conjunto {P0 P1,…., Pn } de procesos en espera. Los interbloqueos pueden definirse de forma más precisa mediante un grafos dirigido que se llaman grafos de asignación de recursos del sistema, consta de un conjunto de vértices V y de un conjunto de aristas E. Métodos para tratar los interbloqueos Podemos abordar el problema de los interbloqueos de una de tres formas: o Podemos emplear un protocolo para impedir o evitar los interbloqueos, asegurando que el sistema nunca entre en estado de interbloqueo. o Podemos permitir que el sistema entre en estado interbloqueo, detectarlo y realizar una recuperación. o Podemos ignorar el problema y actuar como si nunca se produjeran interbloqueos en el sistema. Para garantizar que nunca se produzcan interbloqueos debe cumplirse cuatro condiciones necesarias. 1. Exclusión mutua.- Al menos un recurso debe estar en modo no compartido, es decir, solo un procesos puede usarlo cada vez. Si otro proceso solicita el recurso, el proceso solicitante tendrá que esperar hasta que el recurso sea liberado. 2. Retención y espera.- Un proceso debe estar retenido al menos un recurso y esperando para adquirir otro recurso adicionales que actualmente estén retenidos por otro proceso. 3. Sin desalojo.- Los recursos no pueden ser desalojados, es decir un recurso solo puede ser liberado voluntariamente por el proceso que le retiene, después de que dicho proceso haya completado su tarea. 4. Espera circular.- debe existir un conjunto de procesos en espera, tal que este proceso esté esperando a un recurso retenido por P1, P1 esté esperando a un recurso retenido por P2, …,Pn-1 esté esperando a un recurso retenido por Pn, y Pn esté esperando a un recurso retenido por P0. La evasión de interbloqueos requiere que se proporcione de antemano al sistema operativo información adicional sobre qué recursos solicitara y utilizará un proceso durante su tiempo de vida. Los algoritmos de prevención de interbloqueos impiden los interbloqueos restringiendo el modo en que pueden hacerse las solicitudes, estas restricciones aseguran que al menos una de las condiciones necesarias para que haya interbloqueo no se produzca y, por tanto no pueda aparecer interbloqueos. Sin embargo, esta técnica de prevención de interbloqueos tiene algún posible efecto colateral, como son una baja tasa de utilización de los dispositivos y un menor rendimiento del sistema. Un posible método para evitar los interbloqueos consiste en requerir información adicional sobre cómo van a hacer solicitados los recursos. Detección de interbloqueos. Si un sistema no emplea ni algoritmos de prevención ni de evasión de interbloqueos, entonces puede producirse una situación de interbloqueo en el sistema. En este caso el sistema debe proporcionar: • Un algoritmo que Examine el estado del sistema para determinar si se ha producido un interbloqueo. • Un algoritmo para recuperarse del interbloqueo. Cuando el algoritmo de detección determina que existe un interbloqueo, tenemos barias alternativas. Una posibilidad es informar al operador de que se ha producido un interbloqueo y dejar que lo trate de forma manual. Otra forma es dejar que el sistema sea el que haga la recuperación del interbloqueo de forma automática. Existen dos opciones para romper un interbloqueo una de ellas consiste en interrumpir uno o más procesos para romper la cadena de espera circular, La otra consiste en desalojar recursos de uno o más de los procesos bloqueados. Por: 30-04-2009 por brfigueroa |
Categorías asociadas: Paralelo "A"
Capítulo VI: Sincronización de Procesos Un proceso cooperativo es aquel que puede afectar o verse afectado por otro proceso que estén ejecutándose en el sistema. Los procesos cooperativos pueden compartir directamente un espacio de dirección lógico o compartir los datos solo a través de archivos o mensajes. El primer paso se consigue mediante el uso de procesos ligeros o hebras. El acceso concurrente a datos compartidos puede dar lugar a incoherencias de datos.
El problema de la sección critica Cada proceso tiene un segmento de código llamado sección crítica en el que el proceso puede modificar variables comunes, actualizar una tabla, escribir en un archivo. A característica principal del sistema es que, cuando un proceso está ejecutando su sección critica, otro proceso no puede ejecutar su correspondiente sección crítica. Cada proceso debe solicitar permisos para entrar en su sección crítica la sección de código que implementa esta solicitud es la sección de entrada.
1. Exclusión mutua. Si el proceso está ejecutándose en su sección crítica, los demás procesos no pueden estar ejecutando sus secciones críticas. 2. Progreso. Si ningún proceso está ejecutando su sección crítica y algunos procesos desean entrar en sus correspondientes secciones críticas, solo aquellos procesos que no estén ejecutando sus secciones restantes pueden participar en la decisión de cuál será el siguiente que entre en su sección critica, y esta sección no se puede posponer indefinidamente. 3. Espera limitada. Existe un límite en el número de veces que se permite que otros procesos entren en su secciones críticas después de que un proceso haya hecho una solicitud para entrar en su sección critica y antes de que la misma haya sido concedida. Una solución clásica basada en software al problema de la sección critica conocida con el nombre de solución de Peterson. La solución de de Peterson requiere que los dos procesos compartan dos elementos de datos: · La exclusión mutua se conserva. · El requisito de proceso se satisface. · El requisito de espera limitada se cumple. Cualquier solución al problema de la sección crítica requiere una herramienta muy simple un cerrojo. Las condiciones de carrera se evitan requiriendo que las regiones críticas se protejan mediante cerrojos. Un proceso debe adquirir un cerrojo antes de entrar en un sección crítica y liberarlo cuando salga de la misma.
Semáforos Un semáforo S es un variable entrada a la que, dejamos aparte la iniciación, solo se accede mediante dos operaciones atómicas estándar: wait () y signal (). Originalmente. La operación wait () se denomina P (Probar); mientras que signal ()se denomina originalmente V (incrementar). Interbloqueos e inanición La implementación de un semáforo con una cola de espera puede dar lugar a una situación en la que dos o más procesos estén esperando indefinidamente a que se produzca un suceso que solo puede producirse con consecuencia de la operación efectuada por otro de los procesos en espera. Cuando se llega a un estado así se dice que estos procesos se han interbloqueado. Monitores
Por: 30-04-2009 por brfigueroa |
Categorías asociadas: Paralelo "A"
Capitulo V: Planificación de la CPU
Los mecanismos de planificación de la CPU son la base de los sistemas operativos multiprogramados. Mediante la planificación de la CPU entre distintos procesos, el sistema operativo puede hacer que la computadora sea más productiva.
Planificación Apropiativa.
Se debe tomar decisiones sobre planificación cuando: · Cuando un proceso cambia del estado de ejecución al estado de espera. · Cuando un proceso cambia del estado de ejecución al estado preparado. · Cuando un proceso cambia del estado de espera al estado preparado. · Cuando un proceso termina. Criterios De Planificación
o Utilización de la CPU. Se define en el rango comprendido entre el 0 y el 100 por cien, mantener a la CPU ocupada. o Tasa De Procesamiento. Número de procesos que se completan por unidad de tiempo. o Tiempo De Ejecución. El intervalo que va desde el instante en que se ordena la ejecución de un proceso hasta el instante en que se completa. o Tiempo De Espera. Es la suma de los periodos invertidos en esperar en la cola de procesos preparados. o Tiempo De Respuesta. Tiempo que el proceso tarda en empezar a responder, no es el tiempo que tarda en enviar a la salida toda la información de respuesta. Algoritmos De Planificación
Tienen por objeto maximizar la utilización de la CPU y la tasa de procesamiento y minimizar el tiempo de ejecución, tiempo de espera y tiempo de respuesta.
· Planificación FCFS. Asigna primero la CPU al proceso de primero la solicite, cuando un proceso entre la cola su PCB se coloca al final de la cola, cuando la CPU queda libre asesina al proceso que esté al principio de la cola. · Planificación SJF. Cuando la CPU está disponible, se asigna al proceso que tiene la siguiente ráfaga de CPU más corta, si es siguiente ráfaga de CPU de los procesos o iguales, se usa la planificación FCFS para romper el empate. · Planificación Por Prioridades. El algoritmo SJF es un caso especial del algoritmo de planificación por prioridades, la CPU se asigna al proceso que tenga la prioridad más alta, para la cual se asocia el proceso con un número entero. · Planificación por turnos. Se añade la técnica de desalojo para conmutar entre procesos, en este tipo de sistema se define una pequeña unidad de tiempo, denominada cuanto de tiempo, con franja temporal que se encuentra en el rango comprendido entre 10 y 100 ms, la cola de procesos preparados se trata como una cola circular que es recorrida por el planificador de la CPU asignando la CPU a cada proceso durante un intervalo de tiempo de esta 1 cuanto de tiempo. · Planificación mediante colas multinivel. Aquí se clasifica los procesos en grupos diferentes, es terrorismo divide la cola de procesos preparados en varias colas distintas los procesos asesinan permanentemente a una cola, cada cola tiene su propia algoritmo de planificación. · Planificación mediante con las multinivel realimentadas. Este algoritmo permite mover un proceso de una cola a otra para separar los procesos en función de las características de sus ráfagas de CPU.
Multiprocesamiento asimétrico. Consiste en que todas las decisiones sobre la planificación, el procesamiento de E/S y otras actividades del sistema sean gestionados por un microprocesador. Mecanismos Multihebra Simétricos. Permiten que varias hembras se ejecuten de forma concurrente, ya que proporcionan varios procesadores físicos.
Planificación De Hebras
Podemos incluir algunos criterios para evaluar algoritmos. · Maximizar la utilización de la CPU bajo la restricción de que el tiempo máximo de respuesta sea igual a un segundo. · Maximizar la tasa de procesamiento de modo que el tiempo de ejecución sea proporcional al tiempo total de ejecución.
Métodos de evaluación que podemos determinar para evaluar los algoritmos 1. Modelado determinista. Es un tipo de valoración analítica, este método toma una carga de trabajo predeterminada concreta y decide el rendimiento de cada algoritmos para dicha carga de trabajo. 2. Modelos de colas. El análisis de colas puede resultar útil para comparar los distintos algoritmos de planificación, aunque también tiene sus limitaciones. 3. Simulaciones. Nos sirven para obtener una evaluación más precisa de los algoritmos de planificación, ejecutar las simulaciones requiere programar un modelo del sistema informático. 4. Implementación. La única forma completamente precisa de evaluar un algoritmo de planificación es codificándolo, incluyéndolo en el sistema operativo y viendo cómo funciona. Este método introduce el algoritmo real en el sistema para su evolución bajo condiciones de operación reales. Por: 30-04-2009 por brfigueroa |
Categorías asociadas: Paralelo "A"
Capítulo III: Gestión De Procesos Un Proceso es un programa en ejecución, es algo más que el código de un programa. Además de código un proceso incluye la actividad actual, que queda representada en el valor actual del PC y por los contenidos de los registros del procesador. Estados del Proceso: · Nuevo · En ejecución · En espera · Preparado · Terminado Bloque de control de proceso: o Estado del proceso, puede ser nuevo, preparado, en ejecución, en espera, detenido. o Contador de programa, indica la dirección de la siguiente instrucción que va ejecutar. o Registro de la CPU, estos varían en cuanto a número y tipo, esta información debe guardarse junto con el contador de programa cuando se produce una interrupción. o Información de planificación de la CPU, incluye la prioridad del proceso, los punteros a las colas de planificación y otros parámetros. o Información de gestión de memoria, información acerca del valor de los registros base y limite, las tablas de páginas o las tablas de segmentos. o Información contable, información de la cantidad de CPU y de tiempo real empleados, límites de tiempo asignado. o Información del estado de E/S, información de la lista de dispositivos de E/S asignados. Cuando se ejecuta un procesador de textos se ejecuta una sola hebra de instrucciones, es decir el usuario no puede escribir simultáneamente caracteres y pasar el corrector ortográfico dentro del mismo proceso. Planificación de Procesos · Colas de planificación, a medida que los procesos entran en el sistema, se colocan en una cola de trabajos que contiene todos los procesos del sistema, los procesos que residen en memoria principal y están preparados y en espera de ejecutarse se mantienen en la cola de procesos preparados. · Planificadores, los procesos están en una cola de planificación. La selección de se realiza mediante un planificador apropiado. Hay planificadores a largo plazo o planificador de trabajos, a corto plazo o planificador de la CPU. · Cambio de contexto, cuando se produce una interrupción, el sistema tiene que guardar el contexto actual del proceso que se ejecuta en la CPU, de modo que pueda restaurar dicho contexto cuando su procesamiento concluya., suspendiendo el proceso y reanudándolo después. Operaciones sobre los procesos: · Creación de procesos: un proceso puede crear otros varios procesos nuevos mientras se ejecuta, para esto se utiliza una llamada sistema específica para la creación de procesos. El proceso creador se denomina proceso padre y los nuevos procesos son los hijos de dicho proceso. · Terminación de los procesos: un proceso termina cuando ejecuta su última instrucción y pidió sistema operativo que lo elimine usando la llamada sistema exit(). En éste momento proceso puede volver un valor de estado a su proceso padre a través de la llamada al sistema wait(). Un proceso es independiente sino puede afectar o verse afectado por los restantes procesos que se ejecutan en el sistema, cualquier proceso que no comparte datos con ninguno otro proceso es conocido como un proceso independiente. Existen diferentes razones para proporcionar un entorno que permita la cooperación entre procesos: · Compartir información: Algunos usuarios están interesados en la información de este, debemos proporcionar un entorno que permita el acceso a dicha información. · Acelerar los cálculos: Si se desea que una tarea ejecute rápidamente debemos de dividirla en subtareas. · Modularidad: Si construir el sistema de forma modular, dividiendo las funciones del sistema en diferentes procesos. · Conveniencia: Un solo usuario pueda querer trabajar en muchas tareas al mismo tiempo. La comunicación entre procesos en la memoria compartida requiere que los procesos que se estén comunicando establezcan una región de memoria compartida, una región de memoria compartida reside en el espacio de direcciones del proceso que crea el segmento de memoria compartida. El paso de mensajes proporcionar un mecanismo que permite a los procesos comunicarse y sincronizar sus acciones sin compartir el mismo espacio de direcciones, y es especialmente útil en un entorno distribuido. En el caso de la comunicación directa cada proceso que desea establecer una comunicación deben nombrar de forma explícita al receptor o transmisor de la comunicación. En este esquema las primitivas send() y receive() se define: send (P, mensaje)– envía un mensaje al proceso P receive(Q, mensaje)– recibe un mensaje del proceso Q El paso de mensajes puede ser con bloqueo sin bloqueo, mecanismos también conocidos como síncrono y asíncrono. o Envió con bloqueo: El proceso envía se bloquean hasta que proceso receptor recibe los mensajes. o Envió sin bloqueo: El proceso transmisor envía el mensaje y continúa operando. o Recepción con bloqueo: El receptor se bloquea hasta que hay un mensaje disponible. o Recepción sin bloqueo: El receptor extremo mensaje válido o un mensaje ninguno. En el almacenamiento en búfer los cola se pueden implementar de tres maneras: capacidades 0, capacidad ilimitada y capacidad ilimitada. Para los sistemas POSIX hay disponibles varios mecanismos IPC, incluyendo los memoria compartida y de paso de mensajes los procesos que deseen acceder a un segmento de memoria compartida deben asociarlo a su espacio de direcciones usando la llamada al sistema shmat(). Por: 30-04-2009 por brfigueroa |
Categorías asociadas: Capitulo 1-2
Capítulo I: ¿Qué hace un sistema operativo?
Un sistema operativo es aquel programa que se ejecuta continuamente en la computadora (usualmente denominado kernel), siendo todo lo demás programas del sistema y programas de aplicación. Existen sistemas operativos para mainframes, y para computadoras personales (PCs), los sistemas operativos para mainframe están diseñados principalmente para optimizar el uso del hardware, los sistemas operativos para PCs soportan desde complejos juegos hasta aplicaciones de negocios.
Desde el punto de vista de un monousuario un sistema debe ser rápido y fácil de manejar, se dice en este caso que el sistema operativo presta cierta atención al rendimiento y ninguna a la gestión de recursos. En el caso de un mainframe, el sistema operativo se diseña para maximizar la utilización de recursos, asegurar que todo el tiempo de CPU, memoria y E/S disponibles se usen de forma eficiente, y que cada usuario disponga sólo de la parte equitativa que le corresponde. Cuando se usan estaciones de trabajo conectadas a redes de otras estaciones de trabajo y servidores, el sistema operativo se diseña parar llegar a un compromiso entre la usabilidad individual y la utilización de recursos.
Desde el punto de vista de la computadora, el sistema operativo está más íntimamente relacionado con el hardware. En este contexto podemos ver un sistema operativo como un asignador de recursos. Un sistema operativo es un programa de control, y como tal gestiona la ejecución de los programas de usuario para evitar errores y mejorar el uso de la computadora. Tiene que ver recíprocamente con el funcionamiento y control de los dispositivos de E/S.
Organización de una computadora
· Funcionamiento. Para el funcionamiento de una computadora se necesita un programa de arranque, éste normalmente se almacena en la memoria ROM, o en la memoria EPROM, y se conoce con el término de firmware, dentro del hardware de la computadora. Se inician todos los aspectos del sistema, desde los registros de la CPU hasta las controladoras de dispositivos y el contenido de la memoria. El programa de arranque debe saber cómo cargar el sistema operativo e iniciar la ejecución de dicho sistema, para conseguir este objetivo, el programa de arranque debe localizar y cargar en memoria el Kernel(núcleo) del sistema operativo. Después el sistema operativo comienza ejecutando el primer proceso, por ejemplo “init”, y espera a que se produzca algún suceso. · Estructura de almacenamiento. Los programas de computadora deben hallarse en la memoria principal RAM para ser ejecutados. El procesador puede acceder directamente a ésta. · Estructura de E/S. Las unidades de E/S están conectadas con el procesador y la memoria principal, y cada una de ellas controla uno o más dispositivos periféricos.
Arquitectura de un sistema informático
1. Sistemas Multiprocesador. En un sistema multiprocesador hay una CPU principal capaz de ejecutar un conjunto de instrucciones de propósito general, incluyendo instrucciones de los procesos de usuario. 2. Sistemas Multiprocesador. Disponen de dos o más procesadores que se comunicación entre sí, compartiendo el bus de la computadora y en ocasiones el reloj, la memoria y los dispositivos periféricos. 3. Sistemas en clúster. Es otro tipo de sistema multiprocesador. La diferencia con los sistemas multiprocesamiento es que éstos están formados por dos más sistemas individuales acoplados.
Operaciones Del Sistema Operativo
Los Sistema Operativo están controlados mediante interrupciones, para cada interrupción diferentes códigos del sistema operativo determinan que acción hay que llevar a cabo. Se debe asegurar que un error que se produzca en un programa de usuario solo genere problemas en el programa que se estuviera ejecutando. Un sistema operativo diseñado apropiadamente debe asegurar que un programa incorrecto no pueda dar lugar a que otros programas se ejecuten incorrectamente.
· Operación en modo dual: Para asegurar la correcta ejecución del sistema operativo, tenemos que poder distinguir entre la ejecución del código del sistema operativo y del código definido por el usuario. Necesitamos dos modos diferentes de operación: modo usuario y modo kernel. Un bit denominado bit de modo, se añade al hardware de la computadora para indicar el modo actual kernel o usuario, también podemos diferenciar entre una tarea que se ejecute en nombre de sistema operativo y otra que se ejecute en nombre de usuario. · Temporizador: Se debe utilizar un temporizador para evitar que un único trabajo monopolice el uso del sistema. El temporizador se actualiza al comienzo de cada trabajo. Si el tiempo termina, se produce una interrupción, y el control vuelve al monitor. · Gestión de Procesos: Un programa no hace nada a menos que una CPU ejecute sus instrucciones. Un proceso necesita para llevar a cabo su tarea ciertos recursos, entre los que incluyen tiempo de CPU, memoria, archivos y dispositivos de E/S. Un proceso es un programa en ejecución puede ser un procesador de textos que ejecuta el usuario. Cada sistema consta de una colección de procesos, siendo algunos de ellos procesos del sistema operativo y el resto procesos de usuario. Todos estos procesos pueden, potencialmente, ejecutarse de forma concurrente. · Gestión de memoria: Es uno de los elementos principales que caracterizan un proceso es la memoria que utiliza, la asignación de memoria es exclusiva para el proceso que la requiere, es decir, ésta es lógicamente separada de cualquier otro proceso del sistema. Consiste básicamente en cargar y descargar procesos en memoria principal para que sean ejecutados, para ello el SO gestiona lo que se conoce como Unidad de Administración de Memoria, el cual es un dispositivo hardware que transforma las direcciones lógicas en físicas. · Gestión de Almacenamiento: Para que un sistema informático sea cómodo para los usuarios, el sistema operativo proporcionara una vista lógica del sistema de almacenamiento.
o Gestión del sistema de archivos: La mayoría de los sistemas operativos tienen sistemas de archivos. Se usan para almacenar datos de manera segura. Están compuestos por particiones, archivos y directorios, y opcionalmente también de archivos de enlace (accesos directos en Windows). Los sistemas de archivos se deben montar, aunque esto lo hace automáticamente el sistema operativo al iniciar la sesión. o Gestión del almacenamiento masivo: La mayoría de sistemas informáticos modernos usan discos como principal medio de almacenamiento en línea, tanto para los programas como para los datos. Por tanto, la apropiada gestión del almacenamiento en disco tiene una importancia crucial en un sistema informático. o Almacenamiento en Cache: Para amortiguar la lentitud del almacenamiento en dispositivos E/S se usa un almacenamiento de soporte que evita al procesador solicitar byte por byte, y en vez de ello se leen muchos datos con una sola solicitud. Son los buffers y la caché. Los buffers se usan tanto para lectura y escritura de disco, para impresora, monitor, para placa de red, etc. SU misión es agilizar la transferencia emitiendo una sola petición e interrupción para un conjunto de datos.
Sistemas Distribuidos: Un sistema distribuido es una colección de computadoras físicamente separadas y posiblemente heterogéneas que están conectadas en red para proporcionar a los usuarios acceso a los diversos recursos que el sistema mantiene. Acceder a un recurso compartido incrementa la velocidad de cálculo, la funcionalidad, la disponibilidad de los datos y la fiabilidad. Algunos sistemas operativos generalizan el acceso a red como una forma de acceso a archivo, manteniendo los detalles de la conexión de red en el controlador de dispositivos de la interfaz de red. Un sistema operativo distribuido proporciona un entorno menos autónomo. Los diferentes sistemas operativos se comunican de modo que se crea la ilusión de que un único sistema operativo controla la red.
Sistemas de Propósito General
· Sistemas embebidos en tiempo real: Computadoras predominantes actualmente , tienen tareas específicas. Los sistemas en los que operan son primitivos, disponen de interfaz limitada. Por lo general se encargan de monitorizar y gestionar dispositivos hardware. Los sistemas embebidos casi siempre ejecutan sistemas operativos en tiempo real. Las computadoras con sistemas embebidos pueden ser: · Sistemas Multimedia: La mayor parte de los sistemas operativos están diseñados para gestionar datos convencionales, como archivos de texto, programas. Surgen con la incorporación de datos multimedia. · Sistemas de mano: Los sistemas de mano incluyen PDA, tales como los Palm muchos de los cuales usan sistemas operativos embebidos de propósito especial. Los desarrolladores de aplicaciones y sistemas de mano se enfrentan a muchos retos, la mayoría de ellos debidos al tamaño. Los dispositivos tienen muy poca memoria, procesadores lentos y pantallas de visualización pequeñas. Usan SO embebidos de propósito especial. Los problemas básicos que enfrentan son la poca memoria, los procesadores lentos y la E/S.
Entornos informáticos
1. Sistema informático tradicional: Actualmente proporciona más formas de acceso a estos entornos informáticos. La tecnología web se está extendiendo Portales Servicios, acceso a internet, con cómodos. Hoy en día, los sistemas tradicionales de tiempo compartido no son habituales. Las mismas técnicas de planificación se usan todavía en estaciones de trabajo y servidores, aunque frecuentemente los procesos son todos propiedad del mismo usuario.
Capítulo II: Estructuras De Sistemas Operativos
El sistema operativo presta ciertos servicios a los programas y a los usuarios de dichos programas. Estos servicios del sistema operativo se proporcionan para comodidad del programador, con el fin de facilitar la tarea de desarrollo.
· Interfaz de usuario: Casi todos los sistemas operativos disponen de una interfaz de usuario, que puede tomar diferentes formas. · Ejecución de programas: Para ejecutar un programa es preciso realizar una serie de tareas. Las instrucciones y los datos deben cargarse en memoria principal, los dispositivos de E/S y los ficheros deben iniciarse, y deben prepararse otros recursos. El sistema operativo proporciona todo eso al usuario. · Operaciones de E/S: Cada dispositivo de E/S necesita su conjunto particular de instrucciones y señales de control para poder operar. El sistema operativo se encarga de esos detalles para que el programador pueda pensar simplemente en términos de lecturas y escrituras. · Manipulación del sistema de archivos: los programas necesitan ejecutar algunas operaciones sobre archivos y directorios como pueden ser: leer, escribir, crear, borrar, buscar; estos incluyen mecanismos de gestión de permisos para conceder o denegar el acceso a los archivos o directorios. · Comunicaciones: Los procesos necesitan intercambiar información con otros procesos, estas comunicaciones se pueden realizar a través de memoria compartida o por paso de mensajes. · Detección de errores: El SO necesita detectar los posibles errores que surjan ya sea en el Hardware del procesador y de memoria, en un dispositivo de E/S o en programas de usuario. Otros servicios orientados a garantizar la eficiencia del propio sistema entre los cuales están: o Asignación de recursos.- El SO gestiona muchos tipos diferentes de recursos; algunos pueden disponer de código software especial que gestione su asignación, otros pueden tener código que gestione de forma general. o Responsabilidad.- Conviene hacer un seguimiento de que usuarios emplean que clase de recursos de la computadora y en qué cantidad. o Protección y seguridad.- La protección es asegurar que todos los accesos a los recursos del sistema estén controlados y garantizar la seguridad del sistema frente a posibles intrusos, mediante una contraseña.
Interfaz de usuario del sistema operativo
Existen métodos para que los usuarios interactúen con el sistema operativo.
1. Interprete de comandos: Estos se conoce también como Shell, la función principal es obtener y ejecutar el siguiente comando especificado por el usuario. Algunos SO lo incluyen en el Kernel otros lo tratan como un programa especial que se ejecuta cuando se inicia un trabajo o una sesión. 2. Interfaz grafica de usuario: Los usuarios emplean un sistema de ventanas y menús controlables por medio del ratón. Permite que el usuario interactué con el Sistema Operativo a través de una interfaz
Las llamadas al sistema proporcionan una interfaz con la que poder invocar los servicios que el sistema operativo ofrece. Es la única forma en la que un programa puede solicitar operaciones al SO. Los programas del sistema proporcionan un cómodo entorno para desarrollar y ejecutar programas, pueden dividirse en las siguientes categorías.
• Administración de Archivos: Estos programas crean, borran, copian, cambian de nombre, imprimen etc. De forma general manipulan archivos. • Información de Estado: Algunos programas solicitan al sistema la fecha, la hora, cantidad de memoria, espacio en disco, usuario. • Modificación de Archivos: editores de texto para crear y modificar el contenido de los archivos almacenados en el disco o en otros dispositivos. • Soporte de Lenguajes de Programación: Se proporcionan compiladores, ensambladores, depuradores en intérpretes para los lenguajes de programación (C, C++, Java). • Carga y Ejecución de Programas: los programas compilados deben cargarse en memoria para poder ejecutarse. • Comunicaciones: Proporcionan los mecanismos para crear conexiones virtuales entre procesos, usuarios y computadores.
Diseño e implementación del sistema operativo
Objetivos del diseño • Objetivos de Usuario: los usuarios desean ciertas propiedades como: sistema sea cómodo, fácil de utilizar y aprender, fiable, seguro y rápido. • Objetivos del Sistema: el sistema debería ser fácil de diseñar, implementar y mantener, flexible, fiable, libre de errores y eficiente.
Un principio importante es el de separar las políticas de los mecanismos. Los mecanismos determinan como hacer algo, las políticas determinan que hacer. La separación de políticas y mecanismos es importante por cuestiones de flexibilidad. Tradicionalmente los SO tenían que escribirse en lenguaje ensamblador hoy en día se escriben en Lenguaje de Alto Nivel como C o C++. La Ventajas de usar un lenguaje de alto nivel:
· El código puede escribirse más rápido, es más compacto y es más fácil de entender y depurar. · Las posibles desventajas de implementar un SO es un lenguaje de alto nivel se reducen a los requisitos de velocidad y de espacio de almacenamiento.
Estructura del sistema operativo Un método habitual consiste en dividir la tarea en componentes más pequeños, en lugar de tener un Sistema Monolítico. Cada uno de estos módulos debe ser una parte bien definida del sistema, con entradas, salidas y funciones cuidadosamente especificadas. o Estructura simple: Proporciona la máxima funcionalidad en el menor espacio posible, por lo que no fue dividido en módulos de forma cuidadosa. El kernel se divide en una serie de interfaces y controladores de dispositivo, que se han ido añadiendo y ampliando a lo largo de los años. o Estructura en niveles: El sistema operativo se divide en una serie de capas, El nivel inferior (nivel 0) es le Hardware y el nivel superior (Nivel N) es la interfaz de usuario, también puede mantener un control mayor sobre la computadora y sobre las aplicaciones que hacen uso de dicha computadora. o Microkernels: Normalmente los microkernels proporcionan una gestión de memoria y de procesos mínima, además un mecanismo de comunicaciones. Su función principal es proporcionar un mecanismo de comunicaciones entre el programa cliente y los distintos servicios que se ejecutan en el espacio de usuario. Otra ventaja del microkernel es la facilidad para ampliar el sistema operativo, proporciona mas seguridad y fiabilidad, dado que la mayor parte de los servicios se ejecutan como procesos de usuario, en lugar de procesos de kernel. o Módulos: La mejor metodología es usar técnicas de programación orientada a objetos para crear un kernel modular, Tal estrategia utiliza módulos que se cargan dinámicamente y resulta habitual en las implementaciones modernas de UNIX.
Maquinas Virtuales
Una maquina virtual es la de abstraer el hardware de la computadora formando varios entornos de ejecución diferentes, creando así la ilusión de que cada entorno de ejecución esta operando en su propia computadora privada. Compartir el mismo hardware pero poder operar con entornos de ejecución diferentes (distintos SO) de forma concurrente ya que este proporcionan una interfaz idéntica a la del propio SO.
Las acciones que dan lugar a la transferencia del modo usuario al modo kernel en una maquina real también tienen que hacer que se pase del modo usuario virtual al modo kernel virtual en una maquina virtual. Tal transferencia puede conseguirse cuando se hace una llamada al sistema por parte de un programa que se está ejecutando en una maquina virtual en modo usuario virtual, se produce una transferencia al monitor de la maquina virtual en la maquina real.
1. VMware: Es una popular aplicación comercial que abstrae el hardware de Intel creando una serie de maquinas virtuales aisladas. Permite al sistema Host ejecutar de forma concurrente varios sistemas operativos huésped diferente como máquinas virtuales independientes. 2. Máquina Virtual Java: La JVM es una especificación de una computadora abstracta, puede implementarse por software encima de un SO host (Windows, Linux, Mac OS X) o como parte de un explorador Web. Por: 30-04-2009 por fabricomaldonado |
Categorías asociadas: Paralelo "A"
GESTIÓN DE MEMORIA PRINCIPAL
INTRODUCCIÓN P Solamente nos tendríamos que preocupar cuando surgieron y esto se hacia mediante un registro frontera, que limitaba la memoria utilizable, para que no coja la memoria del SO. SO Cuando yo hago un programa y al compilarlo se transforma en direcciones relativas. SO La dirección es absoluta. En donde se guarda el proceso (donde comienza) Tamaño del proceso Compara que la dirección relativa sea menor. Donde empieza MP Cuanto ocupa Si es menor se le suma el registro base si no, no se podrá grabar. P1 100K 128K P1 100K · Segmentación
|
