INDICE

2.1.- Introducción

2.2.- Justificación

2.3.- Requisitos

2.4.- Procesos reentrantes

2.5.- Métodos para la Comparticion de Recursos

2.5.1.- Segmentos compartidos

2.5.2.- Paginas compartidas

2.6.- Recursos compartidos asignados estáticamente

2.7.- Recursos compartidos asignados dinámicamente

2.8.- Comparticion de Recursos de Software en Windows 3.1

2.9.- Comparticion de Recursos de Software en Windows '95

AUTOEVALUACION.



UNIDAD II.- METODOS PARA COMPARTIR RECURSOS DE SOFTWARE

INTRODUCCION

 Compartir un recurso de software significa que 2 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.
 

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 pagina (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).
 

PROCESOS 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).
 

RECURSOS COMPARTIDOS ASIGNADOS ESTATICAMENTE.

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.
 

RECURSOS COMPARTIDOS ASIGNADOS DINAMICAMENTE.

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.

Ir Arriba
MÉTODOS PARA LA COMPARTICION DE RECURSOS DE SOFTWARE.

Básicamente existen 2 Métodos:

SEGMENTOS COMPARTIDOS.

    Consiste en que cada proceso tiene una tabla de segmentos asociado con su PCB (Bloque de Control de Procesos) el cual es utilizado por el despachador para definir la tabla de segmentos de hardware cuando a ese proceso se le asigne el CPU. Los segmentos son compartidos cuando las entradas en las tablas de segmentos de dos o más procesos diferentes apuntan a las mismas localidades de memoria física.
    La compartición ocurre al nivel de Segmentos. Con esto cualquier información puede ser compartida si esta definida como un segmento. Varios segmentos pueden ser compartidos, o sea, un programa compuesto por varios segmentos puede ser compartido.
    Ejemplo: Considérese el uso de un editor de textos de un sistema de tiempo compartido. En lugar de cargar 'n' copias del código del editor, este será cargado una sola vez. Si hay varios procesos que necesitan usar este código, sus tablas de segmento contendrán apuntadores a la misma dirección de memoria donde está cargado el código.


PAGINAS COMPARTIDAS.

    Este método utiliza paginación como sistema base de la administración de la memoria. Consiste en cargar una sola instancia de las paginas de código a compartir y colocar apuntadores a estas páginas en las tablas de páginas de todos los procesos que utilizan el recurso.
    Ejemplo: Utilizando el mismo editor de textos cuyo código ocupa 3 paginas. Se generarían 3 tablas de pagina como se ve en la siguiente figura:

Ir Arriba
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 mas memoria, Windows crea referencias adicionales para los recursos que ya están en uso.

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 memoria liberada.
 

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ía 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.
 
    REGRESAR
      SIGUIENTE


Volver a la Pagina Principal