2014 sistemas operativos resumen

33
2014_Sistemas_Operativos_Resumen 21 los recursos asignados del proceso, un área para salvaguarda de los registros, el procesador en que se está ejecutando el proceso (en el caso de múltiples procesadores). 6.2 Operaciones sobre procesos Los proceso del sistema se pueden ejecutar en forma concurrente, y se deben crear y eliminar dinámicamente. Por ello, el sistema operativo debe contar con un mecanismo para crear y terminar procesos. 6.2.1 Creación de procesos Un proceso pude crear varios procesos nuevos, a través de una llamada al sistema de “crear procesos”, durante el curso de su ejecución. El proceso creador se denomina proceso padre, y los nuevos procesos son los hijos de ese proceso. Cada uno de estos procesos nuevos puede a su vez crear otros procesos, formando un árbol de procesos. En general, un proceso necesita ciertos recursos (tiempo de CPU, memoria, archivos, dispositivos de E/S) para efectuar su tarea. Cuando un proceso crea un subproceso, éste tal vez pueda obtener sus recursos directamente del sistema operativo, pero podría estar restringido a un subconjunto de los recursos del proceso padre. El padre quizá tenga que dividir sus recursos entre sus hijos, o tal vez varios de sus hijos puedan compartir algunos recursos (como memoria o archivos). La restricción de un proceso hijo a un subconjunto de los recursos del padre impide que cualquier proceso sobrecargue el sistema creando demasiados subprocesos. Además de los diversos recursos físicos y lógicos que un proceso obtiene cuando se crea, el proceso padre podría pasar a su hijo datos de iniciación (entrada). Cuando un proceso crea un proceso nuevo, hay dos posibilidades en términos de ejecución: - El padre sigue ejecutándose de forma concurrente con sus hijos. - El padre espera hasta que algunos de sus hijos, o todos, han terminado. También hay dos posibilidades en términos del espacio de direcciones del nuevo proceso: - El proceso hijo es un duplicado del proceso padre. - Se carga un programa del proceso hijo. 6.2.2 Terminación de procesos Un proceso acaba cuando termina de ejecutar su último enunciado y le pide al sistema operativo que lo elimine. En ese momento, el proceso podría devolver datos (salidas) a su proceso padres. El sistema operativo liberará todos los recursos del proceso, incluidos memoria física y virtual, archivos abiertos y buffers de E/S. Hay otras circunstancias en las que ocurre la terminación. Un proceso puede causar la terminación de otro con una llamada apropiada al sistema (por ejemplo, abortar). Normalmente, sólo el padre del proceso que se terminará puede emitir la llamada. De otro modo, los usuarios podrían matar arbitrariamente los trabajos de otros usuarios. Un padre podría terminar la ejecución de unos de sus hijos por diversas razones como: - El hijo se ha excedido en la utilización de algunos de los recursos que se le asignaron. - La tarea que se asignó al hijo ya no es necesaria. - El padre va a salir, y el sistema operativo no permite que un hijo continúe si su padre termina. En muchos sistemas, si un proceso termina (sea normal o anormalmente), todos sus hijos tiene que terminar. Este fenómeno se denomina terminación en cascada y por lo regular es el sistema operativo quien lo inicia.

Upload: ramirocarrionarellano

Post on 19-Aug-2015

16 views

Category:

Documents


2 download

DESCRIPTION

sistemas operativos

TRANSCRIPT

2014_Sistemas_Operativos_Resumen21 los recursos asignados del proceso, un rea para salvaguarda de los registros, el procesador en que se est ejecutando el proceso (en el caso de mltiples procesadores). 6.2 Operaciones sobre procesos Los proceso del sistema se pueden ejecutar en forma concurrente, y se deben crear y eliminar dinmicamente. Por ello, el sistema operativo debe contar con un mecanismo para crear y terminar procesos. 6.2.1 Creacin de procesos Un proceso pude crear varios procesos nuevos, a travs de una llamada al sistema de crear procesos, durante el curso de su ejecucin. El proceso creador se denomina proceso padre, y los nuevos procesos son los hijos de ese proceso. Cada uno de estos procesos nuevos puede a su vez crear otros procesos, formando un rbol de procesos. En general, un proceso necesita ciertos recursos (tiempo de CPU, memoria, archivos, dispositivos de E/S) para efectuar su tarea. Cuando un proceso crea un subproceso, ste tal vez pueda obtener sus recursos directamente del sistema operativo, pero podra estar restringido a un subconjunto de los recursos del proceso padre. El padre quiz tenga que dividir sus recursos entre sus hijos, o tal vez varios de sus hijos puedan compartir algunos recursos (como memoria o archivos). La restriccin de un proceso hijo a un subconjunto de los recursos del padre impide que cualquier proceso sobrecargue el sistema creando demasiados subprocesos. Adems de los diversos recursos fsicos y lgicos que un proceso obtiene cuando se crea, el proceso padre podra pasar a su hijo datos de iniciacin (entrada). Cuando un proceso crea un proceso nuevo, hay dos posibilidades en trminos de ejecucin: -El padre sigue ejecutndose de forma concurrente con sus hijos. -El padre espera hasta que algunos de sus hijos, o todos, han terminado. Tambin hay dos posibilidades en trminos del espacio de direcciones del nuevo proceso: -El proceso hijo es un duplicado del proceso padre. -Se carga un programa del proceso hijo. 6.2.2 Terminacin de procesos Un proceso acaba cuando termina de ejecutar su ltimo enunciado y le pide al sistema operativo que lo elimine. En ese momento, el proceso podra devolver datos (salidas) a su proceso padres. El sistema operativo liberar todos los recursos del proceso, incluidos memoria fsica y virtual, archivos abiertos y buffers de E/S. Hay otras circunstancias en las que ocurre la terminacin. Un proceso puede causar la terminacin de otro con una llamada apropiada al sistema (por ejemplo, abortar). Normalmente, slo el padre del proceso que se terminar puede emitir la llamada. De otro modo, los usuarios podran matar arbitrariamente los trabajos de otros usuarios. Un padre podra terminar la ejecucin de unos de sus hijos por diversas razones como: -El hijo se ha excedido en la utilizacin de algunos de los recursos que se le asignaron. -La tarea que se asign al hijo ya no es necesaria. -El padre va a salir, y el sistema operativo no permite que un hijo contine si su padre termina. En muchos sistemas, si un proceso termina (sea normal o anormalmente), todos sus hijos tiene que terminar. Este fenmeno se denomina terminacin en cascada y por lo regular es el sistema operativo quien lo inicia. 2014_Sistemas_Operativos_Resumen22 Los sistemas que administran procesos deben ser capaces de realizar ciertas operaciones sobre procesos: Crear un proceso implica: 1.Darle un nombre al proceso. 2.Dar de alta en la lista de procesos conocidos del sistema o de la tabla de procesos (insertar). 3.Determinar la prioridad inicial del proceso. 4.Crear el PCB de ese proceso. 5.Asignar recursos al proceso. Destruir un proceso implica: 1.Eliminarlo de la lista de procesos, no solamente del sistema. 2.Los recursos que estaba utilizando se devuelven al sistema. 3.El PCB se borra. Suspender un proceso. Un proceso suspendido no puede proseguir hasta que los reanuda otro proceso. La suspensin dura por lo regular breves momentos o breves periodos de tiempo. El sistema efecta suspensiones par eliminar temporalmente ciertos procesos y as reducir la carga del sistema durante situaciones de carga mxima. Cuando hay suspensiones largas se deben liberar los recursos del proceso. Reanudar un proceso. Reanuda o activar un proceso implica reiniciarlo a partir del punto en le que se suspendi. Bloquear un proceso. Despertar un proceso. Despachar un proceso. Permitir que proceso se comunique con otros (comunicacin entre procesos). Cambiarle la prioridad a un proceso. 6.2.3 Suspensin de un proceso Razones por las que se puede suspender un proceso: -Si un sistema est funcionando mal y es probable que falle se puede suspender los procesos activos para reanudarlos cuando se haya corregido el problema. -Un usuario que desconfe de los resultados parciales de un proceso puede suspenderlo en lugar de abortarlo hasta que verifique si el proceso funciona correctamente o no. -Algunos procesos se pueden suspender como respuesta a las fluctuaciones a corto plazo de la carga del sistema y reanudarse cuando las cargas regresen a niveles normales. 6.2.3.1 Estados de Suspensin Se ha aadido dos nuevos estados denominados: Suspendido_Listo y Suspendido_Bloqueado, por lo que contaremos con estados activos que vimos con anterioridad, y estados de suspensin. Tenemos que, una suspensin puede ser iniciada por el propio proceso o por otro. En un sistema con un solo procesador, el proceso en ejecucin puede suspenderse a s mismo, ningn otro proceso podra estar en ejecucinpara realizar la suspensin. Suspender(x_proceso): Listo Suspendido_Listo. Solamente otro proceso puede suspender un proceso listo. 2014_Sistemas_Operativos_Resumen23 Reanudar(x_proceso): Suspendido_listo Listo Un proceso puede hacer que otro proceso que se encuentre en estado suspendido_listo pase al estado listo. Suspender(x_proceso)Bloqueado Suspendido_Bloqueado Un proceso puede suspender a otro que este bloqueado. Reanudar(x_proceso): Suspendido_Bloqueado Bloqueado Un proceso puede reanudar otro proceso que este Suspendido_Bloqueado. Transacciones: Suspender(x_proceso): Listo Suspendido_Listo Despachar(x_proceso): Listo Ejecucin. Suspender(x_proceso): Ejecucin Suspendido_Listo Reanudar(x_proceso): Suspendido_Listo Listo Tiempo execedido(x_proceso) Ejecucin Listo Suspender(x_proceso): Bloqueado Suspendido_Bloqueado Completar(x_proceso): Bloqueado Listo Reanudar(x_proceso): Suspendido_Bloqueado Bloqueado Completar(x_proceso): Suspendido_Bloqueado Suspendido_Listo Espera(x_proceso): Ejecucin Bloqueado 6.3 Interrupciones Interrupcin. Es un evento que altera la secuencia en que le procesador ejecuta las instrucciones. La interrupcin es generada por el hardware del sistema Cmo puede hacerse una llamada al sistema: 1)El programa del usuario captura el kernel 2)El sistema operativo determina el nmero de servicio que se pide 3)El sistema operativo localiza y llama a un procedimiento de servicio 4)El control se devuelve al programa del usuario Cuando se genera una interrupcin: 1.El sistema operativo toma el control, es decir, el hardware pasa el control al sistema operativo. 2.El sistema operativo guarda el estado del proceso interrumpido, en muchos sistemas esta informacin se guarda en el PCB del proceso interrumpido. 3.El sistema operativo analiza la interrupcin y transfiere el control a la rutina apropiada para atenderla. En algunos sistemas el hardware se encarga de esto automticamente. 4.La rutina del manejador de interrupciones procesa la interrupcin. 5.Se restablece el estado del proceso interrumpido o del siguiente proceso. 6.Se ejecuta el proceso interrumpido o el siguiente proceso. Una interrupcin puede ser generada especficamente por un proceso en ejecucin en cuyo caso le suele denominar trampa o trap y se dice que est sincronizada con la operacin del proceso o bien puede ser causada por algn evento que puede estar relacionado o no con el proceso en ejecucin en cuyo caso se dice que es asncrona con la operacin en proceso. 2014_Sistemas_Operativos_Resumen24 6.3.1 Tipos de interrupciones Interrupcin SVC (Supervisor Call). Son iniciadas por un proceso en ejecucin que ejecute una instruccin SVC. Una interrupcin SVC es una peticin generada por el usuario de un servicio en particular del sistema. Puede ser ejecutar una operacin de E/S, obtener ms memoria, o comunicarse con el operador del sistema. Un usuario no puede entrar arbitrariamente al sistema operativo, debe solicitar permiso por medio de una SVC. El sistema operativo esta enterado de los usuarios que intentan rebasar sus lmites y puede rechazar ciertas peticiones si el usuario no cuenta con los privilegios necesarios. Interrupciones de E/S. Son iniciadas por hardware de E/S. Este tipo de interrupciones indican al CPU el cambio de estado de algn canal o un dispositivo. Se producen cuando finaliza una operacin de entrada/salida o cuando un dispositivo pasa al estado listo. Interrupciones externas. Son causadas por diversos eventos, incluyendo la expiracin de un cuanto (quantum de reloj) que interrumpe, cuando pulsamos la tecla de interrupcin de la consola o bien cuando recibimos la seal de otro procesador, esto en el caso un sistema de mltiples procesadores. Interrupciones de reinicio. Cuando se oprime el botn de reinicio de la consola o se llegara desde otro procesador una seal de reinicio. Interrupciones de verificacin del programa. Son causadas por una amplia gama de problemas que pueden ocurrir cuando se ejecutan las instrucciones en lenguaje de mquina de un programa, dichos problemas incluyen: oUna divisin entre cero. oEl exceso o defecto de los nmeros que pueden ser manejados por las operaciones aritmticas. oLa presencia de datos con formato errneo. oEL intento de ejecutar un cdigo de operacin invlido. oEl intento de hacer referencia a una localidad de memoria que este fuera de los lmites de la memoria real. oEl intento por parte de un usuario no privilegiado de hacer uso de una instruccin privilegiada o el intento de hacer uso de un recurso protegido. Interrupciones por Verificacin de mquina. Son ocasionadas por el mal funcionamiento del hardware. 6.3.2 Cambio de contexto En el esquema de las interrupciones de los procesadores a alta escala se maneja mediante el sistema operativo rutinas denominadas manejadores de interrupciones de primer nivel o FLIH (First Level Interrup Handlers) para procesar las diferentes clases de interrupciones. Existe un manejador de interrupciones de primer nivel por cada tipo de interrupcin. Cuando ocurre una interrupcin, el sistema operativo guarda el estado del proceso interrumpido y transfiere el control al manejador de interrupciones del primer nivel apropiado. El cambio de la CPU a otro proceso se denomina conmutacin de contexto (context switch). Los manejadores de primer nivel deben distinguir entre interrupciones de la misma clase; el procesamiento de estas interrupciones es realizado entonces por alguno de los manejadores de interrupciones de segundo nivel. 6.3.3. Palabras de Estado o PSW (Program Status Word) Las palabras de estado del programa controlan el orden de ejecucin de las instrucciones y contienen informacin acerca del estado de un proceso. Hay tres tipos de PSW: nuevas, actuales y antiguas. 2014_Sistemas_Operativos_Resumen25 La direccin de la siguiente instruccin que se debe ejecutar se almacena en la PSW actual que indica tambin los tipos de interrupciones habilitadas e inhabilitadas de ese momento. El CPU permite que ocurran las interrupciones habilitadas; las interrupciones inhabilitadas permanecern pendientes y slo en algunos casos se pasarn por alto. El procesador nunca puede estar inhabilitado para una interrupcin SVC o para una de reinicio o para ciertas interrupciones de verificacin del programa. En un sistema de un procesador solo hay una PSW actual, seis nuevas y seis antiguas, una por cada tipo de interrupcin. La PSW nueva para algn tipo de interrupcin contiene la direccin permanente de la memoria principal en la que reside el manejador de interrupciones correspondiente. Cuando ocurre una interrupcin, si el procesador no est inhabilitado para este tipo de interrupcin, el hardware automticamente cambia la PSW como sigue: 1.Se guarda la PSW actual en la PSW antigua de este tipo de interrupcin. 2.Se guarda la PSW nueva de este tipo de interrupcin en la PSW actual. Despus de este intercambio de PSW, la PSW actual contendr la direccin del manejador de interrupciones apropiado y este ejecutar y procesar la interrupcin. 6.4 Ncleo del Sistema Operativo (Nucelos/Kernel/Core) Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo llamada ncleo. El ncleo normalmente representa solo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo pero tambin es el cdigo que ms se utiliza. Reside por lo regula en la memoria principal mientras que otras partes del sistema operativo son cargadas solo cuando se necesitan. Una de las funciones ms importantes incluidas en ese ncleo es el procesamiento de interrupciones. El ncleo inhabilita las interrupciones cuando atiende una interrupcin y las habilita nuevamente una vez que ha completado el procesamiento de la interrupcin. Cuando se da un flujo continuo de interrupciones, es posible que el ncleo deje inhabilitadas las interrupciones por un periodo largo, esto puede ocasionar un elevado tiempo de respuesta a las interrupciones. Por esta razn los ncleos son diseados para realizar el mnimo posible de procesamiento en cada interrupcin y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el ncleo se habilita para atender otras operaciones. Lo que se traduce en que las interrupciones permanecen habilitadas un porcentaje mucho mayor del tiempo y que el sistema responde mejor. Resumen de las funciones del ncleo del sistema operativo 1.Manejo de interrupciones. 2.Crear y destruir procesos. 3.El cambio de los estados de los procesos. 4.El despacho de los procesos. 5.Suspender y reanudar un proceso. 6.Sincronizacin de los procesos. 7.La comunicacin entre procesos. 8.EL manejo de los bloques de control de procesos. 9.Apoyo a las actividades de entrada/salida. 10. Asignacin y liberacin de memoria. 11. El apoyo para el sistema de archivos. 12. Apoyo para el mecanismo de llamada y retorno de un procedimiento. 13. Apoyo para ciertas funciones de contabilidad del sistema. 2014_Sistemas_Operativos_Resumen26 6.4.1 Habilitacin e Inhabilitacin de Interrupciones Al ncleo del sistema operativo solo puede llegarse mediante una interrupcin. El ncleo inhabilita las interrupciones mientras responde a la interrupcin que est procesando. Una vez que se determina la causa de la interrupcin, el ncleo pasa el tratamiento de la interrupcin a un proceso especfico del sistema que se ha diseado para manejar ese tipo de interrupciones. 7 Planificacin de trabajos y del procesador En la planificacin del procesador se estudian los problemas de cundo asignar procesadores y a cules procesos asignarlos, tambin se considera la admisin de nuevas tareas en el sistema, la suspensin y reactivacin de procesos para ajustar la carga del sistema. 7.1 Niveles de planificacin Planificacin de Alto Nivel. Planificacin de trabajo. Determina cules trabajos podrn competir activamente por los recursos del sistema o bien cuales trabajos deben admitirse por lo que tambin la llamamos planificacin de admisin. Planificacin de Nivel Intermedio. Determina que procesos pueden competir por el CPU. Responde a las fluctuaciones temporales en la carga del sistema mediante la suspensin temporal y la activacin (reanudacin) de procesos para lograr una operacin ms fluida del sistema y ayuda a alcanzar ciertas metas globales del rendimiento del sistema. Acta como amortiguador entre la admisin de los trabajos y la asignacin del CPU a esos trabajos. Planificacin de Bajo Nivel. Determina a cul proceso listo se le asignar el CPU cuando ste se encuentre disponible y se encargar de asignar el CPU a ese proceso. Se lleva a cabo mediante el despachador y este debe residir en la memoria principal. 7.1.2 Objetivos de la planificacin En el diseo de un disciplina de planificacin deben ser considerados varios objetivos, mismos que suelen caer en conflicto haciendo esto un tanto ms complejo. Ser justa.- Una disciplina de planificacin es justa si todos los procesos se tratan de la misma forma y ningn proceso se queda en aplazamiento indefinido. Elevar al mximo la produccin y el rendimiento. Una disciplina de planificacin debe de tratar de atender el mayor nmero posible de procesos por unidad de tiempo. Aumentar al mximo el nmero de usuarios interactivos que reciben respuesta en tiempo aceptables (segundos). Ser predecible.- Una tarea debe ejecutarse aproximadamente en el mismo tiempo y casi al mismo costo sea cual sea la carga del sistema. Equilibrar el aprovechamiento de los recursos.- Los mecanismos de planificacin deben mantener ocupados los recursos del sistema. Deben favorecer los procesos que requieren los recursos poco utilizados. Evitar el Aplazamiento Indefinido.- La mejor manera de evitarlo es el empleo del envejecimiento, es decir, mientras un proceso espera un recurso, su prioridad debe crecer. En algn momento, la prioridad ser tan alta que el recurso se asignar al proceso. Imponer prioridades.- En los ambientes en que se asignan prioridades a los procesos, los mecanismos de planificacin deben favorecer a los procesos de alta prioridad. Degradarse paulatinamente con las cargas pesadas.- Un mecanismo de planificacin no debe desplomarse bajo el peso de una carga fuerte en el sistema. Debe evitar la carga excesiva 2014_Sistemas_Operativos_Resumen27 impidiendo la creacin de procesos nuevos cuando la carga es pesada, o bien debe dar servicio a la carga mayor con una reduccin moderada del nivel de atencin a todos los procesos. ____ 7.1.3 Planificacin no expropiativa y expropiativa Una disciplina de planificacin es no expropiativa si una vez que le ha sido asignado el CPU a un proceso, ya no se le puede arrebatar. En los sistemas no expropiativos, los trabajos largos retrasan a los cortos, pero el tratamiento para todos los procesos es ms justo. Una disciplina de planificacin es expropiativa si al proceso se le puede arrebatar el CPU. La planificacin expropiativa es importante en aquellos sistemas de planificacin en los cuales los procesos de alta prioridad requieren atencin rpida. 7.1.4 Prioridades Las prioridades pueden ser asignadas en forma automtica por el sistema, o bien se pueden asignar externamente. Pueden ganarse o comprarse. Pueden ser estticas o dinmicas. Pueden asignarse en forma racional, o de manera arbitraria en situaciones en la que un mecanismo del sistema necesita distinguir entre procesos pero no le importa cual de ellos es enverdad ms importantes. Prioridades estticas.- Son aquellas prioridades que no cambian, es decir, no responden a los cambios en el ambiente que podran hacer necesario un ajuste de prioridades. Se mantienen constantes mientras dura el proceso. Prioridades dinmicas.- Son aquellas prioridades que responden a los cambios. La prioridad inicial asignada a un proceso tiene una duracin corta, despus de lo cual se ajusta a un valor ms apropiado. Cambian en respuesta a los cambios del as condiciones del sistema. Prioridades compradas.- Son aquellas que tienen un precio monetario, en la cual el usuario compra un nivel ms alto de servicio. 7.1.5 Planificador de CPU Siempre que la CPU est ociosa, el sistema operativo debe escoger uno del os procesos que estn en la cola de procesos listos para ejecutarlo. El proceso de seleccin corre por cuenta del planificador a corto plazo (o planificador de CPU), el cual escoge uno de los procesos que estn en la memoria y listos para ejecutarse, y le asigna la CPU. 7.1.6 Despachador Otro componente que interviene en la funcin de planificacin de la CPU es el despachador (dispatcher). ste es el mdulo que cede el control de la CPU al proceso seleccionado por el planificador a corto plazo. Esta funcin implica: -Cambiar de contexto. -Cambiar a modo de usuario. -Saltar al punto apropiado del programa del usuario para reiniciar ese programa. El despachador debe ser lo ms rpido posible, porque se invoca en cada conmutacin de proceso. El tiempo que el despachador tarda en detener un proceso y poner otro en ejecucin se denomina latencia del despachador. 2014_Sistemas_Operativos_Resumen28 7.2 Criterios de planificacin Los diferentes algoritmos de planificacin de la CPU tienen diferentes propiedades y podran favorecer a una clase de procesos ms que a otra.Se han sugerido muchos criterios para comparar los algoritmos de planificacin de la CPU. Los criterios empleados son, entre otros: Utilizacin de la CPU: Queremos mantener la CPU tan ocupada como se pueda. La utilizacin de la CPU puede variar entre 0% y 100%. En un sistema real, deber variar entre el 40% (en un sistema con poca carga) y el 90% (en un sistema muy cargado). Rendimiento: Si la CPU est ocupada ejecutando procesos, se est efectuando trabajo. Una medida del trabajo es el nmero de procesos que se completan por unidad de tiempo: el rendimiento. En el caso de procesos largos, esta tasa podra ser de un proceso por hora; en el caso de transacciones cortas, el rendimiento podra ser de 10 procesos por segundo. Tiempo de retorno: Desde el punto de vista de un proceso en particular, el criterio importante es el tiempo que tarda la ejecucin de ese proceso. El intervalo entre el momento de presentacin de un proceso y el momento en que se termina es el tiempo de servicio, y es la suma de los periodos durante los cuales espera entrar en la memoria, espera en la cola de procesos listos, se ejecuta en la CPU y realiza E/S. Tiempo de espera: el algoritmo de planificacin de la CPU no afecta la cantidad de tiempo que un proceso pasa ejecutndose o realizando E/S; slo afecta el tiempo que un proceso pasa esperando en la cola de procesos listos. El tiempo de espera es la suma de los periodos que el proceso pasa esperando en dicha cola. Tiempo de respuesta: En un sistema interactivo, el tiempo de retorno tal vez no sea el mejor criterio. Es comn que un proceso pueda producir algunas salidas en poco tiempo, y pueda seguir calculando nuevos resultados mientras los anteriores se estn presentando al usuario. Por ello, otra medida es el tiempo que transcurre entre la presentacin de una solicitud y la produccin de la primera respuesta. Esta medida, llamada tiempo de respuesta, es el tiempo que el proceso tarda en comenzar a responder, pero no incluye el tiempo que toma exhibir la respuesta. El tiempo de retorno generalmente est limitado por la velocidad del dispositivo de salida. ___ 7.3 Algoritmos de planificacin La planificacin de la CPU se ocupa del problema de decidir cul de los procesos que estn en la cola de procesos listos debe recibir la CPU. 7.3.1 Planificacin a plazo fijo Se programan ciertos trabajos para terminarse en un tiempo especfico. Los trabajos pueden tener un gran valor si son entregados a tiempo y carecer de l si son entregados fuera del plazo, por lo que algn usuario puede estar dispuesto a pagar extra para asegurar que sus trabajos sean entregados a tiempo. 7.3.2 Planificacin de servicios por orden de llegada Por mucho, el algoritmo de planificacin del a CPU ms sencillo es el de servicio por orden de llegada (FCFS, first-come, first served). Con este esquema, el proceso que primero solicita la CPU la recibe primero. Los procesos se despachan de acuerdo a su tiempo de llegada a la cola de procesos listos. Es una disciplina no exapropiativa. La implementacin de la poltica FCFS es fcil con una cola FIFO. Cuando un proceso ingresa en la cola de procesos listos, su PCB se enlaza al final de la cola. Cuando la CPU 2014_Sistemas_Operativos_Resumen29 queda libre, se asigna al proceso que est a la cabeza de la cola. Acto seguido, el proceso en ejecucin se saca de la cola. 7.3.3 Planificacin de primero el trabajo ms corto Un enfoque de planificacin de la CPU diferente es el algoritmo de primero el trabajo ms corto (SJF, shortest job first), que asocia a cada proceso la longitud de la siguiente rfaga de CPU de ese proceso. Cuando la CPU queda disponible, se asigna al proceso cuya siguiente rfaga de CPU sea ms corta. Si hay dos procesos cuyas siguientes rfagas de CPU tienen la misma duracin, se emplea planificacin FCFS para romper el empate. Es una disciplina no expropiativa utilizada sobre todo para trabajos por lotes. 7.3.4 Planificacin por prioridad El algoritmo SJF es un caso especial del algoritmo de planificacin por prioridad general. Se asocia una prioridad a cada proceso,y la CPU se asigna al proceso que tiene la prioridad ms alta. Los procesos con la misma prioridad se planifican en orden FCFS.Un problema importante de los algoritmos de planificacin por prioridad es el bloqueo indefinidooinanicin (starvation). Podemos considerar que un proceso que est listo para ejecutarse pero que no tiene la CPU est bloqueado en espera de la CPU. Un algoritmo de planificacin por prioridad podra dejar a algunos procesos de baja prioridad esperando indefinidamente la CPU. Una solucin al problema del bloqueo indefinido de procesos de baja prioridad es el envejecimiento (aging): una tcnica que consiste en aumentar gradualmente la prioridad de los procesos que esperan mucho tiempo en el sistema. Un ejemplo del uso de esta solucin es la planificacin por prioridad de la tasa de respuesta ms alta. Siendo una disciplina no expropiativa en la cual la prioridad de cada trabajo no slo es funcin del tiempo de servicio, sino tambin del tiempo que ha esperado el trabajopara ser atendido. ____ 7.3.5 Planificacin por turno circular (RR, round-robin) Es una disciplina expropiativa. Los procesos se despachan en forma Primero en EntrarPrimero en Salir, pero se les asigna una cantidad limitada de tiempo de CPU conocida como cuanto o quantu,. Si un proceso no termina antes de que expire su tiempo de CPU, se le quitar el CPU y ste se le asignar al siguiente proceso en espera, el proceso desposedo se colocar al final de la cola de procesos listos. 7.3.5 Planificacin por tiempo restante ms corto ( SRT, Shortest-remaining-time scheduling) Es la contraparte expropiativa de SJF. En SRT, el proceso con el menor tiempo estimado de ejecucin para terminar es el primero en ejecutarse, incluyendo los procesos nuevos. Un proceso en ejecucin puede ser despojado por un proceso nuevo con un tiempo estimado de ejecucin ms pequeo. 7.3.6 Planificacin con colas de mltiples niveles Se ha creado otra clase de algoritmos de planificacin para situaciones en las que es fcil clasificar los procesos en diferentes grupos. Por ejemplo, suele hacerse una divisin entre los procesos que se ejecutan en primer plano (interactivos) y los que lo hacen en segundo plano (por lotes). Estos dos tipos de procesos tienen diferentes necesidades en cuanto al tiempo de respuesta, as que podran tener diferentes necesidades de planificacin. Adems, los procesos de primer plano podran tener mayor prioridad (definida externamente) que los de segundo plano. Un algoritmo de planificacin con colas de mltiples niveles divide la cola de procesos listos en varias colas distintas. Los procesos se asignan permanentemente a una cola, casi siempre con base a alguna 2014_Sistemas_Operativos_Resumen30 propiedad del proceso, como tamao de memoria, prioridad del proceso o tipo de proceso. Cada cola tiene su propio algoritmo de planificacin. Adems, debe haber planificacin entre las colas. Ejemplo de algoritmo de planificacin con colas mltiples niveles: 1.Procesos del sistema 2.Procesos interactivos 3.Procesos de edicin interactiva 4.Procesos por lotes 5.Procesos de estudiantes Ya que la cola de primer plano podra tener prioridad absoluta sobre la cola de segundo plano, en el ejemplo, ningn proceso de la cola de procesos por lotes se podr ejecutar si no estn vacas las colas de los procesos del sistema, procesos interactivos y procesos de edicin interactivo. Si un proceso de edicin interactiva ingresa en la cola de procesos listos mientras se est ejecutando un proceso por lotes, ste ser desalojado. 7.3.7 Planificacin con colas de mltiples niveles y realimentacin En un algoritmo de planificacin con colas de mltiples niveles, lo normal es que los procesos se asignen permanentemente a una cola al ingresar en el sistema. Los procesos no se mueven de una cola a otra. Por ejemplo, si hay colas distintas para los procesos de primer y segundo plano, los procesos no se pasarn de una cola a la otra, ya que su naturaleza ( de primer o segundo plano ) no cambia. ste mtodo es inflexible. La planificacin con colas de mltiples niveles y realimentacin, en cambio, permite a un proceso pasar de una cola a otra. La idea es separar procesos con diferentes caractersticas en cuanto a sus rfagas de CPU. Si un proceso gasta demasiado tiempo de CPU, se le pasar a una cola con menor prioridad. Este esquema deja los procesos limitados por E/S y los procesos interactivos en las colas de ms alta prioridad. As mismo, si un proceso espera demasiado tiempo en una cola de baja prioridad podra pasarse a una de mayor prioridad. Esta forma de envejecimiento evita la inanicin. ___ 7.4 Comunicacin entre procesos Los procesos con frecuencia necesitan comunicarse con otros procesos. Cuando un proceso del usuario desea leer el contenido de un archivo, ste debe sealar al proceso del archivo lo que desea. Despus el procesos del archivo tiene que indicar al proceso del disco que lea el bloque que se pide. En algunos sistemas operativos, los procesos que trabajan en conjunto con frecuencia comparten algn almacenamiento comn que cada uno puede leer y escribir. El almacenamiento compartido puede ubicarse en la memoria o bien puede ser un archivo compartido; la localidad de la memoria compartida no altera la naturaleza de la comunicacin o los problemas que se presentan. Situaciones donde dos o ms procesos leen o escriben algunos datos compartidos y el resultado final depende de cul se ejecuta en un momento preciso, se denominan condiciones de concurso.Cmo se evitan las condiciones de concurso? La clave para prevenir el problema aqu y en muchas otras situaciones en que interviene la memoria compartida, archivos compartidos y todo lo dems que se comparte, consiste en determinar alguna manera de prohibir que un procesos lea y escriba los datos compartidos al mismo tiempo. La exclusin mutua se llama a la situacin en la cual los procesos cooperan de tal forma que, mientras un proceso obtiene acceso a datos compartidos modificables, los dems procesos no pueden hacer los mismo. La seccin crtica de un procesos es aquella parte del programa donde se accesa la memoria compartida. 2014_Sistemas_Operativos_Resumen31 Las diversas proposiciones para lograr la exclusin mutua con espera ocupada son: desactivacin de interrupciones, variables de cierre, alternancia estricta, solucin de Peterson, instruccin de TSL. ___ 8 Almacenamiento Real La organizacin y administracin de la memoria principal o memoria primaria o memoria real de un sistema de computacin ha sido uno de los factores ms importantes en el diseo de los sistemas operativos. 8.1 Organizacin del almacenamiento Por organizacin del almacenamiento se entiende la manera de considerar este almacenamiento,. Se coloca un solo usuario en la memoria principal o se colocan varios al mismo tiempo? Si se encuentran varios programas del usuario en el almacenamiento principal, se concede a cada uno la misma cantidad de espacio o se divide el almacenamiento en varias porciones, llamadas particiones, de diferentes tamaos? Se harn las particiones del almacenamiento principal de una manera rgida, con las particiones definidas para un largo periodo de tiempo, o se proporciona una particin mas dinmica que permita a los sistemas de computacin adaptarse rpidamente a los cambios impuestos por las necesidades de los trabajos de los usuarios? Se requerir que los trabajos de los usuarios sean diseados para funcionar en una particin especfica, o se permitir que los trabajos se ejecuten en cualquier parte donde quepan? Se requerir que cada trabajo sea colocado en un bloque contiguo de localizacin de almacenamiento o se permitir dividir los trabajos entre varios bloques separados y colocarlos en cualesquiera ranuras disponibles del almacenamiento principal? 8.2 Administracin del almacenamiento Con independencia del esquema de organizacin del almacenamiento que se adopte para un sistema determinado, hay que decidir las estrategias que se van a usar para obtener un rendimiento ptimo. Las estrategias de administracin del almacenamiento determinan el rendimiento de una organizacin del almacenamiento con varias estrategias: Cundo se consigue un nuevo programa para colocar en la memoria? Se consigue cuando el sistema lo pide de forma especfica o se intenta anticiparse a las peticiones del sistema? dnde, dentro del almacenamiento principal colocaremos el programa queva a ser ejecutado a continuacin? Colocamos los programas lo ms apretados posibles dentro de las ranuras disponibles de la memoria para reducir al mnimo el desperdicio de espacio, o se colocan los programas lo ms rpido posible para ahorrar tiempo de ejecucin? Si un nuevo programa necesita ser colocado en el almacenamiento principal y ste est lleno, cul de los otros programas se desplazar? Deben reemplazarse los programas ms antiguos, aquellos que se utilizan con menor frecuencia, o aquellos que se han utilizado hace ms tiempo? 8.3 Estrategias de administracin del almacenamiento Las estrategias de administracin del almacenamiento se dividen en las categoras siguientes: 1.Estrategias de bsqueda: a)Estrategias de bsqueda por demanda 2014_Sistemas_Operativos_Resumen32 b)Estrategias de bsqueda anticipada 2.Estrategias de colocacin 3.Estrategias de reposicin Las estrategias de bsquedaestn relacionadas con el hecho de cundo obtener el siguiente fragmento de programa, o de datos, para su insercin en el almacenamiento principal. La estrategia convencional de bsqueda por demanda, donde el siguiente fragmento de programas, o de datos, es trado al almacenamiento principal cuando algn programa en ejecucin hace referencia a l; en oposicin a la estrategia de bsqueda anticipada donde se intenta predecir adnde ir el control del programa en el paso siguiente para traer esa porcin al almacenamiento principal. Las estrategias de colocacin estn relacionadas con la determinacin del lugar dentro del almacenamiento principal, donde va a ser colocado un programa nuevo. Las estrategias de colocacin del almacenamiento de primer ajuste, mejor ajuste y peor ajuste. Las estrategias de reposicin estn relacionadas con la determinacin de qu fragmentos de programa, o de datos, desplazar, para dejar sitio a los programas nuevos. ___ 8.4 Asignacin contigua de almacenamiento VS. No contigua Los primeros sistemas computacionales requeran una asignacin contigua de almacenamiento; cada programa tena que ocupar un bloque sencillo y contiguo de localizaciones de almacenamiento. En la asignacin no contigua de almacenamiento, un programa es dividido en varios bloques o segmentos que pueden ser colocados a lo largo del almacenamiento principal en partes que no tienen que ser necesariamente adyacentes. 8.4.1 Asignacin contigua de almacenamiento de un solo usuario Los primeros sistemas de computacin slo permitan usar la mquina a una persona a la vez. Todos sus recursos estaban a disposicin del usuario.El tamao de los programas est limitado por la cantidad de almacenamiento principal, pero es posible ejecutar programas ms grandes que ste ltimo por medio de recubrimientos. Si una seccin particular del programa no es necesaria durante todo el transcurso de su ejecucin, entonces puede traerse otra seccin desde el almacenamiento secundario, para ocupar el almacenamiento utilizado por la seccin que ya no se necesita. En los sistemas de asignacin contigua de un solo usuario, ste tiene un completo control sobre la totalidad del almacenamiento principal. El almacenamiento est divido en una porcin que contiene las rutinas del sistema operativo, otra que contiene el programa del usuario, y una porcin sin usar.. La cuestin de la proteccin es simple: Cmo puede protegerse el sistema operativo contra su destruccin por el programa del usuario? La proteccin se implementa mediante un registro de lmites, incorporado al CPU. Cada vez que el programa de un usuario hace referencia a una direccin de almacenamiento, se comprueba el registro de lmites para asegurarse que el usuario no va a destruir el sistema operativo. El registro de lmites contiene la direccin de la instruccin ms alta utilizada por el sistema operativo. Si el usuario intenta entrar en el sistema operativo, entonces la instruccin es interceptada y el trabajo se termina con un mensaje de error apropiado. 8.4.2 Procesamiento por lotes de flujo nico Los sistemas de un solo usuario se dedican a un trabajo durante ms tiempo del que toma su ejecucin. Los trabajos requieren, en general, un tiempo considerable de instalacin durante el cual se carga al sistema operativo, se montan las cintas y paquetes de disco, las tarjetas se colocan en la lectora, los formatos apropiados se colocan en la impresora, las tarjetas de tiempo se perforan, etc. Cuando los 2014_Sistemas_Operativos_Resumen33 trabajos terminan, requieren de una cantidad considerable de tiempo de descarga, mientras se retiran las cintas, tarjetas, paquetes de discos, formas de impresoras, etc. Durante la instalacin y descarga de los trabajos, el computador esta ocioso. Los diseadores comprendieron que si podan automatizar la transicin de trabajo a trabajo, entonces podran reducir de forma considerable la cantidad de tiempo permitido entre trabajos. Esto llev al desarrollo de sistemas de procesamiento por lotes. En el procesamiento por lotes de flujo nico, los trabajos se agrupan en lotes, colocando sus tarjetas de control reverso con reverso en la lectora de tarjetas ( o cargando los trabajos consecutivamente en una cinta o disco). Un procesador de flujos de trabajos lee las instrucciones del lenguaje de control de trabajos y facilita la preparacin del trabajo siguiente. Emite directrices al operador del sistema y ejecuta de forma automtica muchas de las funciones que antes eran de ejecucin manual. Cuando termina el trabajo actual, el lector de flujos de trabajos lee automticamente las instrucciones del lenguaje de control para el siguiente trabajo y realiza una operacin de mantenimiento apropiada para facilitar la transicin del siguiente trabajo. ___ 8.5 Multiprogramacin de Particin Fija An con los sistemas operativos de procesamiento por lotes, los sistemas de un solo usuario siguen desperdiciando una considerable cantidad de recursos computacionales.Los diseadores comprendieron de nuevo que podan incrementar de forma considerable la utilizacin del CPU por medio de la administracin intensiva. Esta vez, implementando los sistemas de multiprogramacin, en los cuales varios usuarios compiten al mismo tiempo por los recursos del sistema.Para aprovechar al mximo las ventajas de la multiprogramacin, es necesario que varios trabajos residan a la vez en el almacenamiento principal del computador. Entonces, cuando un trabajo pida una operacin de entrada/salida, el CPU puede ser cambiado de inmediato a otro trabajo y realizar los clculos sin dilacin. 8.5.1 Multiprogramacin de particin fija: traduccin y carga absolutas En los primeros sistemas de multiprogramacin, el almacenamiento principal estaba dividido en una serie de particiones de tamao fijo. Cada particin poda mantener un solo trabajo. El CPU se cambiaba rpidamente entre los usuarios para crear la ilusin de simultaneidad. Los trabajos se traducan con ensambladores y compiladores absolutos para ser ejecutados slo dentro de una particin especfica. Si un trabajo estaba listo para su ejecucin y se ocupaba su particin, entonces ese trabajo deba esperar, an cuando estuvieran disponibles otras particiones. 8.5.2 Multiprogramacin de particin fija: traduccin y carga relocalizables Los compiladores, ensambladores y cargadores de relocalizacin se usan para producir programas relocalizables que puedan ser ejecutados en cualquier particin disponible de tamao suficiente para aceptarlos. 8.5.3 Proteccin en los sistemas de multiprogramacin En los sistemas de multiprogramacin de asignacin contigua, la proteccin suele implementarse con varios registros de lmites. Los extremos superior e inferior de una particin del usuario pueden ser delineados con dos registros o pueden indicarse el lmite inferior (o superior) y la longitud de la regin. El usuario que necesita llamar al sistema operativo tiene que utilizar una instruccin de llamada al supervisor. Esto permite al usuario cruzar el lmite del sistema operativo y pedir sus servicios. 8.5.4 Fragmentacin en la multiprogramacin de particin fija 2014_Sistemas_Operativos_Resumen34 La fragmentacin de almacenamiento ocurre en todos los sistemas de computacin con independencia de su organizacin de almacenamiento. En los sistemas de multiprogramacin de particin fija, la fragmentacin se produce cuando los trabajos del usuario no llenan completamente sus particiones designadas, o cuando una particin permanece sin usar porque es demasiado pequea par alojar un trabajo que se encuentra en espera. ___ 8.6 Multiprogramacin de Particin Variable Los diseadores de sistemas operativos, al observar los problemas de la multiprogramacin de particin fija, decidieron que una mejora notable sera permitir que los trabajos ocuparan tanto espacio (menor que la totalidad del rea de almacenamiento real) como necesitaran. No habra lmite fijo. Este esquema se denomina multiprogramacin de particin variable.En todos los esquemas de organizacin del almacenamiento implican algn grado de desperdicio. En la multiprogramacin de particin variable, el desperdicio no se evidencia hasta que los trabajos comienzan a terminar y dejan agujeros en el almacenamiento principal. Estos agujeros pueden ser usados por otros trabajos, pero aunque suceda esto, los agujeros restantes van haciendose ms pequeos. 8.6.1 Combinacin de agujeros Cuando un trabajo termina en un sistema de multiprogramacin de particin variable, podemos comprobar si el almacenamiento que libera tiene lmites con otras reas libres de almacenamiento (agujeros). Si ocurre esto, entonces podemos registrar en el almacenamiento libre: 1) un agujero adicional, o 2) un solo agujero que representa la fusin del agujero existente con el nuevo adyacente. El proceso de fusionar agujeros adyacentes para formar uno sencillo ms grande se llama combinacin. 8.6.2 Compresin (o compactacin) de almacenamiento Aunque los agujeros estn combinados, suele suceder que los agujeros separados, distribuidos por todo el almacenamiento principal, constituyen una cantidad significativa de almacenamiento. La tcnica de compresin de almacenamiento implica pasar todas las reas ocupadas del almacenamiento a uno de los extremos del almacenamiento principal. De manera convencional la compresin de almacenamiento se denomina recogida de residuos. ___ 8.6.3 Estrategias de colocacin del almacenamiento Las estrategias de colocacin del almacenamiento se utilizan para determinar, en el almacenamiento principal, el lugar donde sern colocados los programas y datos que van llegando. Estrategia de mejor ajuste. Un trabajo nuevo, al llegar al almacenamiento principal, es colocado en el agujero en el cual quepa de forma ms ajustada y deje el menor espacio sin usar. Lista de almacenamiento libre: mantiene en orden ascendente por tamao de agujero. Estrategia de primer ajuste. Un trabajo nuevo, al llegar al almacenamiento principal, es colocado en el primer agujero disponible con tamao suficiente para acogerlo. Lista de almacenamiento libre : mantiene en orden las direcciones de almacenamiento o, a veces, en orden aleatorio. Estrategia de peor ajuste. El peor ajuste consiste en colocar un programa en el almacenamiento principal, en el agujero en el que quepa de la peor manera, es decir, en el agujero ms grande posible. Lista de almacenamiento libre: mantiene en orden descendente por tamao de agujero. 2014_Sistemas_Operativos_Resumen35 8.7 Multiprogramacin con intercambio de almacenamiento En cada uno de los esquemas de multiprogramacin estudiados hasta el momento, los programas del usuario permanecen en la memoria principal hasta su terminacin. Otro esquema, llamado intercambio, no requiere esto. En algunos sistemas de intercambio, un trabajo ocupa el almacenamiento principal de inmediato. Este trabajo se ejecuta hasta que ya no puede continuar y entonces cede el almacenamiento y el CPU al siguiente trabajo. Con esto, la totalidad del almacenamiento se dedica a un trabajo durante un breve periodo, ese trabajo es entonces retirado (es decir, intercambiado) y entra el nuevo. Un trabajo puede ser intercambiado varias veces, antes de llegar a su terminacin. __ 9 Organizacin del almacenamiento virtual 9.1 Introduccin La memoria es una gran matriz de palabras o bytes, cada uno con su propia direccin. La CPU obtiene instrucciones de la memoria segn el valor del contador de programa. Estas instrucciones pueden hacer que se carguen valores de direcciones de memoria especfica o que se guarden en ellas. Un ciclo de ejecucin de instruccin representativo primero obtiene una instruccin de la memoria. Acto seguido, la instruccin se decodifica y podra causar la obtencin de operandos de la memoria. Una vez que se ha ejecutado la instruccin con los operandos, podra almacenarse resultados en la memoria. Cabe sealar que la unidad de memoria slo ve una corriente de direcciones de memoria; no sabe cmo se generan (contador de instrucciones, etc.) ni para qu son (instrucciones o datos). Por tanto, podemos olvidarnos de cmoun programa genera una direccin de memoria; slo nos interesa la secuencia de direcciones de memoria generada por el programa en ejecucin. 9.1.1 Vinculacin de direcciones Normalmente, un programa reside en un disco como archivo binario ejecutable. Es proceso traer el programa a la memoria y colocarlo dentro de un proceso para que se ejecute. Dependiendo de la gestin de memoria empleada, el proceso podra transferirse entre el disco e y la memoria durante su ejecucin. La coleccin de procesos que estn en el disco esperando que se les transfiera a la memoria para ejecutarse forma la cola de entrada.La mayor parte de los sistemas permiten a un proceso de usuario residir en cualquier parte de la memoria fsica. As, aunque el espacio de direcciones del computador comience en 00000, la primera direccin del proceso de usuario no tiene que ser 00000. Esta organizacin afecta las direcciones que el programa de usuario puede utilizar. En la mayor parte de los casos, un programa de usuario pasar por varias etapas (algunas de las cuales podran ser opcionales) antes de ejecutarse. Las direcciones podran representarse de diferentes maneras en dichas etapas,. Las direcciones del programa fuente generalmente son simblicas (como CUENTA). Un compilador por lo regular vincula tales direcciones simblicas con direcciones reubicables ( como 14 bytes a partir del principio de este mdulo). El editor de enlace o cargador, a su vez, vincular estas direcciones reubicables con direcciones absolutas (como 75014). Cada vinculacin es una trasformacin de un espacio de direcciones a otro. Tradicionalmente, la vinculacinde instrucciones y datos con direcciones de memoria se puede efectuar en cualquier etapa del camino: -Compilacin: Si en el momento de la compilacin se sabe en qu parte de la memoria va a residir el proceso, es posible generar cdigo absoluto. Por ejemplo, si se sabe a priori que un proceso de usuario residir a partir de la posicin R, el cdigo generado por el compilador empezar en esa posicin y se extender de ah hacia arriba. Si posteriormente la posicin de inicio cambia, ser 2014_Sistemas_Operativos_Resumen36 necesario recompilar el cdigo. Los programas con formato .COM de MS-DOS son cdigo absoluto vinculado en el momento de la compilacin. -Carga: Si al compilar el programa no se sabe en qu parte de la memoria va a residir el proceso, el compilador deber generar cdigo reubicable. En este caso la vinculacin final se posterga hasta el momento del a carga. Si la direccin de inicio cambia, bastar con volver a cargar el cdigo de usuario para incorporar este valor modificado. -Ejecucin: Si, durante su ejecucin, un proceso se podra pasar de un segmento de la memoria a otro, la vinculacin deber postergarse hasta el momento de la ejecucin. Se requiere de hardware especial para que este esquema funcione. 9.1.2 Carga dinmica Hasta aqu hemos supuesto que todo el programa y todos los datos de un proceso deben estar en la memoria fsica para que el proceso se ejecute. El tamao de un proceso est limitado al tamao de la memoria fsica. La carga dinmica es una tcnica donde las rutinas no se cargan sino hasta que se invocan. Todas las rutinas se mantienen en el disco en un formato de carga reubicable. El programa principal se carga en la memoria y se ejecuta. Cuando una rutina necesita llamar a otra, lo primero que hace es ver si la otra rutina ya se carg. Si no es as, se invoca al cargador de enlace reubicable para que cargue la rutina deseada en la memoria y actualice las tablas de direcciones del programa de modo que reflejen este cambio. Luego se transfiere el control a la rutina que se acaba de cargar. La ventaja de la carga dinmica es que una rutina que no se utiliza nunca se carga. 9.1.3 Enlace dinmico El enlace esttico es aquel en el que las bibliotecas de lenguaje del sistema se tratan como cualquier otro mdulo objeto que el cargador combina dentro de la imagen binaria del programa. El concepto de enlace dinmico es similar al de carga dinmica. En lugar de posponer la carga hasta el momento de la ejecucin, lo que se pospone es el enlace. Esta caracterstica suele usarse con las bibliotecas del sistema, como las bibliotecas de subrutinas de un lenguaje. Si no se cuenta con este recurso, todos los programas de un sistema requerirn la inclusin de una copia de su biblioteca de lenguaje (o al menos de las rutinas a las que el programa hace referencia) en su imagen ejecutable. Este requisito desperdicia tanto espacio en disco como memoria principal. Con enlace dinmico, se incluye un fragmento (stub) en la imagen por cada referencia a una rutina de biblioteca. Este fragmento es una seccin pequea de cdigo que indica cmo localizar la rutina de biblioteca apropiada, que reside en la memoria, o cmo cargar la biblioteca si la rutina no est ya presente. Cuando este fragmento se ejecuta, verifica si la rutina que necesita ya est en la memoria. Si no es as, el programa la carga en la memoria. De cualquier manera, el fragmento se sustituye a si mismo por la direccin de la rutina, y ejecuta la rutina. As, la prxima vez que se llega al segmento de cdigo la rutina de biblioteca se ejecuta directamente, sin incurrir en el costo del enlace dinmico. Con este esquema, todos los procesos que utilizan una biblioteca de lenguaje ejecutan una sola copia del cdigo de la biblioteca. Esta caracterstica se puede extender a la actualizacin de bibliotecas (como cuando se corrigen errores). Una biblioteca podra sustituirse por una versin nueva, y todos los programas que hagan referencia a la biblioteca usarn automticamente la nueva versin. Sin enlace dinmico, habra que volver a enlazar todos esos programas para tener acceso a la biblioteca nueva. Para que los programas no ejecuten accidentalmente versiones nuevas e incompatibles de las bibliotecas, se incluye informacin de versin tanto en los programas como en las bibliotecas. Se podra cargar en memoria ms de una versin de una biblioteca, y cada programa utilizar su informacin de versin para decidir cul copia de la biblioteca usar. Si los cambios son menores, se conserva el mismo nmero de versin; si los cambios son importantes, el nmero de versin se incrementa. As, slo los programas que se compilan con la versin 2014_Sistemas_Operativos_Resumen37 nueva de una biblioteca son afectados por los cambios incompatibles incorporados en ella. Los programas que se enlazaron antes de que se instalara la nueva biblioteca seguirn usando la biblioteca vieja. Este sistema se conoce como de bibliotecas compartidas. 9.1.4 Superposiciones (Overlays) Para que un proceso pueda ser mayor que la cantidad de memoria que se le ha asignado, a veces se emplea una tcnica llamada de superposiciones. Lo que se busca es mantener en la memoria slo las instrucciones y datos que se necesitan en cualquier momento dado. Si se requieren otras instrucciones, se cargan en un espacio que antes estaba ocupado por instrucciones que ya no se necesitan. Las superposiciones no requieren soporte especial por parte del sistema operativo; el usuario las puede implementar en su totalidad. ___ 9.2. Espacio de direcciones lgico y fsico Una direccin generada por la CPU, se denomina direccin lgica, en tanto que la percibida por la unidad de memoria ( esto es, la que se carga en el registro de direccin de memoria de la memoria) se conoce como direccin fsica. Los esquemas de vinculacin de direcciones durante la compilacin y durante la carga dan pie a un entorno en el que las direcciones lgicas y fsicas son las mismas. En cambio, la ejecucin del esquema de vinculacin de direcciones durante la ejecucin produce un entorno en el que las direcciones lgicas y fsicas difieren. En este caso, solemos llamar a la direccin lgica direccin virtual. Aqu los usaremos indistintamente. El conjunto de todas las direcciones lgicas generadas por un programa es su espacio de direcciones lgicas; el conjunto de todas las direcciones fsicas que corresponden a esas direcciones lgicas es un espacio de direcciones fsicas. La transformacin de direcciones virtuales a fsicas en el momento de la ejecucin corre por cuenta de la unidad de gestin de memoria (MMU, memory-management unit), que es un dispositivo de hardware. El registro base ahora se llama registro de reubicacin, y el valor que contiene se suma a todas las direcciones generadas por un proceso de usuario en el momento en que se envan a la memoria. Por ejemplo, si la base est en 14000 y el usuario intenta direccionar la posicin 0, la direccin se reubicar dinmicamente a la posicin 14000; un acceso a la posicin 346 se transforma en la posicin 14346. Cabe sealar que el programa de usuario nunca ve las direcciones fsicas reales. El programa puede crear un puntero a la posicin 346, almacenarlo en memoria, manipularlo, compararlo con otras direcciones, etc., todo como el nmero 346. Slo cuando este nmero se usa como direccin de memoria (digamos en una carga o un almacenamiento indirecto) se le reubica relativo al registro base. El programa de usuario maneja direcciones lgicas. El hardware de transformacin de memoria convierte direcciones lgicas en direcciones fsicas. La posicin final de una direccin de memoria a la que se hace referencia no se determina sino hasta que se hace dicha referencia. Observe tambin que ahora tenemos dos tipos de direcciones distintos: direcciones lgicas (en el intervalo 0 a max) y direcciones fsicas (en el intervalo R + 0 a R + max si el valor base es de R). El usuario genera nicamente direcciones lgicas y piensa que el proceso se ejecuta en las posiciones de 0 a max. EL programa de usuario proporciona direcciones lgicas, las cuales deben transformarse en direcciones fsicas antes de usarse. 9.3 Almacenamiento virtual El trmino almacenamiento virtual suele asociarse con la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computacin. Los dos mtodos ms comunes de implementacin del almacenamiento virtual son la paginacin y la segmentacin. 2014_Sistemas_Operativos_Resumen38 Evolucin en las organizaciones de almacenamiento: RealRealVirtual Sistema dedicado a un solo usuario. Sistemas de multiprogramacin en almacenamiento real Multiprogramacin en almacenamiento virtual Multiprogramacin en particin fija Multiprogramacin en particin variable Paginacin pura Segmentacin pura Combinacin paginacin / segmentacin AbsolutaRelocalizable 9.3.1 Almacenamiento virtual: Conceptos bsicos La clave del concepto de almacenamiento virtual est en la disociacin de las direcciones a las que hace referencia un programa de las direcciones disponibles en el almacenamiento primario. Las direcciones referidas por un proceso en ejecucin se denominan direcciones virtuales. Las direcciones disponibles dentro del almacenamiento primario se denominan direcciones reales. El nmero de direcciones virtuales a que puede hacer referencia un procesos, se llama espacio de direcciones virtuales, V, de ese proceso. El nmero de direcciones reales disponibles en un sistema computacional determinado se llama espacio de direcciones reales, R, de ese computador. Aun cuando los procesos slo hacen referencia a direcciones virtuales, stas deben ejecutarse en el almacenamiento real. Por esto, las direcciones virtuales deben ser transformadas dentro de las direcciones reales, mientras el procesos est en ejecucin. Los mecanismos de traduccin dinmica de direcciones (DAT) convierten las direcciones virtuales en reales al ejecutarse el proceso. Todos estos sistemas exhiben la propiedad de que las direcciones contiguas dentro del espacio de direcciones virtuales de un procesos, no tiene por qu ser contiguas dentro del almacenamiento real; eso se llama contigidad artificial. 9.3.2 Organizacin del almacenamiento de niveles mltiples Si se va a permitir que el espacio de direcciones virtuales de un usuario sea mayor que el espacio de direcciones reales y si se va a multiprogramar de forma efectiva un sistema con muchos usuarios que compartan el recurso del almacenamiento real, entonces hay que proporcionar los medios para retener programas y datos en un gran almacenamiento auxiliar. Esto suele realizarse utilizando un esquema de almacenamiento de dos niveles. El primer nivel es el de almacenamiento real, donde se ejecutan los procesos y donde deben estar los datos para que un proceso pueda referirse a ellos. El segundo nivel consta de un medio de almacenamiento de gran capacidad, como discos, que pueden mantener los programas y datos que no caben al mismo tiempo en el limitado almacenamiento real. Este segundo nivel de almacenamiento recibe los nombres de almacenamiento auxiliar, secundario o adicional. 2014_Sistemas_Operativos_Resumen39 9.3.3 Transformacin de bloques Los mecanismos de traduccin dinmica de direcciones deben mantener mapas que ilustren qu direcciones del almacenamiento virtual se encuentran en el almacenamiento real y dnde se encuentran. No es rentable transformar los elementos individualmente. As pues, la informacin se agrupa en bloques, y el sistema est informado del lugar del almacenamiento real donde han sido colocados los bloques de almacenamiento virtual. Cuando los bloques son del mismo tamao, reciben el nombre de pginas, y la organizacin de almacenamiento virtual asociada se denomina paginacin. Cuando los bloques pueden tener diferentes tamaos, se llaman segmentos, y la organizacin de almacenamiento virtual asociada se conoce como segmentacin. Algunos sistemas combinan las dos tcnicas, implementando los segmentos como entidades de tamao variable compuestas de pginas de tamao fijo. __ 9.4 Paginacin 9.4.1 Mtodo bsico La memoria fsica se divide en bloques de tamao fijo llamados marcos ( frames ). La memoria lgica tambin se divide en bloques del mismo tamao llamados pginas. Cuando se va a ejecutar un proceso, sus pginas se cargan desde el almacenamiento auxiliar, en cualesquier marcos de memoria que estn disponibles. El almacenamiento auxiliar se divide en bloques de tamao fijo que tienen el mismo tamao que los marcos de memoria. Cada direccin generada por la CPU se divide en dos partes: un nmero de pgina (p) y un desplazamiento en la pgina (d). El nmero de pgina se utiliza como ndice de una tabla de pginas, la cual contiene la direccin base de cada pgina en la memoria fsica. Esta direccin base se combina con el desplazamiento en la pgina para definir la direccin de memoria fsica que se enva a la unidad de memoria. El tamao de pgina (al igual que el de marco) esta definido por el hardware, y suele ser una potencia de dos que vara entre 512 bytes y 16 Mbytes por pgina, dependiendo de la arquitectura del computador. La seleccin de una potencia de dos para el tamao de las pginas facilita mucho la traduccin de una direccin lgica a un nmero de pgina y desplazamiento en la pgina, si el tamao del espacio de direcciones lgico es de 2m, y una pgina contiene 2n unidades de direccionamiento (bytes o palabras), los m-n bits de orden alto de una direccin lgica designan el nmero de pgina, y los n bits de orden bajo designan el desplazamiento en la pgina. Cabe sealar que la paginacin es realmente una forma de reubicacin dinmica. Cuando un proceso ingresa en el sistema para ejecutarse, se examina su tamao expresado en pginas. Cada pgina del proceso requiere un marco, as que si un proceso tiene n pginas, deber haber al menos n marcos disponibles en la memoria. Si los hay, se asignan al proceso entrante. La primera pgina del procese se asigna a uno de los marcos asignados, y el nmero de marco se asienta en la tabla de pginas para este proceso. La siguiente pgina se carga en otro marco, su nmero de marco se coloca en la tabla de pginas, y as sucesivamente. Un aspecto importante de la paginacin es la marcada separacin entre la visin que el usuario tiene de la memoria y la memoria fsica real. El programa de usuario ve la memoria como un solo espacio contiguo, que slo contiene este programa. En realidad, el programa de usuario est disperso por toda la memoria fsica, que tambin contiene otros programas. El hardware de traduccin de direcciones concilia la diferencia entre la visin del usuario y la memoria fsica real. Las direcciones lgicas se traducen en direcciones fsicas. El usuario no ve esta transformacin, que est bajo el control del sistema operativo. Recuerde que, por definicin, el proceso de usuario no puede acceder a memoria que no posee; no tiene manera de direccionar memoria que no est en su tabla de pginas, la cual slo incluye las pginas propiedad de ese proceso. 2014_Sistemas_Operativos_Resumen40 Puesto que el sistema operativo administra la memoria fsica, debe tener conciencia de los detalles de su asignacin: cuales marcos estn asignados, cules estn libres, cuntos marcos hay en total, etc. Esta informacin generalmente se guarda en una estructura de datos llamada tabla de marcos, la cual tiene, por cada marco de pgina fsico, una entrada en la que se indica si el marco est libre o asignado y, si est asignado, a qu pgina de qu proceso se asign. __ 9.4.2 Estructura de la tabla de pginas Cada sistema operativo tiene sus propios mtodos para almacenar tablas de pginas. Casi todos asignan una tabla de pginas para cada proceso. Un puntero a la tabla se guarda junto con los valores de los dems registros (como el contador de instrucciones) en el bloque de control del proceso. 9.4.2.1 Soporte de hardware La implementacin en hardware de la tabla de pginas se puede efectuar de varias formas distintas. En el caso ms sencillo, la tabla se implementa como un conjunto de registros dedicados. El empleo de registros para la tabla de pginas es satisfactorio si la tabla es razonablemente pequea. Cuando la tabla es muy grande se mantiene en la memoria principal, y un registro base de tabla de pginas(PTBR, page-table base register) apunta a ella. El problema de este enfoque es el tiempo requerido para acceder a una posicin de memoria de usuario. La solucin es usar un pequeo cach especial en hardware, de consulta rpida, que se conoce como registros asociativosobuffers de traduccin de mirada rpida (TLB, translation look-aside buffers). Cada registro consta de dos partes: una clave y un valor. Cuando se presenta un elemento a los registros asociativos, se compara con todas las claves simultneamente. Si se encuentra el elemento, se devuelve el campo de valor correspondiente. Los registros asociativos se utilizan con las tablas de pginas de la siguiente forma. Los registros contiene slo unas cuantas de las entradas de la tabla. Cuando la CPU genera una direccin lgica, su nmero de pgina se presenta a un conjunto de registros asociativos que contiene nmeros de pginas y sus nmeros de marco correspondiente. Si el nmero de pgina est en un registro asociativo, se obtiene de inmediato su nmero de marco y se usa para acceder a la memoria.Si el nmero de pgina no est en los registros asociativos, ser preciso hacer una referencia a la tabla de paginas en memoria. Una vez obtenido el nmero de marco, servir para acceder a la memoria. Adems, se agrega el nmero de pgina y el de marco a los registros asociativos para poder encontrarlos rpidamente en la siguiente referencia. Si el TLB ya est lleno de entradas, el sistema operativo deber escoger una para sustituirla. Cada vez que se escoge una tabla de pginas nuevas es preciso desalojar (borrar) el RLB para asegurar que el siguiente proceso que se ejecute no emplee la informacin de traduccin equivocada. 9.4.2.2 Proteccin La proteccin de la memoria en un entorno paginado se logra con bits de proteccin asociados a cada marco. Normalmente, estos bits se mantienen en la tabla de pginas. Un bit puede definir si la pgina es de lectura y escritura o slo de lectura. Cada referencia a la memoria pasa por la tabla de pginas para obtener el nmero de marco correcto. Al mismo tiempo que se est calculando la direccin fsica, se pueden examinar los bits de proteccin para comprobar que no se est tratando de escribir en una pgina en la que slo se permite leer. Semejante intento causara la transferencia de control al sistema operativo a travs de una trampa (violacin de la proteccin de memoria). 2014_Sistemas_Operativos_Resumen41 Tal estrategia de proteccin se puede ampliar fcilmente para ofrecer un nivel ms detallado de proteccin. Generalmente se aade un bit ms a cada entrada de la tabla de pginas: un bit de validez /no validez. Si este bit indica vlido, es que la pgina correspondiente est en el espacio de direcciones lgico del proceso, y por ende es vlida. Si el bit indica no vlido, la pgina no est en el espacio de direcciones lgico del proceso. Las direcciones no vlidas se atrapan empleando el bit de validez /no validez. El sistema operativo establece este bit para cada pgina a fin de permitir o prohibir el acceso a ella. ___ 9.4.3 Paginacin multinivel La generalidad de los sistemas de computador modernos maneja un espacio de direcciones lgicos muy grande (232 a 264). En un entorno as, la tabla de pginas crece demasiado. Una solucin sencilla es dividir la tabla en fragmentos ms pequeos. Hay varias formas de efectuar esto. Una de ellas es adoptar un esquema de paginacin de dos niveles, en el que la tabla de pginas misma tambin se pagina. Apropiado en una mquina de 32 bits. En un sistema con un espacio de direcciones lgico de 64 bits, un esquema de paginacin de dos niveles ya no es apropiado. El mtodo obvio para evitar una tabla de pginas tan grande es dividir la tabla de pginas exterior en fragmentos ms pequeos. Podemos paginar la tabla de pginas exterior y tener un esquema de paginacin de tres niveles, lo cual sigue siendo enorme. El siguiente paso sera un esquema de paginacin de cuatro niveles, el que la tabla de pginas exterior de segundo nivel tambin se pagina. 9.4.4 Tabla de pginas invertida Por lo regular, cada proceso tiene su propia tabla de pginas, la cual tiene una entrada por cada pgina que el proceso est usando ( o una ranura por cada direccin virtual, sin importar la validez de esta ltima). Una de las desventajas de este esquema es que cada tabla de pginas podra contener millones de entradas. Para resolver este problema, podemos usar una tabla de pginas invertidas. Una tabla de pginas invertida tiene una entrada por cada pgina (marco) real de la memoria. Cada entrada consiste en la direccin virtual de la pgina almacenada en esa posicin de memoria real, con informacin acerca del proceso dueo de esa pgina. As, solo hay una tabla de pginas en el sistema, y slo tiene una entrada por cada pgina de memoria fsica. Para ilustrar este esquema, describiremos una versin simplificada de la implementacin de la tabla de pginas invertida que se usa ene el IBM RT. Cada direccin virtual del sistema consiste en una tripleta . Cada entrada de la tabla de pginas invertida es un par . Cuando ocurre una referencia a la memoria, una parte de la direccin virtual, que consiste en , se presenta al subsistema de memoria. A continuacin se busca en la tabla de pginas invertidas un valor igual. Si se encuentra dicho valor digamos la entrada i se genera la direccin fsica . Si ninguna entrada coincide, es que se intent un acceso a una direccin no vlida. Aunque este esquema reduce la cantidad de memoria necesaria para almacenar las tablas de pginas, aumenta el tiempo que toma realizar la bsqueda en la tabla cuando ocurre una referencia a una pgina. Puesto que la tabla est ordenada por direccin fsica, y lo que se busca es una direccin virtual, cabe la posibilidad de tener que examinar toda la tabla para encontrar un valor coincidente. 9.4.5 Pginas compartidas Otra ventaja de la paginacin es la posibilidad de compartir cdigo comn. Esta consideracin es importante sobre todo en un entorno de tiempo compartido, en la que se tiene un programa de cdigo 2014_Sistemas_Operativos_Resumen42 reentrante que puede ser utilizado por varios usuarios. El cdigo reentrante (tambin llamado cdigo puro) es cdigo que no puede modificarse a s mismo. Si el cdigo es reentrante, nunca cambia durante su ejecucin. As, dos o ms procesos pueden ejecutar el mimo cdigo al mismo tiempo. Cada proceso tiene su copia de los registros y el almacenamiento de datos que contienen la informacin para la ejecucin del proceso. Desde luego, los datos de dos procesos distintos son diferentes. Slo hay que mantener una copia del editor en la memoria fsica. La tabla de pginas de cada usuario establece una correspondencia con la misma copia fsica del cdigo reentrante, pero las pginas de datos corresponden a marcos distintos. ___ 9.5 Segmentacin Un aspecto importante de la gestin de memoria que se hizo inevitable al surgir la paginacin es la separacin entre la visin que el usuario tiene de la memoria y la memoria fsica real. La visin del usuario no es igual a la memoria fsica real; slo tiene una correspondencia con ella. La correspondencia permite diferenciar entre la memoria lgica y la fsica. 9.5.1 Mtodo bsico cmo ve el usuario la memoria? el usuario la considera una formacin lineal de bytes, algunos de los cuales contiene instrucciones y otros datos, o hay alguna otra visin preferida de la memoria? En general, se considera que el usuario o programador de un sistema no ve la memoria como una formacin lineal de bytes, ms bien, la ve como una coleccin de segmentos de tamao variable, sin algn ordenamiento necesario entre los segmentos. Pensemos en cmo visualizamos un programa cuando lo estamos escribiendo; lo vemos como un programa principal con una serie de subrutinas, procedimientos, funciones o mdulos. Tambin podra haber diversas estructuras de datos; tablas, arreglos, pilas, variables, etc. Hacemos referencia a cada uno de estos mdulos o elementos de datos por su nombre, sin que nos importe qu posicin en la memoria ocupan tales elementos. No nos interesa si el mdulo 1 esta antes o despus del mdulo 2. Cada uno de estos segmentos tiene longitud variable; la longitud est definida intrnsecamente por el propsito del segmento en el programa. Los elementos dentro de un segmento se identifican mediante su distancia al inicio del segmento. La segmentacin es un esquema de gestin de memoria que apoya esta visin que el usuario tiene de la memoria. Un espacio de direcciones lgicas es una coleccin de segmentos, cada uno de los cuales tiene un nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como las distancia dentro del segmento. As, el usuario especifica cada direccin con dos cantidades: un nombre de segmento y un desplazamiento.(Contrstese este esquema con el de paginacin, donde el usuario especificaba una sola direccin, que el hardware divida en un nmero de pgina y un desplazamiento, todo ello invisible par el programador.) Para simplificar la implementacin, los segmentos se numeran y se hace referencia a ellos por un nmero de segmento, no por su nombre. As, una direccin lgica consiste en una dupla Normalmente, el programa de usuario se compila, y el compilador construye automticamente segmentos que reflejan al programa que se le aliment. 9.5.2 Hardware Aunque el usuario ahora puede referirse a los objetos del programa con una direccin bidimensional, la memoria fsica real sigue siendo una secuencia unidimensional de bytes. Por ello, es preciso definir una 2014_Sistemas_Operativos_Resumen43 implementacin que transforme las direcciones bidimensionales definidas por el usuario en direcciones fsicas unidimensionales. Esta transformacin se efecta con una tabla de segmentos. Cada entrada de la tabla tiene una base de segmento y un lmite de segmento. LA base contiene la direccin fsica inicial donde el segmento reside en la memoria, mientras que el lmite especifica la longitud del segmento. Una direccin lgica consta de dos partes: un nmero de segmento, s, y un desplazamiento dentro de ese segmento, d. El nmero de segmento sirve como ndice para consultar la tabla de segmentos. El desplazamiento d de la direccin lgica debe estar entre 0 y el lmite del segmento; si no, transferimos el control al sistema operativo por una trampa (intento de direccionamiento lgico ms all del final del segmento). Si el desplazamiento es vlido, se suma a la base del segmento para producir la direccin del byte deseado en la memoria fsica. 9.5.3 Implementacin de las tablas de segmentos Al igual que la tabla de paginacin, la tabla de segmentos se puede colocar en registros rpidos o bien en la memoria. Una tabla de segmentos que se mantiene en registros se puede consultar rpidamente. Si un programa puede tener un gran nmero de segmentos, no es factible mantener la tabla de segmentos en registros , y hay que mantenerla en la memoria. Un registro base de la tabla de segmentos (STBR, segment-table base register) apunta a la tabla de segmentos. Tambin, dado que el nmero de segmentos que un programa usa puede variar mucho, se mantiene un registro de longitud de la tabla de segmentos (STLS, segment-table length register). Para una direccin lgica (s, d), primero se verifica que el nmero de segmento sea legal (es decir, s< STLR); luego se suma el nmero de segmento al STBR para obtener la direccin en memoria (STBR + s) de la entrada de la tabla de segmento. Se lee dicha entrada de la memoria y se procede igual que antes: se coteja el desplazamiento con la longitud del segmento y se calcula la direccin fsica del byte deseado como la suma de la base del segmento y el desplazamiento. Como ocurre con la paginacin, esta transformacin hace al sistema de computacin ms lento. La solucin normal es utilizar un conjunto de registros asociativos para guardar las entradas de la tabla de segmentos que se usaron ms recientemente. 9.5.4 Proteccin y compartimiento Una ventaja especfica de la segmentacin es que podemos asociar la proteccin con los segmentos. Dado que los segmentos representan porciones semnticamente definidas de un programa, es probable que todas las entradas del segmento se usen del mismo modo. As, tendremos algunos segmentos que contiene instrucciones, mientras que otros contienen datos. En una arquitectura moderna, las instrucciones no se pueden modificar a s mismas, as que los segmentos de instrucciones se pueden definir como slo para lectura o slo para ejecucin. El hardware de transformacin de la memoria examina los bits de proteccin asociados a cada entrada de la tabla de segmentos y evita los accesos no permitidos a la memoria, como los intentos de escribir en un segmento que slo puede leerse, o de usar como datos un segmento que slo puede ejecutarse. Si colocamos un arreglo en su propio segmento, el hardware de gestin de memoria verificar automticamente que los ndices del arreglo sean vlidos y no se salgan de los lmites del arreglo. Otra ventaja de la segmentacin tiene que ver con el compartimiento de cdigo o datos. Cada proceso tiene asociada una tabla de segmentos, que el despachador usa para definir la tabla de segmentos en hardware cuando se asigna la CPU a ese proceso. Los segmentos se comparten cuando estradas de las tablas de segmentos de dos procesos distintos apuntan a las mismas posiciones fsicas. El compartimiento se hace en el nivel de segmentos. As, cualquier informacin puede compartirse si se define como un segmento. Es posible compartir varios segmentos, as que un programa compuesto por varios segmentos puede compartirse. 9.5 Segmentacin con paginacin 2014_Sistemas_Operativos_Resumen44 En este mtodo se pagina los segmentos. La diferencia entre esta solucin y la segmentacin pura es que la entrada segmentable no contiene la direccin base del segmentos, sino la direccin base de una tabla de pginas para este segmento. Ahora debemos tener una tabla de pginas individual para cada segmento. Sin embargo, dado que la longitud de cada segmento est limitada por su entrada en la tabla de segmentos, no es necesaria que la tabla de pginas sea grande; slo tendr tantas entradas como realmente se necesiten.. 10 Memoria virtual La memoria vitual es una tcnica que permite ejecutar procesos que podran no estar totalmente en la memoria. La principal ventaja tangible de este esquema es que los programas pueden ser ms grandes que la memoria fsica. Adems, dicho esquema hace una abstraccin de la memoria considerndola como una matriz uniforme y extremadamente grande de almacenamiento, con lo que separa la memoria lgica que el usuario ve, de la memoria fsica. 10.1Antecedentes Los algoritmos de gestin de memoria vistos anteriormente son necesarios a causa de un requisito bsico: las instrucciones que se estn ejecutando deben estar en la memoria fsica. La primera estrategia para satisfacer este requisito es colocar todo el espacio de direcciones lgico en la memoria fsica. Las superposiciones y la carga dinmica pueden ayudarnos a hacer menos limitante esta restriccin. Esta restriccin limita el tamao de los programas al tamao de la memoria. De hecho, si examinamos programas reales, veremos que en muchos casos no se necesita todo el programa. La capacidad para ejecutar un programa que no est todo en la memoria tendra muchas ventajas: -Los programas ya no estaran limitados por la cantidad de memoria fsica con que se cuenta. Los usuarios podran escribir programas para un espacio de direcciones virtual extremadamente grande, lo que simplificara la tarea de programacin. -Puesto que cada programa de usuario ocupara menos memoria fsica, se podran ejecutar ms programas al mismo tiempo. Esto aumentara el aprovechamiento de la CPU y la productividad sin aumentar el tiempo de respuesta ni el de retorno. -Se requerira menos E/S para cargar o intercambiar cada programa de usuario, por lo que su ejecucin sera ms rpida. La memoria virtual generalmente se implementa con paginacin por demanda. 10.2 Paginacin por demanda Un sistema de paginacin por demanda es similar a un sistema de paginacin con intercambio. Los procesos residen en memoria secundaria (generalmente un disco). Cuando queremos ejecutar un proceso, lo pasamos por intercambio a la memoria; sin embargo, en ligar de intercambiar todo el proceso, usamos un intercambiados perezoso. Un intercambiador perezoso nunca intercambia una pgina a la memoria si no se va a necesitar. Dado que ahora visualizamos un proceso como una secuencia de pginas, y no como un espacio de direcciones contiguo de gran tamao, el uso del trmino intercambiador es tcnicamente incorrecto. Un intercambiador manipula proceso enteros, mientras que un paginador se ocupa de las pginas individuales de un proceso. Por ello, usaremos el trmino paginador en lugar de intercambiador al hablar de paginacin por demanda. Cuando un proceso se va a traer a la memoria, el paginador adivina cules son las pginas que se usarn antes de que el programa se intercambie de vuelta al disco. En lugar de traer a la memoria todo el proceso, el paginador slo trae las pginas necesarias; as, evita leer y colocar en la memoria pginas que de todos 2014_Sistemas_Operativos_Resumen45 modos no se usarn, con lo que se reduce el tiempo de intercambio y la cantidad de memoria fsica requerida. Con este esquema, necesitamos alguna forma de soporte de hardware para distinguir entre las pginas que estn en la memoria y las que estn en disco. Podemos usar para este fin el esquema de bit de validez-no validez, donde ahora el valor de vlido del bit indica que la pgina correspondiente es vlida y est en la memoria. Si el bit tiene el valor no vlido, quiere decir que la pgina o bien no es vlida (es decir, no est en el espacio de direcciones lgico del procesos) o es vlida pero no est en la memoria. La entrada de la tabla de pginas correspondiente a una pgina que se trajo a la memoria se establece de la forma acostumbrada, pero la correspondiente a una pgina que actualmente no est en la memoria simplemente se marca como no vlida, o bien contiene la direccin de la pgina en el disco. Cabe sealar que marcar una pgina como no vlida no tiene efecto alguno si el procesos nunca intenta acceder a esa pgina. Por tanto, si adivinamos correctamente y traemos a la memoria todas las pginas que en verdad se necesitan, y nicamente esas, el proceso se ejecutar exactamente igual que si hubiramos trado todas las pginas. Muestra el proceso ejecute y acceda a pginas residentes en memoria, la ejecucin se realizar normalmente. Pero, qu sucede si el proceso trata de usar una pgina que no se trajo a la memoria? El acceso a una pgina marcada como no vlida causa una trampa de fallo de pgina (page fault). El hardware de paginacin, al traducir la direccin utilizando la tabla de pginas, se percatar de que el bit de no validez est encendido y causar una transferencia de control al sistema operativo. Esta trampa ocurre porque el sistema operativo no pudo traer la pgina deseada a la memoria (en un intento por minimizar el gasto extra de transferencia del disco y las necesidades de memoria), no es un error de direccin no vlida causado por un intento de usar una direccin de memoria no permitida (como cuando se usa un subndice de arreglo incorrecto). El procedimiento para manejar este fallo es: 1.Consultar una tabla interna (que usualmente se guarda junto con el bloque de control de proceso) de este proceso, para determinar si la referencia fue un acceso vlido o no vlido a la memoria. 2.Si la referencia no era vlida, se termina el proceso; si era vlida, pero todava no se ha trado esa pgina, proceder a traerla. 3.Encontrar un marco libre (tomando uno de la lista de marcos libres). 4.Planificar una operacin de disco para leer la pgina deseada y colocarla en el marco recin asignado. 5.Al terminar la lectura del disco, modificar la tabla interna que se guarde junto con el proceso y la tabla de pginas, d modo que indiquen que la pgina ya est en la memoria. 6.Reiniciar la instruccin que se interrumpi por la trampa de direccin no vlida. Ahora el proceso puede acceder a la pgina como si siempre hubiera estado en la memoria. 10.3 Reemplazo de pginas En estos esquemas, la frecuencia de fallos de pgina no ha representado un problema grave porque una pgina dada puede dar pie cuando ms a un solo fallo de pgina, el cual, si ocurre, lo har la primera vez que se haga referencia a esa pgina. AL aumentar el grado de multiprogramacin, estaremos sobreasignando la memoria. La sobreasignacin se hace evidente como sigue. Mientras se est ejecutando un proceso de usuario, ocurre un fallo de pgina. El hardware transfiere el control la sistema operativo por una trampa, y ste examina sus pginas internas para comprobar que se trat de un fallo de pgina y no de un acceso a memoria no vlido. El sistema operativo determina en qu parte del disco reside la pgina deseada, pero luego se da cuenta de que no hay marcos libres en la lista de marcos libres; se est usando toda la memoria. Al llegar a este punto, el sistema operativo tiene varias opciones. Una de ellas sera terminar el proceso de usuario. O se podra intercambiar a disco un proceso para liberar todos sus marcos y reducir el nivel de programacin. O se podra hacer el reemplazo de pginas. 2014_Sistemas_Operativos_Resumen46 El reemplazo de pginas adopta el siguiente enfoque: si no hay marcos libres, encontramos uno que no se est usando y lo liberamos. Podemos liberar un marco escribiendo su contenido en el espacio de intercambio y modificando la tabla de pginas (y todas las dems tablas) de modo que indiquen que la pgina ya no est en la memoria. Ahora, el marco liberado puede servir para contener la pgina por la cual ocurri el fallo. La rutina de servicio de fallos de pgina se modifica as para incluir el reemplazo de pginas: 1.Encontrar la pgina deseada en el disco. 2.Hallar un marco libre: a.Si hay un marco libre, usarlo. b.Si no, usar un algoritmo de reemplazo de pginas para escoger un marco vctima. c.Escribir la pgina vctima en el disco; modificar de manera acorde las tablas de pginas y de marcos. 3.Leer la pgina deseada y colocarla en el marco recin liberado; modificar las tablas de pginas y de marcos. 4.Reiniciar el proceso de usuario. Observe que, si no hay marcos libres, se requieren dos transferencias de pgina. Este gasto extra pude reducirse empleado un bit de modificacin, o bit sucio. Cada pgina o marco pude tener en hardware un bit de modificacin asociado a ella. El hardware enciende (pone en 1) el bit de modificacin de una pgina siempre que se escribe una palabra o byte de la pgina, e indica que la pgina se modific. Cuando seleccionamos una pgina para reemplazarla, examinamos su bit de modificacin. Si el bit est encendido, sabemos que la pgina se modific despus de haberse ledo del disco. En este caso es preciso escribir la pgina en el disco. Si el bit de modificacin est apagado, la pgina no se ha modificado desde que se trajo a la memoria. Por tanto, si la copia de la pgina que est en el disco no se ha sobrescrito (con alguna otra pgina, por ejemplo) podemos evitar la escritura en disco de la pgina que est en la memoria, pues ya est en el disco. Esta tcnica tambin aplica a las pginas que slo pueden leerse. Tales pginas no pueden modificarse, as que pueden desecharse cuando se desee. Por lo tanto es necesario resolver el problema de cmo reemplazar las pginas. 10.4 Algoritmos de reemplazo de pginas 10.4.1 Algoritmo FIFO El algoritmo de reemplazo de pginas ms sencillo es del tipo primero en entrar, primero en salir (FIFO, first-in, first-out). Un algoritmo de reemplazo FIFO asocia a cada pgina el instante en que esa pgina se trajo a la memoria. Si es necesario reemplazar una pgina, se escoge la ms vieja. Cabe sealar que no es estrictamente necesario registrar el instante en que se trae una pgina. Podemos crear una cola FIFO que contenga todas las pginas que estn en la memoria, y reemplazar la pgina que est a la cabeza de la cola. Cuando traemosuna pgina a la memoria, la insertamos al final de la cola. 10.4.2 Algoritmo ptimo La anomala de Belady refleja el hecho de que, con algunos algoritmos de reemplazo de pginas, la frecuencia de fallos de pgina podra aumentar al aumentar el nmero de marcos asignados. Esperaramos que conceder ms memoria a un proceso mejorara su desempeo, lo cual no siempre se cumple. Un resultado del descubrimiento de la anomala de Belady fue la bsqueda de una algoritmo de reemplazo de pginas ptimo. Un algoritmo ptimo tiene la frecuencia de fallos de pgina ms bajo de todos los algoritmos de reemplazo de pginas, y nunca exhibe la anomala de Belady. Existe un algoritmo de reemplazo de pginas ptimo, que se ha denominado OPT o MIN, y es sencillamente 2014_Sistemas_Operativos_Resumen47 Reemplazar la pgina que no se usar durante ms tiempo El empleo de este algoritmo de reemplazo de pginas garantiza la frecuencia de fallos de pgina ms baja para un nmero fijo de marcos. 10.4.3 Algoritmo LRU Si el algoritmo ptimo no es factible, tal vez podra lograrse una aproximacin. La distincin clave entre los algoritmos FIFO y OPT (aparte de mirar hacia atrs y hacia delante en el tiempo) es que el primero usa el instante en que una pgina se trajo a la memoria, mientras que el segundo usa el instante en que se usar una pgina. Si utilizamos el pasado reciente como una aproximacin del futuro cercano, sustituiremos la pgina que no se ha usadodurante ms tiempo. La estrategia es el algoritmo de menos recientemente usada (LRU, least recently used). El reemplazo LRU asocia a cada pgina el instante en que se us por ltima vez. Si es necesario reemplazar una pgina, LRU escoge la pgina que tiene ms tiempo sin usarse. Esta estrategia es el algoritmo de reemplazo ptimo mirando hacia atrs en el tiempo en vez de hacia delante. La poltica LRU se usa mucho como algoritmo de reemplazo de pginas y se considera excelente; el problema principal es cmo implementarla. Hay dos implementaciones factibles: -Contadores: En el caso ms sencillo, asociamos a cada entrada de la tabla de pginas un campo de tiempo de uso, y aadimos a la CPU un reloj lgico o contador. El reloj se incrementa en cada referencia a la memoria. Cada vez que se hace referencia a una pgina, el contenido del registro de reloj se copia en el campo de tiempo de uso de la entrad de tabla de pginas para esa pgina. Reemplazamos la pgina que tiene el valor de tiempo ms pequeo. -Pila: Otra estrategia para implementar el reemplazo LRU es mantener una pila de nmeros de pgina. Cuando se hace referencia a una pgina, se saca de la pila y