Você está na página 1de 14

Soluciones de los ejercicios del tema 3.

- La Jerarqua de Memoria

Ingeniera de Computadores

4.

La memoria virtual

La paginacin y la segmentacin son las tcnicas ms empleadas para implementar la memoria virtual y proporcionar caractersticas como proteccin de memoria, reubicacin de cdigo, etc. Los ejercicios de este apartado se centran en la paginacin, pues es la tcnica ms empleada en la prctica. Adems, la segmentacin se trata en el captulo 2, dedicado a la CPU. Los ejercicios se organizan en los siguientes tipos: Cuestiones en las que el alumno debe responder verdadero o falso a ciertas armaciones relacionadas con los contenidos tericos. Cuestiones en las que el alumno debe desarrollar brevemente un concepto terico. La paginacin en Microsoft Windows. La paginacin en Linux. A lo largo de los ejercicios se emplean las siguientes abreviaturas: ITP. ndice en tabla de pginas. IDP. ndice en directorio de pginas. ETP. Entrada en tabla de pginas. EDP. Entrada en directorio de pginas. J 33. Indica cul o cules de las siguientes armaciones son CIERTAS. Contesta NINGUNA si crees que ninguna lo es. A) Aunque la proteccin de memoria se puede implementar utilizando paginacin, habitualmente se utiliza la segmentacin en los sistemas operativos modernos. B) La gestin de la memoria por parte del sistema operativo empleando la tcnica de paginacin es ms simple que empleando la tcnica de segmentacin. C) La mayor parte de sistemas operativos multitarea modernos utilizan tablas de pginas de dos o tres niveles. D) Las direcciones virtuales en las que se almacenan las tablas de pginas estn predenidas en la arquitectura IA-32. Por lo tanto cualquier sistema operativo implementado sobre esta arquitectura tiene las tablas de pginas ubicadas en las mismas posiciones de memoria. E) La comparticin de pginas de memoria entre dos tareas exige que las direcciones fsicas asociadas a las pginas a compartir sean las mismas en ambas. F) Bajo la tcnica de paginacin, el tamao de la pgina virtual y el marco de pgina son distintos, dependiendo sus tamaos de los bits utilizados para expresar el nmero de pgina virtual y marco de pgina respectivamente. B, C y E J 34. Indica cul o cules de las siguientes armaciones relativas al TLB son CIERTAS. Contesta NINGUNA si crees que ninguna lo es. A) El TLB almacena las pginas de memoria accedidas ms recientemente. B) El TLB es una memoria cache que emplea tpicamente una estrategia de correspondencia totalmente asociativa. C) El TLB suele estar ubicado en memoria, en un rango de direcciones reservado al sistema operativo. D) Las entradas del TLB marcadas como globales son vlidas para todas las tareas del sistema. E) El rendimiento proporcionado por el TLB es independiente de la forma en como se pueda acceder a la memoria cache de propsito general. ByD 28

Ingeniera de Computadores

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

J 35. Indica cul o cules de las siguientes armaciones relativas al TLB son CIERTAS. Contesta NINGUNA si crees que ninguna lo es. A) El uso de tablas de pginas permite aportar proteccin en los accesos a memoria, ya que es posible utilizar una tabla de pginas para cada tarea e incorporar en cada entrada bits de control de acceso. B) La estrategia de memoria virtual basada en paginacin tiene como ventaja la simplicidad en la gestin de la memoria, aunque tiene el inconveniente de que produce una gran fragmentacin en la memoria. C) El acceso a zonas de memoria compartida se consigue haciendo que el S.O. modique las entradas adecuadas de las tablas de pginas de ambas tareas, para que apunten a la misma zona de memoria virtual. D) El nmero de bits asociado al campo desplazamiento de la direccin virtual, es el mismo que el asociado al campo desplazamiento de la direccin fsica. E) Cuando se desconecta la paginacin en la arquitectura IA-32, la proteccin de memoria debe proporcionarla la segmentacin. F) La ventaja de las tablas de pginas en dos o ms niveles que presentan las arquitecturas modernas, tienen como principal ventaja la rapidez de acceso. A, D y E J 36. Responde a las siguientes preguntas relativas a la tabla de pginas utilizadas por los sistemas operativos modernos como Windows y Linux. En la prctica, sistemas operativos como Linux y Windows emplean pginas de 4 MBytes para almacenar el sistema operativo. De qu manera ayuda a mejorar el rendimiento del sistema el empleo de pginas de 4 MBytes? El empleo de pginas de 4 MBytes para el sistema operativo permite que el nmero de entradas en el TLB dedicadas a ste sea mucho menor, quedando ms entradas para las tareas, mejorando sensiblemente la tasa de aciertos del TLB para las tareas. Adems el desperdicio de memoria empleando pginas de 4 MBytes es muy bajo para el sistema operativo, debido al gran tamao de sus componentes en relacin al tamao de pgina. Tanto Windows como Linux emplean tablas de pginas de varios niveles. Podras explicar cul es la razn? El empleo de una tabla de pginas de varios niveles permite ahorrar memoria, pues no es necesario que toda la tabla de pginas est en memoria fsica, pudiendo estar parte en el disco. nicamente es necesario que est en memoria fsica el primero de los niveles, que determina si el resto est ubicado en memoria fsica tambin o en el disco.

J 37. Un computador usa direcciones virtuales de 32 bits, un tamao de pgina de 4 Kbytes y se direcciona al byte. En este computador, cada entrada de la tabla de pginas tiene los siguientes campos:
15 14 13 12 11 0

Marco de pgina No usado (siempre a 0) Bit U/S (Usuario/Supervisor) Bit L/E (Lectura/Lectura y escritura) Bit de presencia

En un momento dado, las tablas de pginas correspondientes a dos tareas son las mostradas en las guras adjuntas. Adems, el S.O. empleado en este computador establece las pginas de cdigo como slo lectura y las de datos como lectura y escritura. 29

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria


L/E 1 0 0 0 0 0 1 0 1 0 0 U/S 1 1 1 1 1 0 0 0 0 0 0

Ingeniera de Computadores

Pre 0 0100 0 0101 0 0102 0 7000 0 7001 0 7002 Tarea 1 A 0001 A 0002 A 0003 C 2000 C 2001 1 1 0 0 0 1 1 1 0 0 0

... ... ... ... ...

Marco 014h 070h 071h Despl. X Despl. Y Invlido Tarea 2 14Fh 150h Despl. Z Invlido Invlido 0 0100 0 0201 0 0202 0 5004 0 5005 0 5006 A 0001 A 0002 A 0003 C 2000 C 2001

Pre 1 1 1 1 0 0 1 1 0 0 0

L/E 1 0 0 0 0 0 1 0 1 0 0

... 1 ... ... ... ... ...


0 0 0 0 0 1 1 0 1 1

U/S

Marco 025h 070h 085h A2Fh Despl. W Invlido 14Fh 150h Despl. Z Invlido Invlido

Considerando que todas las entradas no mostradas son invlidas, se pide responder a las siguientes preguntas: Cul es el tamao del espacio de direcciones fsicas de este computador con este esquema de direcciones virtuales? 12 + 12 = 24 bits 224 = 16 Mbytes Cuntas pginas constituyen el working set o conjunto de trabajo de cada tarea? Tarea 1 = 3 No se consideran marcos del S.O., es decir, Pre = 1 y U/S = 1 Tarea 2 = 4 Tienen las tareas alguna pgina de datos de usuario compartida? La 070h, No de marco igual en ambas tablas y bit U/S = 1

Cul es el rango de direcciones de memoria fsica compartido por el S. O. en ambas tareas? Pginas comunes del S. O., Rango 14F 000h 150 FFFh

Qu suceder si la Tarea 2 trata de acceder a la direccin C200 0346h? Pgina virtual = C2000 Asignacin de marco invlido. EXCEPCIN Escribe una direccin virtual correspondiente a la tarea 1 y nivel de usuario que produzca fallo de pgina recuperable. Rango 0700 0000h 0700 1FFFh

Qu suceder si la tarea 2 trata de acceder a la direccin A000 104Fh? Se produce una excepcin por el intento de acceder a una direccin privilegiada. Slo el sistema operativo puede acceder a esa posicin. Cul es el valor de la entrada en la tabla de pginas de la pgina 00102h de la tarea 1? A071h (Bits 1 0 1 0 y Marco 071h 30

Ingeniera de Computadores

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Cunto ocupa la tabla de pginas de la tarea 1 en memoria? Responde en bytes. 220 2 = 2 MBytes

J 38. Sobre un sistema operativo de 32 bits implementado en un PC se ha realizado una tarea programada en C, la cual contiene el siguiente fragmento de cdigo: double *pdato; pdato = ReqMemory("/mem", 500000); La primera instruccin dene un puntero a carcter, mientras que la segunda pide al sistema operativo un rea de memoria de 500.000 bytes asociados al identicador /mem. La funcin ReqMemory() devuelve la direccin virtual de comienzo asociada al rea de memoria recibida. Nota: 500.000d = 7 A120h. Cualquier otra tarea que desee compartir el rea de memoria solicitada debera llamar a la funcin ReqMemory() con los mismos parmetros. Se sabe que la direccin almacenada en pdato toma el valor 5FA8 0000h nada ms ejecutar la instruccin pdato = ReqMemory("/mem", 500000); y que tiene asociadas las siguientes entradas en el directorio de pginas y tabla de pginas: EDP = A382 2345h; ETP = 0359 6283h.

Se sabe adems que la direccin fsica asociada a la primera entrada del directorio de pginas de la tarea es 35FD A258h durante su ejecucin. Cul es el rango de direcciones virtuales asociado al rea de memoria proporcionado por el sistema operativo? 5FA8 0000h 5FAF A11Fh Dir Inicial + tamao - 1 Cuntas pginas de memoria de 4 KBytes ocupa la memoria solicitada? 123 pginas Al escribir en una de las pginas anteriores se produce un fallo de pgina. Cmo ser el fallo de pgina, recuperable o no recuperable? Por qu? El fallo ser recuperable, pues al haber concedido el sistema operativo la memoria solicitada, si sta no est en la memoria fsica tiene que estar asignada en el archivo de paginacin.

Cul es el rango de direcciones fsicas que ocupa la zona de memoria reservada? Si no es posible conocerlo indica el porqu. En principio, slo se podra conocer el rango de la primera de las pginas, pues es de la que tenemos su ETP. La primera pgina cubre: 0359 6000h - 0359 6FFFh.

En qu marco se almacenar el directorio de pginas? 35FDAh 31

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Ingeniera de Computadores

Podra estar el directorio de pginas en el archivo de paginacin mientras se est ejecutando la tarea? Por qu? No. En la arquitectura IA-32 el directorio de pginas de cualquier tarea debe estar en memoria durante su ejecucin para permitir la traduccin de las direcciones de la tarea en ejecucin y del sistema operativo.

Qu rango de direcciones virtuales tiene asociado la ltima pgina virtual del rea de memoria concedida por el operativo? Si no es posible determinarlo con la informacin disponible, indica qu dato necesitaras conocer. 5FAF A000h 5FAF AFFFh

Con una entrada en el directorio de pginas ser suciente para cubrir el rango de direcciones virtuales del rea de memoria concedida? Por qu? S, ser suciente. Con una EDP podemos cubrir un rea de 4 MBytes, mayor que los 500.000 bytes asociados al rea de memoria. Adems, tanto la direccin de comienzo como de nal del rango tienen el mismo IDP. Otra tarea del sistema, que se ejecuta a la vez que la anterior, se obtiene tras compilar otro programa C, que incluye el siguiente fragmento de cdigo: double *qdato; qdato = ReqMemory("/mem", 500000); Por lo tanto, esta nueva tarea comparte con la primera el rea de memoria identicada por "/mem". Cul ser el rango de direcciones virtuales asociado al rea de memoria que recibe esta ltima? Si no es posible determinarlo, indica la razn. No es posible determinarlo, pues no tiene por qu coincidir con el rango de direcciones virtuales para la otra tarea. Necesitaramos conocer, por ejemplo, la direccin que se almacena en qdato tras la ejecucin de la instruccin qdato = ReqMemory..... .

Cul ser el rango de direcciones fsicas asociado a la primera pgina de memoria que recibe la segunda tarea tras la solicitud de memoria? El rango de direcciones fsicas ser el mismo que en el caso de la primera tarea y por lo tanto toma el valor 0359 6000h 0359 6FFFh.

J 39. Si se considera un computador con un mecanismo de paginacin idntico al de la arquitectura IA-32, es decir, pginas de 4 KBytes y tabla de traduccin de doble nivel. En este computador, cul sera el mnimo nmero de tablas de pginas (contando las de primer y segundo nivel) que necesitara una tarea cuyo espacio de direcciones virtuales es de 15 MBytes?
3,840 pginas = 3,840 pginas 1,024 pginas por tabla = 3,75 4 tablas de segundo nivel 4 tablas de segundo nivel + 1 de primer nivel = 5 151,024 KB 4 KB

32

Ingeniera de Computadores

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

J 40. Sobre un PC con Linux se ha realizado un programa en C cuyo cdigo se indica a continuacin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

# i n c l u d e < s t d i o . h> # i n c l u d e < s t d l i b . h> void pide_memoria_al_so ( s i z e _ t nbytes ) ; char g l o b a l ; i n t main ( v o i d ) { char c h a r _ p t r ; s i z e _ t nbytes = 11000; char m a i n _ p t r ; m a i n _ p t r = ( char ) main ; g l o b a l = A ; c h a r _ p t r = A ; c h a r _ p t r = ( char ) m a l l o c ( n b y t e s ) ; c h a r _ p t r = A ; ( c h a r _ p t r + 9 9 9 9 ) = A ; free ( char_ptr ) ; m a i n _ p t r = A ; c h a r _ p t r = ( char ) p i d e _ m e m o r i a _ a l _ s o ( 4 4 0 9 6 ) ; c h a r _ p t r = A ; }

En este programa se prueba entre otras cosas la funcin malloc(). Esta funcin asigna, procedente del montn (heap), el nmero de bytes indicado en el parmetro de llamada, devolviendo la direccin de comienzo de dicho rea de memoria en caso de xito. Asociada a la funcin malloc() se tiene la funcin free(), que libera la memoria asignada a partir de la direccin indicada por su parmetro. El proceso de asignacin y liberacin dinmica de memoria empleando estas funciones se lleva a cabo en una librera del programa que habitualmente no requiere llamadas a servicios del sistema operativo. Cul es la ventaja de rutinas de asignacin dinmica como malloc() que no requieren llamadas a servicios del sistema operativo? La ventaja es que tienen un rendimiento mucho mayor. Durante la llamada a cualquier servicio del operativo es necesario llevar a cabo muchas operaciones antes y despus del cuerpo del servicio. Por ejemplo, es necesario guardar el estado completo de la tarea para restaurarlo ms adelante. Al nal del programa anterior aparece la funcin pide_memoria_al_so(), con la cual se pide memoria de forma dinmica al sistema operativo llamando internamente al servicio mmap(). En caso de xito, el sistema operativo asigna una cantidad igual a la solicitada en el archivo de paginacin. Suponiendo que las llamadas a las funciones malloc(), free() y pide_memoria_al_so() se ejecutan con xito, indica en el cuadro siguiente el nmero de lnea de todas las instrucciones que producen un fallo de pgina e indica si el fallo es recuperable o no. Lnea 16 -> Fallo no recuperable Lnea 21 -> Fallo no recuperable Lnea 23 -> Fallo recuperable

J 41. Se considera un computador que usa direcciones virtuales de 32 bits y tamao de pgina de 16 KB. Se desea saber: Cul es reparto de bits de la direccin virtual? 18 bits campo pgina virtual y 14 bits campo desplazamiento 33

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Ingeniera de Computadores

Si el computador emplea una tabla de pginas de un nivel, cuntas entradas como mximo tendr dicha tabla de pginas? 218 = 262,144, tantas como nmero de pginas virtuales posibles

Si se considera el siguiente fragmento de cdigo: int a[900000]; int i; for (i = 1; i < 650000; i++) { a[i] = a[i-1] + 5; } Si adems se supone que no hay ninguna pgina en memoria fsica, y que tanto datos como instrucciones estn almacenados en pginas distintas, calcular el nmero de fallos de pgina que se produciran cuando se ejecuta este fragmento de cdigo? = 158, 69 159 159 pginas para datos + 1 para cdigo = 360 fallos de pgina
650,0004 bytes de datos 16,384 bytes por pgina

J 42. Se considera un computador con direccionamiento al byte, que trabaja con direcciones virtuales de 32 bits y dispone de 2 GByte de memoria fsica. El computador utiliza tablas de pginas de un nico nivel, y cada entrada de la tabla de pginas tiene un tamao de 4 bytes. En este computador, el mayor tamao de la tabla de pginas que una tarea puede tener es de 1 MBytes. Teniendo en cuenta toda la informacin previa, contestar: Cul es el tamao de memoria virtual que puede direccionar este computador? 232 = 4 GBytes

Cuntas pginas de memoria virtual diferentes puede tener? Tamao de tabla/4 bytes por entrada = No Entradas No pag. virtuales = 218 = 262.144

Cul es el tamao del marco de pgina? 18 bits para la pgina virtual y 14 para el desplazamiento 214 = 16 KBytes

Cuntos marcos de pgina tiene la memoria principal? 2 GBytes / 16 KBytes = 231 /214 = 217 = 131072 marcos

Cul es el nmero mximo de marcos de pgina posibles en este computador? 218 = 262.144, tantos como pginas virtuales

34

Ingeniera de Computadores

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

J 43. Se tiene una arquitectura de 16 bits que utiliza memoria virtual paginada. Tanto las direcciones virtuales como las direcciones fsicas son de 16 bits, y la palabra de memoria de 8 bits. Para convertir una direccin virtual a una direccin fsica se utiliza la misma tcnica que la arquitectura IA-32, es decir, doble nivel de traduccin mediante directorio de pginas y tabla de pginas, siendo la interpretacin de una direccin virtual como se indica en la gura:
15 11 10 6 5 0

IDP

ITP

Desplazamiento

Las entradas de la tabla de pginas y del directorio de pginas son tambin de 16 bits. La interpretacin de estos bits es la siguiente:
15 6 5 3 2 1 0

Marco/Desplaz.

Sin uso

A D P

Donde A = "bit de acceso", D = "bit dirty P = "bit de presencia". Los bits 3 a 5 no tienen ningn signicado asociado, por lo que el sistema operativo puede usarlos con total libertad. Se conoce la siguiente informacin relativa a una variable: Dir. Virtual de la variable: 08CFh Contenido de la ETP de la variable: 0F40h Contenido de la EDP de la variable: 7841h Dir. Fsica de la EDP de la variable: 77C2h Las expresiones que proporcionan las direcciones virtuales de la ETP y de la EDP asociadas a una pgina virtual son: Dir. virtual ETP = 8000h + Pag. Virtual 2 Dir. virtual EDP = 8400h + IDP 2 Donde IDP es el ndice en el directorio de pginas. A partir de la informacin anterior, debes responder a las siguientes preguntas: Cul es el tamao de la pgina en esta arquitectura? Responder en bytes. 26 = 64 bytes En qu direccin fsica se almacena la variable? NINGUNA Hay un fallo de pgina en la ETP
2

Cul es la direccin virtual de la ETP de la variable? 8046h

Cul es la direccin fsica de la ETP de la variable? 7846h 35

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Ingeniera de Computadores

Direccin virtual de la EDP de la variable? 8402h

En qu rango de direcciones fsicas se almacena la tabla de pginas que incluye la ETP de la variable? 7840h 787Fh

Cul es el marco de pgina que almacena el directorio de pginas de la tarea? 1DFh

Cul es el nmero de pgina virtual de la variable? 023h

J 44. Se dispone de una CPU que trabaja con direcciones virtuales de 32 bits y direcciones fsicas de 20 bits. Se sabe, tambin, que el tamao de las pginas virtuales es 16 KB y que cada direccin representa dos bytes. Para implementar el sistema de traduccin de direcciones virtuales a fsicas se utiliza paginacin de un solo nivel. Cada ETP contiene una serie de campos: Marco/Desplaz. Indica el marco de memoria fsica o el desplazamiento en el archivo de paginacin asociado a la pgina virtual. Un desplazamiento igual a cero hace referencia a una pgina que no tiene asociada ni memoria ni espacio en el archivo de paginacin. L/E. Cuando est a uno se trata de una pgina virtual de slo lectura. En caso contrario es de lectura y escritura. U/S. Cuando est a uno se trata de una pgina de usuario. En caso contrario se trata de una pgina de supervisor. P. Bit de presencia, a uno cuando la pgina virtual tiene asociado un marco de pgina. Se pide rellenar los huecos que se corresponden con entradas en la tabla de pginas para las siguientes direcciones virtuales, sealando con X los datos que no puedan conocerse: Variable de un programa de usuario ubicada en la direccin virtual 3FA7 9B30h y cuya direccin fsica asociada es 7 AB30h
Pgina virtual 3FA79h Marco/Despl. 7Ah L/E 0 U/S 1 P 1

Instruccin del S.O. ubicada en la direccin virtual B502 C785h y cuya pgina virtual se encuentra en el desplazamiento Y en el disco.
Pgina virtual B502Ch Marco/Despl. Despl. Y L/E 1 U/S 0 P 0

Dato en la pila de un programa de usuario en la direccin virtual 78F6 0901h y cuya direccin fsica asociada es F C901h. 36

Ingeniera de Computadores

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Pgina virtual 78F60h

Marco/Despl. FCh

L/E 0

U/S 1

P 1

Entrada en la tabla de pginas de una tarea de usuario ubicada en la direccin C023 009Bh y con direccin fsica asociada 1 6BF3h.
Pgina virtual C0230h Marco/Despl. 16h L/E 0 U/S 0 P 1

J 45. Se ha realizado un programa que se ejecuta sobre un PC con un sistema operativo Microsoft Windows, el cual proporciona: La direccin virtual, la pgina virtual, la direccin fsica y el contenido de una variable del programa. La direccin virtual, direccin fsica y contenido de la entrada en la tabla de pginas (ETP) asociada a la pgina virtual de la variable. La direccin virtual, direccin fsica y contenido de la entrada en el directorio de pginas (EDP) asociada a la pgina virtual de la variable.
Dir. virtual Pag. virtual Dir. fisica Contenido = = = = 0045 60C8h ???? ?h 809C 3???h 5834 A478h

Dir. virtual de ETP = ???? ????h Dir. fisica de ETP = 056B 8???h Contenido de ETP = ???? ?067h Dir. virtual de EDP = ???? ????h Dir. fisica de EDP = 0176 B???h Contenido de EDP = ???? ?067h

Figura 7: Resultado de la ejecucin del programa del problema 45. La gura 7 muestra el resultado de una ejecucin de dicho programa, donde se han ocultado algunos resultados usando smbolos ????. La razn es que estos resultados pueden deducirse a partir de otros mostrados. A continuacin se indican las expresiones que proporcionan las direcciones virtuales de la ETP y de la EDP asociadas a una pgina virtual3 . Dir. virtual ETP = C000 0000h + Pag. Virtual 4. Dir. virtual EDP = C030 0000h + IDP 4. El bit de presencia de una ETP y EDP es el bit menos signicativo. A partir de la informacin anterior y suponiendo que todas las pginas son de tamao 4 KBytes, debes responder a las siguientes preguntas: En qu direccin fsica se almacena la variable? 809C 30C8h
3 Estas

expresiones son vlidas para las versiones del sistema operativo Microsoft Windows XP previas al Service Pack 3.

37

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Ingeniera de Computadores

En qu direccin virtual se almacena la ETP de la variable? C000 1158h Qu valor toma la ETP asociada a la variable? 809C 3067h Qu marco de pgina almacena el directorio de pginas de la tarea? Si crees que no existe dicho marco responde NINGUNO. 0 176Bh Cul es el rango de direcciones fsicas asignado al directorio de pginas de la tarea? Contesta INDEFINIDO si no es posible determinarlo. En caso contrario responde con el formato xxxxxxxxhyyyyyyyyh. 0176 B000h 0176 BFFFh En qu rango de direcciones fsicas se almacena la tabla de pginas que contiene la ETP de la variable? Si crees que no est en memoria responde NINGUNO. En caso contrario responde con el formato xxxxxxxxh-yyyyyyyyh. 056B 8000h 056B 8FFFh Pueden cambiar entre diferentes ejecuciones del programa las direcciones virtual y fsica de la ETP y EDP de la variable? Por qu? La direccin virtual de la ETP y la EDP no puede cambiar, pues est prejada por el sistema operativo, de acuerdo a las frmulas dadas. Por el contrario, la direccin fsica puede cambiar en cada nuevo proceso de carga, pues el sistema operativo puede ubicar el programa en diferentes posiciones en la memoria fsica. Pueden cambiar entre diferentes ejecuciones del programa las direcciones virtual y fsica de la variable? Por qu? La direccin virtual de la variable no puede cambiar, pues la jan las herramientas de desarrollo y no el SO. Por el contrario, la direccin fsica puede cambiar en cada nuevo proceso de carga, pues el SO puede ubicar el programa en diferentes posiciones en la memoria fsica.

J 46. La gura 8 muestra parte de un volcado a chero de la informacin de las pginas virtuales actualmente en memoria fsica para una tarea ejecutando en Linux. Las direcciones virtuales y fsicas estn relacionadas mediante la siguiente expresin: Dir. virtual = PAGE_OFFSET + Dir. fsica PAGE_OFFSET = C000 0000h Responde a las siguientes preguntas basndote en la informacin proporcionada. Qu valor toman los campos IDP e ITP correspondientes a la primera instruccin de la funcin main? Responde en hexadecimal. IDP = 20h; ITP = 48h 38

Ingeniera de Computadores

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Dir. virtual de var. global = 0804B060h Dir. virtual de main() = 080487D4h Dir. virtual de EDP = CAC8D080h; Dir. virtual de ETP = CACB6120h; Pag. Virtual EDP -------- -- -08048h 0ACB6067h 08049h 0ACB6067h 0804Ah 0ACB6067h 0804Bh 0ACB6067h 08A1Ah 0AC88067h B7ECAh 0AC8B067h B7ECBh 0AC8B067h B7ECCh 0AC8B067h ETP 0A225025h 09FE1025h 0FD8A065h 0CF74067h 098E0067h 098E8067h 3F535025h 3F52D025h

-------- -- -302h 008001E3h -----303h 00C001E3h -----304h 010001E3h -----305h 014001E3h -----306h 018001E3h -----307h 01C001E3h -----F88DAh 37815067h 3D9EE163h F88DBh 37815067h 3D9EF163h F88DCh 37815067h 3D9F0163h F88DDh 37815067h 3D9F1163h F88DEh 37815067h 3D9F2163h

Figura 8: Resultado de la ejecucin del programa del problema 46. Qu valores toman las entradas EDP y ETP para la primera instruccin de la funcin main? EDP = 0ACB 6067h; ETP = 0A22 5025h

Cul es la direccin fsica asociada a la primera instruccin de la funcin main? 0A22 57D4h

En qu rango de direcciones virtuales se almacena el directorio de pginas de la tarea? CAC8 D000h CAC8 DFFFh

En qu rango de direcciones fsicas se almacena el directorio de pginas de la tarea? 0AC8 D000h 0AC8 DFFFh

En qu rango de direcciones fsicas se almacena la tabla de pginas asociada a la primera instruccin de la funcin main? 0ACB 6000h 0ACB 6FFFh 39

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

Ingeniera de Computadores

Dir. virtual Pag. virtual Dir. fisica Contenido

= = = =

0628 F4A0h ? ????h 41A2 4???h 1234 5678h

Dir. virtual de ETP = EA21 0???h Dir. fisica de ETP = ???? ????h Contenido de ETP = ???? ?067h Dir. virtual de EDP = EB10 F???h Dir. fisica de EDP = ???? ????h Contenido de EDP = ???? ?067h

Figura 9: Resultado de la ejecucin del programa del problema 47. Qu rango de direcciones fsicas ocupa la pgina 302h? 0080 0000h 00BF FFFFh

Podra leer la tarea de una posicin de la pgina 307h? Por qu? No podra, pues la pgina se encuentra dentro de los 2 Gbytes de memoria ms altos, reservados para el sistema operativo.

Cul es el motivo de que existan muchas EDP repetidas? La razn es que muchas pginas virtuales tienen asociadas el mismo IDP, por lo que les corresponde la misma EDP. En total, 1024 pginas tienen la misma EDP.

J 47. Se ha instalado una versin de Linux de 32 bits sobre un PC. Sobre este sistema se ha realizado un programa en el cual se vuelca a chero la siguiente informacin relativa a la tarea en ejecucin: La direccin virtual, la pgina virtual, la direccin fsica y el contenido de una variable del programa. La direccin virtual, direccin fsica y contenido de la entrada en la tabla de pginas (ETP) asociada a la pgina virtual de la variable. La direccin virtual, direccin fsica y contenido de la entrada en el directorio de pginas (EDP) asociada a la pgina virtual de la variable. La gura 9 muestra el resultado de una ejecucin de dicho programa, donde se han ocultado algunos resultados usando smbolos ????. La razn es que estos resultados pueden deducirse a partir de otros mostrados. Como dato adicional se sabe que el directorio de pginas de la tarea se almacena en el marco de pgina 2B10Fh. Una de las caractersticas de Linux es que para las direcciones virtuales asociadas al sistema operativo se cumple: Dir Fsica = Dir virtual - PAGE_OFFSET donde PAGE_OFFSET es una constante. A partir de la informacin anterior y suponiendo que todas las pginas son de tamao 4 KBytes, debes responder a las siguientes preguntas: 40

Ingeniera de Computadores

Soluciones de los ejercicios del tema 3.- La Jerarqua de Memoria

El valor de la constante PAGE_OFFSET es C000 0000h Cmo se puede obtener a partir de la informacin suministrada? Restamos a la direccin virtual de la primera entrada del Directorio de pginas (desplazamiento 0) la direccin fsica de la mima primera entrada, marco del directorio de pginas y desplazamiento nulo): EB10 F000h - 2B10 F000h = C000 0000h

Cul es el ndice en el directorio de pginas de la variable? Responde en hexadecimal. 18h Cul es el ndice en la tabla de pginas de la variable? Responde en hexadecimal. 28Fh En qu marco de pgina se almacena la variable? 4 1A24h Cul es la direccin virtual de la ETP de la variable? EA21 0A3Ch En qu rango de direcciones fsicas se almacena la ETP de la variable? 2A21 0A3Ch 2A21 0A3Fh Cul es el rango de direcciones fsicas asignado al directorio de pginas de la tarea? 2B10 F000h 2B10 FFFFh En qu rango de direcciones virtuales se almacena la EDP de la variable? EB10 F060h EB10 F063h En el caso de Linux, crees que es posible ubicar el directorio de pginas y las tablas de pginas en direcciones virtuales jas al igual que ocurre con Microsoft Windows? Por qu? No. El directorio de pginas y las tablas de pginas se encuentran en el rango de direcciones virtuales asociado al sistema operativo. Si estas tablas estuviesen ubicadas en las mismas direcciones virtuales para todas las tareas, se solaparan en el espacio de direcciones fsicas.

41

Você também pode gostar