Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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].
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.
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.
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.
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)
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.
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:
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.