Está en la página 1de 28

“AÑO DEL DIALOGO Y RECONCILIACION NACIONAL”

ALUMNO : EDER SANDOVAL

PROFESOR : PAZ PURISACA ROLANDO

CÓDIGO DE MATRÍCULA : 201

UDED DE MATRÍCULA : PIURA

SECCIÓN : 01-1

CICLO : V

CURSO : SISTEMAS OPERATIVOS - VIRTUALIZACIÓN

TEMA : SISTEMAS OPERATIVOS -ADMINISTRACIÓN DE LA


MEMORIA.

ESPECIALIDAD : INGENIERÍA DE SISTEMAS E INFORMÁTICA

PIURA, DICIEMBRE DEL 2018


INDICE

I. RESUMEN:
IMPORTANCIA DE LOS SISTEMAS OPERATIVOS -
ADMINISTRACIÓN DE LA MEMORIA
II. OBJETIVO:
FINALIDAD DE CONSTRUIR ALGORITMOS DE
ADMINISTRACION DE MEMORIA
III. TEORÍA:
SISTEMAS OPERATIVOS

Introducción a los sistemas operativos.


Servicios de los sistemas operativos.
Procesos y threads.
Introducción a la gestión de procesos.
Planificación de procesos.
Procesos e hilos.

ADMINISTRACIÓN DE LA MEMORIA

Asignación de una sola partición.


Asignación de Particiones múltiples: Fijas y Variables
Algoritmos de colocación de almacenamiento:
Primer ajuste. Algoritmos. Mejor ajuste. Tipos de algoritmos.
Particiones reubicables.
Intercambio
Resumen de la administración de memoria.

IV. CONCLUSIONES

V. RECOMENDACIONES

VI. BIBLIOGRAFÍA
RESUMEN

El sistema operativo es importante por:

• El sistema operativo es el responsable de que un dispositivo tecnológicamente


complejo pueda ser una herramienta sencilla en su uso, cumpliendo una utilidad
destacada en la vida diaria de las personas.
• El sistema operativo hace posible que una persona pueda “comunicarse” con
una máquina, ya sea utilizando un ratón, tocando sobre una pantalla táctil,
presionando un botón físico o pulsando las teclas de un teclado: y a todas las
acciones de un usuario, la máquina ofrece respuestas visuales, táctiles o
sonoras.
• La importancia del sistema operativo moderno reside en poder controlar una
máquina a través de una interfaz visual, sin tener grandes conocimientos
técnicos, convirtiendo un hardware complejo en una solución para el hogar o la
oficina completamente amigable y accesible a todos los públicos.

La administración de memoria es importante por:

• Traslada la información que deberá ser ejecutada por la unidad central de


procesamiento o procesador, a la memoria principal. Actualmente esta
administración se conoce como memoria virtual, porque no es la memoria física
del procesador sino una memoria virtual que la representa.
• Se encarga de regular que los procesos presentes en memoria no invadan o
violen el espacio en memoria de otros procesos ya sea de forma accidental o por
error
• La administración de memoria es importante porque encuentra la reubicación,
que consiste en trasladar procesos activos dentro y fuera de la memoria principal
para maximizar la utilización del procesador; la protección, mecanismos que
protegen los procesos que se ejecutan de interferencias de otros procesos; uso
compartido de códigos y datos, con lo que el mecanismo de protección permite
que ciertos procesos de un mismo programa que comparten una tarea tengan
memoria en común.

• Se encarga de llevar un registro de las partes de memoria que se estén utilizando


y aquellas que no, con el fin de asignar espacio en memoria a los procesos
cuando estos la necesiten y liberándola cuando la terminen.
OBJETIVO
FINALIDAD DE CONSTRUIR ALGORITMOS DE ADMINISTRACION DE MEMORIA:
Entre las finalidades tenemos:
− Comportamiento de un proceso durante su ejecución. La ejecución típica de un
proceso consta de fases en las que se alternan la ejecución en CPU y los periodos de
espera debido a operaciones de entrada/salida.

− Asignar recursos de manera q se cumplan una serie de objetivos:


• Reparto de CPU equitativo (entre todos los procesos)
• Eficiencia (optimizar uso CPU)
• Mejor tiempo de respuesta en uso interactivo (consola remota)
• Mayor número de trabajos por unidad de tiempo
• Evitar la sobrecarga del sistema • Optimización de diversos parámetros (tr ,te)
− Reemplazan aleatoriamente cualquier página de la memoria principal, sin hacer
ningún esfuerzo de predicción.
INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Una de las etapas de la evolución de los sistemas operativos fue la multiprogramación


o multitarea, esto que trajo consigo que se tuviera en cuenta un grupo de
consideraciones a la hora de concebir los mismos. Así fueron surgiendo
distintas estructuras en el diseño, cada una con sus características particulares.
Un sistema operativo se define mejor por lo que “hace”–es decir, sus funciones– que
por lo que “es”. Sin embargo, ésta primera manera de definirlo también tiene sus
dificultades. Por ejemplo, el principal objetivo de los sistemas operativos de escritorio es
la facilidad de uso, mientras que en los mainframe el objetivo fundamental es la
eficiencia en el aprovechamiento de los recursos.

Puesto que ambos objetivos pueden ser en ocasiones contradictorios, resulta obvio que
lo que tiene que (hacer)un sistema operativo para alcanzar esos objetivos puede ser
diferente en cada caso, lo que dificulta el obtener una definición única.

El sistema operativo es el software que gobierna una máquina, el conjunto de procesos


que determinan lo que se ve y lo que se desea que haga un dispositivo con cada acción
que realiza el usuario. El sistema operativo es la base sobre la que se instalan los
programas que harán posible que una persona retoque una imagen con Photoshop,
prepare una presentación con Office, escuche música con iTunes, grabe Un DVD con
Nero o vea una película con VLC.

El sistema operativo controla y coordina el uso de hardware por parte de las diversas
aplicaciones para los diferentes usuarios del sistema (controla la ejecución de los
programas de usuario y el acceso a los dispositivos de E/S.). Un sistema operativo no
hace trabajo útil. Simplemente proporciona un entorno adecuado para que otros
programas puedan hacerlo.
El sistema operativo tiene la tarea de prevenir errores y el uso inadecuado del
ordenador.
SERVICIOS DE UN SISTEMA OPERATIVO
Los servicios son programas o aplicaciones cargadas por el propio sistema
operativo. Estas aplicaciones tienen la particularidad que se encuentran
corriendo en segundo plano.
Entre los servicios al sistema operativo tenemos:
• Servir de máquina ampliada o virtual, brindando facilidades a los programas de los
usuarios y a estos. Para lograr este objetivo, los sistemas operativos se encargan de
programar el trabajo con los diferentes dispositivos existentes en el sistema de cómputo,
separando a los usuarios y programas de esta tarea compleja y tediosa.
• Los servicios a usuarios, se brindan básicamente, por medio de los llamados
Programas del Sistema, mientras que a los programas se les brindan a través de las
Llamadas al Sistema.
• Los sistemas operativos entregan un conjunto de funciones necesarias para los
programas de las diferentes aplicaciones alojadas en el computador, y los vínculos
necesarios para controlar y sincronizar el hardware de la misma.
• El Sistema Operativo proporciona ciertos servicios a los programas y a los usuarios de
estos mismos programas. Un cierto conjunto de servicios del sistema operativo
proporciona funciones que resultan útiles al usuario y otras que permiten mayor
eficiencia hacia los usuarios.
Para visualizar los servicios, o para cambiar algunas opciones, debemos abrir la consola
de Microsoft.
Esto lo hacemos de la siguiente manera:
Inicio/ Panel de Control / Herramientas Administrativas / Servicios.

MANEJADOR DE PROCESOS Y THREADS

Un Thread es la unidad básica de ejecución de OS/2. Cualquier programa que se


ejecute consta de, al menos, un thread.

Los Threads son una ampliación del concepto de multitarea, si bien multitarea se refiere
a la capacidad de un sistema para ejecutar varios procesos a la vez, en un comienzo
esto hacia referencia a que más de una aplicación se estuviera ejecutando de manera
concurrente, sin embargo, pronto se hizo notoria la necesidad de que una misma
aplicación hiciera varias cosas a la vez. Allí nacieron los Threads.

En un sistema multitarea podemos tener los procesos A, B y C ejecutándose


simultáneamente, pero ¿qué pasaba si el proceso A debía mostrar una interfaz gráfica
y de paso estar escribiendo un archivo a la vez? no era posible.
El proceso debía terminar de escribir en disco antes de volver a trabajar en su interfaz
gráfica lo cual no era precisamente algo deseable. Así que surgió la idea de permitir que
un proceso pueda tener una o más tareas ejecutándose a la vez o al menos que así lo
percibiera el usuario, de tal forma que cada vez que a un proceso le correspondiera un
Quantum de ejecución el sistema alterne entre ejecutar una de sus tareas u otra.

Esto conlleva a la necesidad de reestructurar el concepto de proceso, ya que un proceso


no es la unidad mínima de ejecución puesto que ahora el proceso es un conjunto de
tareas (en adelante hilos o threads).

Un proceso que en apariencia no utiliza threads realmente se está ejecutando en un


único thread.

CONSIDERACIONES DE LOS PROCESOS Y LOS THREAD

Debemos tener en cuenta lo siguiente:

• La memoria de trabajo del proceso sigue siendo asignada por proceso, los thread
dentro del proceso comparten toda la misma región de memoria, el mismo
espacio de direcciones.
• El sistema operativo asigna Quantums de ejecución a cada thread creado, y en
efecto ya no calendariza procesos sino cada uno de los hilos en ejecución en el
sistema.
• Cada hilo tiene su propio contexto (estado de ejecución), así que cada vez que
que se suspende un hilo para permitir la ejecución de otro, su contexto es
guardado y restablecido nuevamente solo cuando es su turno de ejecución.
• Al ser la unidad mínima de ejecución cada thread tiene su propio stack.
• El proceso si bien ya no es la unidad de ejecución sigue siendo parte
fundamental en el funcionamiento del sistema ya que el proceso hace parte de
la asignación de prioridad de ejecución, es al que se le asigna memoria y de
hecho es al que se le asignan los recursos, así como privilegios y otros datos
importantes.
• El hilo es solo quien se ejecuta (sin demeritar en absoluto algo tan importante
como esto).

¿Qué sucede si estamos utilizando varios threads en una aplicación que se


ejecuta en una maquina con una sola CPU?

Si bien la impresión del usuario es que se están ejecutando varias cosas al tiempo ya
está claro que esto no es así pues en la CPU solo se puede ejecutar una cosa a la vez,
lo que está pasando realmente es que los thread están alternando tiempo de ejecución
de una manera tan rápida que el usuario percibe que se están ejecutando al tiempo.
¿Qué sucede si la maquina tiene más de una CPU?

En este caso las cosas pueden cambiar, si nuestra aplicación tiene dos hilos y nuestra
maquina tiene dos CPU (o core) en efecto cada thread se podría ejecutar en una CPU
diferente, en este caso si se puede hablar de ejecución en paralelo, aunque no
necesariamente pues puede darse el caso en que, debido a la necesidad del sistema
de calendarizar threads de otros procesos, ambos thread se ejecuten en la misma CPU
en un momento dado, en ese momento no habría paralelismo.

¿Qué sucede si la maquina tiene 2 CPU, pero mi aplicación está utilizando más de
2 thread?

Lo que sucederá es que solo dos de esos thread se estarán ejecutando en paralelo en
un momento dado (aunque ya vimos que esto no es necesariamente lo que sucede), y
el sistema operativo alternara la ejecución de dichos thread de tal forma que todos
tengan Quantums asignados, pero solo podrá haber máximo 2 en paralelo.

TIPOS DE THREADS

Threads del Kernel y Threads de usuario (fibras / fibers).

1. LOS THREAD DE KERNEL

Todo sistema operativo tiene un kernel, el kernel encargado de todo lo que en esencia
es el sistema operativo ofrece muchas funcionalidades, una de ellas crear threads ya
que son su unidad minina de ejecución y funcionan muy bien tal como lo hemos visto.

En Windows cada vez que se crea un thread se crea un objeto del kernel que tiene toda
la información necesaria respecto a que proceso, cual código ejecutable del thread, etc.
están asignados a dicho thread. Este objeto thread existe en el espacio de direcciones
asignadas al kernel.

2. LOS THREAD DE USUARIO

Básicamente son los mismos thread de kernel con la diferencia en que estos no son
administrados por el kernel del sistema operativo, es decir el sistema operativo no
sabe que existen. Son administrados por los programas de usuario.

Un ejemplo de estos son los thread creados en .Net Framework o en java, todos estos
thread son creados, calendarizados y administrados por el runtime de cada uno de
ellos, el sistema operativo en esencia no sabe nada de ellos. Cada thread del kernel
puede tener dentro de si uno o más thread de usuario. El sistema operativo solo
calendariza threads de kernel.
DIFERENCIAS:

• Los thread de usuario (fibers) son mucho más eficientes en escenarios con varios
thread que los thread del kernel. Principalmente por dos razones:

1. Los thread de usuario no requieren ser conmutados en modo kernel sino en


modo usuario lo cual permite hacer la conmutación entre threads de manera más
rápida al no tener que alternar de contexto.
2. No son calendarizados de manera preferente, sino que de manera ‘manual’
deben ser suspendidos o reactivados, lo que da la opción de hacer una
calendarización mucho más adecuada de acuerdo al juego de threads que se
estén ejecutando.

• Los thread de usuario tienen la desventaja de que no tienen mayor soporte del
sistema operativo lo que conlleva a que hay que hacer mucho trabajo de manera
manual, por ejemplo, efectuar la calendarización.
• Los thread de usuario bloquean a todos los thread del proceso cuando estos están
bloqueados a espera de una llamada al kernel o a un dispositivo de IO, lo cual hace
que se pierda la funcionalidad de procesamiento paralelo.

PLANIFICACIÓN DE PROCESOS.

Cuando son ejecutados varios procesos, el sistema operativo debe decidir cuál conviene
ejecutar si el CPU se encuentra disponible.
El elemento del sistema quien toma esta decisión se llama
PLANIFICADOR(Schedulling).
El algoritmo del cual hace uso se denomina ALGORITMO PLANIFICADOR.
TIPOS DE PLANIFICACIÓN
No Apropiativa:
Una vez que el CPU ha sido asignado a un proceso, ya no se le puede arrebatar.
Ejemplos: FIFO, Primer trabajo más corto.
Apropiativa:
Cuando a un proceso, el sistema operativo le puede quitar el CPU antes asignado.
Ejemplos: Round Robin, Prioridades, Tiempo restante más corto, Colas múltiples.

OBJETIVOS DE LA PLANIFICACIÓN
1. Los procesos deben tratarse de la misma forma.
2. Evitar el aplazamiento indefinido.
3. Atender la mayor cantidad de procesos por unidad de tiempo.
4. Mantener ocupados los recursos del sistema.
5. Lograr un equilibrio entre la respuesta y el uso de los recursos.
6. Una tarea debe ejecutarse aproximadamente en el mismo tiempo, cada vez que se
ejecute.

CRITERIOS DE PLANIFICACIÓN
1. Si el proceso utiliza exhaustivamente el CPU (CPU Bound) o los diversos dispositivos
(I/O Bound).
2. Importancia del proceso. Tipo de procesamiento.
3. Cuánto tiempo real de ejecución lleva un proceso y cuánto tiempo estimado necesita
para terminar.
4. Frecuencia con la que el proceso utiliza la memoria principal. Criterios de
Planificación.

NIVELES DE PLANIFICACIÓN
Planificación de Alto nivel:
Selecciona los trabajos que deben admitirse en el sistema. Tareas: 1. Administrar todos
los recursos del sistema excepto el CPU. 2. Mantiene las colas de procesos bloqueados
y suspendidos. 3. Controla la creación de procesos. 4. Maneja el nivel de
multiprogramación.
Planificación de nivel intermedio:
Determina cuáles procesos pueden competir por el CPU. Tareas: 1. Equilibrar la
admisión de trabajos en el sistema con la asignación del CPU a dichos procesos. 2.
Nivelar la carga del sistema (procesos activos y pasivos).
Planificación de bajo nivel:
Determina a cuál proceso listo se le asignará el CPU cuando éste se encuentre
disponible. Tarea: 1. Despachar el proceso.
INTRODUCCIÓN A LA GESTIÓN DE PROCESOS.

Uno de los módulos más importantes de un sistema operativo es la de administrar los


procesos y tareas del sistema de cómputo.
El sistema realiza varias actividades simultáneamente que compiten por la utilización de
determina dos recursos, entre los q destaca la CPU, estas actividades se denominan
procesos.
El proceso es una unidad de trabajo del sistema y el sistema operativo es el responsable
de realizar un seguimiento de todas las actividades del sistema en conexión con los
procesos generados.
TIPOS DE PROCESOS
Procesos de usuario: Es aquel creado por el sistema operativo.
Proceso de sistema: es un proceso que forma parte del propio sistema operativo y que
desempeña alguna de sus labores características.

ESTADOS DE UN PROCESO
El sistema operativo gestiona los recursos disponibles (memoria, CPU, etc.) entre los
procesos que en ese momento trabajan en el sistema, de tal forma que, para ellos, el
sistema se comporte como si fuera monousuario. Asi que, en un sistema
monoprocesador, la CPU se reparte entre los procesos que se tengan en ese momento.
ESTADO DE UN PROCESO DE SISTEMAS
Preparado (R): Proceso que está listo para ejecutarse.
Ejecutándose(O): Solo uno de los procesos preparados se esta ejecutando en cada
momento.
Suspendido (S): Se esta suspendido si no entra en el reparto de CPU, el proceso pasa
a formar parte del conjunto de procesos preparados.
Parado (T): Será cuando pasarán a estar preparados cuando reciban una señal
determinada que les permita continuar.
Zombie (Z): Todo proceso al finalizar avisa a su proceso padre. En vaso de que el padre
no lo reciba, el proceso hijo queda en estado zombie, no esta consumiendo CPU, pero
si continúa consumiendo recursos del sistema.
PROCESOS E HILOS
El concepto central en cualquier sistema operativo es el proceso (una
abstracción de un programa en ejecución)
BLOQUE DE CONTROL DEL PROCESO (P.C.B). (Gp:)
Es una Estructura de datos, que permite al sistema operativo manejar la información
relacionada con cada uno de los procesos. Esto incluye:

• Estado Actual del Proceso.


• Identificador del Proceso.
• Un apuntador hacia el padre del proceso.
• Apuntadores a los hijos del proceso.
• Prioridad del Proceso. Información de Administración de memoria del proceso.
• Apuntadores a los recursos asignados al proceso.
• Un área para salvaguarda de los registros relacionados con la ejecución del
proceso.
• El Procesador en que se está ejecutando el proceso (en un sistema de
procesadores múltiples).
ADMINISTRACIÓN DE LA MEMORIA

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.

Una de las funciones básicas que debe implementar un SO es la Administración de la


Memoria para tener un control sobre los lugares donde están almacenados los procesos
y datos que actualmente se están utilizando.

MECANISMOS DE ASIGNACIÓN. Un mecanismo de asignación determina la cantidad


de bloques (particiones) que serán administrados en la memoria. Existen tres
mecanismos de asignación que son:

• Asignación de una sola partición.


• Asignación de dos particiones.
• Asignación de múltiples particiones.

ASIGNACIÓN DE UNA SOLA PARTICIÓN.

Esta asignación se carga un solo proceso a la vez. Toda la memoria del ordenador a
excepción de una pequeña parte reservada para el sistema operativo está disponible
para una aplicación individual Estos procesos se conocen como procesos transitorios.
El Sistema Operativo necesita tener conocimiento de su primera y última posición
disponible para la asignación de procesos transitorios. Cuando el proceso transitorio
termina, el Sistema Operativo puede cargar otro para que se ejecute. Dentro de las
responsabilidades del sistema operativo para esta asignación es asegurarse que el
tamaño de la imagen este dentro de los límites de memoria disponible, sino el proceso
no se cargara. MS-DOS es un ejemplo de un sistema que asigna memoria de esta
manera.
En la memoria se considera la existencia de una sola partición, esto es, se tiene la
capacidad de ejecutar un proceso. La partición es toda la memoria, cuya administración
corre por cuenta del usuario, o sea, no hay un sistema operativo.

ASIGNACIÓN DE DOS PARTICIONES.

La memoria se divide en 2 bloques. En una partición se carga el Sistema Operativo y en


la otra el programa del usuario. Es el concepto de Sistema Operativo Monousuario.

ASIGNACIÓN DE MÚLTIPLES PARTICIONES.

La memoria es dividida en varias particiones una para el Sistema Operativo y las demás
para los procesos de usuarios u otras funciones especiales del Sistema Operativo. Este
es el concepto teórico de asignación de memoria en los Sistemas Operativos de
Multiparticiones y de Multitarea.
La asignación con múltiples asignaciones consiste en ejecutar varios procesos a la vez
en memoria. La idea central consiste en dividir la memoria en varias particiones
normalmente contiguas, ubicando un proceso en cada partición. Cada partición puede
contener toda la información para un trabajo o tarea específica. Esta asignación requiere
de algún soporte de hardware para evitar que los trabajos interfieran unos con otros o
con el Sistema Operativo. La división puede llevarse de manera estática y dinámica

Asignación Estática

La asignación estática divide a la memoria principal en un conjunto de regiones


no sobrepuestas llamadas particiones. Estas particiones se efectúan en algún
momento antes de ejecutar los programas de usuario y permanecen siempre
fijas. Si un proceso tiene un tamaño menor o igual a la participación puede ser
cargado. Si todas las particiones están ocupadas el Sistema Operativo puede
hacer un intercambio de un proceso fuera de una partición. IBM System/360
Sistema operativo multiplicación con un número fijo de tareas (MFT) es un
ejemplo de la partición estática.

Las dificultades de esta asignación son:

• Cuando un programa es demasiado grande para caber en una partición,


por lo que, si el programa no se ha diseñado mediante superposición,
simplemente no se puede ejecutar.

• Malgaste de espacio interno a cada partición cuando el bloque que se


carga es menor del tamaño reservado, lo que es conocido como
fragmentación interna, es decir, cualquier proceso por pequeño que sea,
ocupará una partición completa.

Asignación Dinámica

La memoria dinámica es un espacio de almacenamiento que se puede solicitar


en tiempo de ejecución. Además de solicitar espacios de almacenamiento,
también podemos liberarlos (en tiempo de ejecución) cuando dejemos de
necesitarlos. El número de particiones y su tamaño es variable, las cuales son
creadas dinámicamente para que se acomoden a las necesidades de cada
proceso solicitante. Cuando un proceso termine o sea retirado de memoria el
gestor de memoria puede devolver el espacio vacante al fondo de áreas de
memoria libres a partir del cual se efectúan las asignaciones de particiones.
Multiprogramación con un número variable de tareas (MVT) es un ejemplo de
dinámica. Dentro de la asignación de memoria dinámica existen tres algoritmos
para la ubicación de nuevos procesos:

▪ Mejor ajuste: consiste en ubicar el proceso en el espacio de memoria que


más se ajuste a su tamaño.
▪ Primer ajuste: consiste en ubicar el proceso en el primer hueco disponible,
recorriendo desde el inicio de la memoria, cuyo tamaño sea suficiente para
el proceso.
▪ Próximo ajuste: consiste en ubicar el siguiente hueco disponible, que sea
suficientemente grande, a partir de la última asignación de memoria.
Las dificultades de esta asignación son:

• Que en los productos de la entrada y salida de procesos en la memoria se van


generando porciones cada vez más pequeñas de la memoria sin utilizar, lo que
se conoce como fragmentación externa. Su solución va en recurrir a la
compactación de memoria de manera de eliminar los espacios entre procesos re
ubicando estos en memoria de forma dinámica.
ALGORITMOS DE COLOCACIÓN DE ALMACENAMIENTO
EL PRIMER AJUSTE
Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede
iniciar ya sea al inicio o al final del conjunto de huecos o en donde terminó la última
búsqueda. La búsqueda termina al encontrar un hueco lo suficientemente grande.
El algoritmo del primer ajuste asigna la primera partición disponible (estado
= 0) y suficiente para la tarea que la solicita, la búsqueda se hace a partir de la última
partición asignada. La prioridad permitida en este algoritmo para aceptación de tareas
es la prioridad FIFO (First In-First Out).

ALGORITMO DEL MEJOR AJUSTE

Este algoritmo asigna la partición más pequeña disponible pero suficiente para la tarea
que lo solicita, la búsqueda de bloques se realiza desde el principio de la tabla
hasta encontrar la partición adecuada, previo a esto se debe realizar una
reordenación de la tabla.
Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. La
búsqueda se debe de realizar en toda la tabla, a menos que la tabla esté ordenada por
tamaño. Esta estrategia produce el menor desperdicio de memoria posible.
ALGORITMO DEL PEOR AJUSTE

Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de
huecos a menos que esté organizada por tamaño. Esta estrategia produce los huecos
de sobra más grandes, los cuales pudieran ser de más uso si llegan procesos de tamaño
mediano que quepan en ellos.

Este algoritmo ajusta la partición más grande disponible y suficiente para almacenar la
tarea solicitada, l a b ú s q u e d a s e r e a l i z a e n t o d a l a t a b l a d e m e m o r i a p o r
l o q u e s e s u g i e r e q u e l a t a b l a s e e n c u e n t r e ordenada del bloque más
grande al más pequeño
TIPOS DE ALGORITMOS.

Los algoritmos que se han ideado para controlar el reemplazamiento serán más o
menos eficientes en función de dos factores:
A. Número de falta de páginas que provoca, es decir, número de veces en que no se
encuentra en memoria la página solicitada.
B. Coste de su utilización, es decir, la sobrecarga que se produce en el sistema al
utilizar dicho algoritmo.
- ALGORITMO FIFO:
Es el más sencillo, cuando se necesita sustituir una página se elige aquella que
lleve más tiempo en memoria. Algoritmo fácil de programar que produce poca
sobrecarga en el sistema, pero su eficacia es relativa sobre todo en sistemas de
tiempo compartido.
- ALGORITMO LRU (LEAST RECENTLY USED):
Se basa en sustituir aquella página que haya sido usada menos recientemente.
En este caso la utilización del tiempo de uso es un criterio que refleja mucho
mejor el comportamiento de los procesos en su utilización de memoria. Ponerlo
en práctica es relativamente complicado ya que se debe contabilizar el tiempo
en el que se produce cada referencia a memoria para poder clasificas las páginas
según su uso. Esto se puede realizar de varias formas:
A. Contadores de Hardware: la solución más simple es incorporar un contador
de referencias a memoria y añadir un campo a las entradas de la tabla de páginas
que pueda almacenar el valor de dicho contador. Para reemplazar una página el
sistema busca el valor del contador registrado que sea menor.
B. Matrices de hardware: si se dispone de nframes, el hardware debe mantener
una matriz de n * n bits inicializados a cero. Cuando se quiere acceder a una
página se ponen a uno todos los bits de la fila de esa página y a cero los de la
columna (menos el de su fila). En cualquier momento la página menos usada es
aquella cuya fila tenga el menor valor binario.
C. Pilas: se mantiene una pila de números de páginas utilizadas. Cada vez que
se utiliza una página su número se coloca al principio de la pila, en un momento
determinado la página menos recientemente utilizada será la del fondo de la pila.
Los algoritmos LRU necesitan disponer de hardware especial.
Otros algoritmos: Dada la dificultad del LRU se intentan otros algoritmos más sencillos
como son: ·
BIT DE REFERENCIA:
Se asocia a cada entrada de la tabla de páginas un bit, cada vez que se utiliza
esa página activa dicho bit, en un momento dado si necesitamos cargar una
página se consultará dicho bit para ver cuál es reemplazada. ·
LFU (LEAST FREQUENTLY USED):
Se asocia un contador a cada página que se actualiza a intervalos regulares de
tiempo. Se reemplazará la página cuyo contador sea menor. ·
BIT DE MODIFICACIÓN:
Algunos algoritmos se complementan utilizando esta técnica que consiste en
añadir un bit en la tabla de páginas que indica si una página a variado su
contenido o no. Se sustituirán preferentemente aquellas páginas que no se
hayan modificado, evitando así tener que guardar su contenido en el
almacenamiento secundario con el consiguiente ahorro en tiempo de entrada
salida.

PARTICIONES DINÁMICAS RE LOCALIZABLES


Con este esquema de asignación de memoria, el administrador de memoria relocaliza
los programas para reunir los bloques vacíos y compactarlos, para hacer un bloque de
memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar.
La compactación no es una tarea sencilla. Primero, todos los programas en memoria se
deben relocalizar, de manera que queden contiguos; luego hay que ajustar cada
dirección y cada referencia a una dirección en todo programa para tomar en
consideración la nueva localización del programa en memoria
Con este esquema de asignación de memoria, el administrador de memoria relocaliza
los programas para reunir los bloques vacíos y compactarlos, para hacer un bloque de
memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar
La relocalización sucede por 3 instancias:
• Tiempo
• Cantidad de tareas en cola
• Porcentaje de como este ocupada la memoria

Ejemplo:
Como se puede apreciar en la imagen, la relocalización consiste en agrupar las
particiones libres en un solo bloque para que así cuando vuelva a ingresar una tarea,
esta se ingrese normalmente en la parte final de la memoria.

INTERCAMBIO/SWAP

Se trata de una partición o un fichero de un disco rígido (disco duro) donde se almacenan
las imágenes de aquellos procesos que no se guardan en la memoria física.

El swap/intercambio se emplea para la gestión de la memoria de una computadora


(ordenador). El sistema operativo busca los procesos que registran poca actividad y los
deposita en el swap, liberando la memoria principal para la carga de nuevos procesos.

Si la actividad se modifica, se realiza un intercambio y el proceso pasa del disco rígido


hacia la memoria RAM. Lo que permite el swap es simular que existe una capacidad de
memoria superior a la verdaderamente disponible.

En otras palabras, es posible decir que el espacio de intercambio provee a un equipo de


más memoria que la disponible en las ranuras de RAM. Dicho esto, muchos usuarios se
hacen la siguiente pregunta: si mi ordenador tiene una gran capacidad de memoria
RAM, ¿es necesario el swap? Para responder a este interrogante, es preciso tomar en
cuenta varias cuestiones, aunque en pocas palabras siempre es aconsejable crear este
espacio de intercambio, por más que no sea necesario a un nivel crucial.

• Un proceso puede intercambiarse temporalmente de memoria a un


almacenamiento de respaldo y luego puede ser retomado hacia la memoria para
continuar su ejecución.
• El almacenamiento de respaldo se hace en el disco, que debe ser rápido y tener
suficiente espacio para ubicar copia de todas las imágenes de memoria para
todos los usuarios; debe proveer acceso directo a estas imágenes de memoria.
• Descargar (swap out), cargar (swap in): Variante de intercambio en algoritmos
de planificaciones de prioridad; los procesos de baja prioridad se sacan de
memoria de tal forma que los procesos de mayor prioridad puedan ser cargados
y ejecutados.
• La mayor parte del tiempo es tiempo de transferencia; este es directamente
proporcional a la cantidad de memoria intercambiada.
• Existen versiones modificadas de intercambio en los diferentes sistemas, por
ejemplo, Unix, Linux y Windows.
RESUMEN DE LA ADMINISTRACIÓN DE MEMORIA

Un recurso tan caro e influyente en el rendimiento general del ordenador deberá


gestionarse de la forma más eficaz posible. Por ello, el sistema operativo dedica una
parte importante de su software (el gestor de memoria) a su gestión, buscando la
utilización más adecuada al servicio que debe dar (BATCH, tiempo compartido, tiempo
real, etc.).
El Administrador De Memoria se refiere a los distintos métodos y operaciones que se
encargan de obtener la máxima utilidad de la memoria, organizando los procesos y
programas que se ejecutan de manera tal que se aproveche de la mejor manera posible
el espacio disponible.
Entre las principales operaciones que desarrolla la administración de memoria se
encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera en
la memoria principal para maximizar la utilización del procesador; la protección,
mecanismos que protegen los procesos que se ejecutan de interferencias de otros
procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección
permite que ciertos procesos de un mismo programa que comparten una tarea tengan
memoria en común.
Entre las principales operaciones que desarrolla la administración de memoria se
encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera e
la memoria principal para maximizar la utilización del procesador; la protección,
mecanismos que protegen los procesos que se ejecutan de interferencias de otros
procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección
permite que ciertos procesos de un mismo programa que comparten una tarea tengan
memoria en común.
RESOLVER LOS SIGUIENTES PROBLEMAS DE S.O.

PREGUNTA 1
Sea un sistema gestionado por particiones múltiples de tamaño variable con
compactación. En un instante dado, se tiene la siguiente ocupación de la memoria:

P1 LIBRE P2 LIBRE
180K 400 K 100 K 150 K

Se utiliza la técnica del mejor ajuste. En la cola de trabajos tenemos en este orden:
P4(120K), P5(200K) y P6(80K), los cuales deben ser atendidos en orden FIFO.
Suponiendo que no finaliza ningún proceso y tras intentar cargar en memoria todos los
procesos que están en la cola.

a) Indicar cuántas particiones quedan libres y de qué tamaño son.


b) Si en esta situación se aplica compactación, indicar qué proceso o procesos
deberían moverse para que el número de Kbytes manejados fuese el menor posible y
quede un único hueco.
c) Si los registros base de cada proceso son, respectivamente, B1, B2, B3, B4, B5 y
B6, indicar cómo han cambiado los registros base correspondientes al proceso o
procesos que se han movido debido a la compactación.

SOLUCIÓN

Pregunta a)
Quedan dos particiones de tamaño de 120k y 30 k respectivamente.

P1 P5 P6 LIBRE P2 P4 LIBRE

180K 200 K 80 K 120 K 100K 120 K 30 K

Pregunta b)
Se debería mover el proceso P4 al hueco de 120K, de esa manera quedaría
un único hueco de 150K.

Pregunta c)
Todos los registros bases quedan igual que antes de la comparación excepto
el del proceso P4 cuyo B4 contendrá a 460K (Se considera que P1 está
ubicado en las direcciones más bajas de la memoria)
PREGUNTA 2
Un sistema de gestión de memoria estática, donde el sistema operativo ocupa la primera
posición que tiene un tamaño de 80K; el resto de la memoria está divido en cuatro
particiones cuyas características se muestran en la Tabla A. el algoritmo de ubicación
asigna a cada proceso la partición más pequeña en la que quepa. En la Tabla B se
puede observar la cantidad de memoria para cada proceso. Se solicita: a) Realizar
gráficamente la Asignación de memoria. b) ¿qué sucede con los Procesos E y F? c)
Calcular la Fragmentación Interna. d) Pasado un Tiempo se Termina el Proceso A y C
(en ese orden), y se asigna los Procesos E y F. e) Calcular la Fragmentación Interna en
esta ultima situación.

Tabla A (Kb) Tabla B (Kb)

Tamaño
Proceso Tamaño
Base Partición Partición

80 128 A 112

208 64 B 64

272 96 C 112

368 144 D 48

E 144

F 96

SOLUCIÓN

Pregunta a)

80 S. O
A

208
}16 K
B
272 D
}48 K
368 C
}32 K
420

Pregunta b)
Los procesos E y F no entran en memoria puesto que no hay espacio suficiente
para albergarlos.
Pregunta c)
Fragmentación Interna:
16K + 48K + 32K = 96K Fragmentación Interna

Pregunta d)
-Pasado un Tiempo se Termina el Proceso A y C (en ese orden), y se asigna
los Procesos E y F

80 S. O
F

208
}32 K
B
272 D
}48 K
368 E

420

Pregunta e)
Fragmentación Interna:
32K + 48K = 80K Fragmentación Interna

PREGUNTA 3
El sistema operativo sigue un esquema con particiones dinámicas. La memoria tiene un
tamaño de 512 Kb, de los cuales los primeros 80 Kb están ocupados por el sistema
operativo. Al sistema llegan seis procesos cuyos tamaños se encuentran en la Tabla A.
Se solicita: a) Representar gráficamente la asignación de los procesos en memoria; b)
Calcular la Fragmentación externa.
Tabla A (Kb)

Proceso Tamaño Llegada Duración

A 112 1 4

B 64 2 3

C 112 3 4

D 48 4 3

E 144 5 4

F 96 6 3

SOLUCION
Pregunta a) Representar gráficamente la asignación de los procesos en memoria
INSTANTE 0 INSTANTE 1 INSTANTE 2

S. O S. O 80K S. O 80K
80K
A 112K A 112K
432K B
320K 64K

256K

INSTANTE 3 INSTANTE 4 INSTANTE 5


S. O 80K S. O 80K S. O 80K
A 112K D D
}48K (64K FE) } 48K (64K F.E)
B 64K
E
C 64K
112K } 144K (80K F.E)
C 112K
C 112K
144K
144K
144K
INSTANTE 6 INSTANTE 7 INSTANTE 8

S. O S. O 80K S. O 80K
80K

112k 112k 432K


E E
}144K (80K F.E) }144K (80K F.E)

F F
} 96K (6K F.E) } 96K (6K F.E)

144K 144K

Descripción de procesos realizados:

• Instante 0: Tamaño de la memoria es de 512k y se asignan 80k para el S.O, nos


queda 432k de memoria libres.
• Instante 1: Se asigna 112k de la memoria para el proceso A., nos queda 320K
de memoria libres.

• Instante 2: Se asigna 64k para el proceso B, quedando 256k de memoria libres.

• Instante 3: Se asigna 112k para proceso C, quedando 144k de memoria libre.

• Instante 4: El proceso A y B terminan, el proceso D ocupa el espacio dejado por


el proceso A, se genera una Fragmentación Externa de 64k.

• Instante 5: El proceso E ocupa el espacio dejado por el proceso B, se genera


una Fragmentación Externa de 80k.

• Instante 6: El proceso C y D terminan, el proceso F ocupa el espacio dejado por


el proceso C, se genera una Fragmentación Externa de 6k.

• Instante 7: Procesos siguen iguales.

• Instante 8: El proceso E y F terminan, la memoria queda igual que cuando inicio


el instante 0.
CONCLUSIONES
• Como conclusión gracias al sistema operativo me doy cuenta de que es un
programa que gestiona los recursos de hardware y provee servicios a los
programas de aplicación, ejecutándose en modo privilegiado respecto de los
restantes.
• Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de
tener varios procesos a la vez en la memoria principal, para lo cual dispone de
varias opciones de administración tanto del procesador como de la memoria.

• Cuando se trabaja con bloques de tamaño fijo se genera la fragmentación


interna. Si los bloques son de tamaño variable, se genera la fragmentación
externa.

• Se puede concluir que los Sistemas Operativos son de gran importancia en el


desarrollo de la computación y por ende de la programación, ya que se
constituye como el mediador del usuario y la computadora en la entrada,
procesamiento, almacenamiento, y salida de información, gracias a que maneja
un interfaz gráfico con un sin número de programas, los cuales desarrollan una
tarea específica de acuerdo a la solicitud del usuario, que facilita su uso a la hora
de trabajar.

• En la memoria principal es ejecutada los programas y procesos de una


computadora y es el espacio real que existe en memoria para que se ejecuten
los procesos.
La asignación consiste en determinar cuál espacio vacío en la memoria principal
es el más indicado para ser asignado a un proceso.

• La gestión de memoria cumple un papel muy importante para la realización de


procesos y aplicaciones que realiza el sistema operativo.

RECOMENDACIONES
Los algoritmos de gestión de memoria son necesarios a causa de un requisito básico:
las instrucciones que se están ejecutando deben estar en la memoria física.
La primera estrategia para satisfacer este requisito es colocar todo el espacio de
direcciones lógicas en la memoria física.
Las superposiciones y la carga dinámica pueden ayudarnos a hacer menos limitante
esta restricción, pero generalmente requieren precauciones especiales y un esfuerzo
adicional por parte del programador.
BIBLIOGRAFÍA

• Sistemas Operativos, 2da Edicion (1997) William Stalling, Prentice Hall España.
• Sistemas Operativos, conceptos fundamentales, 3ra Edición (1994) A.
Silberschatz, J. Peterson, P. Galvin, Addison – Wesley Publishing Company
USA.
• Madrid, U. C. (noviembre de 2012). Memoria Virtual. Madrid, España: Facultad
de Informática.
• Fundamentos de Sistemas Operativos, Mc-Graw Hill, Edición 7ma, Silberschatz,
Galvin y Gagne.

• Deitel Sistemas Operativos


Stallings William. Sistemas Operativos. Editorial Prentice Hall
Tanenbaum Andrew S. Sistemas Operativos Modernos. Prentice Hall.
• Wilson, P.R.; Johnstone, M.S.; Neely, M.; Boles, D. (1995). «Dynamic Storage
Allocation: A Survey and Critical Review». Memory Management: International
Workshop, Iwmm'95, Kinross, Uk, September 27–29, 1995: Proceedings (en
inglés) (Springer). ISBN 978-3-540-60368-9. Consultado el 6 de enero de 2008.

También podría gustarte