Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas Operativos Trabajo Academ
Sistemas Operativos Trabajo Academ
SECCIÓN : 01-1
CICLO : V
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
ADMINISTRACIÓN DE LA MEMORIA
IV. CONCLUSIONES
V. RECOMENDACIONES
VI. BIBLIOGRAFÍA
RESUMEN
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 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.
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.
• 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).
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
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.
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:
• 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.
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:
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.
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
Asignación Dinámica
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.
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.
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.
SOLUCIÓN
Pregunta a)
Quedan dos particiones de tamaño de 120k y 30 k respectivamente.
P1 P5 P6 LIBRE P2 P4 LIBRE
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.
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)
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
S. O S. O 80K S. O 80K
80K
F F
} 96K (6K F.E) } 96K (6K F.E)
144K 144K
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.