Sistemas Sist emas operativos.
Resumen de la unidad “administración de memoria”. Profesor. Patricia Horta alumno. Jesús Israel Illescas Nava 22-11-11
Administración de memoria.
Si Parafraseamos la ley de párkinson que dice, "los programas se expanden hasta llenar la memoria disponible para contenerlos", vemos que es una situación cotidiana hoy en día, memorias cada vez más poderosas, pero también programas que cada vez consumen mas, es por ello que La memoria es un recurso importante que se debe administrar con cuidado. Corresponde al sistema operativo coordinar el uso de la memoria. Donde el administrador de memoria se mantiene al tanto de qué partes de la memoria están en uso y cuáles no lo están, asigna memoria a los procesos cuando la necesitan y la recupera cuando éstos terminan, además controla el intercambio entre la memoria principal y el disco cuando la primera es demasiado pequeña para contener todos los procesos. La administración de la memoria principal es vital. De hecho, “el desempeño de todo sistema ha dependido de dos cosas: cuánta memoria esté disponible y de qué manera se utiliza mientras se procesan los trabajos o tareas”. Ida M. Flynn. Es donde vemos
que el propósito de la administración de memoria es controlar la forma en que se tiene acceso a ésta y maximizarla su disponibilidad y su almacenamiento. La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica. La memoria real es donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria. A lo largo del tiempo han aparecido diversas formas de gestionar la memoria, entre ellas tenemos que en los primeros sistemas operativos la memoria se dividía en dos partes, una para el sistema operativo y otra para los programas del usuario. Posteriormente el sistema operativo fue capaz de gestionar la existencia de varios programas y a cada uno le asignaba un espacio llamado partición. Por último y como predecesor de la memoria virtual tenemos el intercambio (swapping) que consiste en intercambiar procesos entre memoria y almacenamiento auxiliar. En lo referente a su administración se pueden tener ciertos criterios bases como: ¿Se coloca un solo programa de usuario o varios? Si se encuentran varios programas de usuario podemos procederá: ¿conceder a cada uno la misma cantidad de espacio o se divide el almacenamiento en porciones o “particiones” de diferente tamaño?, ¿o se utilizará un esquema rígido de número y tamaño de particiones o un esquema dinámico y adaptable?, ¿se requerirá que los trabajos de los usuarios sean diseñados para funcionar en una partición específica o se permitirá que se ejecuten en cualquiera donde quepan? ¿o se requerirá o no que cada trabajo sea colocado en un bloque contiguo de memoria?. Según nuestras necesidades será el esquema de administración
que empleemos multiusuario ).
(monoprogramación
o
multiprogramación,
monousuario
o
Si vemos la memoria de forma jerárquica podríamos hablar de tres niveles; el almacenamiento secundario, que es donde la cpu solo puede referenciar a los programas y datos luego de haber sido transferidos al almacenamiento primario. Tenemos también el almacenamiento primario donde la cpu puede referenciar directamente a los programas y datos. Y por último tenemos la cache donde la única diferencia que hay entre ésta y la anterior es su velocidad, la memoria cache es mucho más rápida que la memoria principal. Conforme vamos recorriendo estos niveles la cpu puede hacer referencia a los programas mucho más rápido así como el costo. Ahora que sabemos como es la memoria, su importancia y su jerarquía veamos algunas estrategias para su administración. En primer lugar podemos clasificarlas según su obtención donde determina cuando se debe transferir una página o un segmento de almacenamiento secundario al primario. Y a su vez podemos subclasificarla en: obtención por demanda en donde se espera a que un proceso en ejecución haga referencia a una página o a un segmento antes de traer la página o el segmento de almacenamiento primario. Y también en obtención anticipada en donde se intenta determinar por adelantado a cuales paginas o segmentos hará referencia un proceso. En segundo lugar tenemos lo que son estrategias de colocación que determinan en que lugar del almacenamiento primario se debe colocar una página o un segmento entrante. Y por último tenemos las estrategias de reemplazo que sirven para decidir cual página o segmento se debe desplazar para dar espacio a una página o segmento entrante cuando esta completamente ocupado el almacenamiento primario. Otra forma de organizar nuestra memoria es si se usa la asignación contigua o no contigua. El almacenamiento contiguo es donde cada programa tiene que ocupar un único bloque contiguo de localidad de memoria. El almacenamiento no contiguo un programa se divide e varios bloques o segmentos que se pueden colocar no necesitan ser adyacentes. El segundo es más complejo pero más eficiente que la asignación continua. Actualmente el modelo de usuario respecto al sistema operativo es el de multiprogramación en donde dividimos la memoria para ofrecer la capacidad de te ner más de un proceso a la vez e incrementar el aprovechamiento del cpu. En la multiprogramación podemos usar dos enfoques, la multiprogramación de partición fija o variable y multiprogramación con intercambio de almacenamiento. En la multiprogramación de partición fija el sistema operativo lleva una tabla indicando cuáles partes de la memoria están disponibles y cuáles están ocupadas. Cuando llega
un proceso se asigna únicamente el espacio requerido, manteniendo el resto disponible para futuros procesos que requieran de espacio. Este modelo permite que varios procesos usuarios compitan al mismo tiempo por los recursos del sistema, por ejemplo: Un trabajo en espera de I/O cederá la cpu a otro trabajo que esté listo para efectuar cómputos. También Existe paralelismo entre el procesamiento y la I/O. A su vez se incrementa la utilización de la cpu y la capacidad global de ejecución del sistema. Para acomodar a los proceso podemos hacer uso de una cola única que asigna los procesos a los espacios disponibles de la memoria conforme se vayan desocupando. Otra forma de asignación es buscar en la cola el proceso de tamaño mayor que se ajuste al hueco (entiéndase por hueco a una localidad de memoria libre). En la multiprogramación de Partición Variable. Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben superar el espacio disponible de memoria. En ella se consideran esquemas de asignación contigua, dado que un programa debe ocupar posiciones adyacentes de almacenamiento. Cuando los procesos terminan dejan disponibles espacios de memoria principal llamados agujeros, éstos Pueden ser usados por otros trabajos que cuando finalizan dejan otros “agujeros” menores. O si en sucesivos pasos los “agujeros” son cada vez más numerosos pero más pequeños, se
genera un desperdicio de memoria principal. Esto ocasiona una combinación de agujeros (áreas libres), que consiste en fusionar agujeros adyacentes para formar uno sencillo más grande. En la multiprogramación con Intercambio de Almacenamiento. los programas del usuario no requieren permanecer en la memoria principal hasta su terminación. Esto cede el almacenamiento y la cpu al siguiente trabajo. En Segundo lugar la totalidad del almacenamiento se dedica a un trabajo durante un breve período de tiempo. Y por ultimo que los trabajos son “intercambiados”, haciendo que un trabajo puede ser intercambiado varias veces antes de llegar a su terminación. Cabe mencionar que los sistemas de intercambio fueron los predecesores de los sistemas de paginación. Para lograr esto se mantienen al mismo tiempo varias “imágenes de usuario o imágenes de memoria” en la memoria principal. Después procede retirando una imagen de usuario de la memoria principal solo cuando es necesario su almacenamiento para una nueva imagen. Las imágenes de usuario (imágenes de memoria) retiradas del almacenamiento principal s e graban en el almacenamiento secundario (discos). Por último mencionar, en lo relacionado a la multiprogramación, que cuando un proceso llega y necesita memoria el sistema operativo lleva a cabo una compactación de memoria. Esto significa que el sistema operativo busca en la tabla de huecos alguno lo suficientemente grande para el proceso. Si el hueco es muy grande, lo parte en dos, una parte es asignada al proceso y la otra se identifica como otro hueco liberando su memoria. Si el nuevo hueco es adyacente con otro, ambos huecos se unen formando un solo hueco más grande.
A lo largo del resumen hemos visto la evolución de la organización del almacenamiento, empezamos viendo lo que es el almacenamiento real, después la multiprogramación, ya sea de partición fija o variable, ahora veremos la siguiente evolución en lo que a memoria se refiere y esa es la memoria virtual. Empezamos viendo que es el almacenamiento virtual; entendemos por almacenamiento virtual a la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario. Los métodos más comunes son las técnicas de paginación, segmentación y una combinación de ambas. Empecemos viendo lo que es la paginación. Consideremos el espacio de direcciones lógicas de cada proceso como un conjunto de bloques de tamaño consistente llamados páginas. La memoria física se administra implementando bloques de tamaño consistente denominados marcos. La paginación funciona transfiriendo del almacenamiento secundario al primario en los marcos de páginas. Los marcos tienen el mismo tamaño, comienzan en direcciones del almacenamiento real que son múltiplos enteros del tamaño fijo de la página y podrá colocarse una nueva página dentro de cualquier marco disponible. Para que a transferencia de almacenamientos funcione se lleva acabo una traducción dinámica de direcciones, ésta incluye un proceso en ejecución que hace referencia en dirección virtual “V= (p, d)”. Un mecanismo de transformación de paginas busca la pagina “p” en la tabla de paginas y determina si la “p” se encuentra en el marco de pagina “p”. La dirección de almacenamiento real s e forma por la concatenación de “p” y “d”.
Siguiendo con los métodos para el almacenamiento virtual veamos lo que es la segmentación, que consiste en la asignación de bloques de memoria de tamaño variable, llamados segmentos. El tamaño será el requerido según la petición del proceso, el tamaño máximo para un segmento estará determinado por la capacidad de direccionamiento del hardware de la computadora, y el acceso a cada elemento individual se hace mediante una dirección de memoria que se integra por dos elementos; una dirección de segmento y una dirección de desplazamiento. La combinación (suma) de ambas direcciones generan la dirección de memoria absoluta a acceder. Los segmentos tienes las siguientes características: no necesitan ser de igual tamaño, los bloques separados no necesitan ser adyacentes, se complica la protección de bloques de memoria de un proceso de usuario y es más difícil limitar el rango de acceso de cualquier programa. Un proceso solo puede ejecutarse si su segmento actual (como mínimo) está en el almacenamiento primario. Ahora como vimos anteriormente podemos hacer una combinación de sistemas de paginación y segmentación. Ofrecen las ventajas de las dos técnicas de organización del almacenamiento virtual, el tamaño de los segmentos es múltiplo del de las páginas,
y no es necesario que todas las páginas de un segmento se encuentren al mismo tiempo en el almacenamiento primario. Ahora que hemos visto las técnicas para la organización de la memoria, veamos las técnicas que hay para su administración. Básicamente son cinco; reemplazo de páginas, paginación por demanda, paginación anticipada, liberación de páginas y tamaño de página. La técnica de reemplazo de páginas se subdivide en seis más. Éstas son: Principio de Optimalidad. Para obtener un rendimiento óptimo, la página que se debe reemplazar es aquella que tardará más tiempo en ser utilizada. Reemplazo de Páginas aleatorio: Todas las páginas que se encuentran en el almacenamiento principal tienen la misma probabilidad de ser elegidas para el reemplazo. Es un esquema que casi no se utiliza por su enfoque aleatorio de acertar o errar. Reemplazo de páginas de primeras entradas-primeras salidas (PEPS). Cada página se registra en el instante que entró en el almacenamiento primario. Cuando se necesita reemplazar una página, se escoge la que ha permanecido en el almacenamiento durante el mayor tiempo. Reemplazo de páginas de la menos reciente utilizada. Se selecciona para su reemplazo, a aquella página que no se ha sido utilizada durante mayor tiempo. Exige que se marque cada página con el instante en que se hace referencia a ella. Por el trabajo adicional que requiere no se usa a menudo en los sistemas actuales; Reemplazo de páginas de la menos frecuentemente utilizada. La página por remplazar es aquella que ha sido utilizada menos frecuentemente. O a la que se ha hecho referencia con menos frecuencia. Siguiendo con la administración de la memoria virtual tenemos también la paginación por demanda, en donde no se debe transferir ninguna página del almacenamiento secundario al primado hasta que un proceso en ejecución haga explícitamente referencia a ella, esto garantiza la entrega de páginas que requieren los procesos y el trabajo extra es mínimo. Otra técnica es la paginación anticipada, donde el sistema operativo intenta predecir las páginas que necesitará un proceso y entonces carga dichas cuando hay espacio disponible. Una técnica más es la liberación de páginas, donde los programas que ya no requieran páginas específicas deberán desechar tales páginas de sus conjuntos de trabajo.
Para terminar este resumen podemos ver que la memoria que en su concepción es simple, un almacenamiento para actuar con el cpu, ha evolucionado hasta algo tan complejo como el almacenamiento virtual, donde utilizamos diferentes técnicas para organizarla y administrarla. Este punto es importante puesto que gran parte de la computación hoy en día recae en la memoria, sabemos que el componente principal puede ser el cpu, pero cuando se queda sin memoria es inútil. Es por ello que el enfoque correcto para su administración es crucial, y aunque en gran parte esto recae sobre los desarrolladores de los sistemas operativos, su funcionamiento puede ayudarnos a prevenir errores y fallos.
Bibliografía. Sistemas operativos diseño e implementación. Andrew S. Tanenbaum, Albert S. Woodhull Editorial Prentice Hall. Sistemas operativos. Ida M. Flynn, Ann Mclver Mchoes. Editorial Cengage Learning. Principios de sistemas de información: enfoque administrativo. Ralph M. Stair, George W. Rey Editorial Cengage Learning. Sistemas operativos monopuesto. Jesús Niño. Editorial Editex. http://sisinfo.itc.mx/ITC-APIRGG/Materias/Mat4/SistOp-II_Unid1.php http://www.monografias.com/trabajos10/gesmem/gesmem.shtml http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO3.htm#OAA http://pedvazvid.tripod.com/index-old.htm http://pedvazvid.tripod.com/organizacion_de_memoria.htm