You are on page 1of 33

Instituto Tecnolgico de Las Amricas

Bloqueos y Administracin de Memoria

Maestro: Jos Doe

Integrante: Esleiter Rivera Fortuna 2012-1106

Fecha de Entrega: 17/06/2013

INDICE
Sistema Operativo Introduccin. 3 1. Condicin para un Bloqueo... . 4 2. Prevencin ....5 3. Deteccin....6 4. Recuperacin8 5. Administracin de memoria9 6.1
6.2

Memorial Real..10 Direcciones Fsicas y Lgica.11 Resolucin de direcciones15 Intercambio.16

6.3 6.4

6.5 Asignacin contigua: particiones..17 6.6 Paginacin.. 19 6.7 Segmentacin..21 6.8 Segmentacin con Paginacin..22 6.8.1 Memoria Virtual.24 6.8.2 Paginacin por solicitud..26 6.8.3 Algoritmos de Reemplazo27 6.8.4 Bloques de Asignacin.29 7. Conclusin.....32 8. Bibliografa..33

INTRODUCCIN
En sistemas operativos, el bloqueo (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. A continuacin se describen los bloqueos y la administracin de memoria, los cual se divide en varios subtemas que explicare de manera clara tomando en cuenta los puntos ms importantes que sirven para mi propio aprendizaje.

Bloqueos
En sistemas operativos, el bloqueo (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. En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar, que slo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la liberacin del recurso que utiliza el otro proceso.

1. Condiciones Para un Bloqueo


Tambin conocidas como condiciones de Coffman por su primera descripcin en 1971 en un artculo escrito por E. G. Coffman. Estas condiciones deben cumplirse simultneamente y no son totalmente independientes entre ellas. Sean los procesos P0, P1, ..., Pn y los recursos R0, R1, ..., Rm:

Condicin de exclusin mutua: existencia de al menos de un recurso compartido por los procesos, al cual slo puede acceder uno simultneamente. Condicin de retencin y espera: al menos un proceso Pi ha adquirido un recurso Ri, y lo retiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro proceso. Condicin de no expropiacin : los recursos no pueden ser expropiados por los procesos, es decir, los recursos slo podrn ser liberados voluntariamente por sus propietarios. Condicin de espera circular: dado el conjunto de procesos P0...Pm(subconjunto del total de procesos original), P0 est esperando un recurso adquirido por P1, que est esperando un recurso adquirido por P2,... ,que est esperando un recurso adquirido por Pm, que est 4

esperando un recurso adquirido por P0. Esta condicin implica la condicin de retencin y espera. Evitando bloqueos mutuos 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, introducido por Dijkstra. Algoritmo de grafo de asignacin de recursos. Algoritmo de Seguridad. Algoritmo de solicitud de recursos.

2. Prevencin
Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de las condiciones necesarias vistas anteriormente.

Eliminando la exclusin mutua: ningn proceso puede tener acceso exclusivo a un recurso. Esto es imposible para procesos que no pueden ser encolados (puestos en un spool), e incluso con colas tambin pueden ocurrir interbloqueos. La condicin de posesin y espera puede ser eliminada haciendo que los procesos pidan todos los recursos que van a necesitar antes de empezar. Este conocimiento por adelantado muchas veces es imposible nuevamente. Otra forma es requerir a los procesos liberar todos sus recursos antes de pedir todos los recursos que necesitan. Esto tambin es poco prctico en general. La condicin de no expropiacin puede ser tambin imposible de eliminar dado que un proceso debe poder tener un recurso por un cierto tiempo o el procesamiento puede quedar inconsistente. La condicin de espera circular es la ms fcil de atacar. Se le permite a un proceso poseer slo un recurso en un determinado momento, o una jerarqua puede ser impuesta de modo tal que los ciclos de espera no sean posibles.

3. Deteccin
Los bloqueos mutuos se pueden detectar de manera relativamente fcil como pudimos ver en las grficas dirigidas. Siempre que se produzca un ciclo en la solicitud y retencin de dispositivos hay un bloqueo. El algoritmo para que el sistema busque los bloqueos se explica de la manera siguiente: a) Encuentre un proceso que est utilizando un recurso y no espere ningn otro. Este se puede eliminar de la grfica. b) Encentre un proceso que nada ms espere recursos que no estn asignados por completo. c) Vuelva al paso uno hasta eliminar todas las lneas posibles.Si todava quedan procesos que no se han eliminado hay un bloqueo. En la primera imagen no hay bloqueo, pero en la segunda si.

Si se usa esta tcnica el sistema no intenta evitar los bloqueos s no que deja que aparezcan, intenta detectar cuando esto ocurre y despus lleva a cabo una accin para recuperarse despus de ocurrir el bloqueo. Aqu existen 2 casos: Deteccin de bloqueos de la forma un recurso de cada tipo. No se dispone de ms de un objeto de cada clase de recurso. Si la grfica de recursos contuviera uno o ms ciclos, existira un bloqueo. Cualquier proceso que forme parte de un ciclo est bloqueado; si no existen ciclos, el sistema no est bloqueado. Ejemplo: sistema con 7 (siete) procesos (A a G) y 6 (seis) recursos (R a W):

La posesin de los recursos es la siguiente: El proceso A posee a R y desea a S. El proceso B no posee recurso alguno y desea a T. El proceso C no posee recurso alguno y desea a S. El proceso D posee a U y desea a S y a T. El proceso E posee a T y desea a V. El proceso F posee a W y desea a S. El proceso G posee a V y desea a U.

La pregunta es: est bloqueado este sistema y, en tal caso, cules son los procesos bloqueados?. La respuesta se obtiene mediante la grfica de recursos: si la grfica presenta un ciclo significa procesos bloqueados. Se hace necesario un algoritmo formal para la deteccin de bloqueos que se pueda utilizar en los sistemas reales.

Ejemplo de algoritmo aplicable a cada nodo N de la grfica: 1. Se considera a N como nodo inicial. 2. Se inicializan: o La estructura de datos Lcomo una lista vaca. o Todos los arcos como no marcados. 3. Se aade el nodo activo al final de L y se verifica si el nodo aparece en L dos veces: o Si aparece dos veces existe un ciclo y el algoritmo termina. 4. Desde el nodo dado se verifica si existen arcos que salgan de dicho nodo y no estn marcados: o En caso afirmativo se va al paso 5. o En caso negativo se va al paso 6. 5. Se elige al azar un arco de salida no marcado y se le marca: o Luego se sigue este arco hasta el nuevo nodo activo y se regresa al paso 3. 6. Se ha llegado a un punto donde no se puede continuar: o Se regresa al nodo anterior, es decir al que estaba activo antes del actual. o Se seala de nuevo como nodo activo. o Se pasa al paso 3. o Si este nodo era el nodo inicial, la grfica no contiene ciclos y el algoritmo termina. La aplicacin del algoritmo precedente al ejemplo anterior de grfica dirigida es la siguiente: Se parte de R y se inicializa L como la lista vaca. Se aade R a la lista y se mueve a la nica posibilidad, A. Se aade A a la lista: L=[R,A]. Se pasa de A a S, quedando L=[R,A,S]. S no tiene arcos que salgan de l, por lo que no se puede continuar y se regresa a A. Ya que A no tiene arcos de salida no marcados se regresa a R, finalizando la inspeccin de R. Se inicia nuevamente el algoritmo partiendo de A, siendo L otra vez la lista vaca. La bsqueda termina rpidamente y se parte de B. De B se siguen los arcos de salida hasta llegar a D, siendo L=[B,T,E,V,G,U,D]. Se efecta una eleccin al azar. Si se elige S llegamos a un punto sin salida y debemos regresar a D. La segunda vez se elige T quedando L=[B,T,E,V,G,U,D,T] : Se ha descubierto un ciclo y el algoritmo se detiene.

Deteccin de bloqueos de la forma varios recursos de cada tipo. Se considera un algoritmo basado en matrices para la deteccin de un bloqueo entre n procesos, P1 hasta Pn. Se considera m el nmero de clases de recursos con:

E1 recursos de la clase 1. E2 recursos de la clase 2. Ei recursos de la clase i (1 menor o igual que i menor o igual que m). E es el vector de recursos existentes.

En todo momento algunos de los recursos estn asignados y por lo tanto no estn disponibles. Se considera un vector A de recursos disponibles:

Ai indica el nmero de instancias disponibles del recurso i ; se refiere a recursos no asignados.

Se utilizan:

La matriz C de la asignacin actual. La matriz R de solicitudes.

El rengln i -simo de C indica el nmero de instancias de cada clase Pi posedas en ese momento. Cij es el nmero de instancias del recurso j deseadas por Pi. Cada recurso est asignado o disponible, es decir que la suma de las instancias del recurso j asignadas y el nmero de instancias disponibles es el nmero de instancias existentes de esa clase de recurso.

4. Recuperacin
El sistema operativo despus de detectar el bloqueo mutuo debe recuperarse del mismo y continuar con su trabajo. Para esto necesita una vctima, un programa que se pueda terminar y volver a iniciar desde el principio o desde un punto medio conveniente. Algunos algoritmos para la recuperacin son los siguientes:

Terminar todos los trabajos activos y volver a arrancarlos. Terminar los trabajos en el bloqueo solamente y solicitar su nuevo envo. Terminar uno por uno los trabajos que participan en el bloqueo y ver si el bloqueo desaparece despus de cada terminacin. Terminar un trabajo que se pueda reiniciar desde un punto medio si este resuelve el bloqueo. Terminar un trabajo que no est en el bloqueo y asignar sus recursos a uno bloqueado. Este ltimo mtodo detiene los trabajos nuevos y permite que los que no estn bloqueados terminen y liberen sus recursos para que los bloqueados los usen, es el nico que no requiere vctimas, pero al igual que el anterior no siempre funciona.

Administracin de la Memoria
8

La parte del sistema operativo que administra la memoria se llama administrador de la memoria. Para ello existen diferentes esquemas de administracin de memoria desde los mas simples hasta los mas elaborados entre los cuales se ubican:

5. Administracin de la memoria
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 (intercambio y paginacin) y aquellos que no. Monopogramacin sin intercambio o paginacin. Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa, esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice. Multiprogramacin y uso de la memoria. La multiprogramacin facilita la programacin de una aplicacin al dividirla en dos o mas procesos. La mayora de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S. Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilstico dado por la frmula : Uso de la CPU = 1 - pn Multiprogramacin con particiones fijas El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solucin posible sera dividir la memoria en n partes al inicio de una sesin de uso de la mquina, pero an as se obtiene el desperdicio de particiones grandes con una tarea pequea, la respuesta puede ser tener particiones pequeas tambin. Las tareas que van llegando se forman hasta que una particin adecuada est disponible, en cuyo momento la tarea se carga en esa particin y se ejecuta hasta terminar.

5.1 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 informacion contenida en ella es de mas rapido acceso. Solo la memoria cache es mas rapida que la principal, pero su costo es a su vez mayor. Cuando no existe memoria virtual no hay diferenciacion entre el espacio de direcciones y la memoria real; el espacio de direcciones que puede ser usado en los programas tiene identico tamano al espacio de memoria real posible. Si se utiliza memoria virtual, el espacio de direcciones disponibles para los programas es aquel determinado por el tamano de la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real disponible (el espacio de la memoria virtual sera mayor que el de la memoria real). La organizacin y administracin de la memoria principal, memoria primaria o memoria real de un sistema ha sido y es uno de los factores mas importantes en el diseo de los S. O. (Ver la figura 3.2.1) Los trminos memoria y almacenamiento se consideran equivalentes. Los programas y datos deben estar en el almacenamiento principal para:

Poderlos ejecutar. Referenciarlos directamente

Compactacin de memoria Cuando un proceso llega y necesita memoria, el sistema operativo busca en la tabla de huecos alguno lo suficientemente grande para el proceso. Si el hueco es muy grande, lo parte en dos. Una parte es asignada al proceso y la otra se identifica como hueco. Cuando el proceso termina y la memoria es liberada, el espacio es identificado como un hueco ms en la tabla y si el nuevo hueco es adyacente con otro, ambos huecos se unen formando un solo hueco ms grande. En ese momento se debe de checar si no existen procesos a los que este nuevo hueco pueda darles cabida. Para ver el grafico, utilize la opcin "Bajar trabajo" del menu superior Fig. 5. Ejemplo de compactacin de huecos no adyacentes.

10

En la figura 5 se muestra como se modifica el mapa de la memoria despus de compactar huecos no adyacentes generados despus de intercambios realizados en el ejemplo de la figura 4. 1.2.1.2.- Asignacin dinmica El proceso de compactacin del punto anterior 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.

5.2 Direcciones Fisicas y Logicas


Direcciones fsicas: MAC (control de acceso a el medio) Podriamos buscar hasta el cansancio las direcciones MAC de la capa fsica en los encabezados de los paquetes IP pero no las vamos a encontrar. Las direccione MAC no significan nada para el protocolo IP, el cual utiliza direcciones lgicas que no son parte del protocolo. Para todos los efectos, estas direcciones pueden o no existir. Por la misma razn, las direcciones MAC fsicas son como las interfaces de la tarjeta Ethernet en la red. Pero La tarjeta NIC de Ethernet no sabe sobre IP, cabeceras IP, ni direcciones IP lgicas. Por lo tanto, nos enfrentamos a una falta de comunicacin. Es evidente que para hacer que el sistema funcione, se necesita un proceso operativo que facilite la conversin entre direcciones IP lgicas y direcciones MAC fsicas. Conoce la direccin IP de su computador? Si la respuesta es no, usted no se est quedando atrs, es absolutamente normal no saberla debido a varias razones, No muchos pueden tener su propia direccin IP o incluso siempre nos conectamos con una direccin IP diferente. Una direccin IP es un bien muy preciado. Cuando usted se conecta a la red, Un proveedor de servicios Internet (ISP -Internet Service Provider) o un proveedor de servicios de red (-Network Service Provider) le prestan una direccin IP solo por el perodo en que dura la 11

sesin de conexin, o posiblemente por un tiempo mas largo, esto a travs de aplicaciones, tales como el Protocolo de configuracin dinmica de host (DHCP -Dynamic Host Configuration Protocol) . Exactamente cuntas posibles direcciones IP existen? El nmero exacto es de 2^32 (porque la direccin se compone de 32 bits), este es un nmero superior a 4 billones. Sin embargo, no todas las direcciones IP estn disponibles; los rangos reservados disminuyen la cantidad de nmeros posibles. Con el explosivo crecimiento de Internet a nivel mundial, la preocupante realidad indica que las direcciones IP se estn agotando rpidamente. Cules son algunas soluciones para afrontar el agotamiento de direcciones? En primer lugar, una red local particular puede usar DHCP y asignar direcciones IP temporalmente a sus usuarios mientras dura la conexin. Esto significa que no todos los hosts estarn activos en un momento dado, as se requiere un grupo menor de posibles direcciones IP. La otro solucin es conocida como direcciones privadas reservadas (Reserved private addresses). La entidad gubernamental que las regula es Internet Address Numbers Authority (IANA), ha estandarizado los bloques de direcciones IP que se utilizan para la asignacin de direcciones internas. Por lo tanto, las subredes 192.168 y 172.16 se utilizan para los hosts de redes privadas. Este trfico no debe traspasar la puerta de enlace (gateway) de la red local. Esto permite que una red local con un limitado nmero de direcciones IP, pueda usar direcciones Clase B para propsitos internos y para guardar la direcciones IP externas previamente asignadas con otros fines. Algunos conocen su direccin IP pero Conoce de memoria la direccin MAC de su host? La respuesta ms probable es "No", porque casi nadie se sabe su direccin MAC. Hay varias razones para esto, pero la principal es que esta es una direccin de 48 bits, sin facilidades para ser humanamente memorizable, por lo tanto es difcil asimilar para el cerebro. El Protocolo de resolucin de direcciones (ARP -Address Resolution Protocol) permite resolver la traduccin de direcciones MAC fsica a direcciones IP lgicas. ARP no es un protocolo IP, es el proceso de envo de una trama de Ethernet a todos los sistemas en el mismo segmento de red. Esto se conoce como difusin (broadcast).

12

Cuando un mensaje se emite, se enva a todas las mquinas de un segmento de red o a una red completa. Es importante destacar que ARP se aplica nicamente para hosts localmente conectados a la misma red, no funciona entre hosts de diferentes redes. El host de origen emite (o difunde) las solicitudes ARP, luego el host de destino las recibe y responde con su direccin MAC. Durante esta operacin, todos los hosts que escuchan en la red, incluyendo los hosts de origen y destino, guardan en cach lo que han aprendido sobre los otros hosts, por lo tanto almacenan sus direcciones IP y MAC. Este almacenamiento reduce el nmero de nuevas peticiones ARP requeridas. Finalmente la comunicacin dentro de un mismo segmento de red se produce entre las direcciones MAC y no entre las direcciones IP. Dos hosts se pueden comenzar a comunicar con transacciones TCP/IP de la misma capa, pero la comunicacin efectiva se produce entre las direcciones MAC de los dos hosts. Por qu son las direcciones MAC de tan grandes? Despus de todo, Una direccin de 48 bits es enorme. La idea es que sean totalmente nicas temporal y espacialmente! :). Esto suena bien si se dice rpido, pero los planes futuros requieren expandir este valor a 128 bits para adaptarse a sus limitaciones actuales, permitiendo que cada fabricante de NICs pueda tener un cdigo de proveedor nico integrado en la direccin MAC. Direcciones Lgicas: direcciones IP Una direccin IP tiene 32 bits asignados para identificar un host. Este nmero de 32 bits se expresa como cuatro nmeros decimales separados por puntos (por ejemplo, 192.168.5.5). Estas no son asignaciones secuenciales o al azar. La parte inicial del nmero de IP indica el tamao de la red en la que reside el host. El resto de la direccin IP identifica a el hosts de la red.

13

Las direcciones se clasifican por clases, las clases indican cuntos equipos se encuentran en una determinada red o la cantidad de bits asignados en la direccin IP para los hosts nicos en la red, como en la siguiente tabla. Las direcciones de clase A asignan los primeros 8 bits a un segmento de la red a la direccin IP, y los restantes 24 bits para la identificacin del host. Debido a que 24 bits han sido asignados para el host mas de 16 millones (224-1) hosts, podran ser asignados. Un ejemplo de red Clase A va desde 18.0.0.0 a 18.255.255.255, el rango IP asignado al Instituto Tecnolgico de Massachusetts (MIT). Las direcciones IP se clasifican desde la clase A a la Clase E. Las direcciones de clases A, B y C envan paquetes a un nico host de destino (unicast). Mientras que las direcciones de Clase D se conocen como multicast y son utilizadas para la comunicacin entre un grupo designado de hosts. Las direcciones Clase E estn reservadas para uso experimental. La siguiente Tabla muestra el rango de direcciones asociadas a cada clase. Mscara de Subred Esta mscara informa a un sistema de computacin que parte de su direccin IP ha sido asignada a la red y que parte al host. Cada bit que representa a la red se marca como 1. Por ejemplo, Una direccin clase A, tiene 8 bits de red y 24 bits de host. En binario, 8 bits consecutivos (todas con valor de 1) se traducen en un nmero decimal 255. Entonces, la mscara de subred es designada como 255.0.0.0. Otras clases tienen otras mscaras de subred. Una red clase B tiene una mscara de subred 255.255.0.0, y una red clase C tiene una mscara de subred 255.255.255.0. Por qu es necesario saber qu clase y cuntos bits se reservan para la red mediante el anlisis de direccin IP? porque algunos administradores de red subdividen sus redes. Por ejemplo, una red de clase C se puede dividir en cuatro subredes individuales mediante la asignacin de una mscara de subred adecuada. Notacin CIDR Direccionamiento se refiere al enrutamiento entre dominios sin Clases (CIDR Classless Inter-domain routing). Durante mucho tiempo, las direcciones fueron parte de una clase particular. Esto significaba que su red sera asignada con 16 millones+, 65 000+, o 255 hosts. La situacin ms frecuente eran las redes que requeran entre 255 y 65.000 hosts. Debido a que muchas de estas redes eran de clase B, muchos nmeros IP quedaban sin ser asignados. Teniendo en cuenta que los nmeros de IP son bienes finitos, una solucin fue asignar redes sin restricciones de clase.

14

5.3 Resolucin de direcciones


Un programa compilado no emplea nombres simblicos para las variables o funciones que llama4; el compilador, al convertir el programa a lenguaje mquina, las substituye por la direccin en memoria donde se encuentra. Ahora bien, en los sistemas actuales, los procesos requieren coexistir con otros, para lo cual las direcciones indicadas en el texto del programa pueden requerir ser traducidas al lugar relativo al sitio de inicio del proceso en memoria Esto es, resueltas. Podemos hablar de las siguientes tres estrategias de resolucin: En tiempo de compilacin El texto del programa tiene la direccin absoluta de los datos y funciones. Esto era muy comn en las computadoras previas al multiprocesamiento; en la arquitectura compatible con PC, el formato ejecutable .COM es un volcado de memoria directo de un archivo objeto con las direcciones indicadas de forma absoluta. Esto lo podemos ver hoy principalmente en sistemas embebidos o de funcin especfica. En tiempo de carga Al cargarse a memoria el programa y antes de iniciar su ejecucin, el cargador (componente del sistema operativo) actualiza las referncias a memoria dentro del texto para que apunten al lugar correcto Claro est, esto depende de que el compilador indique dnde estn todas las referencias a variables y funciones. En tiempo de ejecucin El programa nunca hace referencia a una ubicacin absoluta de memoria, sino que lo hace siempre relativo a una base y un desplazamiento (offset). Esto permite que el proceso sea incluso reubicado en la memoria mientras est siendo ejecutado sin tener que sufrir cambios, pero requiere de hardware especfico (como un MMU). Esto es, los nombres simblicos (por ejemplo, la variable llamada contador) para ser traducidos ya sea a ubicaciones en la memoria, pueden resolverse en tiempo de compilacin (y quedar plasmada en el programa en disco con una ubicacin explcita y definitiva: 510200), en tiempo de carga (sera guardada en el programa en disco como inicio + 5986 bytes, y el proceso de carga incluira substituirla por la direccin resuelta a la suma del registro base, 504214, y el desplazamiento, 5986, esto es, 510200). Por ltimo, para emplear la resolucin en tiempo de ejecucin, se mantiene en las instrucciones a ser ejecutadas por el proceso la etiqueta relativa al mdulo actual, inicio + 5986 bytes, y es resuelta cada vez que sea requerido.

15

5.4 Intercambio (swapping)


En un sistema con particiones estticas el nmero de procesos con posibilidades de estar en estado listo viene determinado por el nmero de particiones, y en uno de particiones dinmicas por el tamao de la memoria principal y el tamao de los procesos, ya que en ambos mtodos un proceso permanece en una particin hasta que finaliza. Supongamos un sistema en que dicho nmero es cinco, es muy probable que en un momento dado los cinco procesos que ocupan las particiones estn bloqueados (por ejemplo, porque esperan la finalizacin de una operacin de E/S). Mientras los cinco procesos permanezcan bloqueados se desperdicia la CPU. Para remediar este inconveniente muchos sistemas operativos optaron por permitir ejecutar concurrentemente ms procesos de los que pueden entrar fsicamente en la memoria principal del ordenador. Para ello se utiliza la memoria secundaria (generalmente los discos) que, aunque ms lenta, tiene mayor capacidad de almacenamiento que la principal. La solucin consiste en tener en disco una copia de la parte de la memoria que ocupa todo proceso. En el disco se encuentran todos los procesos, en la memoria slo unos cuantos. Para que un proceso se pueda ejecutar debe residir en memoria principal. La razn por la que se aumenta el nmero de procesos con posibilidades de tener instrucciones en memoria principal es porque cuanto mayor sea este nmero, es menos probable que se d la circunstancia de que todos estn bloqueados y, por lo tanto, es menor la posibilidad de que la CPU permanezca inactiva. Algunos sistemas UNIX utilizaban el intercambio en un sistema de particiones dinmicas. El movimiento de procesos entre la memoria principal y el disco lo realizaba el planificador de nivel medio , conocido como el intercambiador (swapper a medio plazo). El intercambio de la memoria principal al disco (swapping out) se iniciaba cuando el S.O. precisa memoria libre y estaba toda ocupa debido a alguno de los siguientes eventos: Una llamada al sistema fork que necesitaba memoria para un proceso hijo. Una llamada al sistema brk de solicitud de memoria dinmica en un proceso que no tiene suficiente memoria libre como para aceptar la peticin. Una pila que se agranda, y ocupa un espacio mayor al asignado. Adems, cuando haba que recuperar un proceso presente en el disco (swapping in) desde hace mucho tiempo con frecuencia se necesitaba sacar a otro proceso de memoria a disco para disponer de espacio para el primero. El intercambiador elega una vctima al examinar los procesos bloqueados en espera de algo (por ejemplo, una entrada del terminal). Es mejor sacar a un proceso bloqueado (pasar a estado suspendido_bloqueado) que sacar a uno listo. Si existan varios procesos bloqueados ubicados en la memoria principal se elega a uno cuya combinacin de prioridad y tiempo de residencia en memoria principal fuera ms desfavorable. As, un buen candidato era un 16

proceso que hubiera consumido mucho tiempo de CPU recientemente, al igual que uno que hubiera permanecido en la memoria durante mucho tiempo, aun cuando durante este tiempo hubiera realizado E/S. Si no se dispone de procesos bloqueados, entonces se elega a un proceso listo en base a los mismos criterios. Cada pocos segundos el intercambiador examinaba la lista de procesos intercambiados para ver si alguno estaba listo para su ejecucin. En caso de que existiera alguno, se seleccionaba a aquel que hubiese permanecido en el disco durante mucho tiempo. A continuacin el intercambiador verificaba si el intercambio sera fcil o difcil. Un intercambio fcil era aquel en el que existiera la suficiente memoria libre, de forma que no haba necesidad de sacar a un proceso para hacer espacio para el nuevo. Un intercambio difcil precisaba la eliminacin de uno o ms procesos. La implantacin de un intercambio fcil se llevaba a cabo al traer el proceso a la memoria. Un intercambio difcil se implantaba liberando primero la memoria suficiente sacando a disco a uno o ms procesos, y despus, cargando en la memoria el proceso deseado. Este algoritmo se repeta hasta que se cumpliera alguna de estas condiciones: (1) ningn proceso en el disco est suspendido_listo; o (2) la memoria est tan ocupada por procesos recin trados que no hay espacio para ms. Para evitar un trasiego excesivo entre memoria y disco que pudiera afectar al rendimiento no se intercambiaba hacia el disco a un proceso hasta que hubiera permanecido en la memoria durante 2 segundos. El espacio libre en la memoria principal y en el dispositivo de intercambio se registraba mediante una lista enlazada de huecos. Si se necesitaba espacio en alguno de los dos, el algoritmo del primero en ajustarse lea la lista adecuada de huecos, y devolva el primer hueco que encontrara y que fuese lo bastante grande, a la vez que eliminaba este espacio de la lista de huecos.

5.5 Asignacin de memoria contigua


En los sistemas de ejecucin en lotes, as como en las primeras computadoras personales, slo un programa se ejecutaba a la vez, por lo que, ms all de la carga del programa y la satisfaccin de alguna eventual llamada al sistema solicitando recursos, el sistema operativo no tena que ocuparse de la asignacin de memoria. Al nacer los primeros sistemas operativos multitarea, se hizo necesario resolver cmo asignar el espacio en memoria a diferentes procesos. Asignacion La memoria principal normalmente se divide en dos particiones:

Contigua

Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupcin. Procesos de usuario en la parte alta.

17

Asignacin de particin simple Puede utilizarse un esquema de registro de relocalizacin y limite 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 contiene la direccin fsica mas 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: a. Particiones asignadas b. 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 tanto el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en trminos de uso de espacio, pero por lo general el primer ajuste es ms rpido.

18

5.6 Paginacin
La fragmentacin externa y, por tanto, la necesidad de compactacin pueden evitarse por completo empleando la paginacin. Esta consiste en que cada proceso est compuesto por una serie de pginas, dejando de requerir que la asignacin sea de un rea contigua de memoria. Claro est, esto requiere de mayor espacializacin por parte del hardware, y mayor informacin relacionada a cada uno de los procesos: No nos basta ya con indicar dnde inicia y dnde termina el rea de memoria de cada proceso, sino que debemos hacer un mapeo entre la ubicacin real (fsica) y la presentada a cada uno de los procesos (lgica). La memoria se presentar a cada proceso como si fuera de su uso exclusivo. La memoria fsica se divide en una serie de marcos (frames), todos ellos del mismo tamao, y el espacio cada proceso se divide en una serie de pginas (pages), del mismo tamao que los marcos. El MMU se se encarga del mapeo entre pginas y marcos a travs de tablas de pginas. Las direcciones que maneja el CPU ya no son presentadas de forma absoluta, sino que como la combinacin de un identificador de pgina y un desplazamiento De forma similar a lo que presentamos al hablar de resolucin de instrucciones en tiempo de ejecucin. El tamao de los marcos (y, por tanto, las pginas) debe ser una potencia de 2, de modo que el MMU pueda discernir fcilmente la porcin de una direccin de memoria que se refiere a la pgina del desplazamiento. El rango vara, segn el hardware, entre los 512 bytes ( ) y 16MB ( ); al ser una potencia de 2, el MMU puede separar la direccin en memoria entre los primeros bits (referentes a la pgina) y los ltimos bits (referentes al desplazamiento).

Pgina y desplazamiento, en un esquema de direccionamiento de 16 bits y pginas de 512 bytes Para poder realizar este mapeo, el MMU requiere de una tabla de pginas (page table), que resuelve la relacin entre pginas y marcos, convirtiendo la

19

direccin lgica (aquella que conoce el proceso) en la direccin fsica (la ubicacin en que realmente se encuentra en la memoria del sistema). Podemos tomar como ejemplo para explicar este mecanismo el esquema presentado en el libro de Silberschatz, Galvin y Gagn. Este nos presenta un esquema minsculo: Un espacio de direccionamiento de 32 bytes (5 bits), organizado en 8 pginas de 4 bytes cada una (esto es, la pgina es representada con los 3 bits ms significativos de la direccin, y el desplazamiento con los 2 bits menos significativos).

Ejemplo (minsculo) de paginacin, con un espacio de direccionamiento de 32 bytes y pginas de 4 bytes (Silberschatz, p.292) El proceso que se nos presenta tiene una visin de la memoria como la columna del lado izquierdo: Le parece que existen 4 pginas, y tiene sus datos distribuidos en rden desde la direccin 00000 (0) hasta la 01111 (15), aunque en realidad en el sistema stas se encuentren desordenadas y desperdigadas. Cuando el proceso quiere referirse a la letra f, lo hace indicando la direccin 00101 (5). De esta direccin, los tres bits ms significativos (001, 1 Y recordemos que para la computadora, lo natural es comenzar a contar por el 0) se refieren a la pgina nmero 1, y los dos bits menos significativos (01, 1) indican al desplazamiento dentro de sta.

20

El MMU verifica en la tabla de pginas, y encuentra que la pgina 1 corresponde al marco nmero 6 (110), por lo que traduce la direccin lgica 00101 (5) a la fsica 11001 (26). Podemos ver que la paginacin resulta en una suerte de resolucin de direcciones en tiempo de ejecucin, pero con una base distinta para cada una de las pginas.

5.7 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: 1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. 2. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamao y este puede variar. 3. Proteccin: se puede proteger los mdulos del segmento contra accesos no autorizados. 4. Comparicin: dos o ms procesos pueden ser un mismo segmento, bajo reglas de proteccin; aunque no sean propietarios de los mismos. 5. Enlace dinmico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecern solo cuando sea necesario. Ventajas de la El esquema de segmentacin ofrece las siguientes ventajas:

segmentacin

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 asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los arreglos cuya dimensin no se conoce hasta tanto no se comienza a ejecutar el

21

programa. En algunos casos, incluso podra retardar la asignacin de memoria hasta el momento en el cual se referencia el arreglo u otra estructura de dato 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, puede 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 comparticion 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.

5.8 Segmentacin Paginada


Tanto la paginacin como la segmentacin tienen sus ventajas y desventajas. Tambin es posible combinar estos dos esquemas para mejorar ambos. Veamos como ejemplo el esquema del ordenador GE 645 con el sistema operativo Multics. Las direcciones lgicas estaban formadas a partir de un nmero de segmento de 18 bits y un desplazamiento de 16 bits. Aunque este esquema crea un espacio de direcciones correspondiente a una direccin de 34 bits, la tabla de segmentos tiene un tamao tolerable, puesto que el nmero variable de segmentos conduce naturalmente al uso de un Registro de Longitud de Tabla de Segmentos. Necesitamos tan solo el mismo nmero de entradas en la tabla de segmentos que segmentos; no tenemos por qu tener entradas vacas en la tabla de segmentos. No obstante, con segmentos de 64 K-palabras, el tamao medio de segmento podra resultar bastante grande y la fragmentacin externa constituir un problema. Incluso si la fragmentacin externa no es significativa, el tiempo de bsqueda para asignar un segmento, utilizando un primer o mejor ajuste, podra ser grande. De esta manera se podra desperdiciar memoria a causa de la fragmentacin externa o bien desperdiciar tiempo debido a la bsqueda larga, o bien ambas cosas.

22

La solucin adoptada fue paginar los segmentos. La paginacin elimina la fragmentacin interna y convierte en trivial el problema de la asignacin: cualquier marco vaco puede utilizarse para una pgina. Obsrvese que la diferencia entre esta solucin y la segmentacin pura es que la entrada en la tabla de segmentos no contiene la direccin de la base del segmento, sino la direccin de la base de una tabla de pginas para ese segmento. El desplazamiento del segmento se fragmenta entonces en un nmero de pgina de 6 bits y un desplazamiento de pgina de 10 bits. El nmero de pgina indexa en la tabla de pginas para dar el nmero de marco. Finalmente, el nmero de marco se combina con el desplazamiento de pgina para formar la direccin fsica. Acceso a un sistema de memoria Segmentado Paginado. Ahora debemos tener una tabla de pginas independiente para cada segmento. No obstante, puesto que cada segmento tiene una longitud limitada por su entrada en la tabla de segmentos, la tabla de pginas no tiene por qu tener su tamao mximo. Slo precisa tantas entradas como se necesiten realmente. Adems, generalmente la ltima pgina de cada segmento no estar totalmente llena. De este modo tendremos, por trmino medio, media pgina de fragmentacin interna por segmento. Consecuentemente, aunque hemos eliminado la fragmentacin externa, hemos introducido fragmentacin interna e incrementado la sobrecarga de espacio de la tabla. A decir verdad, incluso la visin de paginacin segmentada de Multics que acabamos de presentar es simplista. Puesto que el nmero de segmento es una cantidad de 18 bits, podramos tener 262144 segmentos, con lo que precisaramos una tabla de segmentos muy larga. Para simplificar este problema, Multics pagina la tabla de segmentos. De esta manera, en general, una direccin en Multics utiliza un nmero de segmento para definir un ndice de pgina en una tabla de pginas para la tabla de segmentos. A partir de esta entrada, localiza la parte de la tabla de segmentos que tiene la entrada para ese segmento. La entrada en la tabla de segmentos apunta a una tabla de pginas para ese segmento, que especifica el marco que contiene la palabra deseada.

5.8.1 La 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 la disponible fsicamente. La mayora de los ordenadores 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. Muchas aplicaciones requieren acceso a ms informacin (cdigo y datos) que la que se puede mantener en memoria fsica. Esto es as sobre todo cuando el sistema operativo permite mltiples procesos y aplicaciones ejecutndose simultneamente. Una solucin al problema de necesitar mayor cantidad de 23

memoria de la que se posee consiste en que las aplicaciones mantengan parte de su informacin en disco, movindola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opcin es que la aplicacin misma sea responsable de decidir qu informacin ser guardada en cada sitio (segmentacin), y de traerla y llevarla. La desventaja de esto, adems de la dificultad en el diseo e implementacin del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre s: cada programador podra realizar su diseo teniendo en cuenta que es el nico programa ejecutndose en el sistema. La alternativa es usar memoria virtual, donde la combinacin entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha ms memoria principal (RAM) que la que realmente posee. Este mtodo es invisible a los procesos. La cantidad de memoria mxima que se puede hacer ver que hay tiene que ver con las caractersticas del procesador. Por ejemplo, en un sistema de 32 bits, el mximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho ms fcil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria. Aunque la memoria virtual podra estar implementada por el software del sistema operativo, en la prctica casi siempre se usa una combinacin de hardware y software, dado el esfuerzo extra que implicara para el procesador. Operacin bsica Cuando se usa memoria virtual, o cuando una direccin es leda o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en:

la direccin real de memoria (la direccin de memoria fsica). una indicacin de que la direccin de memoria deseada no se encuentra en memoria principal (llamado excepcin de memoria virtual)

En el primer caso, la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada: el software accede donde deba y sigue ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para manejar la situacin y permitir que el programa siga ejecutando o aborte segn sea el caso. La memoria irreal es una tcnica para proporcionar la simulacin de un espacio de memoria mucho mayor que la memoria fsica de una mquina. Esta "ilusin" permite que los programas se ejecuten sin tener en cuenta el tamao exacto de la memoria fsica. La ilusin de la memoria virtual est soportada por el mecanismo de traduccin de memoria, junto con una gran cantidad de almacenamiento rpido en disco duro. As en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequea parte de l, est en memoria fsica y el resto almacenado en el disco, y puede ser referenciado fcilmente.

24

Debido a que slo la parte de memoria virtual que est almacenada en la memoria principal es accesible a la CPU, segn un programa va ejecutndose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de paginacin). La memoria virtual ha llegado a ser un componente esencial de la mayora de los sistemas operativos actuales. Y como en un instante dado, en la memoria slo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener ms procesos en la memoria. Es ms, se ahorra tiempo, porque los fragmentos que no se usan no se cargan ni se descargan de la memoria. Sin embargo, el sistema operativo debe saber cmo gestionar este esquema. La memoria virtual tambin simplifica la carga del programa para su ejecucin, llamada reubicacin, este procedimiento permite que el mismo programa se ejecute en cualquier posicin de la memoria fsica. En un estado estable, prcticamente toda la memoria principal estar ocupada con fragmentos de procesos, por lo que el procesador y el S.O tendrn acceso directo a la mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un fragmento, deber expulsar otro. Si expulsa un fragmento justo antes de ser usado, tendr que traer de nuevo el fragmento de manera casi inmediata. Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginacin: donde el procesador consume ms tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el sistema operativo intenta adivinar, en funcin de la historia reciente, qu fragmentos se usarn con menor probabilidad en un futuro prximo (vase algoritmos de reemplazo de pginas). Los argumentos anteriores se basan en el principio de cercana de referencias o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. Por lo tanto, es vlida la suposicin de que, durante cortos perodos de tiempo, se necesitarn slo unos pocos fragmentos de un proceso. Una manera de confirmar el principio de cercana es considerar el rendimiento de un proceso en un entorno de memoria virtual. El principio de cercana sugiere que los esquemas de memoria virtual pueden funcionar. Para que la memoria virtual sea prctica y efectiva, se necesitan dos ingredientes. Primero, tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software para gestionar el movimiento de pginas o segmentos entre memoria secundaria y memoria principal. Justo despus de obtener la direccin fsica, y antes de consultar el dato en memoria principal, se busca en memoria-cache. Si est entre los datos recientemente usados, la bsqueda tendr xito, pero si falla, la memoria virtual consultar la memoria principal , en el peor de los casos, el disco (swapping).

25

5.8.2 Paginacin por Solicitud


Un sistema de paginacin por demanda es similar a un sistema de paginacin con intercambios. Los procesos residen en memoria secundaria (en el disco). Cuando queremos ejecutar un proceso, lo metemos en memoria. Sin embargo, en vez de intercambiar todo el proceso hacia la memoria, utilizamos un intercambiador perezoso. Un intercambiador perezoso nunca reincorpora una pgina a memoria a menos que se necesite. Como ahora consideramos un proceso como una secuencia de pginas, en vez de un gran espacio contiguo de direcciones, el trmino intercambio es tcnicamente incorrecto. Un intercambiador manipula procesos enteros, mientras que un paginador trata con las pginas individualmente de un proceso.

Cuando un proceso se reincorpora, el paginador lleva a memoria las pginas necesarias. As evita colocar en la memoria pginas que no se utilizarn, reduciendo el tiempo de intercambio y la cantidad de memoria fsica necesaria. Este esquema requiere apoyo del hardware. Generalmente se aade un bit ms a cada entrada de la tabla de pginas: un bit vlido-invlido. Cuando este bit est asignado como vlido, indica que la pgina asociada se encuentra en memoria. Si el bit est como invlido, este valor indica que la pgina est en disco. Una pgina marcada como invlida no tendr ningn efecto si el proceso nunca intenta acceder a esa pgina. Pero qu sucede si el proceso trata de usar una pgina que no se incorpor a la memoria? Si adivinamos mal y el proceso trata de acceder a una pgina que no se trajo a memoria, ocurrir una trampa de fallo de pgina. El hardware de paginacin, al traducir la direccin mediante la tabla de pginas, observar que el valor del bit es invlido, generando una trampa para el sistema operativo (error de direccin no vlido). Normalmente, un error de direccin no vlida es 26

consecuencia de intentar utilizar una direccin de memoria ilegal; en este caso, el proceso deber terminar. Sin embargo, en esta situacin la trampa es el resultado del fallo de pgina del sistema operativo al no transferir a memoria una parte vlida del proceso, tratando de minimizar el tiempo adicional de transferencia de disco y los requisitos de memoria. Por tanto, debemos corregir esta omisin. El procedimiento es sencillo (figura 7.2): Consultamos una tabla interna (que por lo general se conserva en el PCB del proceso) para determinar si la referencia fue un acceso a memoria vlido o invlido. Si fue invlido, abortamos el proceso. Si se trat de una referencia vlida, pero an no hemos trado la pgina, la incorporamos. Encontramos un marco libre (por ejemplo, seleccionando uno de la tabla de marcos libres). Planificamos una operacin para leer de disco la pgina deseada en el marco recin asignado. Cuando ha concluido la lectura de disco, modificamos la tabla interna que se conserva junto con el proceso y la tabla de pginas para indicar que ahora la pgina se encuentra en memoria. Reiniciamos la instruccin interrumpida por la trampa de direccin ilegal. El proceso ahora puede acceder a la pgina como si siempre se hubiera encontrado en memoria. Es importante observar que, como almacenamos el contexto del proceso (registros, cdigo de condicin, contador de instrucciones), interrumpido al ocurrir un fallo de pgina, podemos reanudarlo exactamente en el mismo punto y estado, excepto que ahora la pgina deseada se encuentra en memoria y se puede acceder a ella. El caso ms extremo es comenzar la ejecucin de un proceso sin pginas en memoria. De inmediato, con la primera instruccin, el proceso presentara una fallo de pgina. Despus de traer de memoria esta pgina, el proceso contina su ejecucin, provocando fallos cuando sea necesario hasta que todas las pginas que necesita se encuentren en memoria. Esto es la paginacin por demanda pura: no traer una pgina a memoria hasta que se requiera. En teora, algunos programas pueden acceder a una nueva pgina de memoria con cada instruccin que ejecutan, provocando posiblemente un fallo de pgina por cada instruccin. Esta situacin provocara un rendimiento inaceptable. Por fortuna, los anlisis de procesos en ejecucin han mostrado que esta situacin es muy poco probable. Los programas suelen poseer una localidad de referencias (como veremos ms adelante), que brinda un rendimiento aceptable en la paginacin bajo demanda.

27

El hardware para apoyar la paginacin bajo demanda es el mismo que se usa para la paginacin y segmentacin, y los intercambios:

Tabla de pginas. Esta tabla tiene la capacidad para marcar una entrada como invlida usando un bit vlido-invlido o un valor especial de los bits de proteccin.

Memoria secundaria. Esta memoria contiene las pginas que no se conservan en la memoria principal. La memoria secundaria casi siempre es un disco de alta velocidad.

Adems de esta ayuda hardware, se requiere un considerable apoyo software, como veremos luego. Hay que imponer algunas restricciones arquitectnicas. Un aspecto crtico es la capacidad para reiniciar cualquier instruccin despus de un fallo de pgina. En 28

la mayora de los casos es fcil cumplir este requisito. Si falla la pgina al buscar la instruccin, podemos reiniciarla efectuando de nuevo la bsqueda. Si ocurre el fallo al buscar el operando, debemos buscar de nuevo la instruccin, decodificarla y luego buscar el operando. Como el peor de los casos, considere una instruccin de tres direcciones como ADD (suma) de A y B, colocando el resultado en C. Los pasos para ejecutar esta instruccin seran

Buscar y decodificar la instruccin ADD. Buscar A. Buscar B. Sumar A y B. Guardar el resultado en C. Si se presentara un fallo al almacenar en C, tendramos que obtener la pgina deseada, traerla a memoria, corregir la tabla de pginas y reiniciar la instruccin. Este inicio implica buscar de nuevo la instruccin, decodificarla, buscar una vez ms los dos operandos y volver a sumar. Esto significa repetir la instruccin. La principal dificultad surge cuando una instruccin puede modificar varias localidades distintas. Por ejemplo, considere una instruccin MVC (mover carcter), que puede mover hasta 256 bytes de una localidad a otra (que pueden coincidir parcialmente). Si alguno de los bloques (fuente o destino) sobrepasa un lmite de pgina, puede ocurrir un fallo de pgina despus de haber efectuado parte de la transferencia. Adems, si los bloques fuente y destino se superponen es probable que se modifique el bloque fuente, por lo que no podramos reiniciar la instruccin. Este problema se resuelve de dos maneras. En una de las soluciones, el microcdigo calcula y trata de acceder a ambos extremos de los bloques. Si va a ocurrir una fallo de pgina, suceder en esta etapa, antes de modificar algo. Entonces puede efectuarse la transferencia si sabemos que no ocurrir ningn fallo de pgina, ya que todas las pginas en cuestin se encuentran en memoria. La otra solucin utiliza registros temporales para contener los valores de las localidades sobreescritas. Si se presenta un fallo de pgina, todos los valores que haba antes de que ocurriera la trampa regresan a la memoria. Esta accin restablece la memoria a su estado anterior a la ejecucin de la instruccin, por lo que podemos repetir la instruccin. Estos no son los nicos problemas arquitectnicos que pueden surgir al aadir paginacin, pero s ilustran sus dificultades. En los sistemas de computacin, la paginacin debe ser completamente transparente para el proceso de usuario.

29

5.8.3 Algoritmos de reemplazo de pginas


Cuando ocurre un fallo de pgina el sistema operativo debe elegir una pgina para retirarla de la memoria y hacer un espacio para la pgina por recuperar. Si la pgina por eliminar fue modificada mientras estaba en memoria, debe escribirla en el disco para mantener actualizada la copia del disco, si por el contrario la pgina no ha sido modificada la copia del disco ya est actualizada por lo que no es necesario volver a escribir, la pgina por leer slo escribe encima de la pgina por retirar. Aunque es posible elegir una pgina al azar para el reemplazo relacionado con un fallo de pgina, el rendimiento del sistema es mucho mejor si se elige una pgina de poco uso. Algoritmo de reemplazo de pginas optimo Mejor algoritmo posible para reemplazo de pginas pero irrealizable en la prctica. Al momento de ocurrir un fallo de pgina cierto conjunto de pginas se encuentran en la memoria, en la siguiente instruccin se har referencia a una de estas pginas, otras pginas no se utilizaran sino hasta mucho despus, cada pgina puede ejecutarse con el nmero de instrucciones ejecutadas antes de la primera referencia a esa pgina, el algoritmo dice que se elimine la pgina con la mayor etiqueta; si una pgina no va a utilizase sino hasta mucho despus que otra la eliminacin de la primera retrasa el fallo de pgina lo mas posible, el nico problema de este algoritmo es que es irrealizable. Al momento del fallo de pgina el S.O. no tiene forma de saber a qu pgina se hace referencia. Algoritmo de pgina de uso no muy reciente. En un fallo de pgina , el sistema operativo inspecciona todas las pginas y las divide en cuatro categoras segn los valores actuales de los bits R y M Clase 0: No se ha hecho referencia ni ha sido modificada Clase 1: No se ha hecho referencia pero ha sido modificada Clase 2: Se ha hecho referencia pero no ha sido modificada Clase 3: Se ha hecho referencia y ha sido modificada El algoritmo NRU implica una hiptesis que indica que es mejor eliminar una pgina modificada sin referencias al menos por lo general un intervalo de reloj, este algoritmo es fcil de comprender, de implantacin eficiente y con un rendimiento que, an sin ser el ptimo si es adecuado en muchos casos. Algoritmo de reemplazo " primero en entrar, primero en salir FIFO"

30

El sistema operativo tiene una lista de todas las pginas que se encuentran en memoria, siendo la primera pgina la mas antigua y la ltima la mas reciente, en un fallo de pgina, se elimina la primera pgina y se aade la nueva al final de la lista. Algoritmo de reemplazo de pginas de la segunda oportunidad Una modificacin simple del FIFO que evita deshacerse de una pgina de uso frecuente inspecciona el bit R de la pgina mas antigua, busca una pgina antigua sin referencias durante el anterior intervalo de tiempo. Algoritmo de reemplazo de pginas del reloj Aunque el anterior algoritmo es razonable un mejor enfoque es mantener las pginas en una lista circular con la forma de un reloj, una manecilla apunta hacia la mas antigua. Al ocurrir un fallo de pgina se inspecciona la pgina a la que apunta la manecilla si su bit R=0 se retira de la memoria, se inserta la nueva pgina en su lugar en el reloj y la manecilla avanza una posicin, si R=1 la manecilla avanza una posicin y el bit se limpia, esto continua hasta encontrar una pgina con R=0.

5.8.4 Bloque de asignacin


Un bloque de asignacin se utiliza para asignar valores o expresiones a una variable. La asignacin es una operacin destructiva. Esto significa que si la variable tena asignado un valor anteriormente, ste se destruye, conservando ahora el nuevo valor. El formato de asignacin (en lenguaje Pascal) es el siguiente: Variable := expresin o valor; Donde: expresin puede ser aritmtica o lgica, o una constante o variable. Ejemplo: Supongamos que las variables I, ACUM y J son de tipo entero, REA y SUM de tipo real, CAR de tipo carcter y BAND de tipo booleano. Consideremos tambin que tenemos que realizar las siguientes operaciones de asignacin: 1. 2. 3. 4. 5. 6. 7. I := 0; I := I + 1; ACUM := 0; J := 5 ** 2 div 3; CAR := a; ACUM := J div I; REA := ACUM / 3; 8. BAND := (8 > 5) y (15 < 2 **3); 9. SUM := ACUM * 5 / J ** 2; 10. I := I * 3; 11. REA := REA / 5; 12. BAND := BAND o (I = J); 13. I := REA; 14. CAR := J;

31

Conclusin
Al concluir este trabajo de investigacin, queda como aprendizaje la importancia que tiene para mi el conocimiento de estos temas dentro de mi propia carrera. Con lo que investigue y aprend puedo decir que la administracin de memoria 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 (intercambio y paginacin) y aquellos que no. Concluyendo as, espero haber llenado los requisitos necesarios para que este pueda ser llamado un buen trabajo.

32

Bibliografa
html.rincondelvago.com/administracion-de-memoria-en-sistema-operativo.html http://es.wikipedia.org/wiki/Administraci%C3%B3n_de_Memoria www.tldp.org/pub/Linux/docs/ldp-archived/system-adminguide/translations/es/html/ch07.html http://www.monografias.com/trabajos51/sincro-comunicacion/sincrocomunicacion2.shtml http://www.monografias.com/trabajos/so2/so2.shtml https://es.wikipedia.org/wiki/Sem%C3%A1foro_%28inform%C3%A1tica %29http://sistemasoperativo252m.blogspot.com/2011/01/29-semaforos-sistemasoperativos.html http://es.wikipedia.org/wiki/Comunicaci%C3%B3n_entre_procesos http://es.wikipedia.org/wiki/Paginaci%C3%B3n_de_memoria http://www.slideshare.net/natalialuva/paginacin-segmentacin-y-fragmentacin http://jgutgil.wordpress.com/2007/07/30/%C2%BFque-es-la-paginacion/ http://www.spip.net/es_article3446.html http://html.rincondelvago.com/administracion-de-memoria-en-sistemaoperativo.html

33

You might also like