Unidad IV Y V - Sistemas Operativos PDF

Title Unidad IV Y V - Sistemas Operativos
Author Nicolas Marinucci
Course Sistemas Operativos
Institution Universidad Nacional de La Rioja
Pages 20
File Size 1.1 MB
File Type PDF
Total Downloads 108
Total Views 166

Summary

Apuntes...


Description

UNIDAD IV – GESTIÓN DE MEMORIA

1) GESTIÓN DE MEMORIA Un resultado de la planificación de la CPU es que se mejora tanto el aprovechamiento de la CPU como la rapidez con que el computador responde a sus usuarios. Para lograr este aumento en el desempeño es preciso mantener varios procesos en la memoria; es precioso compartir la memoria.

1.1)

ANTECEDENTES

La memoria es vital para el funcionamiento de un sistema de computador moderno. Es una gran matriz de palabras o bytes, cada uno con su propia dirección. La CPU obtiene instrucciones de la memoria según el valor del contador de programa.

1.1.1) VINCULACIÓN DE DIRECCIONES Un programa reside en un disco como archivo binario ejecutable. Es necesario traer el programa a la memoria y colocarlo en un proceso para ejecutarlo. Dependiendo de la gestión de memoria empleada, el proceso podría transferirse entre el disco y la memoria durante su ejecución. Los procesos que esperan en el disco para ser transferidos a la memoria forman la cola de entrada. Los sistemas permiten a un proceso de usuario residir en cualquier parte de la memoria física. Un programa de usuario pasara por varias etapas antes de ejecutarse. Las direcciones del programa fuente son simbólicas. Un compilador vincula direcciones simbólicas con direcciones reubicables. El editor de enlace vinculará estas direcciones reubicables con direcciones absolutas La vinculación de instrucciones y datos se puede efectuar en cualquier etapa del camino: ● Compilación: Si en el momento de la compilación se sabe en qué parte de la memoria va a residir el proceso, es posible generar código absoluto. Ejemplo: programas con formato .COM de MS-DOS. ● Carga: Si al compilar el programa no se sabe en qué parte de la memoria va a residir el proceso, el compilador deberá generar código reubicable. En este caso la vinculación final se posterga hasta el momento de la carga.

● Ejecución: Si, durante la ejecución, un proceso podría pasar de un segmento de la memoria a otro, la vinculación deberá postergarse hasta el momento de la ejecución.

1.1.2) CARGA DINAMICA Como el tamaño de un proceso está limitado al tamaño de la memoria física, podemos usar carga dinámica para lograr un mejor aprovechamiento de la memoria. Con esta técnica las rutinas no se cargan sino hasta que se invoquen. Cuando una rutina necesita llamar a otra, lo primero que se hace es ver si la otra rutina ya se cargó, sino se cargó, se invoca al cargador de enlace reubicable para que cargue la rutina y actualice las tablas de direcciones del programa. Ventaja: ●

Una rutina que no se utiliza nunca se carga, es útil cuando se requieren grandes cantidades de código para manejar casos que ocurren muy de vez en cuando (rutinas de error).

La carga dinámica no requiere soporte por parte del sistema operativo; es responsabilidad de los usuarios diseñar sus programas de modo que aprovechen semejante esquema.

1.1.3) ENLACE DINÁMICO La mayoría de los sistemas operativos sólo manejan enlace estático, en el que las bibliotecas de lenguaje del sistema se tratan como cualquier otro módulo objeto. En lugar de posponer la carga hasta el momento de la ejecución, lo que se pospone es el enlace. Esta característica suele usarse con las bibliotecas del sistema. Sin este recurso, todos los programas de un sistema requerirían la inclusión de una copia de su biblioteca de lenguaje (desperdiciando memoria). Con el enlace dinámico se incluye un fragmento (stub) en la imagen por cada referencia a una rutina de biblioteca. Este fragmento es una sección pequeña de código que indica cómo localizar la rutina de biblioteca apropiada. Cuando este fragmento se ejecuta, verifica si la rutina que necesita ya está en la memoria, en el caso que no esté, el programa la carga en la memoria. A diferencia de la carga dinámica, el enlace dinámico requiere algo de ayuda del sistema operativo. Si los procesos en memoria están protegidos unos de otros, el sistema operativo es la única entidad que puede comprobar si la rutina que se necesita está en el espacio de memoria de otro proceso.

1.1.4) SUPERPOSICIONES (OVERLAYS) Lo que se busca es mantener en memoria sólo las instrucciones y datos que se necesitan en cualquier momento dado. Si se requieren otras instrucciones, se cargan en un espacio que antes estaba ocupado por instrucciones que ya no se necesitan. Al igual que la carga dinámica, las superposiciones no requieren soporte especial por parte del sistema operativo; el usuario las puede implementar en su totalidad. El empleo de superposiciones está limitado a microcomputadoras y otros sistemas que tienen memoria física limitada.

1.2)

ESPACIO DE DIRECCIONES LÓGICO Y FÍSICO ● Dirección lógica (dirección virtual): Generada por la CPU. ● Dirección física: Percibida por la memoria.

Durante la compilación y la carga las direcciones lógicas y físicas son las mismas, en cambio, durante la ejecución estas direcciones difieren. ● Espacio de direcciones: Conjunto de direcciones que puede utilizar un proceso para direccionar la memoria. ● Espacio de direcciones lógico: Conjunto de direcciones lógicas generadas por un programa.

● Espacio de direcciones físico: Conjunto de direcciones físicas que corresponden a las direcciones lógicas. La transformación de direcciones virtuales a físicas en el momento de la ejecución corre por cuenta de la unidad de gestión de memoria (MMU).

Registro base y límite: El registro base se carga con la dirección física donde empieza el programa en memoria y el registro limite se carga con la longitud del programa.

1.3)

INTERCAMBIO

Una de las estrategias para resolver el problema de la sobre carga de memoria, es el intercambio, el cual consiste en llevar cada proceso completo a memoria, ejecutarlo durante cierto tiempo y después regresarlo al disco. Un proceso que se intercambia a disco se intercambiará de regreso a al mismo espacio de memoria que ocupó anteriormente. Esta restricción depende del método de vinculación de direcciones: ● Si la vinculación se realiza durante el ensamblado o la carga, el proceso no se puede transferir a una posición diferente. ● Si la vinculación se realiza durante la ejecución, será posible intercambiar un proceso a un espacio de memoria diferente. Los procesos inactivos son almacenados en el disco de tal manera que no ocupen memoria cuando no se están ejecutando.

Cuando la CPU decide ejecutar un proceso, llama al despachador, este comprueba si el proceso está en memoria; si no es así, y no hay una región de memoria libre, el despachador intercambia un proceso que si esté en memoria a disco y trae el proceso deseado.

1.4)

ASIGNACIÓN CONTIGUA

La memoria se divide en dos particiones, una para el sistema operativo y otra para los procesos del usuario. El sistema operativo se encuentra en la memoria baja debido a la ubicación de los vectores de interrupción.

1.4.1) ASIGNACIÓN CON UNA SOLA PARTICIÓN El código y los datos del sistema operativo deben ser protegido para evitar que los procesos del usuario los modifiquen, también deben protegerse los procesos de los usuarios unos de otros, esto se puede realizar utilizando un registro de reubicación. El registro de reubicación contiene el valor de la dirección física más pequeña; el registro limite contiene el Intervalo de direcciones lógicas. Si se usan registros de reubicación y límite, toda dirección lógica debe ser menor que el registro límite: la MMU transforma la dirección lógica dinámicamente sumándole el valor que está en el registro de reubicación, esta dirección transformada se envía a la memoria.

1.4.2) ASIGNACIÓN CON MULTIPLES PARTICIONES Uno de los esquemas que permitan tener varios procesos en la memoria consiste en dividir la memoria en varias particiones de tamaño fijo. Cada partición puede contener un proceso, el grado de multiprogramación está limitado por el número de particiones. ● Si una partición está desocupada, se escoge un proceso de la cola de entrada y se carga en esa partición. ● Cuando el proceso termina, la partición queda disponible para otro proceso. El sistema operativo mantiene una tabla que indica cuales partes de la memoria están disponibles y cuales ocupadas. ● Cuando la memoria está toda disponible se considera como un bloque disponible o hueco. ● Cuando un proceso llega y necesita memoria, se busca un hueco con el tamaño suficiente para ese proceso; si se halla se le asigna al proceso solo la memoria que necesita y el resto se deja disponible para solicitudes futuras.

● Si el hueco es demasiado grande se divide en dos: una parte se le asigna al proceso que llegó y la otra se devuelve al conjunto de huecos. ● Cuando un proceso termina, libera su bloque de memoria que se coloca en el conjunto de huecos.

Las estrategias de primer ajuste, mejor ajuste y peor ajuste son las que más se usan para seleccionar un hueco del conjunto de huecos disponibles. ● Primer ajuste: Asignar el primer hueco que tenga el tamaño suficiente. ● Mejor ajuste: Asignar el hueco más pequeño que tenga el tamaño suficiente. ● Peor Ajuste: Asignar el hueco más grande.

1.4.3) FRAGMENTACIÓN INTERNA Y EXTERNA A medida que se cargan proceso en la memoria y salen de ella, el espacio de memoria libre se divide en trozos pequeños. Que estrategia soluciona ● Fragmentación externa: Cuando se cuenta con memoria total para satisfacer una solicitud, pero el espacio no es contiguo. ● Fragmentación interna: Memoria que está dentro de una partición y no se utiliza.

1.5)

PAGINACIÓN

Otra forma de solucionar el problema de la fragmentación externa es permitir que el espacio de direcciones lógico de un proceso sea no contiguo. Una forma de implementar esta solución es adoptar un esquema de paginación. La paginación evita el problema de ajustar los trozos de la memoria variable en algún almacenamiento auxiliar.

Ventajas de la paginación ● Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargará bajo la solicitud. ● No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de páginas libres dispersos en la memoria. ● Es fácil controlar todas las páginas, ya que tienen el mismo tamaño. Desventajas de la paginación •



El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fijo el tamaño de estas, se crea un problema semejante al de los programas (cómo asignar un tamaño óptimo sin desperdicio de memoria, u ovearhead del procesador).

1.5.1) MÉTODO BASICO La memoria física se divide en bloques de tamaño fijo llamados marcos (frames). La memoria lógica también se divide en bloques del mismo tamaño llamados páginas. Las direcciones generadas por la CPU se dividen en dos partes: ● Número de página (p) ● Desplazamiento de página (d) El número de página se utiliza como índice de una tabla de página, la cual contiene la dirección base de cada página en la memoria física. Esta dirección se combina con el desplazamiento de la página para definir la dirección de memoria física que se envía a la unidad de memoria.

1.6)

SEGMENTACIÓN

Un aspecto importante de la gestión de memoria que se hizo inevitable al surgir la paginación es la separación entre la visión que el usuario tiene de la memoria y la memoria física real.

1.6.1) MÉTODO BÁSICO Se considera que el usuario o programación no ve la memoria como una formación lineal de bytes, la ve como una colección de segmentos de tamaño variable sin algún ordenamiento necesario entre los segmentos.

La segmentación es un esquema de la gestión de memoria que apoya la visión que el usuario tiene de la memoria. Un espacio de direcciones lógico es una colección de segmentos, donde cada uno tiene un nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como la distancia dentro del segmento. Así, el usuario especifica cada dirección con dos cantidades: un nombre de segmento y un desplazamiento. Los segmentos se enumeran y se hace referencia a ellos por un numero de segmento.

1.6.2) HARDWARE Es preciso definir una implementación que transforme las direcciones bidimensionales definidas por el usuario en direcciones físicas unidimensionales. Esta transformación se efectúa con una tabla de segmentos. Cada entrada de la tabla tiene: • •

Una base: Contiene la dirección física inicial donde el segmento reside en la memoria. Un límite: Especifica la longitud del segmento.

Una dirección lógica consta de dos partes: • •

Un numero de segmento S: sirve como índice para consultar la tabla de segmentos. Un desplazamiento dentro de ese segmento D: debe estar entre 0 y el límite del segmento.

1.6.3) IMPLEMENTACION DE LAS TABLAS DE SEGMENTOS Al igual que la tabla de páginas, la tabla de segmentos puede situarse bien en registros rápidos o bien en memoria. Una tabla de segmentos mantenida en registros puede ser referenciada muy rápidamente: la adición a la base y la comparación con el límite pueden realizarse simultáneamente para ahorrar tiempo. Si un programa puede tener un gran número de segmentos, no es factible mantener la tabla de segmentos en registros, y hay que mantenerla en la memoria.

Si está en memoria: • •

Un registro base STBR (segment table base register) indica inicio de la tabla de segmentos en memoria. Un registro límite STLR (segment table length register) indica longitud de la tabla de segmentos.

Ventajas de la segmentación

• • •

El programador puede conocer las unidades lógicas de su programa. Es fácil el compartir segmentos. Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución.

1.6.4) SEGMENTACIÓN CON PAGINACIÓN: MULTICS MULTICS opto por considerar a cada segmento como una memoria virtual y la paginaron, combinando las ventajas de la paginación (tamaño de pagina uniforme y no tener que mantener todo el segmento en la memoria, si solo se está utilizando una parte de él) con las ventajas de la segmentación (facilidad de programación, modularidad, protección, compartición). Cada programa tiene una tabla de segmentos, con un descriptor por segmento, la tabla de segmentos es en si un segmento y se página. Un descriptor de segmento contiene una indicación acerca de si el segmento esta en memoria principal o no. Si cualquier parte del segmento está en memoria, se considera que el segmento está en memoria y sui tabla de páginas estará en memoria. Una dirección en MULTICS consiste en dos partes: • •

El segmento. Dirección dentro del segmento.

(-Sacado de internet-) En lugar de tratar un segmento como una unidad contigua, éste puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas. Las direcciones tienen tres componentes: (s, p, d), donde la primera indica el número del segmento, la segunda el número de la página dentro del segmento y la tercera el desplazamiento dentro de la página. Se deberán usar varias tablas: •

SMT (tabla de mapas de segmentos): Una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicará la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento.



• •

PMT (tabla de mapas de páginas): Una por segmento; cada entrada de la PMT describe una página de un segmento, en la forma que se presentó la página pura. TBM (tabla de bloques de memoria): Para controlar asignación de páginas por parte del sistema operativo. JT (tabla de Jobs): Que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.

Ventajas de la segmentación paginada: • • • •

El esquema de segmentación paginada tiene todas las ventajas de la segmentación y la paginación. Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la compartición y enlace. Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. Se elimina el problema de la fragmentación externa y la necesidad de compactación.

Desventajas de la segmentación paginada: • • •

Los tres componentes de la dirección y el proceso de formación de direcciones hacen que se incremente el costo de su implantación. Se hace necesario mantener un número mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento. Sigue existiendo el problema de fragmentación interna de todas las páginas finales de cada uno de los segmentos.

COMPARACIÓN ENTRE PAGINACIÓN Y SEGMENTACIÓN

2) MEMORIA VIRTUAL Es una técnica que permite ejecutar procesos que podrían no estar totalmente en memoria. La principal ventaja es que los programas pueden ser más grandes que la memoria física. Esta técnica evita a los programadores tener que preocuparse por las limitaciones e la memoria, sin embargo, esta técnica no es fácil de implementar y podría reducir el rendimiento si no se utiliza con cuidado. 2.1) ANTECEDENTES La capacidad de ejecutar programas que no está todo en memoria tiene muchas ventajas: • • •

Los programas ya no están limitados por la capacidad de la memoria física. Los usuarios pueden escribir programas para un espacio de direcciones virtual extremadamente grande, simplificando la programación. Dado que los programas ocuparan menos memoria física, se podrían ejecutar varios programas al mismo tiempo aumentando el aprovechamiento de la CPU.

La memoria virtual generalmente se implementa con paginación por demanda, pero también puede implementarse en un sistema con segmentación.

UNIDAD V – ARCHIVOS

1) ARCHIVOS Los archivos son unidades lógicas de información creada por los procesos , es un conjunto de información binaria; es decir, un conjunto que va de 0 a 1. La información que se almacena en los archivos debe ser persistente, es decir, no debe ser afectada por la creación y terminación de los procesos. Un archivo debe desaparecer sólo cuando su propietario lo remueve de manera explícita.

1.1)

NOMENCLATURA DE ARCHIVOS

Cuando un proceso crea un archivo le proporciona un nombre. Cuando el proceso termina, el archivo continúa existiendo y puede ser utilizado por otros procesos mediante su nombre. La parte que va después del punto se conoce como la extensión del archivo y por lo general indica algo acerca de su naturaleza. Ejemplos:

1.1.2) ESTRUCTURA DE ARCHIVOS Los archivos se pueden estructurar de varias formas, algunas de ellas son: • •

Secuencia de bytes sin escritura: el sistema operativo no sabe, ni le importa, qué hay en el archivo. Secuencia de registros de longitud fija: la operación de lectura devuelva un registro y la operación de escritura sobrescriba o agregue un registro.



Árbol de registros: donde no todos son necesariamente de la misma longitud; cada uno de ellos contiene un campo llave en una posición fija dentro del registro.

1.1.3) TIPOS DE ARCHIVOS • • • •

Archivos regulares: Contienen información del usuario. Directorios: Sistemas de archivos para mantener la estructura del sistema de archivos. Archivos especiales de caracteres: Se relacionan con la E/S y se utilizan para dispositivos de E/S. Archivos especiales de bloques: Se utilizan para modelar discos.

1.1.4) OPERACIONES DE ARCHIVOS (-solamente escribí los 5 principales-) 1) Create: El archivo de crea sin datos. 2) Delete: Cuando no se necesita el archivo, se lo elimina para liberar espacio. 3) Open: Permitir que el sistema operativo lleve los atributos y la ...


Similar Free PDFs