Anda di halaman 1dari 19
Insittato Tecnolégico “Ayacucho” Carrera: Analista de Sistemas ‘Materia: TALLER DE SISTEMAS OPERATIVOS SISTEMAS OPERATIVOS ADMINISTRACION DE MEMORIA Ing. Wendy Navia Chambi Realiza un mapa conceptual i.Funciones y operaciones del administrador de memoria El ttnico espacio de almacenamiento que ¢! procesador puede utilizar directamnente, mas alld de los registros (que si bien le son infemos y sumamente ripidos, pero de capacidad muy escasa) es la memoria fisica. Todas las arquitecturas de procesador tienen instrucciones para interactuar con la memoria, pero ninguna lo tiene para hacerlo con medios persistentes de almacenamiento, como las unidades de disco!. Cabe mencionar que cuando veainos en un texto referencia al almacenamiento primario siempre se referira a la memoria, mientras que el ainacenamiento secundario se refiere a los discos u otros medios de almacenamiento persistente. ‘Todos los programas que descemos ejecutar deben cargarse a la memoria del sistema antes de ser utilizados. En esta unidad veremos cémo administra el sistema operativo a Ja memoria para permitir que Varios procesos la compartan — Esta tarea debe preverse desde el proceso de compilacién de nuestros programas (en particular, la fase de ligado). Hoy en dia, ademés, casi todos los sistemas operativos emplean implementaciones que requieren de hardware especiatizado — La Unidad de Manejo de Memoria (MMU). Hablaremos de c6mo se manejaban Jos sistemas multitarea antes de Ja universalizacién de los MMU, y qué rol juegan hoy en dia. .1 Espacio de direccionamiento La memoria esté estructurada como un arreglo direccionable de bytes. Esto es, al solicitar los contenidos de una direocidn especifica de memoria, ef hardware nos entregara un byte (8 bits), y no menos, Si queremos hacer una operacién sobre bits especificos, tenemos que solicitar y almacenar bytes enteros. En algunas arquitecturas, ¢l tamafio de palabra es mayor — Por ejemplo, los procésadores Alpha incurrian en fallas de alineacién si se solicitaba una direccién de memoria no alineada a 64 bits, y toda Tlamada a direcciones mal alineadas tenia que seratrapada por ol sistema operativo, re-alineada, y entregada. Un procesador que soporta un espacio de direccionamiento de 16 bits puede referitse directamente a hasta (2°16) bytes, esto es, a hasta 65,536 bytes (64K). Estos procesadores fueron comunes en las décadas de 1970 y 1980 — Los mas conocidos inciuyen al Intel 8080 y 8085, Zilog Z80, MOS 6502 y 6510, y Motorola 6800. Hay que recalcar que estos procesadores son reconocidos como procesadores de & bits, pero con espacio de direccionamiento de 16 bits. El procesador empleado en tas primeras PC, el Intel 8086, manejaba un direccionamiento de 20 bits (hasta 1024KB), pero al ser una arquitectura real de 16 bits requerfa del empleo de segmentacién para alcanzar toda su memoria, Hoy en dia, los procesadores dominantes son de 32 0 64 bits. Un procesador de 32 bits puede direccionar hasta 4,294,967,296 bytes (4GB), que est ya dentro de los parametros de lo esperable hoy en dia; una arquitectura de 32 bits sin exiensiones adicionales no puede emplear mis de 4GB RAM; a través de un mecanismo Hlamado PAE (Extensi6n de Direcciénes Fisicas, Physical Address Extension) permite extender esto a rangos de hasta (2°52) a cambio de un nivel mas de indireccién. Un procesador de 64 bits podria direccionar hasta 18,446,744,073,709,551,616 bytes (16 Exabytes), Los procesadores comercialmente hoy en dia no ofrecen esta capacidad de direccionamiento principalmente por un criterio econémico: Al resultar tan poco probable que exista un sistema con estas capacidades, los chips actuales Insts Teeneligle “Ayacuehe” (Carrere: Anlst de Sisters ‘Matera: TALLER DE SISTEMA OPERATIVOS Ing. Wendy Navia Cham estin limitados a entre (240) y (248) bits — 1 y 256 terabytes. Esta restriccién debe seguir teniendo sent econémico por muchos aos ai 1.2 Hardware: de la unidad de manejo de memoria (MMU) Alo largo de Ia historia de las computadoras ha sido necesario emplear mas memoria de la que esta directame disponible — Por un lado, ofrecer a los procesos més espacio de lo que puede direccionar lar arquitect (hardware) que empleamos, por otto lado la abstraccién de un espacio virtualmente ilimitado para realizar operaciones incluso cuando fa memoriarea/ es mucho menor a la solicitada, y por tltimo, Ia ilusién de tener bloque contiguo c ininterrumpido de memoria, cuando en realidad puede haber alta fragmentacidn, ‘Veremos c6mo es que el MMU cubre estas necesidades, qué mecanismos emplea para lograrlo — ¥ qué deben cuidar, incluso como programadores de aplicaciones de alto nivel, para aprovechar de la mejor manera es funciones (y evitar, por ef contrario, que nuestros programas se vuelvan lentos por no saber mancjar la memor correctamente. E] MMU es también el encargado de verificar que un proceso no tenga acceso a leer 0 modificar los datos de 0 — Si el sistema operativo tuviera que verificar que ninguna de las instrucciones ejecutadas por un progra resulta en una violacién de seguridad, la penalizacién en velocidad seria demasiado severa2. Una primer aproximacién a la proteccién de acceso es a través de un registro base y un registro limite: Si arquiteotura ofrece dos registros del procesador que slo pueden ser modificados por el sistema operativo (Fs «s, el hardware define la modificacién de dichos registros como una operacién privilegiada que requiere es gjecutando en modo supervisor), el MMU puede comparar cada acceso a memoria para verificar que esté en rango permitido. Por ejemplo, si a un proceso Ie fue asignado un espacio de memoria de 64K (65535 bytes) a partir de la direcci 304214 (492K), el registro base contendria 504214, y el registro limite63535. Si hubiera una instruccién p parte de dicho proceso que solicitara una direccién menor a 504214 o mayor a 569749 (556K), el MMU lanza tuna excepcién 0 trampainterrumpiendo el procesamiento, e indicando al sistema operative que ocurr uuna violacion de segmento (segmentation fault)’. El sistema operativo entonces procederia terminando ejecucién del proceso, reclamando todos los recursos que tuviera asignados y notificando a su usuario, io as eet a see pera CRB Hee Gants = sxc ° onan Espacio de direcciones validas para el proceso 3 definido por un registro base y un registro limite 2 Insitute Teenolégo *Ayneneho” Carrerm: Amlista de Sistema ‘Materia: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambi 1.3 La memoria caché Hay otro proceso que hoy en dia asumimos como un hecho: La memoria caché. Si bien su manejo es (casi) transparente para el sistema operativo, es muy importante mantenerlo en mente. Conforme el procesador va avanzando sobre las instrucciones de un programa (avanzando el registro de conteo Ge instruccién), se van produciendo accesos a memoria. Por un lado, tiene que buscar en memoria Ia siguiente instruccién a ejecutar. Por otro lado, estas instrucciones pueden requerirle uno 0 mas operadores adicionales que Geben ser traidos de la memoria, Por tiltimo, la instruccién puede requerir guardar su resultado en cierta direccién de memoria. Hace afios esto no era un problema — La velocidad del procesador estaba bisicamente sincronizada con la del mangjadot do memoria, y el flujo podia mantenerse basicamente estable. Pero conforme los procesadores se fueron haciendo més répido, y conforme se ha popularizado el procesamiento en paralelo, Ia memoria no ha podido acelerarse a la misma velocidad. La memoria de alta velocidad es demasiado cara, ¢ incluso las distancias de unos pocos centimetros se van volviendo obsticulos insalvables por la velocidad maxima de los electrones Viajando por pistas conductoras, Cuando el procesador solicité el contenido de una direccién de memoria y esta no esta alin disponible, tiene que detener su efecucion (stall) hasta que los datos estén disponibles. El CPU no puede, a diferencia del sistema operativo, "congelar” todo y guardar el estado para atender a otro proceso: Para el procesador, Ia lista de insirucciones a ejecutar es estrictamente secuencial, y todo tiempo que requicre esperar a una transferencia de datos es tiempo perdido. La respuesta para reducir esa espera es la memoria caché. Esta es memoria de alta velocidad, situada entre la memoria principal y el procesador propiamente, que guarda copias de laspeiginas que van siendo accesadas, partiendo del principio de la localidad de referencia: Localidad temporal Es probable que un recurso que fue empleado recientemente vuelva a ser empleado en un futuro cercano, Localidad espacial La probabilidad de que un recurso atin no requerido sea accesado es mucho mayor si fue requerido algin recurso cercano. Localidad secuencial Un recurso, y muy particularmente la memoria, tiende a ser requerido de forma secuencial Institto Tecnologie “Ayzene (Carvers: Aalst de Sistema ‘Materia: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambi i soe t noe oor = jp—$—ter apron —— or RI Patrones de acceso a memoria, demostrando la localidad espacial / temporal (Silberschatz, p.350) Basndonos en estos conceptos, vemos que cuando el procesador solicita al hardware determinada direccién de memoria, el hardware no sélo transfiere a la memoria caché el byte 0 palabra solicitado, sino que un bloque © pagina completo. Cabe mencionar que hoy en dia (particularmente desde que se detuvo la guerra de los Megahertz parte importante del diferencial en precios de los procesadores lideres en el mercado es la cantidad de cache de primero y seaundo nivel con que cuentan, 1.4 El espacio en memoria de un proceso Cuando un sistema operativo inicia un proceso, no se limita a volear el archivo ejecutable a memoria, sino que tiene que proveer la estructura para que éste vaya guardando la informacion de estado relativa a su ejecucién. Sec n de texto Es el nombre que recibe la imagen en memoria de las instrucciones a ser ejecutadas. Tipicamente, la seocién de texto ocupa las direcciones mds bajas del espacio en memoria, Seceién de datos Insteaco Teenolégie “Ayncucko” Carrere: Analista de Sites ‘Materia: TALLER DE SISTENAS OPERATIVOS Ing. Wendy Navia Chambi Espacio fijo preasignado para las variables globales. Este espacio es fijado en tiempo de compilacién, y xno puede cambiar (aunque los datos que carga si cambian en el tiempo de vida del proceso) Espacio de Libres (Heap) Espacio de memoria que se emplea para la asignacién dinimica de memoria durante la ejecucién del proceso. Este espacio se ubica por encima de la seccién de datos, yerece hacia arriba Cuando el programa es escrito en lenguajes que requieren manejo manual de la memoria (como C), esta ‘va es fa que se mangja a través de las Hlamadas de la familia de malloc yfree; en lenguajes con gestion automatica, esta rea es monitoreada por los recoleciores cle basura (volveremos a estos conceptos mas adelante), Pila de Hamadas (Stack) Estructuras representando a la serie de funciones que han sido llamadas dentro del proceso, con Sus parimetros, direcciones de retorno, variables locales, etc. La pila ocupa la parte mcs alta del espacio en memoria, y crece hacia abajo, max Pila de lamadas Espacio de libres Seccion de datos Seccidn de texte 0 Regiones de la memoria para un proceso 1.8 Resoluci6n de direcciones Ua programa compilado no emplea nombres simbélicos para las variables o funciones que llama’; el compilador, al convert el programa a lenguaje maquina, las substituye por Ia diteccién en memoria donde se encuentra, Ahora bien, en los sistemas actuales, los procesos requicren coexistir con otros, pata lo cual las direcciones indicadas en el fevio del programa pueden requerir ser traducidas al lugatrelativo al sitio de inicto del proceso en memoria — Esto es, resuelias. Podemos hablar de las siguientes tres estrategias de resolucin: En tiempo de compilacion El texto del programa tiene la direccién absoluta de los datos y funciones. Esto era muy comin on las computadoras previas al multiprocesamicnto; en la arquitectura compatible con PC, el formato i Ing. Wendy Navia Cham ejecutable COM es un volcado de memoria directo de un archivo objeto con las direcciones indicadas forma absoluta, Esto lo podemos ver hoy principalmente en sistemas embebidos o de funcién especif En tiempo de carga ‘Al cargarse a memoria el programa y antes de iniciar su ejecucién, el cargador (componente del siste operativo) actualiza las refemeias a memoria dentro del texto para que apunten al lugar correcto — esta, esto depende de que el compilador indique dénde estin todas las referencias a variables y funcion En tiempo de ejecucion El programa nunca hace referencia a una ubicacién absoluta de memoria, sino que lo hace siempre relat a una base y un desplacamiento (offset). Esto permite que el proceso sea incluso reubicado en la memo mientras esta siendo ejecutado sin tener que suftir cambios, pero requiere de hardware especifico (co un MMU). Esto es, los nombres simbéticos (por ejemplo, 1a variable llamada contador) para ser traducidos ya ses ubicaciones en la memoria, pueden resolverse en tiempo de compilacién (y quedar plasmada en el programa disco con una ubicacién explicita y definitiva: 510200), en tiempo de carga (seria guardada en el programa disco como inicio + 5986 bytes, y el proceso de carga incluiria substituirla por la direccién resuelta a la suma ¢ registro base, 504214, y el desplazamiento, 5986, esto es, 510200). Por iiltimo, para emplear la resolucién en tiempo de ejecucién, se mantiene en las instrucciones a ser ejecutad por el proceso Ia etiqueta relativa al médulo actual, inicio + 5986 bytes, y es resuelta cada vez que sea requeric Institute Teenolépieo *Ayaea Carrere: alist de Sistema (core: TALLER DE SISTEMAS OPERATIVOS aes Programa ("feet “Tiempo le compliscién [Compilader © —, Biblioteca de sistema de carga dinamice_/ ae | \ carga ainamnica Theta de sjesicion Ing, Wendy Navla Chambi Proceso de compilacién y carga de un programa, indicando el tipo de resolucién de direcciones (Silberschatz, p.281) 2 Asignacién de memoria contigua En los istemas de ejecucin en lotes, asi como en las primeras computadoras personales, sélo un programa se ejecutaba a la vez, por lo que, mis alld de la carga del programa y la satisfaccién de alguna eventual Hamada al sisiema solicitando recursos, el sistema operativo no tenia que ocuparse de la asignacién de memoria. Al nacer los primeros sistemas operativos multitarea, se hizo necesario resolver cémo asignar el espacio en memoria a diferentes procesos. ‘Matorfat TALLER DE SISTENAS OPERATIVOS Ing, Wendy Navia Chambi 2.1 Particion de 1a memoria La primer respuesta, claro esti, es la més sencilla: Asignar a cada programa a ser ejecutado un bloque contigno ‘memoria de un tamafio fijo. En tanto los programas permitieran la resolucién de direceiones en tiempo de car © de ejecucién, podrian emplear este esquema. EI sistema operativo emplearia una regién especifica de Ia memoria del sistema (tipicamente la regién baja - Desde la direccién en memoria 0x00000000 hacia arriba), y una vez terminado ef espacio necesario para ef mick Yy sus estructuras, el sistema asigna espacio a cada uno de los procesos. Si la arquitectura en cuestién permi limitar los segmentos disponibles. a cada uno de los procesos (por ejemplo, con I registros base y limite discutidos anteriormente), esto seria suficiente para alojar en memoria a varios procesos evitar que interfieran entre si. Desde la perspectiva del sistema operativo, cada uno de los espacios asignados a un proceso es una particid Cuando el sistema operativo inicia, toda Ia memoria disponible es vista como un sdlo bloque, y conforme se vs Ianzando procesos, este bioque va siendo subdividido para satisfacer sus requisitos. Cada proceso debe indicar sistema operativo cuénta memoria va a requerir a lo largo de su vida prevista. 2.4.1 Fragmentacién La fragmentacién comienza a aparecer cuando mas procesos van siendo lanzados y van terminando: Al termin: la ejecucién de un proceso, ya no tenemos sélo un bloque de espacio libre, sino dos. Potencialmente, cad programa que vaya terminando, ir devolviendo al sistema operative un bloque de distinto tamaiio, que que¢ entre dos procesos activos. Si fa computadora no tiene hardware especifico que permita que los procesos resuelvan sus direcciones en tiemp de ejecucién, el sistema operativo no puede reasignar los bloques existentes, y aunque pudiera hacerlo, mover u proceso entero en memoria puede resultar una operacién cara en tiempo de procesamiento. Al lanzarse un nuevo programa, ef sistema operativo tiene tres estrategias segéin las cuales podria asignarle un dc los bloques disponibles: Primer ajuste Asigna al nuevo proceso el primer bloque que encuentre donde éste quepa. Este mecanismo es el mé simple de implementar y el de mas rapida ejecucién. Mejor ajuste El sistema busca entre todos los bloques disponibles cual es el que mejor se ajusta al tamafio requeridi por el nuevo proceso. Esto requiere la revisién completa de Ia lista de bloques; leva a que fos bloque remanentes, una vez que se ubicé al nuevo proceso, sean tan pequefios como sea posible (esto es, qu haya menor desperdicio). Peor ajuste El sistema busca cudl es ef bloque mis grande disponible, y se lo asigna al nuevo proceso, Empleand una estrucura de datos como un monticulo, esta operaciin puede ser incluso més rapida que la de primer Insitute Tecaalighe “Ayseueho” Corrora: Alita de Sistemas “Materia: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambi espacio. Con este mecanismo se busca que los bloques que queden después de otorgarlos a un proceso sean tan grandes como sea posible, de cierto modo balanceando su tamaiio, La fragmentacion externa se produce cuando hay muchos bloques libres entre bloques asignados a procesos; Ja fragmentacion interna se refiere a la cantidad de memoria perdida por asuntos administrativos — Por ejemplo, siel sistema operativo mangja bloques de 512 bytes y un proceso requiere 768 bytes para su ¢jecucién, el sistema le eniregard dos bloques (1024 bytes), con lo cual desperdicia 256. En el peor de los casos, con un bloque de 2 bytes, un proceso podria solicitar n+1 bytes de memoria, desperdiciando por fragmentacidn interna n-1 bytes. Segin andlisis estadisticos (Silberschatz, p.289), por cada N bloques asignados, se perderin del orden de 0.5N bloques por fragmentacién interna y externa, 2.1.2 Compactacion Un problema importante que va surgiendo como resultado de esta fragmentacién es que el espacio total libre de memoria puede ser mucho mayor que lo que requiere un nuevo proceso, pero al estar fragmentada en muchos bloques, éste no encontrar una particién donde ser cargado. Si los procesos emplean resolucién de direcciones en tiempo de ejecucién, cuando el sistema operativo comience a deteotar un alto indice de fragmentacién, puede lanzar una operacién de compresién 0 compactacién: Mover os contenidos en memoria de los procesos en ejecucién para que ocupen espacios contiguos, permitiondo unificar varios bloques libres en uno soto. Proceso 3 Libre Proceso 2 ‘Compactacién de la memoria de procesos en ejecucién La compactacién tiene tin costo alto — involucra mover pricticamente la totalidad de la memoria (probablemente més de una vez por bloque). Insato Tecaalighee “Ayseneho” Carrera: Aualita de Sistemas Materia: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambi espacio. Con este mecanismo se busca que los bloques que queden después de otorgarlos a un proceso sean tan grandes como sea posible, de cierto modo balanceando su tamaiio. La fragmentacion externa se produce cuando hay muchos bloques libres entre bloques asignados a procesos; la fragmentacion interna se reficre a la cantidad de memoria perdida por asuntos administrativos — Por ejemplo, siel sistema operativo maneja bloques de 512 bytes y un proceso requiere 768 bytes para su cjccucién, el sistema Ie eniregard dos bloques (1024 bytes), con lo cual desperdicia 256. En el peor de los casos, con un bloque de 1 bytes, un proceso podria solicitar ni-1 bytes de memoria, desperdiciando por fragmentacién interna n-I bytes. Segin andlisis estadisticos (Silberschatz, p.289), por cada N bloques asignados, se perderin del érden de 0.5 bloques por fragmentacién interna y extema. 2.1.2 Compactacion ‘Un problema importante que va surgiendo como resultado de esta fragmentacién es que el espacio total libre de memoria puede ser mucho mayor que lo que requiere un nuevo proceso, pero al estar fragmentada en muchos bloques, éste no encontrar una particién donde ser cargado. Si los procesos emplean resolucién de direcciones en tiempo de ejecucién, cuando el sistema operativo comience a deteotar un alto indice de fragmentacién, puede lanzar una operacién de compresién 0 compactacién: Mover os contenidos en memoria de los procesos en ejecucién para que ocupen espacios contiguos, permitiendo unificar varios bloques libres en uno solo. Libre Proceso 3 Proceso 1 ae ‘Compactacién de la memoria de procesos en ejecucion La compactacién tiene un costo alto — Involucra mover pricticamente la fotalidad de la memoria (probablemente mis de una vez por bloque). “nsltto Tecnoligice “Ayaencto” (Carvers: Anais de Sistema Materla: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Cham 2.1.3 Intercambio (swap) con el almacenamiento secundario Siguiendo de cierto modo 1a légica requerida por ta compactacién encontramos los sistemas. ¢ utilizan intercambio (swap) entre 1a memoria primaria y secundaria. En estos sistemas, el sistema operat puede comprometer mas espacio de memoria det que tiene fisicamente disponible. Cuando hay més procesos los que caben en memoria, el sistema suspende a uno de ellos y almacena una copia de su imagen en memoria aimacenamiento secundario, Hay algunas restricciones a observar previo a suspender un proceso. Un proceso que tiene abierto algu operacién de entrada/salida en curso. Una estrategia ante esto podria ser que todas las operaciones se realic ‘inicamente a buffers en el espacio del sistema operativo y éste las transfiera al espacio del proceso interesado. Esta técnica se popularizé en los sistemas de escritorio hacia fines de los 1980 y principios de los 1990, en q Jas computadoras personales tenian tipicamente entre 1 y 8MB de memori Recordemos que las unidades de disco son del drden de decenas de miles de veces mis lentas que la memori por lo que este proceso resulta muy caro — Por ejemplo, si la imagen cn memoria de un proceso es de 100M bastante conservador hoy en dia, y la tasa de transferencia sostenida al disco de SOMB‘s, intercambiar un proce al disco toma dos segundos. Cargarlo de vuelta a memoria toma otros dos segundos — Y a esto debe sumarse tiempo de posicionamiento de 1a cabeza de lectura/escritura, especialmente si el espacio a emplear no secuencial y contiguo. Resulta obvio por qué esta técnica ha caido en desuso conforme aumenta el tamaiio de procesos. 3 Segmentacion Al desarrollar un programa, ef programador no ve a la memoria como un sélo arreglo plano, en el que todas I direcciones son iguales (si bien esta consciente de que la realidad es asi). El uso que damos a la memoria sigu una l6gica de distintos segmentos: En vez de dar una direccién fineal, damos al procesador una direccién « segmento y un desplazamiento dentro de dicho segmento. Podemos tener segmentos de distintos tamait presentes en memoria, y la resolucién de direcciones de cada uno de ellos se realizara por mecanismos andloge al descrito en el apartado anterior (registro base y desplazamiento). Claro esti, esto debe también hacerse co apoyo del MMU. Instituto Tecnolégie “Ayacucho” (Carrera: Anita de Sistemas Materia: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambi Memaria fice | o319 320-415 cases 1’ 415-629 1:630+ 180 }—»| 630-809 zinc +64}, [e089 3860+ 128 ||” 860-987 [Segment 6] [seseioee | ——_— Y Seqmantaae CS ‘y — i simbolos _/ / @oad yi28 a 988-1023 | aa celmae| [>| sezeiase | ila (stax \ | a a J dellamadas | [tise-i29e | 77 Segmento a / 1300-1364 | { << Biblioteca de S neem funciones C+ anne | Ee | Segmento 4: Biblioteca ligada | dindmicamente eee ——_ Ejemplo de segmentacién U distinto a cada una de las secciones mencionadas en la seccién espacio en memoria de un proceso. de ias implementaciones mas obvias y directas de un espacio de memoria segmentado ¢s asignar un segmento y i La segmentacién también ayuda a incrementar la modularidad de un programa: Es muy comin que las bibliotecas figadas dindmicamente estén representadas en segmentos independientes. 3.1 Permisos Una de las principales ventajas del uso de segmentacién es que nos permite pedir al MMU que cada uno de los segmentos tenga un distinto juego de permisas para el proceso en cuestion: El sistema operativo puede indicar, por ejemplo, que el segmento de texto (el cédigo del programa) sea de lectura y ejecucién, mientras que la secion de datos es de lectura y escritura, De este modo podemos evitar que un error en la programacién resulte en que Gatos proporcionados por el usuario o por el entomo modifiquen el cédigo que esta siendo ejecutado.s Es mas, Incluso, dado que el acceso de ejecucidn esti limitado a s6lo los segmentos cargados del disco por el sistema operative, el atacante no podré introducir cédigo ejecutable tan facilmente — Tendria que cargarlo como un segmento adicional con ios permisos correspondicntes. 3.2 Intercambio parcial Un uso muy comin de [a segmentacién, particularmnete en los sistemas de los 1980s, era el de permitir que s6lo cierias regiones de un programa sean intercambiadas al disco: Si un programa esta compuesto por porciones ce c6digo que nunca se ejecutaran aproximadamente al mismo tiempo en sucesién, puede separar su texto (¢ inciuso los datos correspondienies) en diferentes segmentos, 4 nsteate Fecneligico “Ayacucho” Carrera: Analisi de Sistemes ‘Matere: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Cham! Alo largo de la ejecucién del programa, algunos de sus segmentos pueden no emplearse por largos periodos tiempo. Estas piginas pueden ser enviadas al espacio de intercambio(swap) Ya sea a solicited del proceso 0 iniciativa del sistema operativo, 3.2.1 Rendimiento En la seccién donde presentamos el concepto de intercambio mencionamos que intercambiar un proceso compl resultaba demasaido caro. Cuando hablamos de un espacio de memoria segmentado, y muy particularme: cuando hablamos de bibliotecas de carga dindmica, la sobrecarga es mucho menor: En primer término, podemos hablar de la cantidad de informacién que intercambiaremos: En un sistema que sé mangja regiones contiguas de memoria, intercambiar un proceso significa mover toda su informacién al disc cuando hablamos de intercambio en un sistema con segmentacién, puede enviarse a disco cada uno de | segmentos por separado, segiin el sistema operativo lo juzgue necesario, Podria sacar de memoria a alguno | fos segmentos, cligiendo no necesariamente al que més estorbe (esto es, el mas grande}, sino el que m probablemente no esté siendo utilizado: Emplear et principio de localidad de referencia para intercambiar segmento menos recientemente utilizado (LRU, Least Recently Used) Ademds de esto, si hablamos de un segmento de texto (sea el cédigo programa base o alguna de las biblioteca Y su acceso es de s6lo lectura, una vez que éste fue copiado una vez al disco, ya no hace falta volver a hacer Tenemos la certeza de que no sera modificado por el proceso en ejecucién, por lo que basta marcarlo como 7 presente en las tablas de segmentos en memoria para que cualquier acceso ocasione que el sistema operativo | traiga de disco, Por otto lado, si Ia biblioteca en cuestién reside en disco (antes de ser cargada) como una imagen directa de s represcntacién en memoria, al sistema operativo le bastard identificar el archivo en cuestién al cargar el proces no hace falta siquiera cargarlo on la memoria principal y guardarlo al rea de intercambio, puede quedar referid directamente al espacio en disco en que reside el archivo. Claro esté, ef acceso a disco sigue siendo una fuerte penalizacién cada vez que un segmento tiene que ser cargad del disco (sea del sistema de archivos o del espacio de intercambio), pero este mecanismo reduce dich penalizacién, haciendo més atractiva la flexibilidad del intercambio por segmentos. 4 Paginacion La fragmentacién externa y, por tanto, la necesidad de compactacién pueden evitarse por completo empleand. la paginacién, Esta consiste en que cada proceso esté compuesto por una serie de paginas, dejando de requeri que Ia asignacién sea de un rea contigua de memoria. Claro esta, esto requiere de mayor espacializacion po parte del hardware, y mayor informacién relacionada a cada uno de los procesos: No nos basta ya con indica dénde inicia y dénde termina el area de memoria de cada proceso, sino que debemos hacer un mapeoentre I ubicacién real (fisica) y Ia presentada a cada uno de los procesos (/égica). La memoria se presentara a cad: proceso como si fucra de su uso exclusivo. La memoria fisica se divide en una serie de marcos (frames), todos ellos del mismo tamafio, y el espacio cads proceso s¢ divide en una serie de paginas (pages), del mismo tamafio que los marcos. El MMU se se encarga del mapeo entre paginas y marcos a través de tablas de paginas. Las direcciones que maneja el CPU ya no son Ad Institote Tecnolégio “Ayscache” (Carrere: Anlst de Sisters ‘atera: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambt presentadas de forma absoluta, sino que como la combinacién de un identificador de pagina y un desplazamiento — De forma similar a fo que presentamos al hablar de resolucién de instrucciones en tiempo de ejecucién. El tamafio de los marcos (y, por tanto, las paginas) debe ser una potencia de 2, de modo que el MMU pueda discemir ficitmente la porcién de una direccién de memoria que se refiere a lapdgina del desplazamiento. Fl rango varia, segin el hardware, entre los 512 bytes (29) y 16MB (2°24); al ser una potencia de 2, el MMU puede separar la direccién en memoria entre los primeros m bils (referentes a la pigina) y los titimos n bits (referentes al desplazamiento). ccidn especificada — 0001 1101 0111 0010 Pagina (7 bits) 0001110 101110010 (OxGE) © (0x172) UC Desplazamlento (9 bits) Pigina y desplazamiento, en un esquema de direccionamiento de 16 bits y paginas de 512 bytes Para poder realizar este mapeo, el MMU requiere de una iabla de paginas (page table), que resuelve la relacién entre paginas y marcos, convirtiendo la direccién logica (aquella que conoce el proceso) en la direccién fisica (la ubicacién en que realmente se encuentra en la memoria del sistema). Unidad de manejo de memaria (MMU) Tabla de | pégines pL] me Q pa] ma pa | md pe : ax | ie \, Dirsccién |_3%* fislea: [dine : Marco }O4 o1se : = >| Tex Ret Nee Pee Coxe Esquema del proceso de paginacién, ilustrando el rol del MMU a3 sloglce “Ayacucho” ‘Carrera: Aualita de Sistemas ‘Materia: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Cham Podemos tomar como ejemplo para explicar este mecanismo el esquema presentado en el libro de Silbersch: Galvin y Gagné. Este nos presenta un esquema mintisculo: Un espacio de direccionamiento de 32 bytes (5 bi organizado en 8 paginas de 4 bytes cada una (esto es, la pagina es representada con los 3 bits més significativos la direccién, y el desplazamiento con los 2 bits menos significativos). Ejemplo (minisculo) de paginacién, con un espacio de direccionamiento de 32 bytes y piginas de 4 bytes El proceso que se nos presenta tiene una vision de la memoria como la columna del lado izquierdo: Le parec que existen 4 piginas, y tiene sus datos distribuidos en drden desde la direccién 00000 (0) hasta Ia 01111 (15) aunque en realidad en el sistema éstas se encuentren desordenadas y desperdigadas. Cuando el proceso quiere referirse a la letra f; fo hace indicando la direccién 00101 (5). De esta direccién, los tre bits mas significativos (001, 1 — Y recordemos que para la computadora, lo natural es comenzar a contar por ¢ 0) se refieren a la pagina nimero 1, y los dos bits menos significativos (01, 1) indican al desplazamiento dent de ésta EI MMU verifica en la tabla de paginas, y encuentra que la pagina 1 corresponde al marco niimero 6 (110), po lo que traduce fa direccién Ségica 00101 (5) a la fisica 11001 (26). Podemos ver que la paginacién resulta en una suerte de resolucién de direcciones en tiempo de ejecucién, perc con una base distinta para cada una de las paginas. 5 Memoria virtual Lnatiteee Tocnoléglo “Ayacucho” (Carrera: Alita de Sistemas ‘Materia: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambi Varios de los aspectos mencionados en la seccién de paginacién van conformando a lo que conocemos como memoria virtual: Vimos ya que en un sistema que emplea paginacién, un proceso no conoce su direccién en memoria relativa a otros procesos, sino que trabajan con una idealizacién de la memoria, en ta cual ocupan ef espacio completo de direccionamiento, desde el cero hasta el limite légivo de la arquitectura, independientemente Gel tamaiio fisico de fa memoria disponible. Y si bien el modelo mencionado de paginacién nos llev6 a que los diferentes procesos pueden compartir regiones de memoria y direccionar mas memoria de la fisicamente disponible, no abordamos qué estrategia se empicaria cuando el total de paginas solicitadas por todos los procesos activos en el sistema superara ol total de espacio fisico. Es ahi donde entra en juego la memoria virtual: Para oftecer a los procesos mayor espacio en memoria del que existe fisicamente, el sistema emplea espacio en almacenamiento secundario (tipicamente, disco duro), a través de un esquema de intercambio (swap). Almacenamiento secundario oe : a EE a 8] & pagina 4 ‘ marco 5 \ ; marco4 |! pagina 5 ' marco 3 ' mareo 2 }-% pagina 3 marco L | ieee pagina 2 marco 0 | | Memoria | — j pagina 1 = — pagina 0 0 4 fisica | - sp dl Memoria L virtual Mapa de | — memoria a Institute Tecnolbgleo “Ayacnch” Carrere: Aalst de Sistemas ‘Matera: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Cham Esquema general de la memoria, incorporando espacio en almacenamiento secundario, representando la mem Virtual Es importante apuntar que la memoria virtual cs gestionada de forma automdtica y transparente por el siste operative: No hablariamos de memoria virtual, por ejemplo, si un proceso pide explicitamente intercamt determinadas paginas, Puesto de otta manera: Del mismo modo que la segmentacién permitié hacer mucho més cémodo y | al intercambio a través del intercambio parcial, permitiendo que continuara la ejecucién del proceso incluso ¢ ciertos segmentos intercambiados (swappeados) a disco, Ia memoria virtual lo hace atin mas conveniente aumentar la gramularicad del intercambio: Ahora ya no s6lo se enviarin a disco secciones légicas completas proceso (segmentos), sino que podra hacerse pagina por pagina, aumentando muy fuuertemente el rendimie resultante, Veremos que, empleando memoria virtual, de cierto modo la memoria fisica se vuelve si una proyeccién parcial de la memoria légica, potencialmente mucho mayor a ésta. ‘Técnicamente, cuando hablamos de memoria virtual, no nos referirmos ya a un intercambiador (swapper), $i que al paginador. $.1 Paginacion sobre demanda La memoria virtual entra en juego desde la carga misma del proceso. Tomemos en cuenta que casi siemp tenemos eddigo durmiente: Cédigo que sto se emplea eventualmente, como el que responde ante una situacic de excepcién 0 el que se emplea s6lo ante circunstancias particulares (por ejemplo, la exportacién de ¢ documento a determinados formatos, o la verificacién de que no haya tareas pendientes antes de cerrar 1 programa). Y si bien a una computadora le seria imposible ejecutar c6digo que no esté cargado en memoria, cédigo si puede comenzar ejecutarse sin estar completamente en memoria: Basta con haber cargado a pagit donde estan las instrucciones que comenzaremos a seguir. La paginacién sobre demanda significa que, para comenzar a ¢jecular un proceso, el sistema operativ carga sdlamente la porcién necesaria para comenzar la ejecucién, y que a lo largo de la ejecucién de cada un de los procesos, el paginador es flajo:!! Séto carga a memoria las paginas cuando van a set utilizadas, Al emple: un paginador flojo, las paginas que no sean requeridas nunca serén siquiera cargadas a memoria, La estructura empleada por el MMU para implementar un paginador flojo es muy parecida a la descrita al habla del buffer de traducién adelantada: La tabla de paginas incluiré un bit de validez, indicando para cada pagina de Proceso si est presente o no en memoria. Si el proceso intenta emplear una pagina que esté marcada como n valida, esto causa un fallo de pgina, que lleva a que el sistema operativo lo suspenda y traiga a memoria la pagin solicitada: od nate Tocnolépes (Carvers: Analisi de Sistem Maria: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navia Chambt Instrucciones: a ejecutar (procesador) | Carga direccién P2 fe: Vuelve a 1: Referencia _/ intentar la instruccion Tabla de paginas | PL [P2| P3 | Pa (mmuy dirt | - [dirs] - |” 2: Atrapa fallo de pagina ( Sistema >) operativo \ gperative 3: La pagina esté / len almacenamienta ena abla de paginas secundario ae Almacenemiento. secundario ) j | } 4: Carga a un espacio libre de faltante Memoria fisica Pasos que atraviesa fa respuesta a un fall at memoria la pagina ! [ I jo de pagina Inst Tecnoligice “Ayncaeho” ‘Carrera: Aanlita de Sistemas ‘Nacera: TALLER DE SISTEMAS OPERATIVOS Ing. Wendy Navla Chamb) Verifica en ol PCB si esta solicitud corresponde a una pagina que ya ha sido asignada a este proceso. En caso de que fa referencia sea invalida, se termina el proceso. Procede a traer la pagina del disco a 1a memoria, El primer paso es buscar un marco disponible (p ejemplo, a través de una tabla de asignacién de marcos) Solicita al disco la lectura de la pagina en cuestién hacia el marco especificado Una vez que finaliza la lectura de disco, modifica tanto al PCB como al TLB para indicar que la tabla es en memoria. 6. Termina la suspensién del proceso, continuando con la instruccién que desencadend al fallo. El proce puede continnar tal como si la pagina siempre hubiera estado presente en memoria. ype ae Lievando este proceso al extremo, podemos hablar de un sistema de paginacién puramente sobre demanda (pu demand paging): En un sistema asi, ninguna pagina legara al espacio de un proceso sino es a través de un fal de pagina; un proceso, al iniciarse, comienza su ejecucién sin ninguna pagina en memoria, y con el apuntador siguiente instruccién del procesador apuntando a una direccién que no esté en memoria, El sistema operati responde cargando esta primer pagina, y conforme avanza el flujo del programa, el proceso iré ocupando espacio real que empleara

Anda mungkin juga menyukai