Asignación de S.O.

14
Facultad De Ingeniería Carrera: Ingeniería Informáca Con Énfasis En Redes Y Sistemas Telemácos Materia: Sistemas Operavos Horario: Jueves 5:45pm – 8:05pm Estudiante: Zaskya Yissellmih Córdoba Delisser 8-711-2346 Profesor: Roberto Elías Vergara Quintero Asignación 3 Gesón de Memoria Fecha De Entrega: 24 de julio de 2014

Transcript of Asignación de S.O.

Facultad De Ingeniería

Carrera: Ingeniería Informática Con Énfasis En Redes Y Sistemas Telemáticos

Materia: Sistemas Operativos

Horario: Jueves 5:45pm – 8:05pm

Estudiante:

Zaskya Yissellmitth Córdoba Delisser 8-711-2346

Profesor:

Roberto Elías Vergara Quintero

Asignación 3

Gestión de Memoria

Fecha De Entrega:

24 de julio de 2014

Gestión de Menoría

Favor, abstenerse de copiar/pegar, lea cada respuesta y resuma sus respuestas, cada una de las preguntas abajo descritas, sea lo más breve y claro posible. Si algún punto no entiende, agradezco me lo haga saber por los medios ya conocidos y resolvemos.

1. ¿Cómo se divide la memoria principal en un sistema monoprogramado?

En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte para el sistema operativo (monitor residente, núcleo) y otra parte para el programa que se ejecuta en ese instante.

2. Menciona los requisitos en la Gestión de Memoria.

La gestión de memoria cuentas con cinco requisitos:

Reubicación Protección Compartición Organización lógica Organización física

3. Explique cada uno de los anteriores. Absténgase de copiar/pegar...LEA!!

Reubicación: En un sistema multitarea, la memoria principal está compartida por muchos procesos. Generalmente, no es posible para el programador saber qué otros programas están residentes en memoria principal en el tiempo de ejecución de su programa. Además, se busca poder trasladar procesos activos dentro y fuera de la memoria principal para maximizar la utilización del procesador, proveyéndolo de varios procesos listos para ejecutar. Una vez que un programa fue sacado de la memoria principal al disco, sería difícil establecer cuál es el próximo en volver a la memoria principal, y debería ser colocado en la misma región de la memoria principal que antes.

El sistema operativo debe conocer la ubicación de la información del control del proceso y de la pila de ejecución, además de la primera ubicación en donde comenzar el proceso. Como el sistema operativo es responsable de mover el proceso a la memoria principal, las direcciones son fáciles de mover. Sin embargo, el procesador debe negociar con referencias de memoria del programa. Las instrucciones de ramificación (branch instructions) apuntan a la próxima instrucción a ejecutar, las instrucciones de referencia de datos (reference to data) apuntan al dato referenciado por el programa. Sin embargo, el procesador y el S.O. deben ser capaces de trasladar las referencias de memoria encontradas en el programa en la actual ubicación de la memoria física.

Figura 1 Requisitos de direccionamiento para un proceso

Por simplicidad, la imagen del proceso ocupa una región contigua de la memoria principal. Sin duda, el sistema operativo tiene que conocer la ubicación de la información de control del proceso y de la pila de ejecución, así como el punto de partida para comenzar la ejecución del programa para dicho proceso. Puesto que el sistema operativo gestiona la memoria y es responsable de traer el proceso a memoria principal, estas direcciones deben ser fáciles de conseguir. Además, el procesador debe ocuparse de las referencias a memoria dentro del programa. Las instrucciones de bifurcación deben contener la dirección que haga referencia a la instrucción que se vaya a ejecutar a continuación. Las instrucciones que hagan referencia a datos deben contener la dirección del byte o de la palabra de datos referenciada. De algún modo, el hardware del procesador y el software del sistema operativo deben ser capaces de traducir las referencias a memoria encontradas en el código del programa a las direcciones físicas reales que reflejen la posición actual del programa en memoria principal.

Protección: Todos los procesos deben ser protegidos de indeseables interferencias accidentales o intencionales de otros procesos. Este mecanismo, sin embargo, dificulta la tarea de reubicación debido a que se deben chequear todas las posiciones de memoria al ubicar un proceso para mantener el sistema de protección. Todas las referencias de memoria generadas por un proceso deben ser chequeadas en tiempo de ejecución para estar seguro de que apuntan solo a la porción de memoria reservada para ese proceso.

Ante una violación de la protección, el que debe ofrecer esta protección es el procesador y no el sistema operativo debido a la velocidad y a que el S.O. no puede anticipar las referencias de memoria que el proceso hará.

Compartición: Conocido también como uso compartido de códigos y datos.Todos los mecanismos de protección deben ser un poco flexibles, ya que deben permitir que los procesos de un mismo programa que comparten una tarea tengan memoria en común. El mecanismo de protección debe permitir esto de una manera controlada.

Organización lógica: La memoria en una computadora es lineal, una sucesión de bytes. En cambio, los programas están construidos en módulos, en donde los datos pueden ser modificados. Si el S.O. y el HW son capaces de trabajar con estos módulos, se pueden apreciar las siguientes ventajas:

Los módulos pueden escribirse y compilarse independientemente, mientras que el sistema resuelve durante la ejecución todas las referencias de un módulo a otro.

Pueden otorgarse varios grados de protección a los distintos módulos.

Se puede introducir mecanismos de memoria compartida, así al usuario se le hace mucho más sencilla la construcción de aplicaciones

Organización física: La memoria está dividida en primaria y secundaria. El traspaso de información entre éstas es la preocupación más grande del sistema; esta responsabilidad puede ser asignada al programador, pero esto sería una gran pérdida de tiempo, por esto el sistema debe ocuparse de ello.

La responsabilidad de este flujo podría asignarse al programador, pero esto es impracticable e indeseable, debido a dos razones: a. La memoria principal disponible para un programa y sus datos puede ser insuficiente. El programador debe emplear la práctica de superposición (overlaying), donde el programa y los datos se organizan de tal forma que puede haber varios módulos asignados a la misma región de memoria, con un programa principal responsable del intercambio de los módulos según se necesite. Incluso con la ayuda de herramientas de compilación, la programación superpuesta malgasta el tiempo del programador. b. En un entorno multiprogramado, el programador no conoce durante la codificación cuánto espacio habrá disponible o dónde estará este espacio. Resulta claro entonces que la tarea de mover información entre los dos niveles de memoria debe ser responsabilidad del sistema. Esta tarea es la esencia de la gestión de memoria.

4. Describe cual es la función principal de todo sistema de gestión de memoria.

La tarea central de cualquier sistema de gestión de memoria es traer los programas a memoria principal para su ejecución en el procesador.

5. Define/Describe que es Memoria Virtual.

En casi todos los sistemas multiprogramados modernos, esta tarea supone un esquema sofisticado conocido como memoria virtual. La memoria virtual está, a su vez, basada en el uso de una de dos técnicas básicas; segmentación y/o paginación. Antes de ver estás técnicas de memoria virtual, se debe preparar el terreno considerando técnicas más simples que no requieren el uso de memoria

virtual. Una de estas técnicas, la partición, se ha venido usando con distintas variantes en algunos sistemas operativos ahora obsoletos. Las otras dos técnicas, la paginación simple y la segmentación simple, no se usan en solitario. No obstante, el estudio de la memoria virtual resultará más sencillo si se consideran en primer lugar estas dos técnicas, sin tener en cuenta la memoria virtual.

6. ¿Qué son particiones?

Divisiones dentro de una unidad de almacenamiento física con su propio sistema de archivos. Es decir, aunque se tenga tan solo un disco duro físico conectado, el sistema tratará a cada partición como si fuese un disco duro independiente. Se ve claramente en Windows, donde el sistema asignará una letra de unidad a cada partición.

7. Describe por medio de una tabla las diferentes técnicas de Gestión de Memoria.

Ver Siguiente Página

Tabla 1 Técnicas de Gestión de Memoria

8. Supongamos que tenemos una partición estática de una memoria de 4Mb y un SO de 512k, particionado en los siguientes tamaños: 128,256, 512K, 720k, 1Mb, 1.5Mb. Por medio de un diagrama, indique como se representarían estas particiones en memoria.

Particiones del Particiones de mismo tamaño distinto tamaño

Figura 2 Particiones

Si las particiones son del mismo tamaño, la ubicación de un proceso en la memoria es trivial, ya que mientras haya una partición libre, puede cargarse un proceso en esa partición. Cuando todas las particiones están ocupadas por procesos que no están listos para ejecutarse, uno de esos procesos debe sacarse y hacer sitio para un nuevo proceso.

Si las particiones son de distinto tamaño, hay dos maneras posibles de asignar los procesos a las particiones:

La forma más simple es asignar cada proceso a la partición más pequeña en la que quepa, es decir, solo en la que mejor se adapte, para lo cual es preciso conocer la cantidad máxima de memoria, que necesitaría cada uno de los procesos y realmente esta información no siempre se conocerá. En este caso, será necesaria una cola de planificación para cada partición, que albergue los procesos listos para ejecutarse, cuyo destino es esa partición. La ventaja de este enfoque es que los procesos están siempre asignados de forma que se minimiza la memoria desaprovechada dentro de cada partición.

Este enfoque que parece óptimo desde el punto de vista de una partición individual, no lo es, desde el punto de vista del sistema global, ya que si tenemos particiones grandes y los procesos que van llegando son todos pequeños, las colas de las particiones grandes permanecerán sin usar, incluso aunque algún proceso más pequeño pudiera haber sido asignado a las mismas.

Una solución mejor sería emplear una sola cola para todos los procesos y cuando se va a cargar un proceso en memoria principal, se selecciona la partición más pequeña disponible que pueda albergar al proceso. Si todas las particiones están ocupadas, se debe tomar una decisión de intercambio y puede darse preferencia al intercambio de la partición más pequeña, que pueda contener el proceso entrante. También es posible considerar otros factores, tales como, prioridades y preferencia para descargar procesos bloqueados antes que procesos listos.

El uso de particiones de distinto tamaño proporciona cierto grado de flexibilidad a las particiones fijas, además, ambos tipos de esquema de partición fija son relativamente simples

S.O128 K256 K512 K720 K1 Mb

1.5 Mb

y exigen un software del sistema operativo sencillo y una sobrecarga de procesamiento mínima.

Una cola de procesos Una cola de procesos

por cada partición única

Figura 3 Cola de proceso en las Particiones

El particionamiento fijo consiste en la asignación estática de la memoria particionada, que es una forma de hacer posible la multiprogramación, dividiendo la memoria física disponible en varias particiones, cada una de las cuales puede ser asignada a diferentes procesos.

9. ¿Qué es una Partición Dinámica? ¿Cómo se diferencia de una partición Estática?

Partición Dinámica: aquí las particiones son variables en número y longitud. Cuando se carga un proceso en la memoria principal, se le asigna exactamente tanta memoria como necesita y no más.

Este método comienza bien, pero desembarca en una situación en la que hay un gran número de huecos pequeños en la memoria. La memoria comienza a estar más fragmentada y su rendimiento decae. Este fenómeno se denomina fragmentación externa y se refiere al hecho que la memoria externa a todas las particiones se fragmenta cada vez más.

Una técnica para vencer la fragmentación externa Es la compactación, el sistema operativo desplaza los procesos para que estén contiguos, de forma que toda la memoria libre quede

S.O

128 K

256 K

512 K

720 K

1 Mb

1.5 Mb

junta en un bloque. La dificultad de la compactación esta en que Es un procedimiento que consume tiempo, la compactación necesita de renunciación dinámica. Es decir se debe poder mover un programa de una región a otro de la memoria principal sin invalidar la referencia a la memoria del programa.

Partición Estática: en la mayoría de los esquemas de gestión de memoria, el sistema operativo ocupa una parte fija de la memoria principal y que el resto de la memoria está disponible para ser usado por varios procesos. El esquema más sencillo de gestión de la memoria disponible es dividir en regiones con límites fijos.

10. Describe Fragmentación Externa y en que se distingue de la Fragmentación Interna.

Fragmentación externa: ocurre cuando el primer bloque libre de memoria no es suficiente para el siguiente programa para su uso. Por ejemplo, digamos que un sistema de carga de tres programas en la memoria, cada uno ocupando 50 megabytes o MB. El segundo programa termina, dejando a ese bloque de 50 MB libres. Si el siguiente programa para comenzar requiere 100 MB, que no sería capaz de utilizar ese bloque de 50 MB de espacio libre, y el sistema le asignará el siguiente intervalo de 100 MB libres. Esa brecha en la memoria utilizada seguiría siendo utilizada hasta que un programa requiere menos de 50 MB de memoria. Con el tiempo, estas pequeñas diferencias pueden sumar, y un sistema se puede ejecutar sin memoria a pesar de las muchas áreas pequeñas de memoria libre.

Fragmentación interna: se deriva del hecho de que mientras que la memoria está denominado en bytes, la unidad más pequeña disponible es por lo general mayor que el debido a las reglas de direccionamiento de memoria. Por ejemplo, si el sistema carga un programa que requiere 50MB y 19 bytes de la memoria, puede que no sea capaz de iniciar el programa siguiente en ese 20a de bytes, en lugar de partida que en el byte 24a o 28a. Estas deficiencias resultan en pequeñas áreas de la memoria inutilizable, simplemente porque el sistema no puede abordar todos los bytes de memoria disponible para él. Mientras que la pérdida de memoria a la fragmentación interna es generalmente mucho menor que la pérdida de la fragmentación externa, estas pequeñas cantidades pueden todavía aumentar con el tiempo.

La mejor solución para la fragmentación de memoria es reiniciar el sistema. Puesto que estos fragmentos no utilizables acumulan con el tiempo, cuanto más tiempo se ejecuta un sistema, la memoria menos disponible que puede tener para los programas. Reinicio de un ordenador o servidor borra la memoria, liberando para su uso. Para la fragmentación del disco duro, se debe ejecutar el software de desfragmentación para realinear y reorganizar los archivos, mejorando los tiempos de acceso y rendimiento.

11. ¿A qué se refiere la Técnica de Compactación?

Compresión o Compactación de Almacenamiento

Una técnica empleada cuando la memoria está dividida en particiones de tamaño variable. De cuando en cuando, el sistema operativo desplaza las particiones para que queden contiguas y así toda la memoria libre este reunida en un solo bloque.

Puede ocurrir que los agujeros (áreas libres) separados distribuidos por todo el almacenamiento principal constituyan una cantidad importante de memoria:

Podría ser suficiente (el total global disponible) para alojar a procesos encolados en espera de memoria.

Podría no ser suficiente ningún área libre individual.

La técnica de compresión de memoria implica pasar todas las áreas ocupadas del almacenamiento a uno de los extremos de la memoria principal:

Deja un solo agujero grande de memoria libre contigua. Esta técnica se denomina “recogida de residuos”

4

5

Principales desventajas de la compresión

Consume recursos del sistema

El sistema debe detener todo mientras efectúa la compresión, lo que puede afectar los tiempos de respuesta.

Implica la relocalización (reubicación) de los procesos que se encuentran en la memoria:

La información de relocalización debe ser de accesibilidad inmediata. Una alta carga de trabajo significa mayor frecuencia de compresión que incrementa el uso de

recursos.

12. Define Dirección Lógica, Dirección Relativa Y Dirección Física.

Dirección Lógica: es una referencia a una posición de memoria independiente de la asignación actual de datos a memoria; se debe hacer una traducción a dirección física antes de poder realizar un acceso a memoria.

Dirección relativa es un caso particular de dirección lógica, en el cual la dirección se expresa como una posición relativa a algún punto conocido, habitualmente el comienzo del programa.

Dirección física o dirección absoluta, es una posición real en memoria principal.

6

13. Demuestre por medio de un diagrama, la forma en que se realiza normalmente la traducción de direcciones. Explique.

Traducción de direcciones

• Cuando un proceso es asignado al estado de ejecución, un registro base (en la CPU) es cargado con la dirección física de inicio del proceso.

• Un registro limite es cargado con la dirección física de final.

• Cuando una dirección relativa es encontrada es adicionada al registro base y comparada con el registro límite.

• Esto provee protección de hardware.

• Si está dentro del tamaño del proceso se realiza la traducción, caso contrario se envía una interrupción al Sistema Operativo.

Registro Base: establece la dirección física donde comienza el espacio de memoria del proceso.

Registro Límite: establece la dirección donde termina el espacio de memoria del proceso, en relación al registro base.

Figura 7

Reubicación Hardware: la MMU (memory management unit) se encarga de la traducciónProceso: Programa se carga en memoria sin modificar El S.O. almacena por cada proceso su función de traducción El S.O. específica a la MMU qué función aplicar para cada proceso.

Traducción (IdProc, dir_lógica) dir_física

LO AD R1, #1000LO AD R2, #2000LO AD R3, /1500LO AD R4, [R1]STO RE R4, [R2]INC R1INC R2DEC R 3JNZ /12.................

Memoria

10000100041000810012100161002010024100281003210036..........

Procesador

R. Instrucción

HW traducción

LO AD R3, /1500

1150010000

+1500

PC8

Figura 8

LO AD R1, #11000LO AD R2, #12000LO AD R3, /11500LO AD R4, [R1]STO RE R 4, [R2]IN C R 1IN C R 2DEC R 3JNZ /10012.................

Memoria

10000100041000810012100161002010024100281003210036..........

Figura 9

14. ¿Qué son Páginas? ¿Qué son marcos? ¿Qué son Segmentos?

Páginas: programas se dividen en unidades lógicas, que tienen el mismo tamaño que los marcos de páginas.

Marcos: espacio de memoria se divide en secciones físicas de igual tamaño la técnica de manejo de memoria.

Segmentos: modo de subdividir el programa. El programa y sus datos asociados se dividen en un conjunto.

Reubicación software: traducción de direcciones durante carga del programa. Esta solución se usa en sistemas sin el hardware específico de traducción (MMU).Proceso: El programa se carga con las direcciones ya traducidas.Se genera un código diferente del programa ejecutableDesventajas:

No asegura protección (no se verifica cada dirección a usar, sino que se usan las direcciones generadas tras el proceso de carga).

No permite mover programa en tiempo de ejecución (suponer que es necesaria la reubicación del espacio asignado al proceso, por necesitar más espacio.)

15. Describe y explica la diferencia entre Paginación Y Segmentación.

Paginación: es el almacenamiento virtual, un bloque de longitud fija que dispone de una dirección virtual y que se transfiere como una unidad entre la memoria principal y la memoria secundaria. Segmentación: en la memoria virtual, un bloque que tiene una dirección virtual. Los bloques de un programa pueden ser de longitud desigual y pueden ser incluso de longitud variable dinámicamente.

Fecha de Entrega: 24 de Julio de 2014

Individual o en pares, Sustentará en el salón de clases sus respuestas, utilice además de sus respuestas, diagramas, dibujos o gráficos que representen de forma complementaria sus

respuestas