Está en la página 1de 36

Gestin de Procesos El concepto de proceso. Un proceso es cualquier programa en ejecucin.

Un proceso necesita ciertos recursos para realizar satisfactoriamente su tarea: y y y y Tiempo de CPU. Memoria. Archivos. Dispositivos de E/S.

Los recursos se asignan a un proceso: y y Cuando se crea. Durante su ejecucin.

Un sistema consiste en una coleccin de procesos que podran ejecutarse concurrentemente. Las obligaciones del SO como gestor de procesos son: y y y y Creacin y eliminacin de procesos. Planificacin de procesos (procurando la ejecucin de mltiples procesos maximizando la utilizacin del procesador). Establecimiento de mecanismos para la sincronizacin y comunicacinde procesos. Manejo de bloqueos mutuos.

Un proceso es: Seccin de texto(cdigo del programa). Actividad actual, representada por: y y Valor del contador de programa. Contenido de registros del procesador.

Adems, tambin incluye: y Pila (stack), que contiene datos temporales (parmetros de subrutinas, direcciones de retorno y variables locales).

Seccin de datos, que contiene variables globales y memoria dinmica. Estados de un proceso. y A medida que un proceso se ejecuta cambia de estado. Cada proceso puede estar en uno de los estados: y y y y y Nuevo (new): el proceso se est creando. En ejecucin (running): el proceso est en la CPU ejecutando instrucciones. Bloqueado (waiting, en espera): proceso esperando a que ocurra un suceso (ej. terminacin de E/S o recepcin de una seal). Preparado (ready, listo): esperando que se le asigne a un procesador. Terminado (terminated): finaliz su ejecucin, por tanto no ejecuta ms instrucciones y el SO le retirar los recursos que consume.

Nota: Slo un proceso puede estar ejecutndose en cualquier procesador en un instante dado, pero muchos procesos pueden estar listos y esperando. Diagrama de estados de un proceso:

Para que un programa se ejecute, el SO debe crear un proceso para l. En un sistema con multiprogramacin el procesador ejecuta cdigo de distintos programas que pertenecen a distintos procesos. Aunque dos procesos estn asociados al mismo programa, se consideran dos secuencias de ejecucin separadas, cada una de las cuales se considera un proceso.

Llamamos traza de un proceso al listado de la secuencia de instrucciones que se ejecutan para el mismo. Ejemplo: disposicin en memoria de tres procesos.

Ejemplo: traza de los tres procesos.

Ejemplo: traza combinada de los tres procesos para los primeros 52 ciclos de instrucciones del sistema:

Modelo de proceso con dos estados: El modelo ms sencillo es el que considera que en un cierto instante el proceso est ejecutndose en el procesador o no=> slo dos estados posibles: y y Ejecucin. No ejecucin

Modelo de proceso con dos estados: Los procesos que no estn ejecutndose se guardan en una cola de procesos, donde esperan su turno de ejecucin en el procesador. Cada entrada de la cola es un puntero a un proceso en particular. Cuando un proceso se interrumpe, se le pasa a la cola de procesos en espera. Si un proceso termina o se abandona, se le saca del sistema.

Modelo de proceso de cinco estados:

Modelo de proceso de cinco estados: Los sucesos que pueden dar lugar a una transicin de estados en este modelo son los siguientes: y y y y Ninguno a nuevo: se crea un nuevo proceso para ejecutar un programa Nuevo ha preparado: el sistema est preparado para aceptar un proceso ms porque dispone de recursos para ello. Preparado a ejecucin: el sistema elige uno de los procesos en estado preparado para llevarlo a ejecucin. Ejecucin a terminado: el proceso que se est ejecutando es finalizado por el SO si indica que termin, se abandona o se cancela.

Ejecucin a preparado: el proceso ha agotado su tiempo de ejecucin, cede voluntariamente su tiempo de ejecucin o se interrumpe para atender a otro de mayor prioridad.

Modelo de proceso de cinco estados: Los sucesos que pueden dar lugar a una transicin de estados en este modelo son los siguientes (continuacin): y y y Ejecucin ha bloqueado: el proceso solicita algo por lo que debe esperar. Bloqueado ha preparado: se produce el suceso por el que el proceso estaba esperando. Preparado ha terminado (no aparece en la figura): un padre puede terminar con un proceso hijo en cualquier momento, o bien, si el padre termina todos sus hijos se pueden terminar. Bloqueado ha terminado: el mismo criterio que el anterior.

Ejemplo: estados asociados a la traza de los tres procesos.

Sera necesario disponer de dos colas: una de listos y otra de bloqueados. Los procesos nuevos que se van admitiendo pasan a la cola de listos, el sistema elige de esta cola alguno para pasarlo a ejecucin. Cuando ocurre un suceso, todos los procesos que esperan por l pasan de la cola de bloqueados a la cola de listos.

El modelo con una sola cola de bloqueados tiene la limitacin de que cuando ocurre un evento del sistema debe recorrer la cola para buscar a aquellos procesos que esperan dicho suceso. Esto sera muy costoso en un SO grande con cientos o miles de procesos en dicha cola. Sera ms eficiente tener varias colas, una asociada a cada suceso. De esta manera, cuando ocurra ese suceso todos los procesos de la cola asociada se pasaran a la cola de listos. Modelo con varias colas de bloqueados para el proceso de cinco estados:

Bloque de control de proceso (PCB). Cada proceso se representa en el SO con un bloque de control de proceso (tambin llamado bloque de control de tarea).

Los elementos de informacin asociados son: y y y y y y y Estado actual del proceso. Contador de programa: indica la direccin de la siguiente instruccin que se ejecutar de ese proceso. Registros de CPU: acumuladores, registros ndices, punteros de pila y registros generales. Informacin de planificacin de CPU: prioridad del proceso, punteros a colas de planificacin, etc. Informacin de gestin de memoria: valor de los registros de base y lmite, tabla de pginas o tabla de segmentos. Informacin de contabilidad: tiempo de CPU, tiempo consumido, nmeros de procesos, etc. Informacin de estado de E/S: dispositivos de E/S asignados a este proceso, lista de archivos abiertos, etc.

Planificacin de procesos. Las polticas de planificacin de procesos surgen como necesidad dada por los objetivos perseguidos por el SO: multiprogramacin y tiempo compartido.

Objetivo de la multiprogramacin: o Tener algn proceso en ejecucin en todo momento (maximizar el aprovechamiento de la CPU).

Objetivo del tiempo compartido: o Conmutar la CPU entre procesos con tal frecuencia que los usuarios puedan interactuar con cada programa durante su ejecucin. Nota: En el caso de un sistema con un solo procesador nunca habr ms de un proceso en ejecucin, si hay ms de un proceso, los otros tendrn que esperar hasta que la CPU est libre y pueda replanificarse. y Colas de planificacin: y y Cola de procesos: incluye todos los procesos que van ingresando en el sistema. Cola de procesos listos: son los procesos que estn en memoria principal esperando para ejecutarse. La cabecera de esta cola contiene punteros al primer y ltimo bloque del PCB de la lista. Cada PCB tiene un puntero que apunta al siguiente proceso de la cola de procesos listos. Cola de dispositivos: lista de procesos que esperan un dispositivo de E/S en particular.

El SO organiza los PCB en colas de espera por el procesador o por los dispositivos de E/S (colas de planificacin: colas de procesos, colas de dispositivos).

Un proceso se coloca inicialmente en la cola de listos, a la espera de que se le ejecute. Una vez asignada la CPU al proceso y cuando ste se est ejecutando puede ocurrir que: y El proceso pueda emitir una solicitud de E/S, y entonces colocarse en una cola de E/S.

y y

El proceso puede crear un nuevo proceso y esperar a que termine. El proceso puede ser desalojado por la fuerza de la CPU, como resultado de una interrupcin, y ser colocado otra vez en la cola de procesos listos.

Nota: en los dos primeros casos el proceso pasar del estado de esperaal estado de listo, y se colocar de nuevo en la cola de procesos listos. Niveles de planificacin. Planificadores En los sistemas por lotes, existe un planificador de largo plazo (PLP)o de alto nivel, que suministra procesos a la cola de preparados. El planificador de corto plazo o de bajo nivel es el que asigna y desasigna la CPU. El PLP trata de conseguir una mezcla adecuada de trabajos intensivos en CPU y en E/S. Planificador de medio plazo: enva al disco procesos de poco inters, para abrir memoria principal para nuevos procesos => Intercambio (swapping). Cambio de contexto (context switch): y y y Consiste en desalojar a un proceso de la CPU y reanudar otro. Se guarda el estado del proceso saliente en su PCB y se recuperan los registros del proceso que entra. El cambio de contexto (tiempo de conmutacin) es tiempo perdido => debe de ser lo ms rpido posible. El tiempo de conmutacin vara entre 1 y 1000 s. El hardware en ocasiones facilita el cambio de contexto, haciendo que un cambio simplemente implique cambiar el puntero al conjunto de registros actual.

Creacin de procesos. Los procesos se crean: y y y Mediante una llamada al sistema de crear proceso, durante el curso de su ejecucin. El proceso creador se denomina proceso padre, y el nuevo proceso, hijo. Variantes en las relaciones padre/hijo: o Comparticin de recursos: todos, algunos, ninguno?. o Espacio de memoria. o Sincronizacin del padre: espera a que el hijo termine?. o Terminacin.

Cuando un proceso crea un proceso nuevo, hay dos posibilidades en trminos de ejecucin: y y Padre e hijo se ejecutan concurrentemente. Padre espera por la finalizacin del hijo.

En cuanto al espacio de direcciones del nuevo proceso: y y El hijo es un duplicado del padre. Se carga un programa en el proceso hijo.

En UNIX existen dos funciones bsicas para crear procesos: Funcin fork():

Cuando se la llama crea un proceso hijo que es una copia casi exacta del proceso padre (duplicado del padre). Ambos procesos continan ejecutndose desde el punto en el que se hizo la llamada a fork(). En UNIX los procesos se identifican mediante un identificador de proceso(PID)que es un entero nico. Ambos procesos continan su ejecucin con la instruccin que sigue al fork() con una diferencia: o El cdigo que el hijo recibe del forkes cero. o El que recibe del padre es el propio pid.

Funciones exec: Tras crear un nuevo proceso, despus de llamar afork, Linux llama a una funcin de la familia exec. stas funciones reemplazan el programa ejecutndose en el proceso por otro programa. Cuando un programa llama a una funcin exec, su ejecucin cesa de inmediato y comienza a ejecutar el nuevo programa desde el principio, suponiendo que no ocurriera ningn error durante la llamada. Generalmente uno de los dos procesos (padre o hijo) utiliza la llamada al sistema execve despus del fork para reemplazar su espacio de memoria con un programa nuevo. Nota: Si el padre no tiene nada que hacer mientras el hijo se ejecuta, puede emitir una llamada wait (esperar)para sacarse a s mismo de la cola de procesos listos hasta que el hijo termine. Identificacin de procesos. Todo proceso en Linux lleva asociado un identificador(n de 16 bits que se asigna secuencialmente en Linux por cada nuevo proceso que se crea), que resulta nico para cada proceso y se conoce como PID. Adems, salvo el proceso raz (init), todo proceso lleva asociado un proceso padre, que tambin tiene un identificador, en este caso PPID, lo que generar toda una estructura en rbol. Ejemplo: El siguiente programa escribe el identificador de un proceso (PID) y el identificador de su proceso padre (PPID).

Un programa puede obtener el identificador del proceso en el que se est ejecutando por medio de la funcin de llamada al sistema getpid(), mientras que el identificador del proceso padre desde el que se ejecutase puede obtener por medio de la funcin de llamada al sistema getppid(). Al finalizar el fork() tanto el proceso padre como el hijo continan su ejecucin a partir de la siguiente instruccin. Si un padre quiere esperar a que su hijo termine deber utilizar la llamada al sistema wait(); wait() detiene la ejecucin del proceso (lo pasa al estado bloqueado)hasta que un hijo de ste termine. wait() regresa de inmediato si el proceso no tiene hijos. Cuando wait() regrese por terminacin de un hijo, el valor devuelto es positivo e igual al pid de dicho proceso. De lo contrario devuelve 1 y pone un valor en errno. Terminacin de procesos. Procesos Zombie: y y Proceso que ha finalizado su ejecucin pero an no ha sido eliminado. Supongamos que un programa crea un proceso hijo y luego llama a la funcin wait(): o Si el proceso hijo no ha finalizado en ese punto, el proceso padre se bloquear en la llamada hasta que el proceso hijo finalice. o Si el proceso hijo finaliza antes de que el proceso padre llame al wait() el proceso hijo se convierte en un proceso zombie. Cuando el padre llame al wait(), captura el estado del proceso hijo (terminacin),el proceso hijo es borrado y la llamada wait() nos devuelve al programa inmediatamente.

Un proceso finaliza:

y y

Cuando tras ejecutar su ltima instruccin le pide al SO que lo elimine utilizando una llamada al sistema exit. Cuando el padre emite una llamada al sistema para abortarlo.

Un padre podra terminar la ejecucin de uno de sus hijos por diversas razones, como: o El hijo se excedi en la utilizacin de alguno de los recursos que se le asignaron. o La tarea que se asign al hijo ya no es necesaria. o El padre va a salir, y el SO no permite que un hijo contine si su padre termina => terminacin en cascada.

Matar un proceso: y En ocasiones nos suceder que queramos finalizar un proceso que est corriendo, las razones para hacer esto pueden ser mltiples, que el proceso est consumiendo demasiado tiempo del procesador, que est bloqueado, que no genere informacin o que genere demasiada. Para matar un proceso utilizaremos la orden kill, que resulta muy til en el caso de procesos que no tienen asociada ninguna terminal de control. Para matar un proceso necesitaremos su PID de tal manera que escribiremos:

killPID(s) Procesos cooperativos: Procesos concurrentes: y Los procesos pueden tener distintas relaciones de comunicacin entre s: o Independientes: no puede afectar, ni ser afectado por los dems procesos que se ejecutan en el sistema, compiten por el uso de recursos escasos. o Cooperativos: puede afectar o ser afectado por los dems procesos que se ejecutan en el sistema, colaboran entre s buscando un objetivo comn. Obviamente, cualquier proceso que comparte datos con otro proceso es cooperativo.

Razones para crear un entorno que permita la cooperacin entre procesos: y Compartir informacin: informacin comunes. acceso concurrente a elementos de

Aceleracin de los clculos: para ejecutar una tarea con mayor rapidez, la dividimos en subtareas, cada una de las cuales se ejecuta en paralelo con las otras. Modularidad: posibilidad de dividir las funciones del sistema en procesos individuales. Comodidad: para evitar que a un usuario individual se le acumule gran nmero de tareas.

Ejemplo de proceso cooperativo: Problema del productor-consumidor. y Un proceso productor produce informacin que es consumida por un proceso consumidor, para que se ejecuten concurrentemente, es preciso contar con un buffer de elementos que el productor puede llenar y el consumidor puede vaciar. Productor y consumidor deben de estar sincronizados para que el consumidor no trate de consumir un elemento que an no se ha producido (el consumidor espera al productor). Restricciones de espera para productor y consumidor con buffer limitado: o Productor: espera si buffer lleno. o Consumidor: espera si buffer vaco.

Hilos (threads) Procesos e hilos (threads): y Los hilos son un concepto relativamente nuevo de los SO. En este contexto, un proceso recibe el nombre de proceso pesado, mientras que un hilo recibe el nombre de proceso ligero. El trmino hilo se refiere sintctica y semnticamente a hilos de ejecucin. El trmino multihilo hace referencia a la capacidad de un SO para mantener varios hilos de ejecucin dentro del mismo proceso.

En un SO con procesos monohilo (un solo hilo de ejecucin por proceso),en el que no existe el concepto de hilo, la representacin de un proceso incluye su PCB, un espacio de direcciones del proceso, una pila de proceso y una pila ncleo.

En un SO con procesos multihilo, slo hay un PCB y un espacio de direcciones asociados al proceso, sin embargo, ahora hay pilas separadas para cada hilo y bloques de control para cada hilo.

Estructura de los hilos: y Un hilo(proceso ligero) es una unidad bsica de utilizacin de la CPU, y consiste en un contador de programa, un juego de registros y un espacio de pila. Los hilos dentro de una misma aplicacin comparten: o La seccin de cdigo. o La seccin de datos. o Los recursos del SO(archivos abiertos y seales). Un proceso tradicional o pesado es igual a una tarea con un solo hilo.

Recursos compartidos y no compartidos Los hilos permiten la ejecucin concurrente de varias secuencias de instrucciones asociadas a diferentes funciones dentro de un mismo proceso, compartiendo un mismo espacio de direcciones y las mismas estructuras de datos del ncleo. Recursos compartidos entre los hilos: y y y Cdigo (instrucciones). Variables globales. Ficheros y dispositivos abiertos.

Recursos no compartidos entre los hilos: y y y y Contador del programa (cada hilo puede ejecutar una seccin distinta de cdigo). Registros de CPU. Pila para las variables locales de los procedimientos a las que se invoca despus de crear un hilo. Estado: distintos hilos pueden estar en ejecucin, listos o bloqueados esperando un evento.

Estados de un hilo Los principales estados de un hilo son: ejecucin, preparado y bloqueado y hay cuatro operaciones bsicas relacionadas con el cambio de estado de los hilos:

Creacin: En general, cuando se crea un nuevo proceso se crea tambin un hilo para ese proceso. Posteriormente, ese hilo puede crear nuevos hilos dndoles un puntero de instruccin y algunos argumentos. Ese hilo se colocar en la cola de preparados. Bloqueo: Cuando un hilo debe esperar por un suceso, se le bloquea guardando sus registros. As el procesador pasar a ejecutar otro hilo preparado. Desbloqueo: Cuando se produce el suceso por el que un hilo se bloque pasa a la cola de listos. Terminacin: Cuando un hilo finaliza, se liberan su contexto y sus pilas. Nota: Un punto importante es la posibilidad de que el bloqueo de un hilo lleve al bloqueo de todo el proceso. Es decir, que el bloqueo de un hilo lleve al bloqueo de todos los hilos que lo componen, an cuando el proceso est preparado. En un sistema monoprocesador, la multiprogramacin permite intercalar la ejecucin de mltiples hilos dentro del mismo proceso:

Procesos e hilos Los hilos operan, en muchos sentidos, igual que los procesos: y y y Pueden estar en uno o varios estados: listo, bloqueado, en ejecucin o terminado. Tambin comparten la CPU. Slo hay un hilo activo(en ejecucin) en un instante dado.

y y y

Un hilo dentro de un proceso se ejecuta secuencialmente. Cada hilo tiene su propia pila y contador de programa. Pueden crear sus propios hilos hijos.

Diferencia con los procesos: y Los hilos no son independientes entre s. Como todos los hilos pueden acceder a todas las direcciones de la tarea, un hilo puede leer la pila de cualquier otro hilo o escribir sobre ella. Aunque pueda parecer lo contrario la proteccin no es necesaria ya que el diseo de una tarea con mltiples hilos tiene que ser un usuario nico.

Ventajas de los hilos sobre los procesos: y Se tarda mucho menos tiempo en crear un nuevo hilo en un proceso existente que en crear un nuevo proceso. Se tarda mucho menos tiempo en terminar un hilo que un proceso. Se tarda mucho menos tiempo en conmutar entre hilos de un mismo proceso que entre procesos. Los hilos hacen ms rpida la comunicacin entre procesos, ya que al compartir memoria y recursos, se pueden comunicar entre s sin invocar el ncleo del SO.

y y

Ejemplos de uso de los hilos:

Trabajo interactivo y en segundo plano: En un programa de hoja de clculo, un hilo podra estar leyendo la entrada del usuario y otro podra estar ejecutando las rdenes y actualizando la informacin. Procesamiento asncrono: Se podra implementar, con el fin de protegerse de cortes de energa, un hilo que se encargar de salvaguardar el buffer de un procesador de textos una vez por minuto. Estructuracin modular de los programas: Los programas que realizan una variedad de actividades se pueden disear e implementar mediante hilos.

Hilos a nivel de ncleo y a nivel de usuario: y Existen dos categoras para la implementacin de hilos: hilos a nivel de usuario (ULT) e hilos a nivel de ncleo (KLT). Hilos a nivel de usuario: o Gestin de hilos la realiza una aplicacin y el ncleo no es consciente de la existencia de hilos. Se programa una aplicacin como multihilo mediante una biblioteca de funciones para gestionar ULT (crear, destruir, comunicar, planificar, etc.)

Hilos a nivel de ncleo (KLT): y Todo el trabajo de gestin de hilos lo realiza el ncleo. En el rea de la aplicacin no hay cdigo para la gestin de hilos, nicamente una Interfaz de Programas de Aplicacin (API) para las funciones de gestin de hilos en el ncleo. Este tipo de soluciones se han implementado en Windows 2000 y Linux. Las aplicaciones se programan como multihilo y todos los hilos de esa aplicacin pertenecen al mismo proceso. El ncleo del SO mantiene la informacin de contexto del proceso como un todo y la de cada hilo dentro del proceso. La principal desventaja de la solucin KLT, respecto de la ULT, es que el paso de control de un hilo a otro, dentro del mismo proceso, requiere cambios de modo.

Ventajas del usar ULT en vez de KLT: 1. El intercambio de hilos no requiere los privilegios del modo ncleo. As, el proceso no debe cambiar al modo ncleo y volver al modo usuario para gestionar los hilos. Esto evita una sobrecarga de procesamiento. 2. Se puede manejar una planificacin especfica para los hilos. Para algunas aplicaciones puede ser mejor una planificacin basada en prioridades mientras que para otras puede ser mejor un turno rotatorio. 3. Los ULT se pueden ejecutar en cualquier SO. Para dar soporte a los ULT no es necesario realizar cambios en el ncleo del SO ya que se utilizan herramientas de gestin de hilos que proporciona una biblioteca para todas las aplicaciones.

Desventajas del uso de ULT en vez de KLT: 1. En un SO la mayora de las llamadas a sistema son bloqueantes. As, cuando un ULT ejecuta una llamada al sistema no solo se bloquea ese hilo, sino todos los hilos del proceso. Una aplicacin multihilo basada en ULT no puede sacar partido de los sistemas multiprocesadores. El ncleo del SO asigna un proceso a un solo procesador y slo se puede ejecutar en l un hilo del proceso a la vez.

2.

Para evitar estas desventajas: 1. Podemos modularizar la aplicacin por procesos en vez de hilos. Pero esto elimina la principal ventaja de los hilos: cada cambio de proceso es ms costoso que un cambio de hilo. Usar una tcnica de recubrimiento (convierte una llamada bloqueante en una no bloqueante), para evitar el bloqueo de los hilos

2.

Bibliografa: Escuela Universitaria de Informtica (Segovia) http://www.infor.uva.es/~fjgonzalez/apuntes/Tema4.pdf

Gestin de memoria. 1. Introduccin: La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayora de los sistemas de cmputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen tambin altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estn utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando stos la necesiten y liberndola cuando terminen, as como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de administracin de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecucin y los que no. El propsito principal de una computadora es el de ejecutar programas, estos programas, junto con la informacin que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecucin. Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administracin tanto del procesador como de la memoria. La seleccin de uno de ellos depende principalmente del diseo del hardware para el sistema. A continuacin se observarn los puntos correspondientes a la administracin de la memoria. 2. Aspectos generales: - Memoria real: La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la informacin contenida en ella es de ms rpido acceso. Slo la memoria cache es ms rpida que la principal, pero su costo es a su vez mayor.

- Memoria virtual: El trmino memoria virtual se asocia a dos conceptos que normalmente aparecen unidos: El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusin de tener ms memoria RAM de la que realmente hay en el sistema. Esta ilusin existe tanto a nivel del sistema, es decir, teniendo en ejecucin ms aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicacin individual pueda usar ms memoria de la que realmente hay o incluso de forma ms general, ofreciendo a cada aplicacin ms memoria de la que existe fsicamente en la maquina. Ofrecer a las aplicaciones la ilusin de que estn solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo. Esta tcnica facilita enormemente la generacin de cdigo, puesto que el compilador no tiene por qu preocuparse sobre dnde residir la aplicacin cuando se ejecute. - Espacio de direcciones: Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos: Direcciones fsicas: Son aquellas que referencian alguna posicin en la memoria fsica. Direcciones lgicas: Son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones fsicas. Direcciones lineales: Direcciones lineales se obtienen a partir de direcciones lgicas tras haber aplicado una transformacin dependiente de la arquitectura. Los programas de usuario siempre tratan con direcciones virtuales, nunca ven las direcciones fsicas reales. - Unidad de manejo de memoria: La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son: - Convertir las direcciones lgicas emitidas por los procesos en direcciones fsicas.

- Comprobar que la conversin se puede realizar. La direccin lgica podra no tener un direccin fsica asociada. Por ejemplo, la pgina correspondiente a una direccin se puede haber trasladado a una zona de almacenamiento secundario temporalmente. - Comprobar que el proceso que intenta acceder a una cierta direccin de memoria tiene permisos para ello. La MMU se Inicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar el rango completo de direcciones lgicas (memoria virtual), ya que las conversiones de estas direcciones sern distintas para cada proceso. En todos los procesos se configura la MMU para que la zona del ncleo solo se pueda acceder en modo privilegiado del procesador. La configuracin correspondiente al espacio de memoria del ncleo es idntica en todos los procesos. 3. Intercambio: El objetivo del intercambio es dar cabida a la ejecucin de ms aplicaciones de las que pueden residir simultneamente en la memoria del sistema: Consiste en trasladar el cdigo y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar ms memoria RAM de la que realmente existe en el sistema. Esta tcnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque ste solo vaya a ejecutar una pequea porcin del cdigo. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecucin. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imgenes de memoria de todos los usuarios. - Asignacin contigua: La memoria principal normalmente se divide en dos particiones:

Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupcin. Procesos de usuario en la parte alta. - Asignacin de particin simple: Puede utilizarse un esquema de registro de relocalizacin y lmite para proteger un proceso de usuario de otro y de cambios del cdigo y datos del sistema operativo. El registro de relocalizacin contiene la direccin fsica ms pequea; el registro limite contiene el rango de las direcciones lgicas. Cada direccin lgica debe ser menor al registro limite

- Asignacin de particiones mltiples: Bloques de distintos tamaos estn distribuidos en memoria, cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle. El sistema operativo debe tener informacin sobre: - Particiones asignadas - Particiones libres (huecos) - Asignacin de particin dinmica El proceso de compactacin es una instancia particular del problema de asignacin de memoria dinmica, el cual es el cmo satisfacer una necesidad de tamao n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cul hueco es el ms indicado para asignarse. Las estrategias ms comunes para asignar algn hueco de la tabla son: Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La bsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde termin la ltima bsqueda. La bsqueda termina al encontrar un hueco lo suficientemente grande. Mejor ajuste: Busca asignar el espacio ms pequeo de los espacios con capacidad suficiente. La bsqueda se debe de realizar en toda la tabla, a

menos que la tabla est ordenada por tamao. Esta estrategia produce el menor desperdicio de memoria posible. Peor ajuste: Asigna el hueco ms grande. Una vez ms, se debe de buscar en toda la tabla de huecos a menos que est organizada por tamao. Esta estrategia produce los huecos de sobra ms grandes, los cuales pudieran ser de ms uso si llegan procesos de tamao mediano que quepan en ellos. Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar el tiempo del almacenamiento. Ni el primer ajuste o el mejor ajuste es claramente el mejor en trminos de uso de espacio, pero por lo general el primer ajuste es ms rpido. Problema: La fragmentacin. 4. Fragmentacin: La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria que se vieron en los mtodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentacin externa. La fragmentacin es generada cuando durante el reemplazo de procesos quedan huecos entre dos o ms procesos de manera no contigua y cada hueco no es capaz de soportar ningn proceso de la lista de espera. La fragmentacin puede ser: Fragmentacin Externa: Existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua. Fragmentacin Interna: La memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la particin, pero no se utiliza. La fragmentacin externa se puede reducir mediante la compactacin para colocar toda la memoria libre en un solo gran bloque, pero esta slo es posible si la relocalizacin es dinmica y se hace en tiempo de ejecucin. 5. Paginacin: Es una tcnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los programas se dividen en unidades lgicas, denominadas pginas, que tienen el mismo tamao que los marcos de pginas. De esta forma, se puede cargar una pgina de informacin en cualquier marco de pgina. Las pginas sirven como unidad de almacenamiento de informacin y de

transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la direccin de marco, que est en la posicin fsica de la primera palabra en el marco de pgina. Las pginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginacin permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Cada pgina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n pginas (0,1,2,3n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de pginas (0,z,2z,,(m-1)z)(m*z posiciones). Una direccin virtual a es equivalente a una direccin dada como una dupla (p, d), en la cual p es el nmero de la pgina y d el nmero de la palabra dentro de la pgina, de acuerdo con la relacin: a=p*z+d (06), los cuatro bits ms significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento. Para tener el control de las pginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos. Hasta ahora, los mtodos que hemos visto de la administracin de la memoria principal, nos han dejado con un problema: Fragmentacin, (huecos en la memoria que no pueden usarse debido a lo pequeo de su espacio) lo que nos provoca un desperdicio de memoria principal. Una posible solucin para la fragmentacin externa es permitir que espacio de direcciones lgicas lleve a cabo un proceso en direcciones no contiguas, as permitiendo al proceso ubicarse en cualquier espacio de memoria fsica que est disponible, aunque est dividida. Una forma de implementar esta solucin es a travs del uso de un esquema de paginacin. La paginacin evita el considerable problema de ajustar los pedazos de memoria de tamaos variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los mtodos previos, la paginacin, en sus diversas formas, es usada en muchos sistemas operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas pginas. Las unidades correspondientes

en la memoria fsica se llaman marcos para pgina o frames. Las pginas y los frames tienen siempre el mismo tamao. - Tablas de pginas: Cada pgina tiene un nmero que se utiliza como ndice en la tabla de pginas, lo que da por resultado el nmero del marco correspondiente a esa pgina virtual. Si el bit presente / ausente es 0, se provoca un sealamiento (trap) hacia el sistema operativo. Si el bit es 1, el nmero de marco que aparece en la tabla de pginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la direccin virtual de entrada. Juntos forman una direccin fsica de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la direccin en la memoria fsica. En teora, la asociacin de las direcciones virtuales con las fsicas se efecta segn lo descrito. El nmero de pgina virtual se divide en un nmero de pgina virtual (los bits superiores) y un ajuste (los bits inferiores). El nmero de pgina virtual se utiliza como un ndice en la tabla de pginas para encontrar la entrada de esa pgina virtual. El nmero de marco (si existe) se determina a partir de la tabla de pginas. El nmero de marco se asocia al extremo superior del ajuste y reemplaza al nmero de pgina virtual para formar una direccin fsica que se puede enviar a la memoria. La finalidad de la tabla de pginas es asociar las pginas virtuales con los marcos. En trminos matemticos, la tabla de pginas es una funcin, cuyo argumento es el nmero de pgina virtual y como resultado el nmero del marco fsico. Mediante el resultado de esta funcin, se puede reemplazar el campo de la pgina virtual de una direccin virtual por un campo de marco, lo que produce una direccin en la memoria fsica. Sin embargo hay que enfrentar dos aspectos fundamentales: - La tabla de pginas puede ser demasiado grande. - La asociacin debe ser rpida. El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamao de pgina es de 4K, un hueco de direcciones de 32 bits tiene un milln de pginas; en el caso de un hueco de direcciones de 64 bits, se tendra ms informacin de la que uno quisiera contemplar. El segundo punto es consecuencia del hecho de que la asociacin virtual fsica debe hacerse en cada referencia a la memoria. Una instruccin comn

tiene una palabra de instruccin y tambin un operando de memoria. Entonces es necesario hacer una, dos o ms referencias a la tabla de pginas por cada instruccin. - Caractersticas de la paginacin: - El espacio de direcciones lgico de un proceso puede ser no contiguo. - Se divide la memoria fsica en bloques de tamao fijo llamados marcos (frames). - Se divide la memoria en bloques de tamao llamados pginas. - Se mantiene informacin en los marcos libres. - Para correr un programa de n paginas de tamao, se necesitan encontrar n marcos y cargar el programa. - Se establece una tabla de pginas para trasladar las direcciones lgicas a fsicas. - Se produce fragmentacin interna. - Ventajas de la paginacin: - Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. - No es necesario que las paginas estn contiguas en memoria, por lo que no se necesitan procesos de compactacin cuando existen marcos de paginas libres dispersos en la memoria. - Es fcil controlar todas las pginas, ya que tienen el mismo tamao. - El mecanismo de traduccin de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario. - Se libera al programador de la restriccin de programar para un tamao fsico de memoria, con lo que s e aumenta su productividad. Se puede programar en funcin de una memoria mucho ms grande a la existente. - Al no necesitarse cargar un programa completo en memoria para su ejecucin, se puede aumentar el nmero de programas multiprogramndose. Se elimina el problema de fragmentacin externa.

- Desventajas de la paginacin: - El costo de hardware y software se incrementa, por la nueva informacin que debe manejarse y el mecanismo de traduccin de direcciones necesario. Se consumen muchos ms recursos de memoria, tiempo en el CPU para su implantacin. - Se deben reservar reas de memoria para las PMT de los procesos. Al no ser fijo el tamao de estas, se crea un problema semejante al de los programas (cmo asignar un tamao ptimo sin desperdicio de memoria, u ovearhead del procesador). - Aparece el problema de fragmentacin interna. As, si se requieren 5K para un programa, pero las pginas son de 4K, debern asignrseles 2 pginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias pginas, pero no podr ser utilizado. Debe asignarse un tamao promedio a las pginas, evitando que si son muy pequeas, se necesiten tablas BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentacin interna. - Traduccin de Direcciones: La direccin generada por la CPU se divide en: - Nmero de pgina (p): Utilizado como ndice en la tabla de pginas que contiene la direccin base de cada pgina en la memoria fsica. - Offset de la pgina (d): Combinado con la direccin base define la direccin fsica que ser enviada a la unidad de memoria. 6. Segmentacin: Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica, llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos. Cada uno de ellos tienen informacin lgica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una coleccin de segmentos, que generalmente reflejan la divisin lgica del programa. La segmentacin permite alcanzar los siguientes objetivos: Modularidad de programas: Cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.

Estructuras de datos de largo variable: Ejm. Stack, donde cada estructura tiene su propio tamao y este puede variar. Proteccin: Se pueden proteger los mdulos del segmento contra accesos no autorizados. Comparticin: Dos o ms procesos pueden ser un mismo segmento, bajo reglas de proteccin; aunque no sean propietarios de los mismos. Enlace dinmico entre segmentos: Puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecern slo cuando sea necesario. - Ventajas de la segmentacin: El esquema de segmentacin ofrece las siguientes ventajas: - El programador puede conocer las unidades lgicas de su programa, dndoles un tratamiento particular. - Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. - Debido a que es posible separar los mdulos, se hace ms fcil la modificacin de los mismos. Cambios dentro de un modulo no afecta al resto de los mdulos. - Es fcil el compartir segmentos. - Es posible que los segmentos crezcan dinmicamente segn las necesidades del programa en ejecucin. - Existe la posibilidad de definir segmentos que aun no existan. As, no se asignar memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, seran los arreglos cuya dimensin no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podra retardar la asignacin de memoria hasta el momento en el cul se referencia el arreglo u otra estructura de datos por primera vez. - Desventajas de la segmentacin: - Hay un incremento en los costos de hardware y de software para llevar a cabo

la implantacin, as como un mayor consumo de recursos: memoria, tiempo de CPU, etc. - Debido a que los segmentos tienen un tamao variable se pueden presentar problemas de fragmentacin externas, lo que puede ameritar un plan de reubicacin de segmentos en memoria principal. - Se complica el manejo de memoria virtual, ya que los discos almacenan la informacin en bloques de tamaos fijos, mientras los segmentos son de tamao variable. Esto hace necesaria la existencia de mecanismos ms costosos que los existentes para paginacin. - Al permitir que los segmentos varen de tamao, pueden ser necesarios planes de reubicacin a nivel de los discos, si los segmentos son devueltos a dicho dispositivo, lo que conlleva a nuevos costos. - No se puede garantizar que al salir un segmento de la memoria, este pueda ser trado fcilmente de nuevo, ya que ser necesario encontrar nuevamente un rea de memoria libre ajustada a su tamao. - La comparticin de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software. Estas desventajas tratan de ser minimizadas, bajo la tcnica conocida como Segmentacin paginada. 7. Segmentacin Paginada: Paginacin y segmentacin son tcnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. Para la segmentacin se necesita que estn cargadas en memoria reas de tamaos variables. Si se requiere cargar un segmento en memoria que antes estuvo en ella y fue removido a memoria secundaria, se necesita encontrar una regin de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible. En cambio recargar una pgina implica slo encontrar un marco de pgina disponible. A nivel de paginacin, si quiere referenciar en forma cclica n paginas, estas debern ser cargadas una a una, generndose varias interrupciones por fallas de pginas. Bajo segmentacin, esta pgina podra conformar un slo segmento, ocurriendo una sola interrupcin por falla de segmento. No obstante, si bajo segmentacin se desea acceder un rea muy pequea dentro de un segmento muy grande, este deber cargarse completamente en memoria,

desperdicindose memoria. Bajo paginacin slo se cargar la pgina que contiene los tems referenciados.

Puede hacerse una combinacin de segmentacin y paginacin para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, ste puede dividirse en pginas. Cada segmento puede ser descrito por su propia tabla de pginas. Los segmentos son usualmente mltiplos de pginas en tamao, y no es necesario que todas las pginas se encuentren en memoria principal a la vez. Adems, las pginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual, no necesitan estarlo en memoria real. Las direcciones tienen tres componentes: (s, p, d), donde la primera indica el nmero del segmento, la segunda el nmero de la pgina dentro del segmento y la tercera el desplazamiento dentro de la pgina. Se debern usar varias tablas: - SMT (tabla de mapas de segmentos): Una para cada proceso. En cada entrada de la SMT se almacena la informacin descrita bajo segmentacin pura, pero en el campo de direccin se indicara la direccin de la PMT (tabla de mapas de pginas) que describe a las diferentes pginas de cada segmento. - PMT (tabla de mapas de pginas): Una por segmento; cada entrada de la PMT describe una pgina de un segmento, en la forma que se present la pagina pura. - TBM (tabla de bloques de memoria): Para controlar asignacin de pginas por parte del sistema operativo. - JT (tabla de Jobs): Que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria. En el caso de que un segmento sea de tamao inferior o igual al de una pgina, no se necesita tener la correspondiente PMT, actundose en igual forma que bajo segmentacin pura. Puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicar si el segmento est paginado o no. Ventajas de la segmentacin paginada: El esquema de segmentacin paginada tiene todas las ventajas de la segmentacin y la paginacin:

- Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparticin y enlace. - Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. - Se elimina el problema de la fragmentacin externa y la necesidad de compactacin. Desventajas de la segmentacin paginada: - Los tres componentes de la direccin y el proceso de formacin de direcciones hace que se incremente el costo de su implantacin. El costo es mayor que en el caso de de segmentacin pura o paginacin pura. - Se hace necesario mantener un nmero mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento. - Sigue existiendo el problema de fragmentacin interna de todas -o casi todaslas pginas finales de cada uno de los segmentos. Bajo paginacin pura se desperdicia slo la ltima pgina asignada, mientras que bajo segmentacin paginada el desperdicio puede ocurrir en todos los segmentos asignados. 8. Conclusiones: Para concluir se entiende que: - En la memoria principal son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. - La memoria virtual es aquella que le ofrece a las aplicaciones la ilusin de que estn solas en el sistema y que pueden usar el espacio de direcciones completo. - Las direcciones de memoria son de tres tipos: fsicas, lgicas y lineales. - El objetivo del intercambio es dar cabida a la ejecucin de ms aplicaciones de las que pueden residir simultneamente en la memoria del sistema. - La asignacin consiste en determinar cul espacio vaco en la memoria principal es el ms indicado para ser asignado a un proceso.

- Las estrategias ms comunes para asignar espacios vacos (huecos) son: primer ajuste, mejor ajuste, peor ajuste. - La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria tales como la asignacin. - La fragmentacin puede ser interna o externa. - La paginacin es una tcnica de gestin de memoria en la cual el espacio de memoria se divide en secciones fsicas de igual tamao llamadas marcos de pagina, las cules sirven como unidad de almacenamiento de informacin. - La segmentacin es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica, llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos. Bibliografa: Deitel Sistemas Operativos Stallings William - Sistemas Operativos - Editorial Prentice Hall Tanenbaum Andrew S. - Sistemas Operativos Modernos - Editorial Prentice Hall http://www.configurarequipos.com/doc89.html

También podría gustarte