Resumen Sistemas Operativos Silberchatz Capítulo 8: Memoria Principal Hardware Bsico: Respecto a la velocidad: !as "nicas reas de almacenamiento en la #ue el CP$ puede acceder directamente son la memoria principal % los re&istros internos del propio procesador' Ha% instrucciones de m#uina #ue toman como ar&umentos direcciones de memoria( pero no e)iste nin&una instrucci*n #ue acepte direcciones de disco' Por eso( todas las instrucciones % los datos utilizados deben estar en al&uno de esos dispositivos de almacenamientos( si los datos no se encuentran en memoria( debern llevarse hasta allí antes de #ue la CP$ pueda operar con ellos' +ebido al costo de tiempo #ue lleva acceder a la memoria principal( para obtener las instrucciones % los datos( se utiliza b",er intermedio llamado memoria caché' Respecto a la protecci*n: +ebemos ase&urar #ue cada proceso ten&a un espacio de memoria separado( para hacer esto( debemos poder determinar el ran&o de direcciones le&ales( mediante dos re&istros:base % límite( el primero almacena la direcci*n de memoria ,ísica le&al ms pe#ue-a % el se&undo especi.ca el tama-o del ran&o' Por e/emplo: si el re&istro base contiene el valor 011121 % el re&istro límite es 341511' 6ntonces el pro&rama podr acceder le&almente a todas las direcciones comprendidas entre 011121 % 241521 7011121 3415119' !a protecci*n del espacio de memoria se consi&ue haciendo #ue el hardware de la CPU 7el sistema operativo no puede llevar a cabo la protecci*n9 comparte todas las direcciones &eneradas en modo usuario con el contenido de esos re&istros' Cual#uier intento( por parte de un pro&rama #ue se est e/ecutando en modo usuario( de acceder a la memoria del sistema operativo o a la memoria de otros usuarios har #ue se produzca una interrupci*n hacia el sistema operativo'
!os dos re&istros solo pueden ser car&ados por el sistema operativo( #ue utiliza una instrucci*n privile&iada especial 7en modo ;ernel9' 6ste es#uema permite al SO modi.car el valor de los re&istros( % evita #ue los pro&ramas de usuario cambien el contenido de esos re&istros'
Reasi&naci*n de direcciones: Para #ue un pro&rama pueda e/ecutarse( este deber ser car&ado en memoria % colocado dentro de un proceso' !os procesos del disco #ue estn esperando a ser car&ados en memoria para su e/ecuci*n ,orman lo #ue se denominacola de entrada' 6l procedimiento normal consiste en seleccionar uno de los procesos de la cola de entrada % car&ar dicho proceso en memoria' $na vez #ue termina su e/ecuci*n( el espacio ser declarado como disponible' !as direcciones de los pro&ramas pueden representarse de di,erentes ,ormas % puede realizarse en cual#uier de estos pasos:
•
reasi&naci*n hasta el un instante de laespecial' e/ecuci*n' 6n este caso en especial( se necesita hardware
6spacios de direcciones l*&ico % ,ísico:
$na direcci*n &enerada por la CP$ se denomina com"nmente dirección lógica( mientras #ue una direcci*n vista por la unidad de memoria 7es decir( la #ue se car&a en elregistro de direcciones de memoria de la memoria9 se denomina com"nmente dirección física' !os mtodos de reasi&naci*n en tiempo de compilaci*n % en tiempo de car&a &eneran direcciones l*&icas ,ísicas idnticas' Sin embar&o( el es#uema de reasi&naci*n de %direcciones en tiempo de e/ecuci*n hace #ue las direcciones l*&icas % ,ísicas di.eran' 6n este caso( usualmente decimos #ue la direcci*n l*&ica es una dirección virtual' !a correspondencia entre direcciones virtuales % ,ísicas en tiempo de e/ecuci*n es establecida por un dispositivo hardware #ue se denomina MMU 7memor%=mana&ement unit9' 6l pro&rama de usuario nunca ve las direcciones ,ísicas reales' 6ste mane/a las direcciones l*&icas ( % el hardware de conversi*n 7mapeo9 de memoria convierte esas direcciones l*&icas en direcciones ,ísicas'
Car&a dinmica: Como un pro&rama necesita car&arse en la memoria ,ísica para poder e/ecutarse( este puede depender del tama-o del dispositivo de almacenamiento( por lo #ue podemos utilizar un mecanismo denominado car&a dinmica' 6ste mecanismo se en,oca en car&ar solamente las rutinas #ue van a ser invocadas 7todas se ubican en disco en un ,ormato de car&a reubicable9' Cuando una rutina necesita llamar a otra rutina( la rutina #ue realiza la invocaci*n comprueba primero si la otra %areubicable ha sido car&ada( si se no car&ue es así( se el car&ado monta/e para #ue en invoca memoria la rutinade deseada % para #ue actualice las tablas de direcciones del pro&rama con el .n de re>e/ar este cambio' +espus( se pasa el control a la rutina recin car&ada'
?enta/as: •
•
!a venta/a de este mecanismo es #ue una rutina no utilizada no se car&ar nunca en memoria' @o se re#uiere nin&"n soporte especial por parte del sistema operativo' 6s responsabilidad de los usuarios dise-ar sus pro&ramas para poder aprovechar dicho mtodo'
Monta/e dinmico % bibliotecas compartidas:
Al&unos sistemas operativos s*lo permiten el monta/e esttico( mediante el cual las bibliotecas de len&ua/e del sistema se tratan como cual#uier otro m*dulo ob/eto % son inte&radas por el car&ador de len&ua/e del sistema dentro de la ima&en binaria del pro&rama' 6n el monta/e dinmico( se utiliza un stub 7pe#ue-o ,ra&mento de c*di&o #ue indicaoc*mo rutina adecuada de no biblioteca residente c*mo localizar car&ar lalabiblioteca si la rutina est todavía presente9' Cuando se e/ecuta elstub: ste comprueba si la rutina necesaria %a se encuentra en memoria' si no est( el pro&rama car&a en memoria la rutina' •
•
6n cual#uiera de estos dos casos( el stub se sustitu%e así mismo por la direcci*n de la rutina % la e/ecuta' Así( la si&uiente vez #ue se e/ecute ese se&mento de c*di&o concreto( se e/ecutar directamente la rutina de biblioteca( sin tener #ue realizar nuevamente el monta/e dinmico' Con este mecanismo( se puede modi.car una biblioteca por una nueva versi*n % todos los pro&ramas #ue ha&an re,erencia a la biblioteca emplearn automticamente la versi*n ms reciente( este mecanismo se conoce comobibliotecas compartidas. A di,erencia de la car&a dinmica( el monta/e dinmico suele re#uerir al&o de a%uda por parte del sistema operativo'
ntercambio: $n proceso en e/ecuci*n puede ser intercambiado temporalmente para obtener ms memoria( sacndolo de ella % almacenndolo en un almacn de respaldo 7por e/: disco9( para lue&o volver a car&arlos en memoria % así continuar con su e/ecuci*n' @ormalmente un proceso descar&ado se volver a car&ar en el mismo espacio de memoria #ue ocupaba anteriormente' 6sta restricci*n est dictada por el mtodo de reasi&naci*n de las direcciones' Si la reasi&naci*n se realiza en tiempo de ensamblado o en tiempo de car&a( entonces no resulta sencillo mover el proceso a una de ubicaci*n di,erente' 6n problemas cambio( en una reasi&naci*n en tiempo e/ecuci*n no habría por#ue las direcciones ,ísicas se calculan en tiempo de e/ecuci*n'
6l intercambio est restrin&ido por varios ,actores: 6l tiempo #ue se tarda en intercambiar los procesos +ependiendo si el proceso debe operaciones de 6S: se puede realizar dos acciones( una es no descar&ar nunca un proceso #ue deba 6S o e/ecutar "nicamente operaciones con b",eres del SO • •
Asi&naci*n de memoria conti&ua !a memoria principal debe alber&ar tanto el sistema operativo como los diversos procesos de usuario( por lo #ue est usualmente dividida en dos particiones: una para el SO residente 7en la zona ba/a o alta de la memoria( el principal ,actor #ue a,ecta esta decisi*n es la ubicaci*n del vector de interrupciones9 % otra para los procesos de usuario'
Mapeo de memoria % protecci*n: Podemos proporcionar estas características utilizando: •
•
$n re&istro de reubicaci*n: contiene el valor de la direcci*n ,ísica ms pe#ue-a' $n re&istro límite: contiene el ran&o de las direcciones l*&icas'
!a MM$ convertir la direcci*n l*&ica dinmicamente sumndole el valor contenido en el re&istro de reubicaci*n 7direcci*n ,ísica D re&istro límite re&istro de reubicaci*n9' 6s es#uema basado en un re&istro de reubicaci*n constitu%e una ,orma e,ectiva de permitid #ue el tama-o del sistema operativo cambie dinmicamente'
Asi&naci*n de memoria: $no de los mtodos ms simples para asi&nar memoria consiste en dividirla en particiones de tamaño o( donde en cada una entra un proceso' 6l sistema operativo mantiene una tabla #ue indica #u partes de la memoria estn disponibles % cules estn ocupadas' nicialmente( toda la memoria est disponible para losde procesos de usuario % se considera como blo#ue &ran tama-o de memoria disponible( al un #ue"nico se denomina aguero' Cuando lle&a un proceso % necesita memoria( buscamos un a&u/ero lo su.cientemente &rande como para alber&ar este proceso' ncluimos ese proceso en el blo#ue de memoria % declaramos la restante como disponible' 6l sistema operativo debe considerar a cul proceso ele&ir( de la cola de entrada( para asi&narlo a la memoria' 6ste buscar en el con/unto de a&u/eros dispersos en toda la memoria para veri.car si el tama-o puede satis,acer al proceso( en el caso #ue no encuentre un blo#ue( puede esperar a #ue se desocupe uno' Adems( puede reordenar la cola de entrada mediante al&"n al&oritmo de plani.caci*n' Si un proceso libera un blo#ue de memoria( % este "ltimo es ad%acente a otro blo#ue de memoria libre( ambas particiones se unen ,ormando una sola' 6n este punto( el sistema debe puede tener #ue comprobar si ha% procesos esperando a #ue se les asi&ne memoria % si esta nueva memoria liberada % recombinada permite satis,acer las demandas de al&unos de los procesos en espera' 6ste procedimiento constitu%e un caso concreto &eneral de asignación din!mica de espacio dedel problema almacenamiento( #ue se ocupa de c*mo satis,acer una solicitud de tama-o n a partir de una lista de a&u/eros libres'
Soluciones a este problema( mediante al&oritmos de ubicaci*n: Primer A/uste 7Eirst=.t9: se asi&na elprimer a&u/ero #ue sea lo su.cientemente &rande' !a e)ploraci*n puede comenzar desde el principio o en el punto en #ue hubiera terminado la e)ploraci*n anterior' Me/or A/uste 7Best=.t9: Se asi&na el a&u/erom!s pe"ueño #ue ten&a el tama-o su.ciente' +ebemos e)plorar la lista completa 7a menos #ue este ordenada se&"n su tama-o9' •
•
•
•
Peor A/uste 7Forst=.t9: Se asi&na el a&u/ero dema#or tamaño' +e nuevo( debemos e)plorar la lista completa( a menos #ue sta est ordenada por tama-os' Si&uiente a/uste 7@e)t=.t9: se asi&na el a&u/ero ms pr*)imo #ue se encontr* 7el puntero arranca a partir de la "ltima asi&naci*n9'
•
Si la reubicaci*n es esttica % se lleva a cabo en tiempo de ensamblado o en tiempo de car&a(no se puede utilizar el mecanismo de compactaci*n' Si reubicaci*n espuede dinmica % se lleva a cabo en tiempo dela e/ecuci*n( sí se realizar este mecanismo' Ia #ue s*lo re#uerir mover el pro&rama % los datos % lue&o cambiar el re&istro base para re>e/ar la nueva direcci*n base utilizada'
6l al&oritmo de compactaci*n ms simple es la de mover todos los procesos hacia uno de los e)tremos de la memoria( produciendo de esta manera un "nico a&u/ero en el otro e)tremo' Otra posible solución fragmentación es la de no permitir #ue el espacio a deladirecciones l*&icase$terna de los procesos sea conti&uo( lo #ue hace #ue podamos asi&nar memoria ,ísica a un proceso con independencia de d*nde est situada dicha memoria' Ha% dos tcnicas complementarias #ue permiten implementar esta soluci*n: •
Pa&inaci*n: es un es#uema de &esti*n de memoria #ue permite #ue el espacio de direcciones ,ísicas de un proceso no sea conti&uo' !a pa&inaci*n evita el considerable problema de enca/ar ,ra&mentos de memoria de tama-o variable en el almacn de respaldo 7el almacn tambin su,re el problema de la ,ra&mentaci*n( pero con la salvedad de #ue el acceso es mucho ms lento( lo #ue hace #ue la compactaci*n sea imposible9'
Mtodo bsico 6l mtodo bsico para implementar la pa&inaci*n consiste en descomponer la memoria ,ísica en una serie de blo#ues de tama-o ./o denominados marcos %frames&' Cuando ha% #ue e/ecutar un proceso( sus p&inas se car&an desde el almacn de respaldo en los marcos de memoria disponibles' 6l almacn de respaldo est divido en blo#ues de tama-o ./o o
#ue tienen el mismo tama-o #ue los marcos de memoria'
Puesto #ue el sistema operativo &estiona la memoria ,ísica( debe ser consciente de los detalles relativos a la asi&naci*n de la memoria ,ísica: #u marcos han sido asi&nados( #u marcos estn disponibles( cul es el n"mero total de marcos( etc' 6sta
in,ormaci*n se suele mantener en una estructura de datos denominada tabla de marcos' Adems el sistema operativo mantiene una copia de las tablas de p&inas( del contador de instrucciones % de los contenidos de los re&istros de cada proceso 7todo esto sirve para poder traducir las direcciones l*&icas a ,ísicas9 o
Soporte hardware:
!a implementaci*n hardware de la tabla de p&inas puede hacerse de varias maneras( la ms simple es la de implementar la tabla de p&inas como un con/unto de re&istros dedicados' 6l uso de re&istros para la tabla de p&inas resulta satis,actorio si esta tabla es razonablemente pe#ue-a 7e/( 4J entradas9( como las computadoras actuales tienen casi 3 mill*n de entradas( no resulta ,actible utilizar este mtodo' 6n lu&ar de ello( la tabla de p&inas se mantiene en memoria principal( utilizndose un registro base de la tabla de p!ginas para apuntar a la tabla de p&inas' 6l problema de esta tcnica es el tiempo re#uerido para acceder a una ubicaci*n de memoria del usuario 7una soluci*n posible es la de introducir una pe#ue-a cach hardware especial( denominada b'fer de consulta de traducción=
unívocamente cada proceso % se utiliza para proporcionar mecanismos de protecci*n del espacio de direcciones correspondiente a ese proceso' Cuando el
p&ina de al s*lo lectura provocar una interrupci*n hardware sistema operativo' Leneralmente( se suele asociar un bit adicional con cada entrada de la tabla de p&inas: unv!lido+ inv!lido. Cuando se con.&ura este bit como: ?lidoN: la p&ina asociada se encontrar el espacio de direcciones l*&icas del proceso % ser( por tanto( una p&ina le&al' nvlido: la p&ina no se encuentra en el espacio de direcciones l*&icas del proceso'
6l principal problema #ue &enera este es#uema es el de la ,ra&mentaci*n interna' Ia #ue no se aprovecharía todo el ran&o de direcciones #ue o,rece la p&ina 7debido a #ue ha% un determinado ran&o #ue se clasi.ca como invlido % por lo tanto( este no ser utilizado9'
Para este tipo de problemas al&unos sistemas proporcionan mecanismos hardware especiales( en la ,orma de un registro de longitud de la tabla de p!ginas 7P
$na copia del espacio de datos 7una por cada usuario9
6structura de la tabla de p&inas: Al&unas de las tcnicas para estructurar las tablas de p&inas son: 3' Pa&inaci*n err#uica !a ma%oría de los sistemas in,ormticos modernos soportan un &ran espacio de direcciones l*&icas' 6n este tipo de entorno( la propia tabla de p&inas lle&a a ser e)cesivamente &rande' $na soluci*n simple a este problema consiste en dividir la tabla de p&inas en ,ra&mentos ms pe#ue-os % podemos llevar a cabo esta divisi*n de varias ,ormas
distintas' $na de esas ,ormas consiste en utilizar un al&oritmo de pa&inaci*n de dos niveles( en el #ue la propia tabla de p&inas est tambin pa&ina da( este es#uema tambi n se conoce con el nombre de tabla de p&inas con correspondencia 7mapeo9 directa' 4'
el número de página virtual, (2! el valor del marco de página mapeado (3! un punto del siguiente elemento de la lista enlazada.
#l algoritmo unciona de la orma siguiente" al número de página virtual de la dirección virtual se le aplica una unción hash para obtener un valor que se utiliza como $ndice para la tabla hash. #l número de página virtual se compara con el campo % del primer elemen to de la lista enlazada. &i 'a una correspondencia, se utiliza el marco de página correspondiente (campo 2! para ormar la dirección $sica deseada. &i no se produce una correspondencia, se e)ploran las subsiguientes entradas de la lista enlazada 'asta encontrar el correspondiente número de página virtual.
0'
simplemente para controlar el modo en #ue se estn utilizando otras partes de la memoria ,ísica' Para resolver este problema( podemos utili(ar una tabla de p!ginas invertida. !as tablas de p&inas invertidas tienen una entrada por cada marco de la memoria' Cada entrada est compuesta de la direcci*n virtual de la p&ina almacenada en dicha de memoria e inclu%e acercaubicaci*n del proceso #ue poseereal( dicha p&ina'in,ormaci*n Por tanto( en el sistema s*lo habr una "nica tabla de p&inas % esa tabla s*lo tendr una entrada por cada p&ina de memoria ,ísica' +esventa/as: Aun#ue este es#uema permite reducir la cantidad de memoria necesaria para almacenar cada tabla de p&inas( incrementa la cantidad de tiempo necesaria para e)plorar la tabla cuando se produce una re,erencia a una p&ina •
•
•
!os sistemas #ue utilizan tablas de p&inas invertidas tienen di.cultades para implementar el concepto de memoria compartida'
Se&mentaci*n:
!a se&mentaci*n es un es#uema de &esti*n de memoria #ue interpreta a esta como un con/unto de se&mentos de tama-o variable % sin nin&una ordenaci*n especí.ca' $n espacio l*&ico de direcciones es una colecci*n de se&mentos % cada se&mento tiene un nombre % una lon&itud' !as direcciones especi.can tanto el nombre del se&mento como el desplazamiento dentro de ese se&mento' 6l usuario especi.ca( por tanto( cada direcci*n proporcionando dos valores: un nombre de se&mento % un desplazamiento 7en la pa&inaci*n( el usuario especi.caba una "nica direcci*n( #ue el hardware particionaba en un n"mero de p&inas % en un desplazamiento de ,orma invisible para el pro&ramador9' •
Hardware:
Aun#ue el usuario puede ahora hacer re,erencia a los ob/etos del pro&rama utilizando una direcci*n bidimensional( la memoria
,ísica real contin"a siendo( por supuesto( una secuencia unidímensional de b%tes' Por tanto( deberemos de.nir una implementaci*n para mapear 3 direcciones bidimensionales de.nidas por el usuario sobre las direcciones ,ísicas unidimensionales' 6ste mapeo se lleva a cabo mediante una tabla segmentos. Cada entrada de la tabla de se&mentos tiene una dirección base del se&mento % un límite del se&mento' !a direcci*n base del se&mento contiene la direcci*n ,ísica inicial del lu&ar donde el se&mento reside dentro de la memoria( mientras #ue el límite del se&mento especi.ca la lon&itud de ste'