IIC 2332 -- Sistemas Operativos
Apuntes 14
1er Semestre 1996
- Interrogaciones, tareas, y porcentajes
- La tabla de páginas está en la memoria principal. Un registro
apunta a la tabla (se cambia el registro con cambios de contexto).
¿Cuántos accesos a la memoria física se necesitan para accesar una
dirección? Dos: uno para la tabla, uno para el dato. Así la memoria
es dos veces más lento.
- La solución es usar un caché (el translation look-aside
buffer) para las entradas recién usadas de la tabla de páginas. Por
ejemplo, el i486 tiene un TLB de 32 entradas. Con una taza de
aciertos de 98%, un tiempo de acceso a memorio de 100ns y al TLB de
20ns, el tiempo de acceso efectivo es 0.98(20+100) + 0.02(20+100+100)
= 122ns.
- ¿Qué pasa con el TLB con un cambio de contexto? Hay que borrarlo.
- En vez de paginación se puede dividir la memoria de un proceso en
segmentos. Los segmentos representan las divisiones lógicas
del espacio de direcciones: código compartido, datos estáticos, etc.
No tienen necesariamente tamaños iguales.
- La ventaja de segmentos es que la protección y el compartamiento
de memoria es fácil para controlar.
- Los segmentos de un proceso no tienen que ser juntos en la memoria
física. Hay una tabla de segmentos como la tabla de páginas,
registros para guardar los límites de los segmentos, etc.
- Con segmentos puede haber fragmentación externa. Por eso se
combina la segmentación con la paginación (e.g., i486). La traducción
de direcciones envuelte la examinación de la tabla de segmento para
encontrar una tabla de páginas y entonces encontrar la entrada de la
página. Una dirección tiene un número de segmento, un número de
página, y un desplazamiento.
- La paginación y la segmentación se incorporan dos conceptos
claves:
- La traducción de direcciones ocurre al tiempo de ejecución.
- Las partes de un proceso no deben ser contiguas.
Entonces no es necesario que todos las partes de un proceso estén en
memoria simultaneamente.
- Las páginas de un proceso que están en la memoria principal se
llaman el conjunto residente (resident set).
- Si un proceso accesa una dirección lógica que se refiere una
página o segmento que no esté en memoria (una falla de página),
occure una interrupción y el S.O. toma control.
- Se chequea si la dirección es legal.
- Se bloquea el proceso.
- Se asigna un marco nuevo al proceso y se pide un I/O de disco
para recuperar la página deseada.
- Durante el I/O otros procesos pueden ejecutarse.
- Se reinicia la instrucción interrumpida.
- Las ventajas:
- Se pueden mantener más procesos en memoria al mismo tiempo, y
entonces más procesos. en la cola lista.
- ¡Un proceso puede ser mayor que la memoria principal! La
memoria es limitada solamente por el espacio en disco, que es
enorme.
- La memoria virtual depende de que solo una parte de un proceso
está en memoria a la vez. Sería muy ineficiente si el proceso salta a
muchas ubicaciones en su espacio de direcciones. Normalmente no es el
caso ya que los procesos exhiben la localidad de referencía y
ejecución.
Last edited April 29, 1996, by knabe@ing.puc.cl