Vous êtes sur la page 1sur 46

Tema: Asignacin de memoria

Asignacin de memoria
La asignacin de memoria consiste en el proceso de asignar memoria para propsitos especficos, ya sea en tiempo de compilacin o de ejecucin. Si es en tiempo de compilacin es esttica, si es en tiempo de ejecucin es dinmica y si son variables locales a un grupo de sentencias se denomina automtica.

La asignacin esttica de memoria


consiste en el proceso de asignar memoria en tiempo de compilacin antes de que el programa asociado sea ejecutado, a diferencia de la asignacin dinmica o la automtica donde la memoria se asigna a medida que se necesita en tiempo de ejecucin. Una aplicacin de esta tcnica conlleva que un mdulo de programa (por ejemplo funcin o subrutina) declara datos estticos de forma local, de forma que estos datos son inaccesibles desde otros mdulos a menos que se les pasen referenciados como parmetros o que les sean devueltos por la funcin. Se mantiene una copia simple de los datos estticos, accesible a travs de llamadas a la funcin en la cual han sido declarados. El uso de variables estticas dentro de una clase en la programacin orientada a objetos permite que una copia individual de tales datos se comparta entre todos los objetos de esa clase. Las constantes conocidas en tiempo de compilacin, como literales de tipo cadena, se asignan normalmente de forma esttica. En programacin orientada a objetos, el mtodo usual para las tablas de clases tambin es la asignacin esttica de memoria.

Asignacin automtica de memoria


Las variables automticas son variables locales a un bloque de sentencias (subrutina, funcin o procedimiento). Pueden ser asignadas automticamente en la pila de datos cuando se entra en el bloque de cdigo. Cuando se sale del bloque, las variables son automticamente desasignadas. Las variables automticas tendrn un valor sin definir cuando son declaradas, por tanto es buena prctica de programacin inicializarlas con un valor vlido antes de usarlas.

Asignacin dinmica de memoria


La asignacin dinmica de la memoria es la asignacin de almacenamiento de memoria para utilizacin por parte de un programa de computador durante el tiempo de ejecucin de ese programa. Es una manera de distribuir la propiedad de recursos de memoria limitada entre muchas piezas de cdigo y datos. Un objeto asignado dinmicamente permanece asignado hasta que es desasignado explcitamente, o por el programador o por un recolector de basura; esto es notablemente diferente de la asignacin automtica de memoria y de la asignacin esttica de memoria (la de las variables estticas). Se dice que tal objeto tiene tiempo de vida dinmico

Soluciones para los problemas de asignacin de memoria


La tarea de satisfacer una peticin de asignacin, la cual conlleva encontrar un bloque de memoria sin usar de cierto tamao en el heap, es un problema complicado. Se han propuesto una amplia variedad de soluciones, incluyendo listas de bloques libres, Paginacin, y Asignacin buddy de memoria.

El problema principal para la mayora de algoritmos de asignacin de memoria dinmica es evitar la fragmentacin interna y externa mientras se mantiene la eficiencia del algoritmo. Tambin, la mayora de algoritmos en uso tienen el problema de que un nmero grande de pequeas asignaciones pueden causar el desaprovechamiento del espacio debido a la recoleccin de metadatos; as la mayora de los programadores intentan evitar esto, a veces usando una estrategia llamada chunking.

Asignacin de memoria basada en Heap


En la asignacin de memoria basada en heap, la memoria es asignada desde un gran rea comn de memoria libre (sin usar) llamada heap (tambin llamada almacn de libreso 'memoria del monton'). "El heap" no tiene nada que ver con la estructura de datos Heap (o Montculo). El tamao de la asignacin de memoria puede ser determinado en tiempo de ejecucin, y el tiempo de vida de la asignacin no es dependiente del procedimiento actual o del marco de pila. La regin de memoria asignada es accedida indirectamente, normalmente por medio de una referencia. El algoritmo preciso usado para organizar el rea de memoria y asignar y desasignar los trozos est oculto detrs de una interfaz abstracta y puede usar cualquiera de los mtodos descritos antes. En contraste, la memoria de la pila de llamadas es normalmente de tamao limitado y el tiempo de vida de la asignacin depende de la duracin de las funciones correspondientes.

Algoritmo Buddy
Otra solucin es tener un asignador buddy de bloques binarios. En este sistema, la memoria se asigna desde un gran bloque de memoria que es tamao potencia de dos. Si el bloque es ms del doble de grande de lo necesario, se parte en dos. Se selecciona una de las dos mitades, y el proceso se repite (comprobando el tamao otra vez y partiendo si se necesita) hasta que el bloque sea justamente el necesitado. Todos los segmentos de memoria de un tamao particular son guardados en una lista enlazada ordenada o una estructura de datos en rbol. Cuando se libera un bloque, se compara con su buddy(vecino). Si los dos estn libres, son combinados y colocados en la lista de bloques buddy de siguiente mayor tamao. (Cuando un bloque es asignado, el asignador empezar con el bloque grande suficientemente pequeo para evitar romper bloques innecesariamente) Ntese que los asignadores buddy de bloques no son nicamente para los Sistemas Operativos de Tiempo-Real (RTOS); ellos tambin son usados en sistemas operativos de propsito general (tales como Microsoft Windows y Linux).

Paginacin
La paginacin consiste en considerar el espacio de direcciones lgicas de cada proceso como un conjunto de bloques de tamao consistente llamados paginas. Cada direccin lgica manejada para un proceso estar conformada por un par de valores [pagina: desplazamiento].

Paginacin por demanda


Considere como podra cargarse un programa ejecutable desde el disco a la memoria. Una opcin consiste encargar el programa completo en memoria fsica en el momento de ejecutar el programa. Sin embargo, esta tcnica presenta el problema de que puede que no necesitemos inicialmente todo el programa en la memoria. Las paginas de un proceso deben cargarse por demanda. No se debe transferir ninguna pagina al almacenamiento secundario al primado hasta que un proceso en ejecucin haga explcitamente referencia a ella.

Continuacin
Hay varias razones por las cuales es atractiva esta estrategia. Los resultados de la teora de la compatibilidad, especifica mente el problema de la detencin (Mi67) (He77), indican que no se puede predecir con precisin la trayectoria de ejecucin que seguir un programa. As pues, cualquier intento de cargar paginas con anticipacin a su uso puede hacer que se carguen las paginas equivocadas. La paginacin por demanda garantiza que las nicas paginas que se transfieren al almacenamiento principal son aquellas que requieren los procesos. El trabajo extra requerido para decidir cuales paginas se deben transferir al almacenamiento principal es mnimo. Las estrategias de obtencin anticipada de paginas G pueden requerir mucho tiempo de ejecucin adicional

Reemplazo de pginas
En sistemas operativos que utilizan paginacin para el manejo de memoria, los algoritmos de reemplazo de pginas son usados para decidir qu pginas pueden ser sacadas de memoria cuando se necesita cargar una nueva y ya no hay espacios

Algoritmo ptimo
Este algoritmo tiene como finalidad retirar la pgina que vaya a ser referenciada ms tarde, por ejemplo si hay una pgina A que ser usada dentro de 10000 instrucciones, y una pgina B que ser usada dentro de 2800 instrucciones, se debera eliminar de la memoria la pgina A. Como se puede deducir, para esto el sistema operativo debera ver en cunto tiempo ser usada cada pgina en memoria y elegir la que est ms distante, por esta razn se dice que es imposible de implementarse.

Algoritmo ptimo de reemplazo de pginas


En pocas palabras: Este algoritmo debe de tener el menor ndice de fallos de pgina de todos los algoritmos. En teora, este algoritmo debe de reemplazar la pgina que no va a ser usada por el periodo ms largo de tiempo. EJEMPLO ! -

Cada columna, es una representacin del aspecto de los marcos de pgina en un momento determinado. As la primera columna representa el estado inicial, la segunda representa el siguiente estado, .... Las columnas estn formadas por 5 filas. Las filas que forman cada columna, de arriba abajo representan: La primera fila (la de fondo verde) contiene un nmero que es la peticin realizada. La segunda fila es una celda de separacin para distinguir entre las dems filas. De la tercera a la quinta, las filas representan el contenido de los marcos de pginas, as, la tercera fila es el primer marco, la cuarta el segundo, y la quinta el tercero.

Los colores de las distintas filas tambin representan algo: Las celdas azules, nos indican que el marco de pgina en el que se encuentran, contiene una pgina que no se ver alterada por la peticin realizada. Las celdas amarillas, indican que la pgina que hay en ese marco de pgina, al llegar all produjo un fallo de pgina. Si esta pgina se pidi cuando los tres marcos estaban ocupados, habr reemplazado a alguno de ellos, este ser determinado segn el algoritmo de reemplazo OPTIMO. Las celdas en blanco pueden representar dos cosas. Si aparecen en un nmero menor que tres, representarn marcos vacos. Cuando nos encontramos los tres marcos en blanco, indicamos que la peticin que hay en la primera fila, ha podido ser servida sin necesidad de cambiar el contenido de los marcos de pgina.

Memoria virtual
La memoria virtual es una tcnica de gestin de la memoria que permite que el sistema operativo disponga, tanto para el software de usuario como para s mismo, de mayor cantidad de memoria que est disponible fsicamente. Las computadoras tienen cuatro tipos de memoria: registros en la CPU, la memoria cach (tanto dentro como fuera del CPU), la memoria RAM y el disco duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad.

Tema: Administrador del procesador

Administrador del procesador


El procesador es la parte de la mquina que lleva a cabo los clculos y ejecuta los programas. Tambin se le reconoce con el nombre de CPU (Central Proccesing Unit). Un programa es una unidad inactiva, como un archivo almacenado en un disco. Un programa no es un proceso. Para un sistema operativo, un programa es una unidad de trabajo enviada por el usuario. Por otro lado, un proceso es una entidad activa, que requiere un conjunto de recursos ara llevar a cabo su funcin, entre ellos un procesador y registros especiales.

Administrador del procesador


En los sistemas de un solo usuario, el procesador est ocupado cuando el usuario ejecuta una tarea, en todos los dems momentos est ocioso. La administracin del procesador en este entorno es simple. Sin embargo, cuando existen muchos usuarios con muchas tareas en el sistema (multiprogramacin) hay que asignar el procesador a cada tarea de una manera justa y eficiente. La multiprogramacin requiere que el procesador se asigne a cada tareas o proceso durante un periodo y se desasigne en el momento apropiado. Si el procesador se desasigna durante la ejecucin de un programa, esto debe ocurrir de manera que se pueda reiniciar despus con toda la facilidad posible.

Planificador de trabajos
Cada trabajo o programa pasa a travs de una jerarqua de administradores. El primero que encuentra es el planificador de trabajos, tambin se conoce como planificador de alto nivel.

Este sub-administrador slo se ocupa de elegir los trabajos de una cola de trabajos que llegan y colocarlas en la cola de procesos con base en las caractersticas de cada uno. Su meta es mantener ocupada la mayor parte de los componentes del sistema de la computadora la mayor parte del tiempo.

Planificador de procesos
Despus que el planificador de trabajos pone un trabajo en la cola de listo, el planificador de procesos se hace cargo. Define qu trabajos tendrn derecho al CPU, cundo y cunto tiempo. Tambin decide cundo debe interrumpirse el procesamiento, determina a qu colas se debe pasar el trabajo durante su ejecucin y reconoce cundo ha concluido un trabajo y ya no hay necesidad de seguir procesndolo. Este subadministrador es un planificador de bajo nivel que asigna el CPU para ejecutar los procesos de los trabajos que el planificador de trabajos ha colocado en la cola de listo.

Estado de los trabajos y los procesos


A medida que un trabajo se mueve por el sistema, siempre estar en uno de tres a cinco estados, conforme cambia de ACEPTADO a LISTO a EJECUCIN a BLOQUEADO y por ltimo aTERMINADO. stos se conocen como estados del trabajo o estados del proceso. He aqu cmo cambia el estado de un trabajo cuando un usuario enva un trabajo al sistema. Cuando el sistema lo acepta lo pone en ACEPTADO en una cola. En algunos sistemas el controlador de disco genera una tabla con las caractersticas de cada trabajo de la cola y advierte las bsicas, como una estimacin del tiempo de uso del CPU, prioridad, dispositivos especiales de entrada y salida (E/S) requeridos y el mximo de memoria necesaria. El planificador de trabajos usa esta tabla para decidir cul ser el siguiente trabajo que se va a ejecutar. Desde ACEPTADO, el trabajo pasa a LISTO cuando est listo para ser ejecutado pero est en espera del CPU. En EJECUCIN significa que el trabajo est siendo procesado. EnBLOQUEADO quiere decir que el trabajo no puede continuar hasta que no se le asigne un recurso especfico o se termine una operacin de E/S. al completarse, el trabajo estTERMINADO y se devuelve al usuario.

Bloque de control de los procesos


Cada proceso en el sistema est representado por una estructura de datos, conocidas como bloque de control de procesos (PCB). Contiene la informacin bsica sobre la tarea, incluyendo lo que es, dnde va, cunto de su procesamiento se ha completado, dnde est almacenada y cunto ha gastado en recursos. El bloque de control de procesos (PCB) de un trabajo se crea cuando el planificador de trabajos lo acepta y se actualiza conforme ste avanzada desde el principio hasta el final de su ejecucin. Las colas utilizan los PCB para llevar el control de los trabajos. El PCB contiene los datos del trabajo necesarios para que el sistema operativo administre el procesamiento de ste. Estos estn vinculados para formar las colas.

Bloque de control de procesos y colas


El Bloque de control del proceso o BCP o en ingls PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la informacin que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripcin en tiempo de ejecucin durante toda la vida del proceso. Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema slo cuando existe un BCP activo asociado a l. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecucin del proceso y de la utilizacin de recursos.

Continuacin
Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseo de BCP, con el conjunto de metadatos necesarios para la administracin. Puede medir desde 32 bits a 1024. Su denominacin cambia segn el sistema operativo. Algunos sistemas de multiprogramacin incluyen informacin de mantenimiento con el propsito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos. Una vez creado, el BCP se rellena con los atributos definidos como parmetros que se hallan en la plantilla del proceso o que son especificados como parmetros de la llamada al sistema operativo crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestin se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente.

La informacin almacenada en un BCP incluye tpicamente algunos o todos los campos siguientes:
Identificador del proceso (Process Identificator -PID-, de sus siglas en Ingls). Estado del proceso. Por ej. listo, en espera, bloqueado. Contador de Programa: Direccin de la prxima instruccin a ejecutar. Valores de registro de CPU. Se utilizan tambin en el cambio de contexto. Espacio de direcciones de memoria. Prioridad en caso de utilizarse dicho algoritmo para planificacin de CPU. Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos). Estadsticas del proceso. Datos del propietario (owner). Permisos asignados. Signals pendientes de ser servidos. (Almacenados en un mapa de bits)

Polticas de planificacin de procesos


El planificador (en ingls scheduler) es un componente funcional muy importante de los sistemas operativos multitarea y multiproceso, y es esencial en los sistemas operativos de tiempo real. Su funcin consiste en repartir el tiempo disponible de un microprocesador entre todos los procesos que estn disponibles para su ejecucin. Todo sistema operativo gestiona los programas mediante el concepto de proceso. En un instante dado, en el ordenador pueden existir diversos procesos listos para ser ejecutados. Sin embargo, solamente uno de ellos puede ser ejecutado (en cada microprocesador). De ah la necesidad de que una parte del sistema operativo gestione, de una manera equitativa, qu proceso debe ejecutarse en cada momento para hacer un uso eficiente del procesador.

Como funciona el planificador de procesos


Ejemplo cuando una computadora que contiene un unico microprocesador. Dicho microprocesador solamente puede ejecutar un programa en cada instante de tiempo. Adems, cuando un programa est ejecutndose, nunca dejar de hacerlo por s mismo. De manera que, en principio, cualquier programa monopoliza el microprocesador impidiendo que otros programas se ejecuten. Por ello, la primera misin de un planificador es expulsar el programa en ejecucin cuando decida que es pertinente. Esto se consigue de dos maneras, siempre con ayuda del propio hardware: Cuando expira un temporizador, que se activa a intervalos regulares de tiempo. En intervalos muy cortos, generalmente cada 250 milisegundos. Cuando el programa solicita una operacin de entrada/salida. Dado que el programa no puede continuar hasta que termine dicha operacin, es un buen momento para ejecutar otro programa. En ambos casos, el control del microprocesador pasa a manos del planificador gracias a que el hardware genera una interrupcin. En este proceso de expulsin, se guarda el estado de ejecucin del programa (programa y su estado se denomina contexto).

Continuacin
En el siguiente paso, el planificador decide cul ser el siguiente proceso en ejecutarse. Naturalmente, solamente se escogen procesos que estn listos para hacerlo. Si un proceso sigue esperando por una operacin de entrada/salida no ser candidato a ejecutarse hasta que finalice tal operacin. La seleccin del proceso sigue alguna poltica de planificacin prestablecida. Una vez seleccionado un proceso, se procede a ejecutarlo. Para ello, el planificador restaura su estado de ejecucin (previamente salvado) y abandona el uso del microprocesador cedindoselo a dicho proceso. Est planificado para interceder por ojetes. Todo esto apenas dura unos pocos milisegundos.

Gracias a que el tiempo del microprocesador se reparte entre todos los procesos a intervalos muy cortos, el ordenador ofrece la sensacin de que todos los procesos estn ejecutndose a la vez. Cuando una computadora tiene varios microprocesadores este esquema se repite para cada microprocesador.

Algunas polticas de planificacin


A continuacin se enumeran diversas polticas de planificacin. Lo habitual es utilizar polticas mixtas. Generalmente, el planificador a corto plazo utiliza roundrobin, mientras que el planificador a largo plazo utiliza varias colas FIFO. Cada una de estas colas corresponde a una prioridad diferente. Planificacin Round-robin Round-robin con pesos. Prioridades montonas en frecuencia (RMS (Rate-monotonic scheduling)) Menor tiempo de respuesta primero (EDF (Earliest deadline first scheduling)) FIFO - Tambin conocido como FCFS "First Come, First Served". LIFO. SJF - Shortest Job First. CFS - Completely Fair Scheduler ( Planificador Completamente Justo) SRT - Shortest Remaining Time SPT - Shortest Process Time Planificacin mediante colas multinivel.

Niveles de polticas de planificacin


Los niveles de planificacin estn basados en la frecuencia con la que se realiza cada uno. En los sistemas operativos de propsito general, existen tres tipos de planificadores. El planificador a corto plazo es el que se ha descrito aqu, siendo tambin el ms importante. En ingls, se denomina dispatcher o short term scheduler, tambin existe un planificador a mediano plazo (en ingls, mid term scheduler) relacionado con aquellos procesos que no se encuentran en memoria principal. Su misin es mover procesos entre memoria principal y disco (lo que se conoce como swapping) y por ltimo existe el planificador a largo plazo (en ingls long term scheduler) es el encargado de ingresar nuevos procesos al sistema y de finalizarlos.

Algoritmos de planificacin de procesos


1. First Come, First Served o lo que es lo mismo el primero que llega es el primero en ser atendido. Podemos decir que no es expropiativo y no emplea prioridades. Es un algoritmo muy sencillo de implementar, basta con emplear una cola FIFO, pero corre el peligro de que un proceso muy largo monopolice la CPU durante mucho tiempo generando tiempos de espera mayores de los que seran deseables.

Algoritmos de planificacin de procesos


Round-Robin. Tambin conocido como RR, Carrousel o planificacin por rondas. Se reparte el tiempo de CPU en quantums o rodajas. El funcionamiento es dar una rodaja a cada proceso de forma secuencial. La seleccin de entre los procesos activos se gestiona segn una cola FIFO o lo que es lo mismo se elije el que ms tiempo lleve esperando. Si llega un proceso nuevo y hay otro en ejecucin, los ciclos de CPU se distribuyen entre ambos pero se ejecuta un ciclo de CPU para el proceso en ejecucin e inmediatamente se le asigna un ciclo al recin llegado. Como se puede deducir, este algoritmo es expropiativo y no emplea prioridades.

Algoritmos de planificacin de procesos


SJF. Son las siglas de Short Job First, es decir el trabajo ms corto primero. En este caso se seleccionar el proceso que requiera menor tiempo de ejecucin (si dos tienen el mismo tiempo se decide por FIFO). El problema puede aparecer con procesos muy largos que estn siempre bloqueados por procesos ms cortos. Este algoritmo puede ser expropiativo o no. En la variante expropiativa denominada SRTN(Shortest Remainig Time Next) medimos el tiempo restante que le queda a cada proceso.

Algoritmos de planificacin de procesos


SRTN. Es la variedad expropiativa de SJF. Eso significa que el proceso con menor tiempo para acabar es el siguiente proceso en ejecutarse expropiando la CPU inmediatamente al proceso que este en ejecucin en el instante correspondiente. El problema vendra en el caso que tengamos un proceso que requiera un tiempo de ejecucin para finalizar igual que un proceso nuevo que entra. Existen dos soluciones, dar prioridad a los procesos nuevos sobre los procesos en ejecucin o dar prioridad a los procesos en ejecucin sobre los procesos nuevos.

Administrador de procesos

Bloqueo mutuo
En sistemas operativos, el bloqueo mutuo (tambin conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecucin en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solucin general para los interbloqueos. Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o ms procesos. En la vida real, un ejemplo puede ser el de dos nios que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tom.

Continuacin
Los bloqueos mutuos pueden ser evitados si se sabe cierta informacin sobre los procesos antes de la asignacin de recursos. Para cada peticin de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedar en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado ser seguro o inseguro, debe saber por adelantado y en cualquier momento el nmero y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:

Algoritmo del banquero. Algoritmo de grafo de asignacin de recursos. Algoritmo de Seguridad. Algoritmo de solicitud de recursos.

Sincronizacin de procesos
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 computo. 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 especificas de precedencia impuestas por el problema que se resuelve.

Continuacin
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 mas un proceso entre a la vez en la seccin critica de cdigo en la que se actualiza una variable compartida o estructura de datos en particular.

Continuacin
Para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan bloquear o suspender bajo determinadas circunstancias la ejecucin de un proceso. Los principales mecanismos de sincronizacin que ofrecen los sistemas operativos son:

Seales Tuberas Semforos Mutex y variables condicionales Paso de mensajes

PROGRAMACION CONCURRENTE
La programacin concurrente es la simultaneidad en la ejecucin de mltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecucin creados por un nico programa. Las tareas se pueden ejecutar en un sola UCP (multiprogramacin), en varios procesadores o en una red de computadores distribuidos. La programacin concurrente est relacionada con la programacin paralela, pero enfatiza ms la interaccin entre tareas. As, la correcta secuencia de interacciones o comunicaciones entre los procesos y el acceso coordinado de recursos que se comparten por todos los procesos o tareas son las claves de esta disciplina.

Multitarea Cooperativa
Tipo de multitarea en donde los procesos de usuario son quieres ceden la CPU al sistema operativo a intervalos regulares. Es sumamente problemtico porque si por algn motivo el proceso de usuario es interrumpido, no cede la CPU al sistema operativo que lo ejecuta y, por lo tanto, quedar trabado (tildado). Los sistemas operativos Windows antes de la versin 1995 implementaban este tipo de multitarea.

Multitarea Preferente
Multitarea en donde el SO se encarga de administrar uno o ms procesadores, repartiendo el tiempo de uso del mismo entre los distintos procesos que esperan utilizarlo (tareas en ejecucin). En el caso de un solo procesador, cada proceso o tarea lo utiliza en perodos cortsimos de tiempo, lo que, en la prctica, da la sensacin de que estuviesen ejecutndose al mismo tiempo. Los sistemas operativos que utilizan este tipo de multitareas son los UNIX y sus clones (Linux, etc), Windows NT, etc.

Principios de Concurrencia
La concurrencia es el punto clave en los conceptos de multitarea, multiprogramacin y multiproceso, la concurrencia comprende un gran numero de cuestiones de diseo incluyendo la comunicacin entre procesos, la comparticin y competencia por los recursos, la sincronizacin de la ejecucin de varios procesos y la asignacin del procesador a los procesos, la concurrencia puede presentarse en tres contextos diferentes: En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el tiempo aparentando una ejecucin simultnea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecucin intercalada produce beneficios en la eficiencia del procesamiento y en la estructuracin de los programas.

Vous aimerez peut-être aussi