Ut 3: Sistemas Operativos. Gestión de Recursos
Ut 3: Sistemas Operativos. Gestión de Recursos
Gestión de recursos
UT 3: SISTEMAS OPERATIVOS. GESTIÓN
DE RECURSOS
procesador
memoria
dispositivos de entrada/salida
datos e información
Se podría considerar que en el caso del procesador se realiza un reparto en el tiempo, mientras que en el de la memoria se
trata de un reparto en el espacio.
En general, la gestión de la memoria es sencilla en sistemas operativos monoproceso. En los sistemas multitarea o
multiproceso es más complejo, porque se necesita disponer de varios procesos residentes simultáneamente en memoria.
Estudiaremos como gestionar óptimamente esa memoria para conseguir un buen rendimiento de nuestro sistema
informático. El sistema operativo deberá encargarse de:
– Repartir la memoria entre todos los procesos que se están ejecutando.
Proceso: Programa en ejecución junto con el entorno asociado a él (registros, variables, etc.)
– Llevar un registro de las partes de memoria que se están utilizando y las que no.
– Reservar espacio de memoria a los procesos.
– Liberar el espacio de memoria de los procesos que han finalizado.
– Gestionar el intercambio de datos de memoria y disco, cuando los procesos sean tan grandes que no quepan de una
sola ven en memoria.
– Control de acceso a zonas de memoria no permitidas.
Estos controladores de E/S son los que se van a encargar de manejar los diferentes
periféricos:
– Traduce las órdenes de alto nivel a bajo nivel que entiende el periférico.
1. Procesos y flujos
2. Hebras de un proceso
Una hebra o hilo de ejecución es un subproceso de un proceso que consume recursos propios pero
que depende del proceso padre que lo ha ejecutado. Las hebras permiten mejorar el rendimiento y
eficacia de los sistemas operativos. Para comprender mejor el concepto veamos un ejemplo:
Si ejecutamos el procesador de textos Microsoft Word con un solo documento abierto, el programa
Word convertido en proceso estará ejecutándose en un único espacio de memoria, tendrá acceso a
determinados archivos (galería de imágenes, fuentes, etc.) y tendrá acceso al hardware (impresora,
Si en esta situación, sin cerrar el programa, abrimos un nuevo documento, Word no se vuelve a
cargar como proceso. Simplemente el programa Word, convertido en proceso, tendrá dos hebras o
hilos de ejecución diferentes, de tal forma que el proceso sigue siendo el mismo (el original). Word
se está ejecutando una sola vez y el resto de documentos de texto que abramos en esa misma sesión
de trabajo, no serán procesos propiamente dichos, sino hilos o hebras del proceso principal, que es
Cada vez que un programa se convierte en proceso, es decir, cada vez que se está
ejecutando un programa, además de ser ubicadas en memoria las instrucciones que lo
componen y sus datos asociados, a dicho proceso se le asocia una estructura de datos.
Esta estructura de datos, que es única para cada proceso, identifica al proceso respecto
de los demás y sirve para controlar su correcta ejecución. A esta estructura de datos se
le denomina BLOQUE DE CONTROL DEL PROCESO
1. IDENTIFICADOR DE PROCESO: A cada proceso, dependiendo del sistema operativo, se le asigna un código de
identificador del proceso PID (process identification). Suele ser un número que el propio sistema operativo asigna
cuando se crea el proceso. También puede añadirse el identificativo del proceso padre (PPID). Cada proceso que se
lanza a ejecución, en la mayoría de los casos , depende de otro proceso denominado proceso padre. Así, al nuevo
proceso, se le denomina proceso hijo.
2. PRIORIDAD: Esta prioridad es asignada de forma automática por el sistema operativo, concretamente por el
Planificador y dependerá de las políticas o algoritmos de planificación que se estén utilizando.
3. ESTADO: Pueden darse diferentes modelos de estados, modelos basados en tres en cinco o en siete estados. En un
modelo básico un proceso puede pasar por tres posibles estados: Ejecución, preparado y bloqueado.
5. RECURSOS UTILIZADOS: Cada proceso tiene que tener a su disposición determinados recursos hardware y algunos
recursos software para poder ejecutarse (recursos de la impresora, archivos del disco duro, archivos del CD-
ROM/DVD-ROM…). Estos recursos se pondrán a disposición del proceso en el mismo momento en el que éste
son:
Ejecución: El proceso está actualmente en ejecución.
Una vez que un programa se ha lanzado y se ha convertido en proceso, puede atravesar varias fases o estados hasta
que finaliza o termina.
Cuando un proceso se lanza, nunca se ejecuta directamente, sino que se coloca en la cola de procesos en el estado
listo o preparados. Cuando la CPU le asigna su tiempo, el proceso pasa de preparado a ejecución.
Los procesos pasan de un estado a otro dando lugar a cuatro transiciones diferentes:
Interpreta los siguientes esquemas en los que se lanzan a ejecución tres procesos:
CASO A)
CASO B)
Se denomina PLANIFICADOR, es el proceso del sistema operativo que se encarga de gestionar la cola de
procesos listos, es decir, es a aquella parte del SO encargada de determinar qué proceso pasará al estado
de ejecución de entre todos los procesos que están en estado listo.
El planificador utiliza diferentes algoritmos de planificación dependiendo del sistema operativo, que
permitirán al sistema operativo decidir que proceso es el que va a pasar a ser ejecutado.
7. Algoritmos de planificación
Los algoritmos de planificación sirven para decidir qué proceso de entre los que se
encuentran en estado de “listo” se ejecutará en la CPU (pasará a estado de “ejecución”).
Se clasifican en:
ALGORITMOS DE PLANIFICACIÓN
ALGORITMOS DE PLANIFICACIÓN
En todos los algoritmos de planificación habrá que rellenar la siguiente tabla:
Medias
Las celdas rayadas y sombreadas representan información que tiene que derivarse del enunciado del
problema. A veces se añade otra columna con la prioridad del proceso.
Es muy importante calcular la media del tiempo de servicio (tret), del tiempo de espera (te) y del índice
de servicio (eficiencia) (I).
ALGORITMO MEJOR
- Menor tiempo medio de servicio o retorno.
- Menor tiempo medio de espera.
- Mayor eficiencia.
0 1 2 3 4 5 6 7
A 0 3 3 3 0 1
B 2 1 4 2 1 ½
C 3 2 6 3 1 2/3
D 4 1 7 3 2 1/3
A
0 1 2 3 4 5 6 7
A 0 3 3 3 0 1
B 2 1 4 2 1 ½
C 3 2 7 4 2 2/4
D 4 1 5 1 0 1
Prioridad no Apropiativa
En este tipo de algoritmos se asigna una prioridad numérica a cada proceso y el proceso de mayor
prioridad es el que se ejecuta.
Cuando un proceso empieza a ejecutarse no abandonará la CPU hasta que no finalice su ejecución.
(Algoritmo no apropiativo).
PROCESO Prioridad Instante de llegada ( ti ) Tiempo de cpu (T)
A 2 0 3
B 1 2 1
C 3 3 2
D 2 4 1
A
0 1 2 3 4 5 6 7
Prioridad no Apropiativa
A 2 0 3 3 3 0 1
B 1 2 1 7 5 4 1/5
C 3 3 2 5 2 0 1
D 2 4 1 6 2 1 ½
A
0 1 2 3 4 5 6 7
A 0 3 4 4 1 ¾
B 2 1 3 1 0 1
C 3 2 6 3 1 2/3
D 4 1 7 3 2 1/3
SRT
Es la versión apropiativa del método SJF. Se ejecuta el proceso con menor tiempo de CPU. La diferencia
con el método SJF radica en que, si durante la ejecución de un proceso, llega otro con menor tiempo de
ejecución, el proceso que está en ejecución abandona la CPU y entra en ella el nuevo proceso.
A
0 1 2 3 4 5 6 7
SRT
Instante de Tiempo Instante de Tiempo de retorno Tiempo de Eficiencia (I)
llegada de CPU finalización espera
PROCESO (tret)
(ti) (T) (tF) (te)
A 0 3 3 3 0 1
B 2 1 4 2 1 ½
C 3 2 7 4 2 ½
D 4 1 5 1 0 1
Prioridad Apropiativa
Al igual que el algoritmo “Prioridad no Apropiativa”, en este tipo de algoritmos se asigna una prioridad
numérica a cada proceso y el proceso de mayor prioridad es el que se ejecuta.
La diferencia está en que si cuando se está ejecutando un proceso llega otro más prioritario el primer
proceso abandona la CPU y pasa a ejecutarse el nuevo proceso más prioritario. (Algoritmo apropiativo)
A
0 1 2 3 4 5 6 7
Prioridad Apropiativa
PROCESO Prioridad Instante de Tiempo Instante de Tiempo de Tiempo Eficiencia
llegada de CPU finalización retorno de
(I)
espera
(ti) (T) (tF) (tret)
(te)
A 2 0 3 3 3 0 1
B 1 2 1 7 5 4 1/5
C 3 3 2 5 2 0 1
D 2 4 1 6 2 1 ½
Algoritmo
Características
FCFS SJF [Link] RR SRT P.A
Tiempo
medio de
2.75 2.5 3 2.75 2.5 3
Servicio
(tret)
Tiempo
medio de 1 0.75 1.25 1 0.75 1.25
Espera (te)
Eficiencia
0.625 0.75 0.675 0.687 0.75 0.675
media (I)
4º 1º 3º 2º 1º 3º
Inicialmente para poder ejecutar un programa este debía estar cargado completamente en memoria
principal y en posiciones de memoria contiguas. Esto suponía un gran inconveniente, en primer lugar
porque la capacidad de la memoria RAM era bastante limitada y en segundo lugar porque el tamaño
de los programas que se iban diseñando era cada vez mayor. (asignación de memoria completa y
contigua)
Se adoptaron técnicas tales como dividir el programa en partes. Esta tarea de dividir el programa era
realizada por el propio programador, lo que suponía un coste y esfuerzo añadido a su labor de
programación, además de perjudicar el desarrollo de los programas. Los programas se cargaban de
forma completa en memoria pero no necesariamente en zonas de memoria contiguas. (asignación de
memoria completa y no contigua)
El tamaño del software que utilizaban los ordenadores crecía más rápidamente que el tamaño de la
ram que implementaban los equipos, que los programas se cargaran totalmente en memoria ya no
era factible, se diseña entonces un método conocido como memoria virtual, esta técnica considera
parte del espacio del disco duro como si se tratase de memoria RAM, de manera que cuando
ejecutamos un programa solo está cargado en memoria RAM la parte del programa que en realidad se
está ejecutando en ese instante, mientras que el resto permanecerá en disco, para su posterior
utilización, si fuera necesario. La labor de dividir los programas en partes no la realizan los
programadores, sino que los sistemas operativos serán los encargados de realizarla de forma
transparente al programador y al usuario. (asignación de memoria no completa y no contigua)
Esta última forma de gestionar la memoria es la que utilizan los sistemas operativos
actuales.
2. ADMINISTRADOR DE MEMORIA
En sistemas operativos monousuario y monoproceso la gestión de la memoria era
sencilla, las memorias tenían poca capacidad y sólo se reservaba una parte de ella
para el sistema operativo, es resto era para cargar el programa que se ejecutaba.
Con la aparición de los sistemas operativos multiusuario y multitarea, la gestión se
convierte en una de las funciones más importantes del sistema operativo.
Administrador de memoria
Es la parte del sistema operativo que administra la memoria. Su labor consiste en:
Llevar un registro de las partes de memoria que se estén utilizando y de aquellas
que están libres.
Asignar espacio en memoria a los procesos cuando éstos la necesiten y liberarla
cuando terminen.
Administrar el intercambio entre la memoria principal y la secundaria en los casos
en los que la memoria principal no le pueda dar capacidad a todos los procesos
que tienen necesidad de ella.
Proteger los espacios de memoria de un proceso.
Controlar el acceso a zonas de memoria no permitidas
3. REUBICACIÓN
Direcciones de memoria (físicas y lógicas). Reubicación. Unidad de manejo de
memoria (MMU).
Debemos disponer de un método para identificar el lugar donde guardamos los
datos en la memoria, es decir, de unas direcciones de memoria.
Debido a que la memoria se encuentra compartida por varios procesos, que
deben ser cargados y descargados continuamente, y que no utilizan siempre el
mismo espacio de memoria, ha sido necesario crear un sistema de reubicación.
Para entender cómo funciona este proceso es necesario diferenciar entre estos
dos conceptos:
Dirección física: Se refiere a la posición real que ocupa un dato en la memoria
principal. Y al conjunto de estas direcciones se le denomina espacio de direcciones
físicas o reales.
Dirección lógica: Es una dirección generada por la CPU. Al conjunto de estas
direcciones se le denomina espacio de direcciones lógicas o relativas.
La reubicación consiste en la localización de programas en la memoria. Para ello
debemos saber traducir las direcciones lógicas en físicas. Esta función la realizará
la Unidad de Manejo de la Memoria (MMU). La MMU forma parte del procesador
y su misión es traducir las direcciones lógicas emitidas por los procesos en
direcciones físicas.
UD 3: Sistemas operativos. Gestión de recursos
03 Gestión de los recursos de un sistema operativo
Las páginas de los programas se cargan en cualesquiera marcos de página que haya disponibles en ese momento.
Para cada proceso activo, se define una tabla de páginas, que se construye en tiempo de carga del proceso. La tabla de páginas
de un proceso nos indica los marcos de página de la memoria principal en los que están cargadas cada una de las páginas en las
que se ha dividido el proceso. Además la tabla de páginas almacena una serie de bits que proporcionan información relevante
sobre cada una de las páginas (bit de ausencia/presencia, bit de modificación, etc. Las tablas de páginas de los procesos que
están en ejecución deben estar almacenadas en ram.
La tabla de mapa de memoria consiste en una única tabla del sistema que se utiliza para conocer el estado de cada marco de
página, es decir, si está ocupado o disponible, con objeto de asignarlos cuando algún proceso requiera memoria. El número de
entradas de esta tabla corresponde al número de marcos de página en los que ha sido dividida la memoria principal.
Para convertir las direcciones lógicas a físicas, la MMU utiliza la tabla de páginas del proceso:
page 6
page 7
Con memoria virtual sólo se van cargando en memoria física las páginas que se van a
utilizar. Puede ocurrir que se deseen ejecutar páginas que no tengan asociados
marcos en memoria física (es decir, no están cargadas en ram), produciéndose lo que
se conoce como un fallo de página. En estos casos, el sistema deberá buscar marcos
libres y asignárselos. Es posible que el sistema no posea marcos libres, en tal caso el
sistema operativo cogerá una página que no esté empleando en ese momento y la
llevará a disco; una vez liberado el marco este podrá ser ocupado por la página que
originó el fallo de página. Se lleva a cabo un intercambiando las páginas entre
memoria principal y disco duro.
Algunos de los criterios o algoritmos utilizados por los Sistemas Operativos para
decidir qué página es la que va a ser reemplazada se describen a continuación:
UD 3: Sistemas operativos. Gestión de recursos
03 Gestión de los recursos de un sistema operativo
FIFO, la primera en entrar, primera en salir. Este algoritmo hace víctima a la página
que haya sido cargada primero en memoria, es decir aquella que lleve más tiempo
cargada en RAM. es fácil de implementar, justo e imparcial, pero no eficiente.
LRU, la usada menos recientemente. Escoge la página que hace más tiempo que no
se referencia. Necesita de una búsqueda exhaustiva.
ÓPTIMO, hace víctima a la página que más tiempo va a tardar en ser referenciada o
que nunca se va a referenciar. Este algoritmo debe de tener el menor índice de fallo de
páginas de todos los algoritmos, desafortunadamente, es fácil en teoría, pero
prácticamente imposible de implementar, dado que requiere conocer las necesidades
futuras del sistema. Puede resultar muy útil para estudios de comparación.
Tenemos la siguiente cadena de referencias a páginas y un sistema con cuatro marcos. ¿Cómo
actuará el sistema operativo si usa el algoritmo FIFO para el reemplazo de páginas? ¿Cuántos
fallos de página tendremos?
0 1 2 3 4 5 3 4 1 6 7 8 7 8 9 7 8 9 5 4 0
Solución:
Referencias 0 1 2 3 4 5 3 4 1 6 7 8 7 8 9 7 8 9 5 4 0
Marco 0 0 0 0 0 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 4 4
Marco 1 1 1 1 1 5 5 5 5 5 5 8 8 8 8 8 8 8 8 8 0
Marco 2 2 2 2 2 2 2 1 1 1 1 1 1 9 9 9 9 9 9 9
Marco 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 5 5 5
Fallo o Hit F F F F F F H H F F F F H H F H H H F F F
Tenemos la siguiente cadena de referencias a páginas y un sistema con cuatro marcos. ¿Cómo
actuará el sistema operativo si usa el algoritmo LRU para el reemplazo de páginas? ¿Cuántos
fallos de página tendremos?
0 1 2 3 4 5 3 4 1 6 7 8 7 8 9 7 8 9 5 4 0
Solución:
Referencias 0 1 2 3 4 5 3 4 1 6 7 8 7 8 9 7 8 9 5 4 0
Marco 0 0 0 0 0 4 4 4 4 4 4 4 8 8 8 8 8 8 8 8 8 0
arco 1 1 1 1 1 5 5 5 5 6 6 6 6 6 6 6 6 6 5 5 5
Marco 2 2 2 2 2 2 2 1 1 1 1 1 1 9 9 9 9 9 9 9
Marco 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 4 4
Fallo o Hit F F F F F F H H F F F F H H F H H H F F F
Tenemos la siguiente cadena de referencias a páginas y un sistema con cuatro marcos. ¿Cómo
actuará el sistema operativo si usa el algoritmo ÓPTIMO para el reemplazo de páginas?
¿Cuántos fallos de página tendremos?
0 1 2 3 4 5 3 4 1 6 7 8 7 8 9 7 8 9 5 4 0
Solución:
Unidad de tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Referencias 0 1 2 3 4 5 3 4 1 6 7 8 7 8 9 7 8 9 5 4 0
Marco 0 0 0 0 0 O 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4
Marco 1 1 1 1 1 1 1 1 1 6 6 8 8 8 8 8 8 8 8 8 8
Marco 2 2 2 4 4 4 4 4 4 4 4 4 4 9 9 9 9 9 9 9
Marco 3 3 3 3 3 3 3 3 7 7 7 7 7 7 7 7 7 7 0
Fallo o Hit F F F F F F H H H F F F H H F H H H H F F
Cuando un programa de usuario es compilado y ensamblado, se construyen los distintos segmentos que reflejan el programa, que
variarán en número y longitud según las necesidades del programa. Cuando se procede a la carga en memoria del programa, se
numeran los distintos segmentos, que se cargan en las zonas de memoria principal disponibles, creando la llamada tabla de
segmentos, que contiene para cada segmento la primera dirección física ocupada por el segmento y la longitud del segmento.
Además la tabla contendrá una serie de bits adicionales con información relevante sobre cada uno de los segmentos del proceso.
Para conocer qué zonas de memoria principal están libres se utiliza una lista de huecos libres.
Las direcciones tienen tres componentes: (s,p,d), donde la primera indica el numero del
segmento, la segunda el numero de la pagina dentro del segmento y la tercera el
desplazamiento dentro de la pagina.
Programas Reubicables
Son aquellos que, una vez cargados en RAM para ejecutarse, pueden variar de
situación, ya que la parte de RAM que ocupan puede ser necesaria para ubicar otro
proceso.
Programas Residentes
Son aquellos programas que, una vez cargados en memoria, permanecerán en ella
hasta que se apague el ordenador. No cambian su ubicación en ningún momento.
Suelen ser programas de antivirus, de monotorización, etc. Los más comunes son los
llamados centinelas, que incorporan los antivirus para que analicen continuamente lo
que se almacena en memoria.
Programas Reutilizables
Son programas que normalmente son utilizados por varios usuarios en memoria. Con
ello se consigue un mejor aprovechamiento de la memoria.