Site hosted by Angelfire.com: Build your free website today!

UNIDAD II. METODOS PARA COMPARTIR RECURSOS

 

2.1 Introducción.

 

         Se entiende como  recurso  un elemento que un programa o proceso puede utilizar en la computadora donde se está  ejecutando. Por ejemplo un dispositivo hardware (una impresora ) como una cierta cantidad de información (Por ejemplo un registro de un archivo ).  En una computadora pueden existir muchos tipos de recursos, e incluso varios del mismo tipo.

          Un recurso se define como algo que puede ser utilizado por un solo proceso en un  instante dado.

 

Recursos. Un sistema se compone de un número finito de recursos   que se distribuyen entre varios procesos que compiten entre ellos. Los recursos se dividen en varios tipos, de cada uno de los cuales pueden existir ejemplares idénticos:

        

·        físicos: ciclos de CPU, espacio de memoria, dispositivos de E/S (impresoras,  

      unidades de cinta, etc.).

·        lógicos:  ficheros tablas del sistema semáforos.

 

 

 

 

2.1 Justificación.

 

 

Compartir un recurso de software significa que dos o más procesos puedan utilizar una misma rutina que está en memoria (habiendo una sola instancia de la rutina). La rutina es el recurso que se comparte en los procesos (Justificación). La compartición de recursos de software hace que un sistema operativo sea más flexible y eficiente ya que aumenta la capacidad de atención de procesos.

 

 

 

 

2.2 REQUISITOS

Requisitos.

 

Para la compartición de recursos de software se requiere principalmente que el sistema operativo permita la repetición de apuntadores en las tablas de segmento o de página (dependiendo del método empleado).

Además, si la compartición será dinámica, se requiere que el sistema operativo soporte carga/descarga y ligado dinámico, para lo cual se requiere implementar tablas auxiliares como la ART (Tabla de Referencia Activa), la AST (Tabla de Segmento Activa) y la SMT (Tabla de Mapeo de Segmentos).

 

         Para que un proceso pueda utilizar un recurso, deberá realizar la siguiente secuencia de operaciones:

 

* Solicitar el recurso. Si no estuviera disponible el proceso, quedará  bloqueado hasta que  

                                     le pueda ser asignado.

 

* Utilizar el recurso. Hacer uso de determinado recurso en el sistema.

        

* Liberar el recurso. Dejar de utilizar el recurso.

 

 

         La solicitud y liberación de recursos son llamadas al sistema. Algunos ejemplos son las parejas de llamadas Abrir/Cerrar archivos y Asignar/Liberar memoria. De igual forma, la utilización de recursos sólo puede conseguirse mediante llamadas al sistema, de modo que para cada utilización el sistema operativo comprueba que el proceso que usa el recurso lo había solicitado previamente y ya lo tiene asignado.

 

         Una tabla del sistema registra si cada uno de los recursos está libre o asignado y, de estar asignado, a qué proceso solicita un recurso que ya se encuentra asignado a otro, puede añadirse a la cola de procesos que esperan tal recurso.

 

 

 

2.4 PROCEDIMIENTOS REENTRANTES

 

Para que sean compartidos eficientemente en un sistema de multiprogramación, los procesos deben ser concurrentemente reutilizables (también llamados procesos puros). Un proceso puro opera solamente sobre variables que están en registros del CPU o sobre datos que están en otros segmentos asociados con la tarea; nunca se modifican a sí mismos. Ejemplo: Los Archivos Ejecutables (EXE). Ejemplo de Archivos No Reentrantes: Archivos de Comando (COM).

 

         El mecanismo o función que permite transformar el espacio de nombres al espacio de memoria principal  se le denomina memoria virtual. Los mecanismos pueden ser: Utilización de registro base, Paginación, Segmentación, Segmentación-Paginación.           

 

 

La memoria virtual es implementada comúnmente por Paginación por Demanda.

 

         Paginación por demanda = paginación con swapping

 

         Por demanda = hasta que se hace referencia a una de ellas.

 

         Las páginas que no se encuentran en memoria se marcan en la tabla de páginas como invalidas.

         Si se quiere utilizar una pagina que no este en memoria principal se produce un error por fallo de página, el cual es atrapado por el sistema operativo, Observe la figura # 1.

                                                      

                                                             S.O.

                                                                       Trap.

             M.V.                                            Fallo de página

          

                                                                                                          

 

                                                                                 CPU

 


                                                Y                                                         Mem. Secundaria

                                               

 


                                      Tabla de página

                                                 ¿Problema?                             Si no libera el sistema

                                       ¿Cuál algoritmo utilizar?                      manda un algoritmo

                                                                              para hacer el reemplazo.

 

Figura # 1.   Trap del sistema operativo.

 

 

Al sistema operativo se le presenta un problema ¿Cual algoritmo utilizar?. Para la sustitución de página

         El rendimiento de un sistema de paginación por demanda depende del número de fallas de página que existan:

         En resumen tenemos que:

         - Atender la interrupción de falla de página.

         - Hacer swap.

         - Restablecer el proceso.

         - Toma 4 milisegundos más el tiempo de espera a disco.

 

 

         Un reemplazo de página ocurre cuando no hay frames libres, es necesario escoger una víctima y llevarla a disco, actualizando las tablas correspondientes.

 

         Lo que origina el encontrar un algoritmo que minimice el número de fallas de página.

 

         Para esto existen varios algoritmos de sustitución de páginas.

 

         Cuando la página que se necesita no se encuentra en la memoria (fallo de página), se usan los algoritmos de sustitución para determinar cuál de las páginas (en la memoria) se debe bajar.

 

 

 

Los algoritmos son los siguientes:

 

 

                           

Sustitución de página óptima

 

 

         . Obtener para cada página, del conjunto en memoria, el número de instrucciones que se ejecutaran antes de que dicha página sea referida por vez primera.

 

         . Cambiar la página con el número mayor (eliminarse) de instrucciones.

 

 

 

 

 

Desventaja:

 

         . El algoritmo es irrealizable, no existe forma de saber cuándo se hará referencia a las páginas.

 

 

Observe la Figura # 2.

 

 

         Residencia   Dirección   Marco

                                                                    (0,1) No esta / esta en la memoria principal.

                                                                     Dirección en la memoria secundaria.

                                                         Marco de página.

             Mapa de memoria                                          Programa

        

         0     1000      0

         1     1100      1

         0     1200      0                                                              Marco de pagina

         1     1300      4

         1     1400      5                                                            Marco 1

         1     1500      2                                                            Marco 2

         0     1600      0                                                            Marco 3

         1     1700      3                                                            Marco 4

         1     1800      0                                                            Marco 5

         1     1900      6                                                            Marco 6

 

     Dirección de inicio en

     Disco 1000

     Tamaño de pagina 100       

 

 

 

 

Figura # 2.  Mapa de control de páginas.

 

 

Sustitución de página no usada recientemente.

 

         Para este algoritmo se deben agrupar dos bits de control en la estructura del mapa de memoria.

 

                                                                  R = referido

                                               R   M                                                                                      

                                                                  M = modificado

 

El  bit R indica que se ha realizado una lectura o una escritura en la página.

         El bit M indica que s ha realizado una escritura en la página. El manejo de los bits es el siguiente:

*  De inicio ambos bits son cero para todas las páginas

* A través del hardware se ponen a 1 los bits R y M de acuerdo a las operaciones que se       hagan en una página. Una vez que un bit haya fijado a 1, éste seguirá siendo 1 hasta que el sistema lo ponga a 0 por software.

* En forma periódica se  elimina el bit R con el fin de distinguir las páginas que no se han usado recientemente

* El bit M se pone a 0 cuando se guarda la página.

 

         Cuando ocurre una falla de página se deben agrupar las páginas en las siguientes cuatro categorías:

 

         0   No referido,     No modificado   00

         1   No referido,           modificado   01

         2    referido,         No modificado   10

         3    referido,               modificado   11

 

 

y se elimina una página, elegida al azar, de la clase no vacía con número de categorías inferior.

 

Nota.   Es mejor cambiar una página que se modificó pero que no se usa mas al borrar una que no se modifica pero se usa frecuentemente.

 

 

 

Sustitución de páginas donde la primera que entre es la primera que sale (FIFO).

 

         - Es el algoritmo más simple, pero tiene la desventaja de que puede retirarse una página que se usa frecuentemente. Esto puede implicar que se baje una página que deberá ser cargada en una de las próximas solicitudes, en el  peor de los casos la siguiente.

 

         Una modificación a este algoritmo implica leer los bits R y M y eliminar la página más antigua de la clase no vacía con número de categoría inferior (0,1,2,3).

 

         Otra opción es el algoritmo que se conoce como segunda oportunidad, el cual plantea lo siguiente:

 

        

Obtener la página más antigua

         Si su bit R es 0

              Sustituir dicha página

         De lo contrario (R == 1)

              Cambiar R a 0

         Colocarla al final de la lista (FIFO)

         Iniciar el proceso

 

Nota.  Se busca la página que no se ha usado en el ciclo anterior del reloj. Si todas las páginas han sido referidas al algoritmo se degenera en un FIFO puro.

 

 

Sustitución de página usada menos recientemente (LRU)        

        

         Este algoritmo se aproxima al óptimo. Se parte de la idea de que las páginas que se han utilizado con frecuencia en las últimas instrucciones  probablemente se usarán de la misma forma en las siguientes y,  a la inversa, las páginas que no se han utilizado recientemente muy probablemente no se usarán en las siguientes instrucciones.

 

         Cuando ocurra una falla de página se desecha la página que ha estado sin uso el periodo de tiempo más largo. Esto le da una eficiencia en el manejo de las páginas, ya que asegura que una página que sé esta usando con frecuencia permanecerá en el almacenamiento principal.

Desventaja

 

         No es barata, se requiere un algoritmo de decisión, implica un mecanismo de actualización del  uso de la página, un mecanismo para probar la antigüedad de uso de una página.

 

         Una propuesta  consiste en tener una lista ordenada de las páginas en memoria, Observe la   figura # 3.

 

 

 

 

 

 

 


                           Más reciente                                                         Menos reciente.

 

Figura # 3.  Lista ordenada de páginas.

 

En este esquema la sustitución implica localizar la página, sacarla de la lista y llevarla al inicio de la lista. Esto es caro aún en hardware.

 

 

 

Opción de la matriz de bit’s.

 

         Se  coloca en una, matriz cuadrada las páginas del proceso. Al accesar una página se pone a  uno su renglón y posteriormente a cero su columna. La página cuyo renglón representa el número binario menor es la página usada menos recientemente, Observe la figura #4., donde muestra una matriz de bits.

 

        

             0     1     2     3                            0    1     2     3                    0     1      2     3                             0    1    2    3

          0  0     1     1    1                      0   0    1     0     1                      0   0     1     0     0                0   0    0    0    0

          1  0     0     0    0                      1   0    0     0     0                      1   0     0     0     0                1   1    0    1     1

          2  0     0     0    0                      2   1    1     0     1                      2   1     1     0     0                2   1    0    0     0

          3  0     0     0    0                      3   0    0     0     0                      3   1     1     1     0                3   1    0    1     0

 


            P.0                          P.2                                  P.3                           P.4

 

            Paginas usadas menos

         Recientemente.

 

Figura # 4. Matriz de bits para seleccionar la página usada menos recientemente.

 

Simulación de la página usada menos recientemente en software.

 

         Otra opción es agregar un contador en la estructura del mapa de páginas. El contador se incrementa cada vez que una instrucción accesa una página, cuando ocurre una falla de página se busca la página cuyo contador es menor.

 

         Este esquema tiene la desventaja de que  "No olvida", esto es un problema en el caso de un proceso que al inicio usa mucho algunas páginas y después no las usa más (compiladores). Cuando se necesita bajar una página que tiene poco tiempo en memoria ya que su número de acceso siempre será pequeño. En estos casos la distribución del almacenamiento real se divide en dos espacios: uno grande que no se usa (sólo en el inicio) y uno pequeño sometido a un intenso intercambio.

 

         Una variante de este algoritmo implica considerar el envejecimiento de las páginas que están en la memoria, de tal manera que una página que sólo se usa de inicio puede ser eliminada por no usarse más.

 

El algoritmo es el siguiente, para cada ciclo de reloj,

 

.  Correr los contadores un bit a la derecha antes de sumar el bit R.

. El bit R se suma al bit de la posición más a la izquierda, en vez del bit más a la  derecha.

. Cuando ocurre una falla de página, la página cuyo contador es el menor se elimina.

 

Es claro que una página que no se ha usado para N ciclos de reloj, tendrá N ceros a la izquierda en su contador y por lo tanto tendrá un valor menor que la página que no se ha referido en N-1 pulsos de reloj. Por ejemplo:

 

                            0000 1010   N

                            0001 1010   N-1

 

 

 

Control de acceso a los sistemas de segmentación.

 

         No es recomendable el acceso ilimitado de cada proceso a todos los segmentos del sistema. De hecho, uno de los atractivos de los sistemas  de segmentación es el cuidadoso control de acceso posible. Esto se consigue al darle a cada proceso ciertos derechos de acceso a unos segmentos y negarle por completo el acceso a muchos otros.

 

 

 

         El sistema de control de acceso consiste en asociar a cada segmento un grupo de bits que indique los derechos de acceso.

 

                   Lectura        R      El segmento puede ser leído

                   Escritura     W     El segmento puede ser modificado

                   Ejecución     E      El segmento puede ser ejecutado

                   Adición        A      El segmento puede ser aceptado

                                           Agregar información   

 

 

 

Al incluir los bits de acceso en la estructura básica de la tabla del mapa de segmentos se tiene, observe   figura # 5.

 

                                      r        a       l         R       W      E       A      s’

 

 


Bit de residencia

Dirección en memoria secundaria

Longitud del segmento

Bits de acceso

Dirección en memoria primaria

 

 

Figura # 5.  Tabla de mapa de segmento.

 

 

 

 

 

 

 

 

 

 

 

 

 

2.5 RECURSOS COMPARTIDOS

Recursos compartidos asignados estáticamente.

 

 

 

Cuando los procesos compartidos se cargan completamente en memoria desde el inicio de su ejecución, se dice que la compartición es estática. Ejemplo: Rutinas del servicio de Interrupción del BIOS o MS-DOS.

 

 

 

*        Asignación Estática.

 

         En este caso la correspondencia entre las páginas del espacio virtual y los bloques de memoria auxiliar se hace a la iniciación del sistema. Para poderlo hacer se necesita conocer el número y el tamaño de los espacios virtuales.

 

 

Desventajas

 

 

         . Por esta razón es un método que no se puede aplicar a los sistemas con segmentación pura, ni a los de espacios múltiples, a menos que se impongan ciertas limitaciones.

 

         . No permite implantar un equilibrio dinámico de la carga entre las distintas unidades de soporte. Se refiere al hecho de poder seleccionar el dispositivo en el cual se va a escribir una página, con el fin de hacerlo en el que tenga un tráfico menor.

 

         Como ejemplo de sistemas que utilizan esta técnica el IBM DOS / OS y el IBM OS/VS1.

        

 

En el primero de ellos, la memoria auxiliar debe estar contenida en un solo dispositivo físico, además, la dirección en disco de una página de espacio virtual puede deducirse directamente de su número, sin necesidad de una tabla auxiliar, observe la    figura # 6.

 

                            Espacio virtual

                                                          Memoria Auxiliar

                                SISTEMA

                              

                                    ZONA

                                    V = R

 


                                   ZONA

                                    B - 6

 


                                     P - 4

 


                                     P - 3

 


                                     P-  2

 


                                      P -1

 

 

Figura # 6. Manejo de la   memoria auxiliar en el sistema IBM DOS/VS.

         En el sistema operativo OS / VS1 el método usado es similar, pero se permite la repartición de la memoria auxiliar en varios dispositivos (máximo 8). La definición de éstos se hace a la iniciación del sistema, o en el momento de la generación del mismo.

 

 

Asignación cuando se hace la primera utilización de la página.

 

         Se asigna el espacio en la memoria auxiliar cuando se hace la primera referencia a la página (y se produce por lo tanto un fallo de página).

         Una variables consiste en diferir la asignación hasta el momento en que se requiere escribir la página en la memoria auxiliar.

 

2.6 RECURSOS COMPARTIDOS ASIGNADOS DINAMICAMENTE

Recursos Compartidos asignados dinámicamente.

 

La compartición dinámica consiste en cargar en memoria solo la parte requerida de los procesos compartidos. Al necesitarse código que no está en memoria, éste será cargado durante la ejecución de las tareas. Ejemplo: Cuadros de Dialogo de Windows.

 

 

*        Asignación dinámica.

 

         La utilización eficiente de varios niveles de memoria auxiliar implica una distribución dinámica de las páginas en los diversos niveles en función de las frecuencias de utilización para ello hay dos posibilidades:

 

         . Asignar globalmente el espacio en la memoria auxiliar. En este caso hablamos de migraciones.

 

         . Asignar el espacio de la memoria auxiliar por páginas, esto es, cada vez que se escribe una página en la memoria auxiliar.

 

Compartición de Recursos de software en Windows 3.1.

 

MÓDULOS.

En Windows 3.1 el término módulo describe una colección relacionada de código, datos y otros recursos (por ejemplo, mapas de bits) presentes en memoria. Normalmente, tal colección conformará o bien un único programa ejecutable o una biblioteca de ligado dinámico (DLL). Windows 3.1 implementa una estructura de datos conocida como Base de Datos del Modulo (MDB), que identifica todos los módulos que están activos en el sistema. La MDB describe una colección esencialmente estática de objetos, en lugar de una colección dinámica referenciada por la Base de Datos de Tareas (TDB).

Es importante tener un registro de los módulos cargados en cada instante, ya que tal registro es la base para la compartición de recursos que implementa Windows 3.1. Por ejemplo, la segunda vez que se ejecuta digamos un editor, Windows 3.1 detecta que los segmentos de código y el mapa de bits que forman el icono, ya están en uso. En lugar de cargar una segunda copia y ocupar más memoria, Windows crea referencias adicionales para los recursos que ya están en uso.

2.8.        Durante la vida del sistema, Windows mantiene una cuenta de uso para cada recurso. Cuando las aplicaciones hacen uso de un recurso, el sistema incrementa la cuenta de referencia. Cuando finaliza la aplicación, el sistema decrementa la cuenta de referencia. Una cuenta de referencia con valor 0 indica que el recurso ya no está en uso y el sistema puede ocupar la COMPARTICION DE RECURSOS DE SOFTWARE EN WINDOWS '95

 

Se implementa mediante el uso de unas estructuras de datos llamadas objetos de núcleo. Una aplicación Win32 crea, abre y maneja objetos de núcleo con regularidad. El sistema crea y maneja varios tipos de objetos de núcleo como por ejemplo, objetos proceso, objetos suceso, objetos semáforo, objetos hilo, etc.

Estos objetos se forman llamando a varias funciones de Win32, ejemplo, la función CreateFileMapping() provoca que el sistema cree un objeto proyectado en archivo.

Cada objeto del núcleo es un bloque de memoria asignado por el Kernel y al que solo puede acceder el Kernel. Este bloque de memoria es una estructura de datos cuyos elementos contienen información sobre un objeto. La cantidad y el tipo de estos elementos varían dependiendo del tipo de objeto del núcleo implementado.

Algunos estarán presentes en todos los tipos, por ejemplo, nombre del objeto, descriptor de seguridad, contador de utilización, etc., mientras que otros serán incluidos de acuerdo al tipo de objeto. Por ejemplo, un objeto-proceso contendrá una identificación del proceso, una prioridad de base y un código de salida, mientras que un objeto-archivo contendrá un desplazamiento de bytes, un modo de compartición y un modo de apertura.

 

 

EL CONTADOR DE UTILIZACIÓN.

Es el Kernel quien tiene el control sobre los objetos de núcleo, no los procesos. Esto es, si un proceso llama a una función que crea un objeto de núcleo y después el proceso termina, no es forzoso que se destruya el objeto del núcleo, dado que si otro proceso está utilizando el objeto de núcleo, el Kernel sabe que no debe destruir el objeto del núcleo, sino hasta que ya no haya procesos utilizándolo.

El Kernel sabe cuantos procesos están utilizando cierto objeto del núcleo, ya que cada objeto del núcleo contiene un contador de utilización. El contador de utilización es uno de los elementos comunes en todos los tipos de objetos de núcleo. El Kernel incrementa o decrementa el contador de cada objeto según sea su utilización. Un contador con valor 0 (cero) significa que no hay procesos utilizando ese objeto de núcleo, por lo que el Kernel lo destruye.

 

 memoria liberada.

 

PAGINA PRINCIPAL