La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1. ? M.P. ¿Su gran restricción? Exigir que un Pi esté entero en M.P. para poder ejecutarse AUn Pi más grande que la M.P. no podrá ejecutarse BSi {Procesos.

Presentaciones similares


Presentación del tema: "1. ? M.P. ¿Su gran restricción? Exigir que un Pi esté entero en M.P. para poder ejecutarse AUn Pi más grande que la M.P. no podrá ejecutarse BSi {Procesos."— Transcripción de la presentación:

1 1

2 ? M.P. ¿Su gran restricción? Exigir que un Pi esté entero en M.P. para poder ejecutarse AUn Pi más grande que la M.P. no podrá ejecutarse BSi {Procesos preparados} aumenta, no cabe en M.P.  Solución CEl intercambio Disco  M.P. es mucho (dos procesos enteros) Compilador:1 Análisis léxico 2 Análisis sintáctico 3 Análisis semántico 4 Generación de código ¿Solución general? Overlays (solapamientos) Trocear 2

3 M.P. Solución  Darle al usuario la sensación de tener una M.P. enorme El Pentium 4 (32 bits de direcciones)  4GB Un PC medio dispone tan sólo de  512MB 8 veces menos M.P. Espacio de dir. del P4 Espacio de Direcciones Reales del PC Teóricamente podemos escribir programas pensando en el Pentium 4 y 4GB ¿ Cómo funciona todo esto ? Arquitectura subyacente M.V. M.P. Tendremos una Memoria Virtual de 4GB y mis programas se ejecutan aunque tenga menos Memoria Principal (512MB) siempre que quepan en la memoria virtual 3

4 MEMORIA VIRTUAL CPU dv Bus Datos M.V. La Memoria Virtual reside físicamente en memoria secundaria M.P. ¡ No caben ! Principio de localidad: Meto en M.P. los trozos que hagan falta para ejecutar Pr y Pv 4

5 CPU dv Bus Datos M.V. M.P. La M.V. se divide en páginas (1000B?) 0 1 2 3 5 6 7 8 9 La M.P. se divide en marcos 028 6000 MMU fallo 9 S.O. ? 9500 7500 6 dr Traducir dv  dr 3000 ¿Cachés? 5

6 Resumiendo: M.V. en disco y gestionado como un sistema de particiones variables (los trozos “granularidad” de M.V. son páginas) Las páginas de M.V. necesarias para que se ejecute un Pi están en la M.P. en cualquiera de sus marcos ¡ Principio de localidad espacial y temporal ! Función de traducción (dv  dr) implementada en Hw ¡ MMU interna vs externa ! Las páginas se intercambian MV  MP (Falta de Página) gracias a la intervención del S.O. ¿ Cómo hacer la traducción dv  dr ? 6

7 Las referencias a memoria se traducen dinámicamente en direcciones físicas, en tiempo de ejecución Un proceso puede ser intercambiado hacia y desde la memoria principal; de forma tal que, éste ocupe regiones diferentes durante su tiempo de ejecución. Un proceso puede dividirse en fragmentos (páginas o segmentos), los cuales no necesitan estar localizados contiguamente en memoria principal. 7

8 Debido a lo anterior: todos los fragmentos de un proceso no necesitan estar cargados en memoria principal durante la ejecución La ejecución puede proceder durante algún tiempo, si la próxima instrucción a ser leída o los próximos datos a ser accedidos, están en un fragmento localizado en la memoria principal 8

9 El SO trae a memoria principal sólo unos pocos fragmentos del programa (incluido el fragmento que contiene el inicio del programa). Cada entrada en la tabla de página/segmento, tiene un bit de presencia que es modificado solamente, sí el fragmento correspondiente está en memoria principal. 9

10 El conjunto residente es la parte del proceso que está en memoria principal Se genera una interrupción (fallo de acceso a memoria), cuando la referencia de memoria es a un fragmento que no está presente en memoria principal. El SO pasa el proceso a un estado de Bloqueado El SO emite una solicitud de I/O (Lectura a disco), para traer a memoria principal el fragmento referenciado. 10

11 Otro proceso es despachado para ejecutarse, mientras tiene lugar la E/S a disco. Se emite una interrupción cuando la E/S a disco se completa Esto causa que el SO ponga el proceso afectado en el estado de Listo 11

12 Se pueden mantener más procesos en memoria principal Sólo se carguen algunos de fragmentos de cada proceso. Con más procesos en memoria principal, es más probable que un proceso esté en el estado Listo en un momento dado. 12

13 Un proceso puede ahora ejecutarse, aún cuando sea más grande que el tamaño de la memoria principal. Incluso es posible usar más bits para las direcciones lógicas, que los bits necesitados para direccionar la memoria física. 13

14 Ejemplo: Se necesitan 16 bits para direccionar una memoria física de 64KB. Si se usa un tamaño de página de 1KB, se necesitan 10 bits para los desplazamientos dentro de una página. Para el número de la página que forma parte de una dirección lógica, se puede usar un número de bits mayor que 6 por ejemplo 22. 14

15 La memoria referenciada por una dirección lógica, se llama memoria virtual Se mantiene en memoria secundaria. Los fragmentos son traídos a memoria principal solamente cuando son necesitados. Para obtener un mejor rendimiento, generalmente se salta el sistema de archivos y la memoria virtual es almacenada en una área especial de disco llamada espacio de intercambio (swap space). 15

16 Por el contrario, la memoria física es la memoria referenciada por una dirección física. Es la localizada en la DRAM La traducción de la dirección lógica a la dirección física es realizada, indexando la tabla apropiada de página/segmento con la ayuda del hardware manipulador de memoria (mecanismo de traducción de direcciones). 16

17 Para poder acomodar tantos procesos como sea posible, solamente unos pocos fragmentos de cada proceso se cargan en memoria principal. Pero la memoria principal puede estar llena. Cuando el SO trae un fragmento, éste debe expulsar de memoria principal otro fragmento 17

18 El SO no debe expulsar un fragmento de un proceso, justo antes de que ese fragmento sea necesitado. Si esto se hace demasiado a menudo, conduce a un fenómeno llamado hiperpaginación (thrashing): El procesador gasta la mayoría de su tiempo intercambiando fragmentos, en lugar de ejecutar instrucciones del usuario. 18

19 Principio de localidad de referencias Las referencias a memoria dentro de un proceso tienden a agruparse. Debido a ello, durante un corto periodo de tiempo, sólo se necesitarán unos pocos fragmentos del proceso Es posible hacer suposiciones inteligentes sobre cuales fragmentos se necesitarán en el futuro Esto sugiere que la memoria virtual puede trabajar eficientemente (la hiperpaginación no debería ocurrir) 19

20 El hardware de manipulación de memoria, debe soportar paginación y/o segmentación El SO debe poder manipular el movimiento de páginas y/o segmentos entre la memoria secundaria y la memoria principal Se discutirán primero Los aspectos del hardware Luego Aspectos de software Algoritmos usados por el SO. 20

21 Típicamente, cada proceso tiene su propia tabla de página Cada entrada en la tabla de página contiene un bit de presencia (P) y un bit de modificación (M) 21

22 Si está en memoria principal, la entrada contiene el número del marco de la página correspondiente en memoria principal Si no está en memoria principal, la entrada puede contener la dirección de esa página en disco o, el número de la página puede usarse para indexar otra tabla para obtener la dirección de esa página en disco 22

23 Un bit de modificación (M) indica si la página ha sido alterada, desde que ésta fue cargada la última vez en memoria principal Si no ha habido cambios, la página no tiene que ser escrita al disco cuando ésta necesita ser sacada (swapped out) 23

24 Otros bits de control pueden estar presentes, si la protección o la compartición se gestiona a nivel de página Un bit de sólo-lectura/lectura-escritura Un bit de nivel de protección: página del kernel o página de usuario (se usan más bits cuando el procesador soporta más de 2 niveles de protección) 24

25 Las tablas de página son variables en tamaño (dependen del tamaño del proceso) Entonces deben estar en memoria principal en lugar de en registros de CPU Un registro mantiene la dirección física de comienzo, de la tabla de página del proceso que actualmente se ejecuta 25

26 26

27 La Tabla de Páginas se mantiene en Memoria Principal. El Page-Table Base Register (PTBR) apunta a la Tabla de Páginas. El Page-Table Length Register (PTLR) indica el tamaño de la Tabla de Páginas. En este esquema cada acceso de datos/instrucción requiere dos accesos de memoria. Uno para la tabla de página y uno para los datos/instrucción. 27

28 El problema de los dos accesos a memoria puede ser solucionado por el empleo de una búsqueda rápida en un cache especial organizada de forma asociativa, la cual se conoce como buffer de traducción adelantada (translation look-aside buffers, TLB) Algunos TLBs almacenan identificadores del espacio de dirección (ASIDs) en cada entrada de la TLB; éste identifica unívocamente cada proceso para proporcionar la protección del espacio de direcciones para cada proceso. 28

29 La TLB usa hardware de correspondencia asociativa para simultáneamente consultar todas las entradas de TLB, y así determinar si hay una coincidencia en el número de página El TLB debe vaciarse cada vez que un nuevo proceso entra en el estado de ejecución El CPU usa dos niveles de cache en cada referencia de memoria virtual Primero el TLB -> Para convertir la dirección lógica a la dirección física Una vez la dirección física se forma, el CPU busca entonces en el cache la palabra referenciada 29

30 Memoria asociativa - búsqueda paralela Traducción de dirección (p, d) Si p está en el registro asociativo, conseguir el frame # De otra manera consiga el frame # de la tabla de página en la memoria Page #Frame # 30

31 31

32 Associative Lookup =  unidades de tiempo Asuma que el tiempo de ciclo de memoria es 1 microsegundo. La proporción de aciertos se denota como el porcentaje de veces que un número de página es encontrado en los registros asociativos; esta proporción esta relacionada con el número de registros asociativos Radio de Aciertos=  Tiempo Efectivo de Acceso (EAT) EAT = (1 +  )  + (2 +  )(1 –  ) = 2 +  –  32

33 La protección de memoria se implementa asociándola con el bit de protección de cada frame Un bit válido-inválido se conecta a cada entrada en la tabla de página. “Válido" indica que la página asociada está en el espacio de dirección lógico del proceso, y es así una página legal “Inválido" indica que la página no está en el espacio de dirección lógico del proceso 33

34 34

35 Si se comparte el mismo código entre diferentes usuarios, es suficiente guardar sólo una copia en memoria principal. Para que dos o más procesos puedan ejecutar el mismo código, el mismo debe ser reentrante (no se modifica a si mismo). Si se usa paginación, cada proceso que comparte el código, tendrá una tabla de página cuyas entradas apuntan a los mismos marcos: sólo una copia está en memoria principal. Sin embargo, cada usuario necesita tener sus propias páginas de datos privadas. 35

36 Código compartido Una copia de sólo lectura del código compartido entre procesos (p. ej., editores de textos, recopiladores, sistemas de ventana). El código compartido debe aparecer en la misma posición en el espacio de dirección lógico de todos los procesos Código y datos privados Cada proceso guarda (mantiene) una copia separada del código y datos Las páginas para el código privado y datos pueden aparecer en cualquier parte en el espacio de dirección lógico 36

37 37

38 38

39 La mayoría los computadores soportan un espacio de dirección virtual muy grande Se usan de 32 a 64 bits para las direcciones lógicas Si (sólo) 32 bits son usados con páginas de 4KB, una tabla de página puede tener 2 20 entradas La tabla de página completa tomaría demasiada memoria principal. Por ello también se guardan a menudo tablas de página en memoria virtual y por lo tanto están sujetas a paginación Cuando un proceso se está ejecutando, parte de su tabla de página debe estar en memoria principal (incluyendo la entrada de tabla de página de la página actualmente en ejecución) 39

40 Una tabla de página generalmente requerirá para su almacenamiento varias páginas. Una solución es organizar las tablas de página en una jerarquía multinivel Cuando se usan 2 niveles (Ejem: 386, Pentium), el número de página es dividido en dos números p1 y p2 P1 indexa la tabla del directorio de páginas en memoria principal, en la que cada entrada apunta a una tabla de página, las cuales están indexadas por p2. Las tablas de página, diferentes al directorio de páginas, se intercambiarán (swapped in y swapped out) cuando sea necesario 40

41 41

42 42

43 Común en espacios de dirección > 32 bits El número de página virtual es hashed en una tabla de página. Esta tabla de página contiene una cadena de elementos hashing a la misma posición (ubicación). Los números de las páginas virtuales son comparados en esta cadena que busca una coincidencia. Si es encontrada, el marco físico correspondiente es extraído. 43

44 44

45 Otra solución (PowerPC, IBM Risk 6000) al problema de mantener largas tablas de página, es usar Tabla de Páginas Invertida (IPT) Generalmente se tiene solamente, un IPT para el sistema entero Hay sólo una entrada de IPT por marco físico (en lugar de uno por página virtual) Esto reduce mucho la cantidad de memoria necesitada para las tablas de página La 1era. entrada del IPT es para el marco #1... la entrada n- ésima del IPT es para el marco #n y, cada uno de estas entradas, contiene el número de página virtual. Así, esta tabla está invertida 45

46 El ID del proceso con el número de página virtual, podría ser usado para buscar en la IPT y obtener el # de marco Para mejorar el rendimiento, se usa hashing para obtener una entrada de la tabla hash, la cual apunta a una entrada en la IPT Un fallo de página ocurre si no se encuentra correspondencia Se usa encadenamiento, para gestionar el hashing overflow 46

47 El tamaño de página es definido por hardware; siempre una potencia de 2 para una traducción de dirección lógica a física más eficiente. Pero exactamente cual tamaño usar, es una pregunta difícil: Un tamaño de página pequeño es bueno para minimizar la fragmentación interna Un tamaño de página grande es bueno debido a que los discos son diseñados para transferir eficientemente bloques grandes de datos Tamaños de página grandes significan menos páginas en memoria principal; esto incrementa la tasa de aciertos del TLB 47

48 Con un tamaño de página muy pequeño, cada página corresponde al código que realmente se usa: las fallas (faults) son bajas Aumentar el tamaño de página causa que cada página tenga más código que no se usa. Surgen fallos de página Los fallos de página disminuyen, si el tamaño de página se aproxima al tamaño de todo el proceso (punto P). Cuando el tamaño de una página es igual al tamaño del proceso entero, no hay fallos de página 48

49 El porcentaje de fallos de página, también es determinado por el número de marcos asignado por el proceso Los fallos de página caen a un valor razonable cuando W marcos son asignados Cuando el número (N) de marcos es tal que el proceso está completamente en memoria no existen fallos de páginas 49

50 Los tamaños de página de 1KB a 4KB normalmente son más usados Pero el problema es no trivial. De lo anterior, algunos procesadores están agregando la posibilidad de soportar múltiples tamaños de página. Ejemplo: Pentium soporta 2 tamaños: 4KB o 4MB R4000 soportan 7 tamaños: de 4KB a 16MB 50

51 Política de Lectura Paginación por Demanda Paginación Previa Política de Ubicación Para sistemas con segmentación pura: Primer-ajuste, próximo-ajuste, mejor-ajuste (relevante) Para paginación y segmentación/paginada: El hardware decide dónde poner la página (no relevante) Política de Reemplazo Usada hace más tiempo (Least recently used) (LRU) Primera en entrar, primera en salir (First-in, first-out) (FIFO) Política del reloj (Clock) 51

52 El software de gestión de memoria depende de si el hardware soporta paginación, segmentación o ambos Los sistemas de segmentación pura son raros. Los segmentos usualmente son paginados. Esto implica que los problemas de gestión de memoria son entonces aquéllos presentes en la paginación Nos concentraremos así en problemas asociados con paginación Para lograr un buen performance, se necesita un porcentaje bajo de fallo de páginas 52

53 Determina cuando una página debe traerse a memoria principal. Dos políticas comunes: Paginación por Demanda. Se trae una página a memoria principal sólo cuando se hace referencia a una posición en dicha página Muchos fallos de página cuando un proceso se ejecute por primera vez; pero debe disminuir a medida que se traigan a memoria más páginas (principio de cercanía) 53

54 Determina cuando una página debe traerse a memoria principal. Dos políticas comunes: Paginación Previa. Se cargan otras páginas distintas a la demandadas, debido a un fallo de página El principio de cercanía sugiere que será más eficaz traer páginas que residen contiguamente en disco La eficiencia no esta garantizada cuando páginas extras son cargadas en memoria principal Por ejemplo, si estas no son “frecuentemente” referenciadas 54

55 Determina donde va a residir una parte de un proceso en memoria real Para sistemas con segmentación pura: Primer-ajuste, próximo-ajuste, mejor-ajuste... son posibles opciones (un problema real) Para paginación (y paginación combinada con segmentación): El hardware decide dónde poner la página: la localización del marco escogido no es relevante, desde que todos los marcos de memoria son equivalentes (no es un problema) 55

56 Trata de la selección de la página a remplazar en memoria principal, cuando se debe cargar una nueva página Esto ocurre siempre que la memoria principal esté llena (ningún marco libre disponible) Ocurre frecuentemente debido a que el SO intenta traer a memoria principal tantos procesos como pueda, para aumentar el nivel de multiprogramación 56

57 No todas las páginas en memoria principal pueden ser seleccionadas para reemplazo Algunos marcos que están bloqueados y no pueden paginarse (paged out): Mucho del kernel es mantenido en marcos bloqueados; así como también, las estructuras claves de control y buffers de I/O El SO podría decidir que el conjunto de páginas consideradas para el reemplazo debe ser: Limitado al proceso que ha sufrido fallo de página El conjunto de todas las páginas en marcos no bloqueados (unlocked) 57

58 La decisión para el conjunto de páginas a ser consideradas para el reemplazo, está relacionada con la estrategia de gestión del conjunto residente: ¿Cuántos marcos de página serán asignados a cada proceso? Esto se discutirá más tarde No importa cual es el conjunto de páginas considerado para el reemplazo, la política de reemplazo se trata de algoritmos que escogerán la página dentro de tal conjunto 58

59 La política óptima selecciona para el reemplazo, la página que tiene que esperar una mayor cantidad de tiempo, hasta que se produzca la próxima referencia Produce el menor número de fallos de página Imposible de implementar (el SO necesita conocimiento exacto de los sucesos futuros), pero sirve como un estándar con el que comparar los otros algoritmos: Usada hace más tiempo (Least recently used) (LRU) Primera en entrar, primera en salir (First-In, First-Out) (FIFO) Política del reloj (Clock) 59

60 Reemplaza la página que no ha sido referenciada desde hace más tiempo Debido al principio de cercanía, ésta debería ser la página con menor probabilidad de ser referenciada en un futuro cercano. Atina casi como la política óptima. Ejemplo: Un proceso de 5 páginas con un SO que fija el tamaño del conjunto residente en 3 60

61 Cuando la memoria principal está vacía, cada nueva página cargada es el resultado de un fallo de página Con el propósito de comparar los diferentes algoritmos, no se contaran esos fallos de página iniciales Porque el número de éstos es el mismo para todos los algoritmos Pero, en contraste con lo que se muestra en las figuras, estas referencias iniciales están produciendo realmente fallos de página 61

62 Cada página podría etiquetarse (en la entrada de la tabla de página), con el instante de su última referencia a memoria. Esto tendría que hacerse para cada referencia a memoria, tanto para instrucciones, como para datos La página de LRU es aquella con el valor de tiempo más pequeño (necesita ser revisado en cada fallo de página) Esto requeriría hardware caro y gran cantidad de sobrecarga (overhead) Por consiguiente, muy pocos sistemas computadores proveen suficiente soporte de hardware para una verdadera política de reemplazo LRU Por estas razones se usan otros algoritmos 62

63 Trata marcos de página asignados a un proceso como un buffer circular Cuando el buffer está lleno, la página más vieja se reemplaza. De lo anterior: primero-en-entrar, primero-en- salir Esto no es necesariamente igual al LRU Una página frecuentemente usada es a menudo la más vieja, entonces ésta será expulsada (paged out) repetidamente por FIFO Simple de implementar Requiere sólo un apuntador que circule a través de los marcos de página del proceso 63

64 LRU reconoce que las páginas 2 y 5 son referenciadas más frecuentemente que las otras, mientras que FIFO no lo hace FIFO en este caso posee un rendimiento < a LRU 64

65 El conjunto de marcos candidatos para reemplazo es considerado un buffer circular Cuando una página se reemplaza, un apuntador es puesto (set) a apuntar al próximo marco en el buffer Un bit de uso por cada marco se pone en 1 siempre que La página correspondiente es referenciada Cuando es tiempo de reemplazar una página, el primer marco encontrado con el bit de uso puesto en cero (0) se reemplaza Durante la búsqueda para el reemplazo, cada bit de uso puesto en 1 se cambia a 0 65

66 66

67 Un asterisco indica que el correspondiente bit de uso se pone en 1 Reloj protege a las páginas frecuentemente referenciadas, poniendo el bit de uso en 1 en cada referencia 67

68 Los experimentos numéricos tienden a mostrar que el performance de Reloj está cerca del LRU Se han realizado experimentos cuando el número de marcos asignados a cada proceso es fijo y, cuando son consideradas para el reemplazo, páginas locales al proceso de fallo-de- página Cuando pocos (6 a 8) marcos son asignados por proceso, hay casi un factor de 2 de fallos de página entre LRU y FIFO Este factor se reduce cerca de 1 cuando varios (más de 12) marcos son asignados. (Pero entonces más memoria principal es necesitada para soportar el mismo nivel de multiprogramación) 68

69 69

70 Las páginas a ser reemplazadas son mantenidas durante algún tiempo en memoria principal, para resguardarse de la ejecución de algoritmos de reemplazo relativamente pobres tales como FIFO Dos listas de apuntadores son mantenidas en donde cada entrada apunta a un marco seleccionado para reemplazo Una lista de páginas libres para marcos que no se han modificado desde que la página fue traída (no necesitan ser expulsadas) Una lista de páginas modificadas para marcos que se han modificado (necesita escribirse a disco) 70

71 Un marco a ser reemplazado tiene un apuntador añadido al final de una de las listas y, el bit de presencia se pone en cero en la correspondiente entrada de la tabla de página Pero la página permanece en el mismo marco de memoria Por cada fallo de página las dos listas se examinan para ver primero, si la página necesitada todavía está en memoria principal Si está, sólo se necesita modificar el bit de presencia en la entrada correspondiente de la tabla de página (y quitar la entrada en la lista de página pertinente) 71

72 Si no está, entonces la página necesitada se trae, se pone en el marco apuntado por tope de la lista de marcos libres (borrando la página que estaba allí) El tope de la lista de marcos libres se mueve a la próxima entrada El número de marco en la entrada de tabla de página podría usarse para examinar las dos listas, o cada entrada de la lista podría contener el id del proceso y número de la página del marco ocupado La lista modificada también sirve para escribir a disco por bloques, las páginas modificadas (en lugar de individualmente) 72

73 ¿Cuándo una página modificada debería ser escrita a disco? Vaciado por demanda (Demand cleaning) Una página sólo se escribe disco, cuando su marco se ha seleccionado para reemplazo Sin embargo, un proceso que sufre una fallo de página, puede tener que esperar por 2 transferencias de página Vaciado Previo (Precleaning) Escribe páginas modificadas antes de que se necesiten sus marcos, de forma que las páginas puedan escribirse por lotes (batches) Sin embargo, tiene poco sentido escribir a disco tantas páginas, para encontrarse con que la mayoría de ellas han sido de nuevo modificadas antes de ser reemplazadas 73

74 Una solución mejor puede lograrse con almacenamiento intermedio de páginas Recuerde que las páginas reemplazadas o se mantienen en una lista libre (no modificadas) o en una lista de modificadas Las páginas de la lista de modificadas, pueden escribirse periódicamente por lotes y luego estas pueden trasladarse a la lista libre Un buen compromiso debido a que: No todas las páginas modificadas (dirty pages) se escriben a disco; excepto, solamente aquellas escogidas para el reemplazo La escritura se hace por lotes 74

75 El SO debe decidir cuántos marcos de página asignar a un proceso Mayor porcentaje de fallos de página si pocos marcos son asignados Nivel de multiprogramación bajo si muchos marcos se asignan 75

76 Política de asignación-fija Asigna un número fijo de marcos que permanecen constantes con el tiempo El número está determinado en momento de carga (instante de creación del proceso) y depende del tipo de proceso (interactivo, batch, tipo de aplicación) o está en función de las directrices del programador o del administrador del sistema 76

77 Política de asignación-variable El número de marcos asignados a un proceso, puede variar con el tiempo Puede aumentar si la proporción de fallo de página es alta Puede disminuir si el porcentaje de fallo de página es muy baja Requiere más overhead del SO, para evaluar el comportamiento de los procesos activos 77

78 Es el conjunto de marcos a ser considerado para el reemplazo, cuando ocurre un fallo de página Política de reemplazo local Escoge solamente entre los marcos que son asignados al proceso que emitió el fallo de página Política de reemplazo global Cualquier marco no bloqueado (unlocked) es un candidato para el reemplazo, independientemente del proceso al que pertenezca Consideraciones de las posibles combinaciones de las políticas del alcance del reemplazo y, las políticas del tamaño del conjunto residente 78

79 El número de marcos asignados a un proceso es fijo Determinado en momento de carga y depende de tipo de aplicación Cuando un fallo de página ocurre: la página a reemplazar se elige de entre los marcos asignados al proceso El número de marcos asignados es así constante Pueden usarse los algoritmos de reemplazo anteriores Problema: difícil decidir por adelantado un buen número para asignar marcos Si es demasiado bajo el porcentaje de fallo de páginas será alto Si es demasiado grande el nivel de multiprogramación será demasiado bajo 79

80 Imposible de lograr Si todos los marcos no bloqueados (unlocked) son candidatos para el reemplazo, el número de marcos asignados a un proceso necesariamente variará con el tiempo 80

81 Simple de implementar--adoptado por muchos SO (como Unix SVR4) Una lista de marcos libres se mantiene Cuando un proceso emite un fallo de página, un marco libre (de esta lista) se asigna a él Así pues, los procesos que producen fallos de página incrementan gradualmente su tamaño, lo que ayuda a reducir el número global de fallos de página en el sistema La escogencia del proceso que perderá una página de su conjunto residente (perderá un marco) es arbitraria: lejos de ser óptimo 81

82 El almacenamiento intermedio de páginas puede aliviar este problema por cuanto, una página puede ser recuperada si se produce una referencia antes de que se escriba el bloque con el siguiente grupo de páginas 82

83 Puede ser la mejor combinación (usado por Windows NT) Asigna en tiempo de carga un cierto número de marcos a un nuevo proceso, basado en el tipo de aplicación, necesidades del programa u otros criterios La asignación puede cubrirse tanto con paginación previa, como con paginación por demanda 83

84 Cuando un fallo de página ocurre, seleccione la página a reemplazar del conjunto residente del proceso que sufre la falla Periódicamente reevalúe la asignación otorgada al proceso y, aumente o disminuya para mejorar el performance global 84

85 Es un método de asignación-variable con alcance local, basado en principio de localidad (cercanía) de referencias La estrategia del conjunto de trabajo para un proceso en el tiempo t, W(D,t), es el conjunto de páginas que han sido referenciadas en las últimas D unidades de tiempo virtual 85

86 Tiempo virtual = tiempo que transcurre (time elapsed) mientras el proceso está realmente en ejecución (se puede considerar el número de instrucciones ejecutadas) D es una ventana de tiempo para la observación del proceso W(D,T) es una aproximación de la localidad del programa 86

87 El conjunto de trabajo de un proceso crece cuando empieza a ejecutarse Luego se estabiliza por el principio de cercanía Crece de nuevo cuando el proceso entra en una nueva ubicación (periodo de transición) Hasta cierto punto donde el conjunto de trabajo contiene páginas de dos ubicaciones Luego desciende después de mucho tiempo consumido en la nueva ubicación 87

88 El concepto del conjunto de trabajo hace pensar en la siguiente estrategia, para determinar el tamaño del conjunto residente Supervise el conjunto de trabajo para cada proceso Periódicamente quite del conjunto residente de un proceso, esas páginas que no están en el conjunto de trabajo Cuando el conjunto residente de un proceso es menor que su conjunto de trabajo, asigne más marcos a él Si no están disponibles suficientes marcos libres, suspenda el proceso (hasta que más marcos estén disponible) Entonces: un proceso sólo puede ejecutarse si su conjunto de trabajo está en memoria principal 88

89 Problemas prácticos con la estrategia del conjunto de trabajo La medida del conjunto de trabajo para cada proceso no es práctica Es necesario marcar (time stamp) las páginas referenciadas en cada referencia a memoria Es necesario mantener una cola ordenada en el tiempo de páginas referenciadas de cada proceso El valor óptimo para D es desconocido y, en cualquier caso, variable Solución: ¡en lugar de monitorear el conjunto de trabajo, monitoree el porcentaje de fallos de página de un proceso! 89

90 90

91 Defina un limite superior U y un limite inferior L para los porcentajes de fallo de página Asigne más marcos a un proceso si el porcentaje de fallo es mayor que U Asigne menos marcos si el porcentaje de fallo es < L El tamaño del conjunto residente debe estar cerca del tamaño del conjunto de trabajo W El proceso se suspenderá si el PFF (Page Fault Frecuency) > U y no hay marcos libres disponibles 91


Descargar ppt "1. ? M.P. ¿Su gran restricción? Exigir que un Pi esté entero en M.P. para poder ejecutarse AUn Pi más grande que la M.P. no podrá ejecutarse BSi {Procesos."

Presentaciones similares


Anuncios Google