miércoles, 19 de mayo de 2010

Gestiones Inherentes en los Sistemas Operativos

Gestión de memoria con particiones Variables

Este método consiste en particiones de memoria en tamaños variable, o sea, a cada proceso se le asigna la cantidad de memoria que necesita (la cantidad exacta ni mas ni menos). Tras el ingreso de nuevos procesos y la expulsión de otros, se generan huecos de memorias inutilizados. Conforme pasa el tiempo, la memoria comienza a estar más fragmentada y su rendimiento decae; este fenómeno se llama fragmentación externa.

Una técnica para superar la fragmentación externa es la compactación. De vez en cuando, el sistema operativo desplaza los procesos para que estén contiguos de forma que toda la memoria libre quede junta en un bloque.

Características

  • Cada trabajo ocupa tanto espacio como necesita.
  • El tamaño del trabajo a ubicar no puede ser mayor que el almacenamiento principal disponible.
  • Se disminuye parcial o totalmente el desperdicio de memoria.
  • Aparecen: Condensación y Compactación

Diferencia entre memoria fija y variable

En la memoria variable, el número, la dirección y el tamaño varían constantemente a medida que los procesos van y vienen; Mientras que en las fijas, no varían, son fijas.

Multiprogramación con particiones variables

El sistema operativo lleva una tabla indicando cuáles partes de la memoria están disponibles y cuáles están ocupadas. Inicialmente, toda la memoria está disponible para los procesos de usuario y es considerado como un gran bloque o hueco único de memoria. Cuando llega un proceso que necesita memoria, buscamos un hueco lo suficientemente grande para el proceso. Si encontramos uno, se asigna únicamente el espacio requerido, manteniendo el resto disponible para futuros procesos que requieran de espacio.

Paginación

Es la manera de cómo la memoria se divide en pequeñas partes para que cada programa que se esté ejecutando cumpla con su objetivo, este tema esta relacionado con la gestión de memoria.

De modo que si un proceso desperdicia la cantidad de memoria asignada se crea en ella una fragmentación interna.

La paginación trata de evitar las fragmentaciones, así que a cada programa se le asigna la memoria que necesite.de acuerdo con esto, si el proceso es mayor a la memoria el sistema operativo mantiene en la memoria partes del programa y otras en el disco duro., cuando se dice que partes del programa en memoria y otra en disco aquí ocurre la fragmentación.

Segmentación

Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa.

La segmentación permite alcanzar los siguientes objetivos:

1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.

2. Estructuras de datos de largo variable: ejemplo: Stack, donde cada estructura tiene su propio tamaño y este puede variar.

3. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.

4. Comparación: Dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.

5. Enlace dinámico entre segmentos: Puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.

Ventajas de la segmentación

El esquema de segmentación ofrece las siguientes ventajas:

El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular.
  • Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos.
  • Debido a que es posible separar los módulos se hace más fácil la modificación de los mismos. Cambios dentro de un modulo no afecta al resto de los módulos.
  • Es fácil el compartir segmentos.
  • Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.
  • Existe la posibilidad de definir segmentos que aun no existan. Así, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cual se referencia el arreglo u otra estructura de dato por primera vez.
Desventajas de la segmentación

Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.
  • Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal.
  • Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación.
  • Al permitir que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos.
  • No se puede garantizar, que al salir un segmento de la memoria, este pueda ser traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño.
  • La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.
Pila

La pila es un tipo de lista lineal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO es decir último en entrar primero en Salir, este nos permite almacenar y recuperar datos en cada momento. Solo se tiene acceso al último objeto apilado que se denomina cima o tope. La operación retirar permite la obtención de este elemento que es retirado de la pila y permite el acceso al siguiente que pasa hacer el nuevo TOS o apilado.

Ejemplo de PILA:



Memoria virtual

La memoria virtual es una técnica que permite al software usar más memoria principal que la que realmente posee el ordenador. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.

Muchas aplicaciones requieren el acceso a más información (código y datos) que la que se puede mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de su información en disco, moviéndola a la memoria principal cuando sea necesario. Hay varias formas de hacer esto. Una opción es que la aplicación misma sea responsable de decidir qué información será guardada en cada sitio (segmentación), y de traerla y llevarla.

La desventaja de esto, además de la dificultad en el diseño e implementación del programa, es que es muy probable que los intereses sobre la memoria de dos o varios programas generen conflictos entre sí: cada programador podría realizar su diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. La alternativa es usar memoria virtual, donde la combinación entre hardware especial y el sistema operativo hace uso de la memoria principal y la secundaria para hacer parecer que el ordenador tiene mucha más memoria principal (RAM) que la que realmente posee. Este método es invisible a los procesos. La cantidad de memoria máxima que se puede hacer ver que hay tiene que ver con las características del procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre los distintos espacios de memoria.

Aunque la memoria virtual podría estar implementada por el software del sistema operativo, en la práctica casi siempre se usa una combinación de hardware y software, dado el esfuerzo extra que implicaría para el procesador.

Cuando se usa Memoria Virtual, o cuando una dirección es leída o escrita por la CPU, una parte del hardware dentro de la computadora traduce las direcciones de memoria generadas por el software (direcciones virtuales) en:

  • La dirección real de la memoria (la dirección de la memoria física).
  • Una indicación de que la dirección de la memoria deseada no se encuentra en la memoria principal (llamado excepción memoria de virtual).

En el primer caso, la referencia a la memoria es completada, como si la memoria virtual no hubiera estado involucrada: el software accede donde debía y sigue ejecutando normalmente. En el segundo caso, el sistema operativo es invocado para manejar la situación y permitir que el programa siga ejecutando o aborte según sea el caso. La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una máquina. Esta "ilusión" permite que los programas se ejecuten sin tener en cuenta el tamaño exacto de la memoria física.

La ilusión de la memria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de alamacenamiento rápido en el disco duro. Así en cualquier momento el espacio de direcciones virtuales hace un seguimiento de tal forma que una pequeña parte de él , está en memoria real y el resto almacenado en el disco, y puede ser referenciado facilmente.

Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de paginación).

La memoria virtual ha llegado a ser un componente esencial de la mayoría de los sistemas operativos actuales. Y como en un instante dado, en la memoria sólo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener más procesos en la memoria. Es más, se ahorra tiempo, porque los fragmentos que no se usan no se cargan ni se descargan de la memoria. Sin embargo, el sistema operativo debe saber cómo gestionar este esquema.

La memoria virtual también simplifica la carga del programa para su ejecución llamada reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física.

En un estado estable, practicamente toda la memoria principal estará ocupada on fragmentos de procesos, por lo que el procesador y el S.O tendrán acceso directo a la mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un fragmento, deberá expulsar otro. Si expulsa un fragmento justo antes de ser usado, tendrá que traer de nuevo el fragmento de manera casi inmediata. Demasiados intercambios de fragmentos conducen a lo que se conoce como hiperpaginación: donde el procesador consume más tiempo intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitarlo el sistema operativo intenta adivinar, en función de la historia reciente, qué fragmentos se usarán con menor probabilidad en un futuro próximo.

Los argumentos anteriores se basan en el principio de cercanía de referencias o principio de localidad que afirma que las referencias a los datos y el programa dentro de un proceso tienden a agruparse. Por lo tanto, es válida la suposición de que, durante cortos períodos de tiempo, se necesitarán sólo unos pocos fragmentos de un proceso.

Una manera de confirmar el principio de cercanía es considerar el rendimiento de un proceso en un entorno de memoria virtual.

El principio de cercanía sugiere que los esquemas de memoria virtual pueden funcionar. Para que la memoria virtual sea práctica y efectiva, se necesitan dos ingredientes. Primero, tiene que existir un soporte de hardware y, en segundo lugar, el S.O debe incluir un software para gestionar el movimiento de páginas o segmentos entre memoria secundaria y memoria principal.

Justo después de obtener la dirección física y antes de consultar el dato en memoria principal se busca en memoria-cache, si esta entre los datos recientemente usados la búsqueda tendrá éxito, pero si falla, la memoria virtual consulta memoria principal, ó, en el peor de los casos se consulta de disco (swapping).

Implementación o Implantación

Es la realización de una aplicación, o la ejecución de un plan, idea, deseño, modelo científico, etc.

Es la ciencia de la computación que ejecuta una técnica o algoritmo como un programa, componente de un software u otros sistemas. Muchas implemetaciones son dadas según una idea, diseño, etc. Por ejemplo: Con un navegador web a la hora de buscar información, debe respetar su método de aplicación. Según la aplicación establecida por la Word Web Wide y las herramientas de desarrollo del software que contienen la implementación de lenguejes de programacón.

La implementación se refiere a las pasos o métodos que se deben seguir. Se refiere a cuando por ejemplo se hace una pos-venta de un hardware el proveedor le da al cliente una guía sobre el uso de hardware que ha comprado. Estos son procedimientos que el cliente necesita saber para la utilización de hardware que adquirido.

Implemetación de la memoria virtual

Se basa en la ejecución de un que se encuentra parcialmente almacenado en la memoria, es decir, que solo ha cargado una pequeña parte de los datos que se necesitan en ese instante, pero es decisión del usuario dejar permanentemente el programa o solo usarlo en ese instante.