You are on page 1of 33

Instituto Tecnológico de Las Américas

Bloqueos y Administración de Memoria

Maestro: José Doñe

Integrante: Esleiter Rivera Fortuna 2012-1106

Fecha de Entrega: 17/06/2013

1

INDICE
Sistema Operativo Introducción………………………………………. 3 1. Condición para un Bloqueo…... ……………. 4 2. Prevención …...…………….5 3. Detección………………..…………………..6 4. Recuperación…………………………………8 5. Administración de memoria……………………9 6.1
6.2

Memorial Real.……………………………….10 Direcciones Físicas y Lógica…………….11 Resolución de direcciones…………………15 Intercambio…………………………….16

6.3 6.4

6.5 Asignación contigua: particiones………..17 6.6 Paginación……………………………….. 19 6.7 Segmentación……………………………..21 6.8 Segmentación con Paginación…………..22 6.8.1 Memoria Virtual…………………………….24 6.8.2 Paginación por solicitud…………………..26 6.8.3 Algoritmos de Reemplazo…………………27 6.8.4 Bloques de Asignación…………………….29 7. Conclusión…………………….....32 8. Bibliografía………………..33

2

INTRODUCCIÓN
En sistemas operativos, el bloqueo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución 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 solución general para los interbloqueos. A continuación se describen los bloqueos y la administración de memoria, los cual se divide en varios subtemas que explicare de manera clara tomando en cuenta los puntos más importantes que sirven para mi propio aprendizaje.

3

que está esperando un recurso adquirido por P2... Condición de espera circular: dado el conjunto de procesos P0. el bloqueo (también conocido como interbloqueo.. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). Sean los procesos P0. En la vida real... P0 está esperando un recurso adquirido por P1.. Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas. Rm: • Condición de exclusión mutua: existencia de al menos de un recurso compartido por los procesos. el otro la flecha. dos procesos compiten por dos recursos que necesitan para funcionar. Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes entre ellas. que está 4 • • • . El segundo proceso toma el lock del otro recurso. En el siguiente ejemplo.. . Condición de no expropiación : los recursos no pueden ser expropiados por los procesos. los recursos sólo podrán ser liberados voluntariamente por sus propietarios. P1. traba mortal. A diferencia de otros problemas de concurrencia de procesos. G.Pm(subconjunto del total de procesos original). y luego intenta utilizar el recurso ya utilizado por el primer proceso. por lo tanto queda en espera. deadlock. no existe una solución general para los interbloqueos. que sólo pueden ser utilizados por un proceso a la vez.. al cual sólo puede acceder uno simultáneamente. se produce un interbloqueo. Ninguno puede jugar hasta que alguno libere lo que tomó. Cuando el primer proceso a su vez intenta utilizar el otro recurso. Condición de retención y espera: al menos un proceso Pi ha adquirido un recurso Ri. 1. Coffman. por parte de dos o más procesos. .que está esperando un recurso adquirido por Pm. Pn y los recursos R0. R1. . uno toma el arco. es decir. y lo retiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro proceso. donde los dos procesos esperan la liberación del recurso que utiliza el otro proceso. Condiciones Para un Bloqueo También conocidas como condiciones de Coffman por su primera descripción en 1971 en un artículo escrito por E.. abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha..Bloqueos En sistemas operativos..

Otra forma es requerir a los procesos liberar todos sus recursos antes de pedir todos los recursos que necesitan. e incluso con colas también pueden ocurrir interbloqueos. el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. • Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso. el sistema controla si satisfaciendo el pedido entra en un estado inseguro. Para cada petición de recursos. 2. introducido por Dijkstra. Esto también es poco práctico en general. Evitando bloqueos mutuos Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. De esta forma. o una jerarquía puede ser impuesta de modo tal que los ciclos de espera no sean posibles.esperando un recurso adquirido por P0. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro. Esto es imposible para procesos que no pueden ser encolados (puestos en un spool). La condición de posesión y espera puede ser eliminada haciendo que los procesos pidan todos los recursos que van a necesitar antes de empezar. Prevención Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de las condiciones necesarias vistas anteriormente. • • • 5 . Esta condición implica la condición de retención y espera. disponibles y requeridos. La condición de no expropiación puede ser también imposible de eliminar dado que un proceso debe poder tener un recurso por un cierto tiempo o el procesamiento puede quedar inconsistente. Algoritmo de Seguridad. La condición de espera circular es la más fácil de atacar. Algoritmo de solicitud de recursos. Algoritmo de grafo de asignación de recursos. donde puede producirse un bloqueo mutuo. debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia. Este conocimiento por adelantado muchas veces es imposible nuevamente. Se le permite a un proceso poseer sólo un recurso en un determinado momento. Existen varios algoritmos para evitar bloqueos mutuos: • • • • Algoritmo del banquero.

Se hace necesario un algoritmo formal para la detección de bloqueos que se pueda utilizar en los sistemas reales. El proceso F posee a W y desea a S. Si la gráfica de recursos contuviera uno o más ciclos. El proceso G posee a V y desea a U. existiría un bloqueo. Este se puede eliminar de la gráfica. Si se usa esta técnica el sistema no intenta evitar los bloqueos s no que deja que aparezcan. el sistema no está bloqueado. La pregunta es: ¿está bloqueado este sistema y. En la primera imagen no hay bloqueo.Si todavía quedan procesos que no se han eliminado hay un bloqueo. Cualquier proceso que forme parte de un ciclo está bloqueado. Siempre que se produzca un ciclo en la solicitud y retención de dispositivos hay un bloqueo.3. La respuesta se obtiene mediante la gráfica de recursos: si la gráfica presenta un ciclo significa procesos bloqueados. Ejemplo: sistema con 7 (siete) procesos (“A” a “G”) y 6 (seis) recursos (“R” a “W”): • • • • • • • • La posesión de los recursos es la siguiente: El proceso A posee a R y desea a S. El proceso D posee a U y desea a S y a T. c) Vuelva al paso uno hasta eliminar todas las líneas posibles. El proceso B no posee recurso alguno y desea a T. b) Encentre un proceso que nada más espere recursos que no están asignados por completo. si no existen ciclos. El proceso E posee a T y desea a V. Aquí existen 2 casos: Detección de bloqueos de la forma un recurso de cada tipo. El proceso C no posee recurso alguno y desea a S. cuáles son los procesos bloqueados?. 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 ningún otro. No se dispone de más de un objeto de cada clase de recurso. pero en la segunda si. Detección Los bloqueos mutuos se pueden detectar de manera relativamente fácil como pudimos ver en las gráficas dirigidas. intenta detectar cuando esto ocurre y después lleva a cabo una acción para recuperarse después de ocurrir el bloqueo. 6 . en tal caso.

E. De “B” se siguen los arcos de salida hasta llegar a “D”. 5. o Si este nodo era el nodo inicial. Se ha llegado a un punto donde no se puede continuar: o Se regresa al nodo anterior.U. o Se pasa al paso 3. o Todos los arcos como no marcados. • • • • • • • • • • • • • Detección de bloqueos de la forma varios recursos de cada tipo. “S” no tiene arcos que salgan de él. Se considera “m” el número de clases de recursos con: 7 . siendo “L” otra vez la lista vacía. Se añade “R” a la lista y se mueve a la única posibilidad.G. o En caso negativo se va al paso 6. Se añade “A” a la lista: L=[R. Se considera un algoritmo basado en matrices para la detección de un bloqueo entre “n” procesos.U. La segunda vez se elige “T” quedando L=[B. Desde el nodo dado se verifica si existen arcos que salgan de dicho nodo y no estén marcados: o En caso afirmativo se va al paso 5. Se considera a “N” como nodo inicial. siendo L=[B. Se inicializan: o La estructura de datos “L”como una lista vacía.E. Se pasa de “A” a “S”. quedando L=[R. Ya que “A” no tiene arcos de salida no marcados se regresa a “R”. Se efectúa una elección al azar.T. La búsqueda termina rápidamente y se parte de “B”.A]. “A”.S].T. 4.Ejemplo de algoritmo aplicable a cada nodo “N” de la gráfica: 1. Si se elige “S” llegamos a un punto sin salida y debemos regresar a “D”. 3. 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.D]. Se inicia nuevamente el algoritmo partiendo de “A”.D. por lo que no se puede continuar y se regresa a “A”.A. la gráfica no contiene ciclos y el algoritmo termina. La aplicación del algoritmo precedente al ejemplo anterior de gráfica dirigida es la siguiente: Se parte de “R” y se inicializa “L” como la lista vacía. es decir al que estaba activo antes del actual. Se añade 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.G. 6.V. 2. o Se señala de nuevo como nodo activo.T] : Se ha descubierto un ciclo y el algoritmo se detiene. finalizando la inspección de “R”. “P1” hasta “Pn”.V.

Se considera un vector “A” de recursos disponibles: • “Ai” indica el número de instancias disponibles del recurso “i ” . En todo momento algunos de los recursos están asignados y por lo tanto no están disponibles. El renglón i -ésimo de “C” indica el número de instancias de cada clase “Pi” poseídas en ese momento. Para esto necesita una “víctima”. Este último método detiene los trabajos nuevos y permite que los que no están bloqueados terminen y liberen sus recursos para que los bloqueados los usen. es el único que no requiere víctimas. Terminar uno por uno los trabajos que participan en el bloqueo y ver si el bloqueo desaparece después de cada terminación. es decir que la suma de las instancias del recurso “j ” asignadas y el número de instancias disponibles es el número de instancias existentes de esa clase de recurso. Algunos algoritmos para la recuperación son los siguientes: • • • • • • Terminar todos los trabajos activos y volver a arrancarlos. Terminar un trabajo que no está en el bloqueo y asignar sus recursos a uno bloqueado. La matriz “R” de solicitudes. Administración de la Memoria 8 . Recuperación El sistema operativo después de detectar el bloqueo mutuo debe recuperarse del mismo y continuar con su trabajo. 4.• • • • E1 recursos de la clase 1. Terminar un trabajo que se pueda reiniciar desde un punto medio si este resuelve el bloqueo. Ei recursos de la clase “i” (1 menor o igual que “i ” menor o igual que “m”). E2 recursos de la clase 2. “E” es el vector de recursos existentes. Terminar los trabajos en el bloqueo solamente y solicitar su nuevo envío. Cada recurso está asignado o disponible. “Cij ” es el número de instancias del recurso“ j” deseadas por “Pi”. pero al igual que el anterior no siempre funciona. se refiere a recursos no asignados. Se utilizan: • • La matriz “C” de la asignación actual. un programa que se pueda terminar y volver a iniciar desde el principio o desde un punto medio conveniente.

Para ello existen diferentes esquemas de administración de memoria desde los mas simples hasta los mas elaborados entre los cuales se ubican: 5. pero aún así se obtiene el desperdicio de particiones grandes con una tarea pequeña.La parte del sistema operativo que administra la memoria se llama administrador de la memoria. Las tareas que van llegando se forman hasta que una partición adecuada está disponible.  Multiprogramación y uso de la memoria. Administración de la memoria Los sistemas de administración de memoria se pueden clasificar en dos tipos. Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante.pn  Multiprogramación con particiones fijas El objetivo en todo esto es tener mas de un proceso en memoria a la vez. en cuyo momento la tarea se carga en esa partición y se ejecuta hasta terminar. la respuesta puede ser tener particiones pequeñas también. Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilístico dado por la fórmula : Uso de la CPU = 1 . esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice.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. 5. 9 . solución posible sería dividir la memoria en n partes al inicio de una sesión de uso de la máquina. La mayoría de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución (intercambio y paginación) y aquellos que no. La multiprogramación facilita la programación de una aplicación al dividirla en dos o mas procesos. el usuario carga toda la memoria con un programa.  Monopogramación sin intercambio o paginación.

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). (Ver la figura 3.2. pero el acceso a la informacion contenida en ella es de mas rapido acceso.1) Los términos “memoria” y “almacenamiento” se consideran equivalentes. 5. utilize la opción "Bajar trabajo" del menu superior Fig. La organización y administración de la “ memoria principal”. 10 . Si se utiliza memoria virtual. Si el hueco es muy grande. Solo la memoria cache es mas rapida que la principal. el espacio es identificado como un hueco más en la tabla y si el nuevo hueco es adyacente con otro. Cuando no existe memoria virtual no hay diferenciacion entre el espacio de direcciones y la memoria real. Cuando el proceso termina y la memoria es liberada. Ejemplo de compactación de huecos no adyacentes. En ese momento se debe de checar si no existen procesos a los que este nuevo hueco pueda darles cabida. Referenciarlos directamente Compactación de memoria Cuando un proceso llega y necesita memoria. “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores mas importantes en el diseño de los S. Los programas y datos deben estar en el almacenamiento principal para: • • Poderlos ejecutar. ambos huecos se unen formando un solo hueco más grande. O. el espacio de direcciones que puede ser usado en los programas tiene identico tamano al espacio de memoria real posible. el sistema operativo busca en la tabla de huecos alguno lo suficientemente grande para el proceso.Por lo general esta memoria es de mayor costo que la memoria secundaria. Para ver el grafico. lo parte en dos. Una parte es asignada al proceso y la otra se identifica como hueco. pero su costo es a su vez mayor.

las direcciones MAC físicas son como las interfaces de la tarjeta Ethernet en la red.2 Direcciones Fisicas y Logicas Direcciones físicas: MAC (control de acceso a el medio) Podriamos buscar hasta el cansancio las direcciones MAC de la capa física en los encabezados de los paquetes IP pero no las vamos a encontrar.En la figura 5 se muestra como se modifica el mapa de la memoria después de compactar huecos no adyacentes generados después de intercambios realizados en el ejemplo de la figura 4. Una vez más. se necesita un proceso operativo que facilite la conversión entre direcciones IP lógicas y direcciones MAC físicas. La búsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde terminó la última búsqueda.Asignación dinámica El proceso de compactación del punto anterior es una instancia particular del problema de asignación de memoria dinámica. a menos que la tabla esté ordenada por tamaño. Para todos los efectos. Una dirección IP es un bien muy preciado. Por lo tanto. usted no se está quedando atrás.2.1. ni direcciones IP lógicas. Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. Por la misma razón. Las estrategias más comunes para asignar algún hueco de la tabla son: • • • Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. se debe de buscar en toda la tabla de huecos a menos que esté organizada por tamaño. 5. cabeceras IP. Esta estrategia produce el menor desperdicio de memoria posible. Esta estrategia produce los huecos de sobra más grandes. el cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Existen muchas soluciones para el problema. estas direcciones pueden o no existir. Peor ajuste: Asigna el hueco más grande. los cuales pudieran ser de más uso si llegan procesos de tamaño mediano que quepan en ellos. La búsqueda se debe de realizar en toda la tabla. 1. Cuando usted se conecta a la red. Es evidente que para hacer que el sistema funcione. La búsqueda termina al encontrar un hueco lo suficientemente grande.. No muchos pueden tener su propia dirección IP o incluso siempre nos conectamos con una dirección IP diferente.2. el cual utiliza direcciones lógicas que no son parte del protocolo. es absolutamente normal no saberla debido a varias razones. Pero La tarjeta NIC de Ethernet no sabe sobre IP. Un proveedor de servicios Internet (ISP -Internet Service Provider) o un proveedor de servicios de red (-Network Service Provider) le prestan una dirección IP solo por el período en que dura la 11 . ¿Conoce la dirección IP de su computador? Si la respuesta es no. Las direccione MAC no significan nada para el protocolo IP. El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. nos enfrentamos a una falta de comunicación.

168 y 172. El Protocolo de resolución de direcciones (ARP -Address Resolution Protocol) permite resolver la traducción de direcciones MAC física a direcciones IP lógicas. las subredes 192. La entidad gubernamental que las regula es Internet Address Numbers Authority (IANA). ¿Exactamente cuántas posibles direcciones IP existen? El número exacto es de 2^32 (porque la dirección se compone de 32 bits). así se requiere un grupo menor de posibles direcciones IP. es el proceso de envío de una trama de Ethernet a todos los sistemas en el mismo segmento de red. pueda usar direcciones Clase B para propósitos internos y para guardar la direcciones IP externas previamente asignadas con otros fines. este es un número superior a 4 billones. Esto permite que una red local con un limitado número de direcciones IP. por lo tanto es difícil asimilar para el cerebro. Con el explosivo crecimiento de Internet a nivel mundial.sesión de conexión. Algunos conocen su dirección IP pero ¿Conoce de memoria la dirección MAC de su host? La respuesta más probable es "No". tales como el Protocolo de configuración dinámica de host (DHCP -Dynamic Host Configuration Protocol) . ha estandarizado los bloques de direcciones IP que se utilizan para la asignación de direcciones internas. Esto se conoce como difusión (broadcast). ¿Cuáles son algunas soluciones para afrontar el agotamiento de direcciones? En primer lugar. Esto significa que no todos los hosts estarán activos en un momento dado. no todas las direcciones IP están disponibles. Este tráfico no debe traspasar la puerta de enlace (gateway) de la red local. ARP no es un protocolo IP. Hay varias razones para esto. Sin embargo. los rangos reservados disminuyen la cantidad de números posibles.16 se utilizan para los hosts de redes privadas. porque casi nadie se sabe su dirección MAC. 12 . una red local particular puede usar DHCP y asignar direcciones IP temporalmente a sus usuarios mientras dura la conexión. la preocupante realidad indica que las direcciones IP se están agotando rápidamente. pero la principal es que esta es una dirección de 48 bits. Por lo tanto. sin facilidades para ser humanamente memorizable. o posiblemente por un tiempo mas largo. La otro solución es conocida como direcciones privadas reservadas (Reserved private addresses). esto a través de aplicaciones.

pero los planes futuros requieren expandir este valor a 128 bits para adaptarse a sus limitaciones actuales. Estas no son asignaciones secuenciales o al azar. Direcciones Lógicas: direcciones IP Una dirección IP tiene 32 bits asignados para identificar un host. Este almacenamiento reduce el número de nuevas peticiones ARP requeridas. incluyendo los hosts de origen y destino. Una dirección de 48 bits es enorme.5). 192. luego el host de destino las recibe y responde con su dirección MAC. Dos hosts se pueden comenzar a comunicar con transacciones TCP/IP de la misma capa.5. por lo tanto almacenan sus direcciones IP y MAC. El host de origen emite (o difunde) las solicitudes ARP. 13 .Cuando un mensaje se emite. Este número de 32 bits se expresa como cuatro números decimales separados por puntos (por ejemplo. Esto suena bien si se dice rápido. pero la comunicación efectiva se produce entre las direcciones MAC de los dos hosts. todos los hosts que escuchan en la red. Durante esta operación. ¡La idea es que sean totalmente únicas temporal y espacialmente! :). El resto de la dirección IP identifica a el hosts de la red. no funciona entre hosts de diferentes redes. se envía a todas las máquinas de un segmento de red o a una red completa. guardan en caché lo que han aprendido sobre los otros hosts. La parte inicial del número de IP indica el tamaño de la red en la que reside el host. Finalmente la comunicación dentro de un mismo segmento de red se produce entre las direcciones MAC y no entre las direcciones IP. ¿Por qué son las direcciones MAC de tan grandes? Después de todo. Es importante destacar que ARP se aplica únicamente para hosts localmente conectados a la misma red. permitiendo que cada fabricante de NICs pueda tener un código de proveedor único integrado en la dirección MAC.168.

255. Notación CIDR Direccionamiento se refiere al enrutamiento entre dominios sin Clases (CIDR Classless Inter-domain routing). Las direcciones de clase A asignan los primeros 8 bits a un segmento de la red a la dirección IP. o 255 hosts. Esto significaba que su red sería asignada con 16 millones+.0.0. Entonces. una red de clase C se puede dividir en cuatro subredes individuales mediante la asignación de una máscara de subred adecuada.0 a 18. las direcciones fueron parte de una clase particular.000 hosts. Las direcciones de clases A.255. Debido a que 24 bits han sido asignados para el host mas de 16 millones (224-1) hosts. muchos números IP quedaban sin ser asignados. la máscara de subred es designada como 255. y los restantes 24 bits para la identificación del host.255.0.0. las clases indican cuántos equipos se encuentran en una determinada red o la cantidad de bits asignados en la dirección IP para los hosts únicos en la red. Cada bit que representa a la red se marca como 1. Durante mucho tiempo. Las direcciones Clase E están reservadas para uso experimental.255. 65 000+. y una red clase C tiene una máscara de subred 255.Las direcciones se clasifican por clases. Por ejemplo. Por ejemplo. La situación más frecuente eran las redes que requerían entre 255 y 65.255. como en la siguiente tabla. Una dirección clase A. Máscara de Subred Esta máscara informa a un sistema de computación que parte de su dirección IP ha sido asignada a la red y que parte al host. En binario. Debido a que muchas de estas redes eran de clase B. 14 . ¿Por qué es necesario saber qué clase y cuántos bits se reservan para la red mediante el análisis de dirección IP? porque algunos administradores de red subdividen sus redes.0. B y C envían paquetes a un único host de destino (unicast).0. Una red clase B tiene una máscara de subred 255. podrían ser asignados. Un ejemplo de red Clase A va desde 18. La siguiente Tabla muestra el rango de direcciones asociadas a cada clase.0. el rango IP asignado al Instituto Tecnológico de Massachusetts (MIT). Mientras que las direcciones de Clase D se conocen como multicast y son utilizadas para la comunicación entre un grupo designado de hosts. Teniendo en cuenta que los números de IP son bienes finitos.0. Las direcciones IP se clasifican desde la clase A a la Clase E. Otras clases tienen otras máscaras de subred. 8 bits consecutivos (todas con valor de 1) se traducen en un número decimal 255.255. tiene 8 bits de red y 24 bits de host. una solución fue asignar redes sin restricciones de clase.

al convertir el programa a lenguaje máquina. los nombres simbólicos (por ejemplo. Por último. y el desplazamiento. en tiempo de carga (sería guardada en el programa en disco como inicio + 5986 bytes. resueltas. y es resuelta cada vez que sea requerido. se mantiene en las instrucciones a ser ejecutadas por el proceso la etiqueta relativa al módulo actual. Esto es. pero requiere de hardware específico (como un MMU). en la arquitectura compatible con PC. esto es. En tiempo de ejecución El programa nunca hace referencia a una ubicación absoluta de memoria.5. los procesos requieren coexistir con otros. Ahora bien. 5986. 510200). 504214. sino que lo hace siempre relativo a una base y un desplazamiento (offset). 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. Esto era muy común en las computadoras previas al multiprocesamiento. 15 . la variable llamada contador) para ser traducidos ya sea a ubicaciones en la memoria. Podemos hablar de las siguientes tres estrategias de resolución: En tiempo de compilación El texto del programa tiene la dirección absoluta de los datos y funciones.3 Resolución de direcciones Un programa compilado no emplea nombres simbólicos para las variables o funciones que llama4. las substituye por la dirección en memoria donde se encuentra. esto depende de que el compilador indique dónde están todas las referencias a variables y funciones. Esto lo podemos ver hoy principalmente en sistemas embebidos o de función específica.COM es un volcado de memoria directo de un archivo objeto con las direcciones indicadas de forma absoluta. inicio + 5986 bytes. y el proceso de carga incluiría substituirla por la dirección resuelta a la suma del registro base. el compilador. Esto permite que el proceso sea incluso reubicado en la memoria mientras está siendo ejecutado sin tener que sufrir cambios. el formato ejecutable . pueden resolverse en tiempo de compilación (y quedar plasmada en el programa en disco con una ubicación explícita y definitiva: 510200). para emplear la resolución en tiempo de ejecución. En tiempo de carga Al cargarse a memoria el programa y antes de iniciar su ejecución. en los sistemas actuales. el cargador (componente del sistema operativo) actualiza las referncias a memoria dentro del texto para que apunten al lugar correcto — Claro está.

porque esperan la finalización de una operación de E/S). es menor la posibilidad de que la CPU permanezca inactiva. en la memoria sólo unos cuantos.5. Es mejor sacar a un proceso bloqueado (pasará a estado suspendido_bloqueado) que sacar a uno listo. El movimiento de procesos entre la memoria principal y el disco lo realizaba el planificador de nivel medio . Mientras los cinco procesos permanezcan bloqueados se desperdicia la CPU. Si existían varios procesos bloqueados ubicados en la memoria principal se elegía a uno cuya combinación de prioridad y tiempo de residencia en memoria principal fuera más desfavorable. Para remediar este inconveniente muchos sistemas operativos optaron por permitir ejecutar concurrentemente más procesos de los que pueden entrar físicamente en la memoria principal del ordenador.4 Intercambio (swapping) En un sistema con particiones estáticas el número de procesos con posibilidades de estar en estado listo viene determinado por el número de particiones. Así. es muy probable que en un momento dado los cinco procesos que ocupan las particiones estén bloqueados (por ejemplo. cuando había 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. Para que un proceso se pueda ejecutar debe residir en memoria principal. La solución consiste en tener en disco una copia de la parte de la memoria que ocupa todo proceso. y en uno de particiones dinámicas por el tamaño de la memoria principal y el tamaño de los procesos. El intercambiador elegía una víctima al examinar los procesos bloqueados en espera de algo (por ejemplo. una entrada del terminal). ya que en ambos métodos un proceso permanece en una partición hasta que finaliza. La razón por la que se aumenta el número de procesos con posibilidades de tener instrucciones en memoria principal es porque cuanto mayor sea este número. es menos probable que se dé la circunstancia de que todos estén bloqueados y. Además. y ocupa un espacio mayor al asignado. En el disco se encuentran todos los procesos. tiene mayor capacidad de almacenamiento que la principal. Para ello se utiliza la memoria secundaria (generalmente los discos) que. Una llamada al sistema brk de solicitud de memoria dinámica en un proceso que no tiene suficiente memoria libre como para aceptar la petición. Una pila que se agranda.O. conocido como el intercambiador (swapper a medio plazo). Supongamos un sistema en que dicho número es cinco. Algunos sistemas UNIX utilizaban el intercambio en un sistema de particiones dinámicas. un buen candidato era un 16 . por lo tanto. El intercambio de la memoria principal al disco (swapping out) se iniciaba cuando el S. 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. aunque más lenta.

cargando en la memoria el proceso deseado. Procesos de usuario en la parte alta. Este algoritmo se repetía hasta que se cumpliera alguna de estas condiciones: (1) ningún proceso en el disco está suspendido_listo. el sistema operativo no tenía que ocuparse de la asignación de memoria. entonces se elegía a un proceso listo en base a los mismos criterios. por lo que. a la vez que eliminaba este espacio de la lista de huecos.proceso que hubiera consumido mucho tiempo de CPU recientemente. o (2) la memoria está tan ocupada por procesos recién traídos que no hay espacio para más. La implantación de un intercambio fácil se llevaba a cabo al traer el proceso a la memoria. Asignacion La memoria principal normalmente se divide en dos particiones: • • Contigua Sistema operativo residente. Un intercambio fácil era aquel en el que existiera la suficiente memoria libre. sólo un programa se ejecutaba a la vez. de forma que no había necesidad de sacar a un proceso para hacer espacio para el nuevo. Un intercambio difícil precisaba la eliminación de uno o más procesos. A continuación el intercambiador verificaba si el intercambio sería fácil o difícil. y devolvía el primer hueco que encontrara y que fuese lo bastante grande. se seleccionaba a aquel que hubiese permanecido en el disco durante mucho tiempo. 5. y después. Cada pocos segundos el intercambiador examinaba la lista de procesos intercambiados para ver si alguno estaba listo para su ejecución. El espacio libre en la memoria principal y en el dispositivo de intercambio se registraba mediante una lista enlazada de huecos. Si no se dispone de procesos bloqueados. Un intercambio difícil se implantaba liberando primero la memoria suficiente sacando a disco a uno o más procesos. se hizo necesario resolver cómo asignar el espacio en memoria a diferentes procesos. al igual que uno que hubiera permanecido en la memoria durante mucho tiempo. Si se necesitaba espacio en alguno de los dos. aun cuando durante este tiempo hubiera realizado E/S. 17 . Al nacer los primeros sistemas operativos multitarea. 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 algoritmo del primero en ajustarse leía la lista adecuada de huecos. normalmente en la parte baja de memoria con los vectores de interrupción. más allá de la carga del programa y la satisfacción de alguna eventual llamada al sistema solicitando recursos.5 Asignación de memoria contigua En los sistemas de ejecución en lotes. En caso de que existiera alguno. así como en las primeras computadoras personales.

El registro de relocalización contiene la dirección contiene la dirección física mas pequeña. 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. Esta estrategia produce el menor desperdicio de memoria posible. Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. Particiones libres (huecos) Asignación de partición dinámica El proceso de compactación es una instancia particular del problema de asignación de memoria dinámica. El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. los cuales pudieran ser de más uso si llegan procesos de tamaño mediano que quepan en ellos. Existen muchas soluciones para el problema. Esta estrategia produce los huecos de sobra más grandes. La búsqueda se debe de realizar en toda la tabla. Las estrategias más comunes para asignar algún hueco de la tabla son: • • • Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. cuando llega un proceso se le asigna un hueco suficientemente grande para acomodarle.Asignación de partición simple Puede utilizarse un esquema de registro de relocalización y limite para proteger un proceso de usuario de otro y de cambios del código y datos del sistema operativo. Ni el primer o el mejor ajuste es claramente el mejor en términos de uso de espacio. pero por lo general el primer ajuste es más rápido. Peor ajuste: Asigna el hueco más grande. El sistema operativo debe tener información sobre: a. a menos que la tabla esté ordenada por tamaño. La búsqueda termina al encontrar un hueco lo suficientemente grande. se debe de buscar en toda la tabla de huecos a menos que esté organizada por tamaño. . el registro limite contiene el rango de las direcciones lógicas cada dirección lógica debe ser menor al registro limite Asignación de particiones múltiples: Bloques de distintos tamaños están distribuidos en memoria . La búsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde terminó la última búsqueda. 18 . Una vez más. el cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Particiones asignadas b.

Las direcciones que maneja el CPU ya no son presentadas de forma absoluta. de modo que el MMU pueda discernir fácilmente la porción de una dirección de memoria que se refiere a la página del desplazamiento. Página y desplazamiento. del mismo tamaño que los marcos. La memoria se presentará a cada proceso como si fuera de su uso exclusivo. entre los 512 bytes ( ) y 16MB ( ). dejando de requerir que la asignación sea de un área contigua de memoria. esto requiere de mayor espacialización por parte del hardware. por tanto. que resuelve la relación entre páginas y marcos. en un esquema de direccionamiento de 16 bits y páginas de 512 bytes Para poder realizar este mapeo. todos ellos del mismo tamaño. convirtiendo la 19 . El tamaño de los marcos (y. Claro está. Esta consiste en que cada proceso esté compuesto por una serie de páginas. sino que debemos hacer un mapeo entre la ubicación real (física) y la presentada a cada uno de los procesos (lógica).6 Paginación La fragmentación externa y. al ser una potencia de 2. El MMU se se encarga del mapeo entre páginas y marcos a través de tablas de páginas. el MMU requiere de una tabla de páginas (page table). y mayor información relacionada a cada uno de los procesos: No nos basta ya con indicar dónde inicia y dónde termina el área de memoria de cada proceso. las páginas) debe ser una potencia de 2.5. la necesidad de compactación pueden evitarse por completo empleando la paginación. el MMU puede separar la dirección en memoria entre los primeros bits (referentes a la página) y los últimos bits (referentes al desplazamiento). según el hardware. El rango varía. La memoria física se divide en una serie de marcos (frames). por tanto. sino que como la combinación de un identificador de página y un desplazamiento — De forma similar a lo que presentamos al hablar de resolución de instrucciones en tiempo de ejecución. y el espacio cada proceso se divide en una serie de páginas (pages).

292) El proceso que se nos presenta tiene una visión de la memoria como la columna del lado izquierdo: Le parece que existen 4 páginas. 20 . Galvin y Gagné. p. y los dos bits menos significativos (01. 1) indican al desplazamiento dentro de ésta. Podemos tomar como ejemplo para explicar este mecanismo el esquema presentado en el libro de Silberschatz. y el desplazamiento con los 2 bits menos significativos). la página es representada con los 3 bits más significativos de la dirección. aunque en realidad en el sistema éstas se encuentren desordenadas y desperdigadas. lo hace indicando la dirección 00101 (5). los tres bits más significativos (001. y tiene sus datos distribuidos en órden desde la dirección 00000 (0) hasta la 01111 (15). organizado en 8 páginas de 4 bytes cada una (esto es.dirección lógica (aquella que conoce el proceso) en la dirección física (la ubicación en que realmente se encuentra en la memoria del sistema). con un espacio de direccionamiento de 32 bytes y páginas de 4 bytes (Silberschatz. 1 — Y recordemos que para la computadora. Cuando el proceso quiere referirse a la letra f. lo natural es comenzar a contar por el 0) se refieren a la página número 1. De esta dirección. Ejemplo (minúsculo) de paginación. Este nos presenta un esquema minúsculo: Un espacio de direccionamiento de 32 bytes (5 bits).

no se asignara memoria. sino a partir del momento que sea necesario hacer usos del segmento. por lo que traduce la dirección lógica 00101 (5) a la física 11001 (26). Estructuras de datos de largo variable: ejm. Un ejemplo de esto. pero con una base distinta para cada una de las páginas. serian los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el 21 . Comparición: dos o más procesos pueden ser un mismo segmento. Es fácil el compartir segmentos. 3. Luego. Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.7 Segmentación Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica. Los enlaces se establecerán solo cuando sea necesario. 5.El MMU verifica en la tabla de páginas. Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. 4. 2. sin afectar por ello al resto del programa. etc. Existe la posibilidad de definir segmentos que aun no existan. bajo reglas de protección. aunque no sean propietarios de los mismos. dándoles un tratamiento particular. Ventajas de la El esquema de segmentación ofrece las siguientes ventajas: • • segmentación • • • • El programador puede conocer las unidades lógicas de su programa. Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. Enlace dinámico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. donde cada estructura tiene su propio tamaño y este puede variar. cada espacio de direcciones de programa consiste de una colección de segmentos. y encuentra que la página 1 corresponde al marco número 6 (110). que generalmente reflejan la división lógica del programa. Cambios dentro de un modulo no afecta al resto de los módulos. La segmentación permite alcanzar los siguientes objetivos: 1. 5. Así. llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Podemos ver que la paginación resulta en una suerte de resolución de direcciones en tiempo de ejecución. Cada uno de ellos tienen información lógica del programa: subrutina. arreglo. Stack.

el tiempo de búsqueda para asignar un segmento. Al permitir que los segmentos varíen de tamaño. así como un mayor consumo de recursos: memoria. Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas. no tenemos por qué tener entradas vacías en la tabla de segmentos. utilizando un primer o mejor ajuste. este pueda ser traído fácilmente de nuevo. con segmentos de 64 K-palabras. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación. la tabla de segmentos tiene un tamaño tolerable. lo que puede ameritar un plan de reubicación de segmentos en memoria principal. En algunos casos. De esta manera se podría desperdiciar memoria a causa de la fragmentación externa o bien desperdiciar tiempo debido a la búsqueda larga. También es posible combinar estos dos esquemas para mejorar ambos. ya que los discos almacenan la información en bloques de tamaños fijos. puede ser necesarios planes de reubicación a nivel de los discos. etc. Veamos como ejemplo el esquema del ordenador GE 645 con el sistema operativo Multics. incluso podría retardar la asignación de memoria hasta el momento en el cual se referencia el arreglo u otra estructura de dato por primera vez. si los segmentos son devueltos a dicho dispositivo. podría ser grande. pero requiere de mecanismos adicionales da hardware y software. Se complica el manejo de memoria virtual. Las direcciones lógicas estaban formadas a partir de un número de segmento de 18 bits y un desplazamiento de 16 bits. 5. o bien ambas cosas. tiempo de CPU. Aunque este esquema crea un espacio de direcciones correspondiente a una dirección de 34 bits. puesto que el número variable de segmentos conduce naturalmente al uso de un Registro de Longitud de Tabla de Segmentos. No obstante. Desventajas de la segmentación • • • • • • Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación. el tamaño medio de segmento podría resultar bastante grande y la fragmentación externa constituir un problema.8 Segmentación Paginada Tanto la paginación como la segmentación tienen sus ventajas y desventajas. No se puede garantizar. que al salir un segmento de la memoria. La comparticion de segmentos permite ahorrar memoria. 22 . lo que conlleva a nuevos costos. bajo la técnica conocida como Segmentación paginada. Estas desventajas tratan de ser minimizadas. mientras los segmentos son de tamaño variable. ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño. Necesitamos tan solo el mismo número de entradas en la tabla de segmentos que segmentos.programa. Incluso si la fragmentación externa no es significativa.

Multics pagina la tabla de segmentos. Sólo precisa tantas entradas como se necesiten realmente. No obstante. que especifica el marco que contiene la palabra deseada. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU. hemos introducido fragmentación interna e incrementado la sobrecarga de espacio de la tabla. van de menor capacidad y mayor velocidad a mayor capacidad y menor velocidad. En ese orden. por término medio. De esta manera. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. media página de fragmentación interna por segmento. La entrada en la tabla de segmentos apunta a una tabla de páginas para ese segmento.La solución adoptada fue paginar los segmentos. Obsérvese que la diferencia entre esta solución y la segmentación pura es que la entrada en la tabla de segmentos no contiene la dirección de la base del segmento.1 La memoria virtual La memoria virtual es una técnica de gestión de la memoria que permite que el sistema operativo disponga. Puesto que el número de segmento es una cantidad de 18 bits. generalmente la última página de cada segmento no estará totalmente llena. Muchas aplicaciones requieren acceso a más información (código y datos) que la que se puede mantener en memoria física. sino la dirección de la base de una tabla de páginas para ese segmento. la memoria caché (tanto dentro como fuera del CPU). el número de marco se combina con el desplazamiento de página para formar la dirección física. Acceso a un sistema de memoria Segmentado Paginado. Consecuentemente. Finalmente. tanto para el software de usuario como para sí mismo. puesto que cada segmento tiene una longitud limitada por su entrada en la tabla de segmentos. con lo que precisaríamos una tabla de segmentos muy larga. una dirección en Multics utiliza un número de segmento para definir un índice de página en una tabla de páginas para la tabla de segmentos. A partir de esta entrada. Una solución al problema de necesitar mayor cantidad de 23 . A decir verdad. la tabla de páginas no tiene por qué tener su tamaño máximo.8. Ahora debemos tener una tabla de páginas independiente para cada segmento. aunque hemos eliminado la fragmentación externa. la memoria RAM y el disco duro. Para simplificar este problema. incluso la visión de paginación segmentada de Multics que acabamos de presentar es simplista. en general. 5. localiza la parte de la tabla de segmentos que tiene la entrada para ese segmento. De este modo tendremos. podríamos tener 262144 segmentos. La paginación elimina la fragmentación interna y convierte en trivial el problema de la asignación: cualquier marco vacío puede utilizarse para una página. de mayor cantidad de memoria que la disponible físicamente. El desplazamiento del segmento se fragmenta entonces en un número de página de 6 bits y un desplazamiento de página de 10 bits. El número de página indexa en la tabla de páginas para dar el número de marco. Además.

dado el esfuerzo extra que implicaría para el procesador. además de la dificultad en el diseño e implementación del programa. una indicación de que la dirección de memoria deseada no se encuentra en memoria principal (llamado excepción de memoria virtual) En el primer caso. o cuando una dirección es leída o escrita por la CPU. 24 . Todo esto hace el trabajo del programador de aplicaciones mucho más fácil. Este método es invisible a los procesos. La desventaja de esto. junto con una gran cantidad de almacenamiento rápido en disco duro. Esta "ilusión" permite que los programas se ejecuten sin tener en cuenta el tamaño exacto de la memoria física. Por ejemplo. La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. la referencia a la memoria es completada. Aunque la memoria virtual podría estar implementada por el software del sistema operativo. en la práctica casi siempre se usa una combinación de hardware y software.memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco. Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación). al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria. Así en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte de él. es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. moviéndola a la memoria principal cuando sea necesario. en un sistema de 32 bits. como si la memoria virtual no hubiera estado involucrada: el software accede donde debía y sigue ejecutando normalmente. está en memoria física y el resto almacenado en el disco. Operación básica Cuando se usa memoria virtual. una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en: • • la dirección real de memoria (la dirección de memoria física). La alternativa es usar memoria virtual. La memoria irreal es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria. En el segundo caso. lo que da 4096 Megabytes (4 Gigabytes). Hay varias formas de hacer esto. el máximo es 232. y puede ser referenciado fácilmente. el sistema operativo es invocado para manejar la situación y permitir que el programa siga ejecutando o aborte según sea el caso. donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. y de traerla y llevarla.

en el peor de los casos. durante cortos períodos de tiempo. por lo que el procesador y el S. es válida la suposición de que. en función de la historia reciente. El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar. Si está entre los datos recientemente usados. Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginación: donde el procesador consume más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. qué fragmentos se usarán con menor probabilidad en un futuro próximo (véase algoritmos de reemplazo de páginas). Para que la memoria virtual sea práctica y efectiva. la proximidad de referencias a memoria cambia. se necesitarán sólo unos pocos fragmentos de un proceso. porque los fragmentos que no se usan no se cargan ni se descargan de la memoria. y cuando el S. Justo después de obtener la dirección física. llamada reubicación. mientras que otras ya ejecutadas. Es más.Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal es accesible a la CPU.O traiga a la memoria un fragmento. Y como en un instante dado. la búsqueda tendrá éxito. Si expulsa un fragmento justo antes de ser usado. Sin embargo. Una manera de confirmar el principio de cercanía es considerar el rendimiento de un proceso en un entorno de memoria virtual. tiene que existir un soporte de hardware y. según un programa va ejecutándose. tendrá que traer de nuevo el fragmento de manera casi inmediata.O debe incluir un software para gestionar el movimiento de páginas o segmentos entre memoria secundaria y memoria principal. Por lo tanto. se ahorra tiempo. en segundo lugar. el S. se pueden volver a depositar en el disco (archivos de paginación). prácticamente toda la memoria principal estará ocupada con fragmentos de procesos. La memoria virtual también simplifica la carga del programa para su ejecución. Primero. se pueden mantener más procesos en la memoria. el disco (swapping). La memoria virtual ha llegado a ser un componente esencial de la mayoría de los sistemas operativos actuales. pero si falla. en la memoria sólo se tienen unos pocos fragmentos de un proceso dado. y antes de consultar el dato en memoria principal.O tendrán acceso directo a la mayor cantidad de procesos posibles. 25 . la memoria virtual consultará la memoria principal ó. el sistema operativo debe saber cómo gestionar este esquema. se busca en memoria-cache. Para evitarlo el sistema operativo intenta adivinar. deberá expulsar otro. necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco. este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física. se necesitan dos ingredientes. Los argumentos anteriores se basan en el principio de cercanía de referencias o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. En un estado estable.

Cuando este bit está asignado como válido. Cuando un proceso se reincorpora. Los procesos residen en memoria secundaria (en el disco). indica que la página asociada se encuentra en memoria. Si el bit está como inválido. Como ahora consideramos un proceso como una secuencia de páginas. un error de dirección no válida es 26 . reduciendo el tiempo de intercambio y la cantidad de memoria física necesaria. en vez de intercambiar todo el proceso hacia la memoria. Una página marcada como inválida no tendrá ningún efecto si el proceso nunca intenta acceder a esa página. el paginador lleva a memoria las páginas necesarias. Este esquema requiere apoyo del hardware. Sin embargo. mientras que un paginador trata con las páginas individualmente de un proceso. utilizamos un intercambiador perezoso. ocurrirá una trampa de fallo de página. este valor indica que la página está en disco. al traducir la dirección mediante la tabla de páginas. Así evita colocar en la memoria páginas que no se utilizarán.5.8. Cuando queremos ejecutar un proceso. lo metemos en memoria. Un intercambiador manipula procesos enteros. el término intercambio es técnicamente incorrecto. en vez de un gran espacio contiguo de direcciones. Generalmente se añade un bit más a cada entrada de la tabla de páginas: un bit válido-inválido. Un intercambiador perezoso nunca reincorpora una página a memoria a menos que se necesite. generando una trampa para el sistema operativo (error de dirección no válido). Normalmente. ¿Pero qué sucede si el proceso trata de usar una página que no se incorporó a la memoria? Si adivinamos mal y el proceso trata de acceder a una página que no se trajo a memoria. observará que el valor del bit es inválido.2 Paginación por Solicitud Un sistema de paginación por demanda es similar a un sistema de paginación con intercambios. El hardware de paginación.

provocando posiblemente un fallo de página por cada instrucción. Después de traer de memoria esta página. que brinda un rendimiento aceptable en la paginación bajo demanda. la incorporamos. el proceso presentaría una fallo de página. en esta situación la trampa es el resultado del fallo de página del sistema operativo al no transferir a memoria una parte válida del proceso.consecuencia de intentar utilizar una dirección de memoria ilegal. Encontramos un marco libre (por ejemplo. debemos corregir esta omisión. Si se trató de una referencia válida. el proceso continúa su ejecución. Reiniciamos la instrucción interrumpida por la trampa de dirección ilegal. algunos programas pueden acceder a una nueva página de memoria con cada instrucción que ejecutan. los análisis de procesos en ejecución han mostrado que esta situación es muy poco probable. El proceso ahora puede acceder a la página como si siempre se hubiera encontrado en memoria. código de condición. como almacenamos el contexto del proceso (registros. Es importante observar que. excepto que ahora la página deseada se encuentra en memoria y se puede acceder a ella. Esta situación provocaría un rendimiento inaceptable. 27 . El procedimiento es sencillo (figura 7. seleccionando uno de la tabla de marcos libres). contador de instrucciones). provocando fallos cuando sea necesario hasta que todas las páginas que necesita se encuentren en memoria. podemos reanudarlo exactamente en el mismo punto y estado. con la primera instrucción. Esto es la paginación por demanda pura: no traer una página a memoria hasta que se requiera. El caso más extremo es comenzar la ejecución de un proceso sin páginas en memoria. Si fue inválido. Sin embargo. modificamos la tabla interna que se conserva junto con el proceso y la tabla de páginas para indicar que ahora la página se encuentra en memoria. tratando de minimizar el tiempo adicional de transferencia de disco y los requisitos de memoria. Cuando ha concluido la lectura de disco. abortamos el proceso. Por fortuna. En teoría. Por tanto. pero aún no hemos traído la página. en este caso. Planificamos una operación para leer de disco la página deseada en el marco recién asignado. Los programas suelen poseer una localidad de referencias (como veremos más adelante). De inmediato. interrumpido al ocurrir un fallo de página.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 válido o inválido. el proceso deberá terminar.

Un aspecto crítico es la capacidad para reiniciar cualquier instrucción después de un fallo de página. Además de esta ayuda hardware. Memoria secundaria. Esta memoria contiene las páginas que no se conservan en la memoria principal. se requiere un considerable apoyo software. En 28 . como veremos luego. Esta tabla tiene la capacidad para marcar una entrada como inválida usando un bit válido-inválido o un valor especial de los bits de protección. La memoria secundaria casi siempre es un disco de alta velocidad.El hardware para apoyar la paginación bajo demanda es el mismo que se usa para la paginación y segmentación. y los intercambios: Tabla de páginas. Hay que imponer algunas restricciones arquitectónicas.

Si va a ocurrir una fallo de página. sucederá en esta etapa. En una de las soluciones. Si falla la página al buscar la instrucción. Si se presenta un fallo de página. Guardar el resultado en C. tendríamos que obtener la página deseada. por lo que podemos repetir la instrucción. Estos no son los únicos problemas arquitectónicos que pueden surgir al añadir paginación. por lo que no podríamos reiniciar la instrucción. que puede mover hasta 256 bytes de una localidad a otra (que pueden coincidir parcialmente). La principal dificultad surge cuando una instrucción puede modificar varias localidades distintas. Buscar A. ya que todas las páginas en cuestión se encuentran en memoria. si los bloques fuente y destino se superponen es probable que se modifique el bloque fuente. la paginación debe ser completamente transparente para el proceso de usuario. podemos reiniciarla efectuando de nuevo la búsqueda. Como el peor de los casos. Este problema se resuelve de dos maneras. considere una instrucción de tres direcciones como ADD (suma) de A y B. traerla a memoria. Sumar A y B. corregir la tabla de páginas y reiniciar la instrucción. Si alguno de los bloques (fuente o destino) sobrepasa un límite de página. En los sistemas de computación. debemos buscar de nuevo la instrucción. puede ocurrir un fallo de página después de haber efectuado parte de la transferencia. La otra solución utiliza registros temporales para contener los valores de las localidades sobreescritas. Si se presentara un fallo al almacenar en C. Además. 29 . pero sí ilustran sus dificultades. buscar una vez más los dos operandos y volver a sumar. considere una instrucción MVC (mover carácter). antes de modificar algo. Entonces puede efectuarse la transferencia si sabemos que no ocurrirá ningún fallo de página. Esto significa repetir la instrucción. Esta acción restablece la memoria a su estado anterior a la ejecución de la instrucción. Buscar B. colocando el resultado en C. todos los valores que había antes de que ocurriera la trampa regresan a la memoria. Los pasos para ejecutar esta instrucción serían Buscar y decodificar la instrucción ADD. decodificarla. Este inicio implica buscar de nuevo la instrucción. Si ocurre el fallo al buscar el operando.la mayoría de los casos es fácil cumplir este requisito. decodificarla y luego buscar el operando. Por ejemplo. el microcódigo calcula y trata de acceder a ambos extremos de los bloques.

si por el contrario la página no ha sido modificada la copia del disco ya está actualizada por lo que no es necesario volver a escribir. el único problema de este algoritmo es que es irrealizable. el rendimiento del sistema es mucho mejor si se elige una página de poco uso.O. en la siguiente instrucción se hará referencia a una de estas páginas. debe escribirla en el disco para mantener actualizada la copia del disco. el algoritmo dice que se elimine la página con la mayor etiqueta.3 Algoritmos de reemplazo de páginas Cuando ocurre un fallo de página el sistema operativo debe elegir una página para retirarla de la memoria y hacer un espacio para la página por recuperar. En un fallo de página . Al momento del fallo de página el S. otras páginas no se utilizaran sino hasta mucho después. no tiene forma de saber a qué página se hace referencia. Aunque es posible elegir una página al azar para el reemplazo relacionado con un fallo de página.  Algoritmo de página de uso no muy reciente. la página por leer sólo escribe encima de la página por retirar. primero en salir FIFO" 30 . Si la página por eliminar fue modificada mientras estaba en memoria.5. aún sin ser el óptimo si es adecuado en muchos casos. cada página puede ejecutarse con el número de instrucciones ejecutadas antes de la primera referencia a esa página. Al momento de ocurrir un fallo de página cierto conjunto de páginas se encuentran en la memoria. si una página no va a utilizase sino hasta mucho después que otra la eliminación de la primera retrasa el fallo de página lo mas posible.8.  Algoritmo de reemplazo " primero en entrar.  Algoritmo de reemplazo de páginas optimo Mejor algoritmo posible para reemplazo de páginas pero irrealizable en la práctica. este algoritmo es fácil de comprender. de implantación eficiente y con un rendimiento que. el sistema operativo inspecciona todas las páginas y las divide en cuatro categorías según 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 hipótesis que indica que es mejor eliminar una página modificada sin referencias al menos por lo general un intervalo de reloj.

ACUM y J son de tipo entero. CAR de tipo carácter y BAND de tipo booleano. REA := ACUM / 3. 12. una manecilla apunta hacia la mas antigua. ACUM := 0. I := 0. Al ocurrir un fallo de página se inspecciona la página a la que apunta la manecilla si su bit R=0 se retira de la memoria. BAND := (8 > 5) y (15 < 2 **3).El sistema operativo tiene una lista de todas las páginas que se encuentran en memoria. 3. siendo la primera página la mas antigua y la última la mas reciente. 8. BAND := BAND o (I = J). El formato de asignación (en lenguaje Pascal) es el siguiente: Variable := expresión o valor. REA := REA / 5. CAR := J.  Algoritmo de reemplazo de páginas del reloj Aunque el anterior algoritmo es razonable un mejor enfoque es mantener las páginas en una lista circular con la forma de un reloj. ACUM := J div I. 13. 11. REA y SUM de tipo real. si R=1 la manecilla avanza una posición y el bit se limpia. 14. conservando ahora el nuevo valor. 9.8. Donde: expresión puede ser aritmética o lógica. 31 . I := I + 1. 5.4 Bloque de asignación Un bloque de asignación se utiliza para asignar valores o expresiones a una variable. J := 5 ** 2 div 3. se elimina la primera página y se añade la nueva al final de la lista. 5. éste se destruye. I := I * 3. en un fallo de página. o una constante o variable. Ejemplo: Supongamos que las variables I. esto continua hasta encontrar una página con R=0. busca una página antigua sin referencias durante el anterior intervalo de tiempo. 4. se inserta la nueva página en su lugar en el reloj y la manecilla avanza una posición. La asignación es una operación destructiva. 7. I := REA. SUM := ACUM * 5 / J ** 2. CAR := ‘a’.  Algoritmo de reemplazo de páginas de la segunda oportunidad Una modificación simple del FIFO que evita deshacerse de una página de uso frecuente inspecciona el bit R de la página mas antigua. 10. Esto significa que si la variable tenía asignado un valor anteriormente. 6. Consideremos también que tenemos que realizar las siguientes operaciones de asignación: 1. 2.

Con lo que investigue y aprendí puedo decir que la administración de memoria Los sistemas de administración de memoria se pueden clasificar en dos tipos. 32 .Conclusión Al concluir este trabajo de investigación. espero haber llenado los requisitos necesarios para que este pueda ser llamado un buen trabajo. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución (intercambio y paginación) y aquellos que no. Concluyendo así. queda como aprendizaje la importancia que tiene para mi el conocimiento de estos temas dentro de mi propia carrera.

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