IF4001 Sistemas Operativos Profesor: Mario Salazar
Proyecto Final
Fecha de entrega: 20 de Noviembre a las 6:00 pm Valor: 20%
Tema : Simulador del Planificador de un Sistema Operativo
Instrucciones:
● Realizar el trabajo en grupos de máximo 3 personas.
En este proyecto se va trabajar semanalmente en los laboratorios, para ir desarrollando cada una de
sus funcionalidades para crear un simulador de varios componentes de un Sistema Operativo que van a
estar a cargo de la administración del CPU, de la Memoria y los dispositivos de E/S.
Leer cuidadosamente las instrucciones, los requerimientos funcionales, operativos y documentales
que se solicitan.
Simulador de Sistema Operativo de Pruebas
El Simulador del Sistema Operativo de Pruebas (SSOP) es un sistema multiprogramado que
tiene un planificador de procesos con cuatro niveles de prioridad, con la restricción de que los recursos
disponibles son finitos.
Planificador con 4 niveles de prioridad
El Planificador opera con 4 niveles de prioridad:
1. Procesos de tiempo real que deben ejecutar inmediatamente según la política de primero en
llegar primero en ser atendido, expulsando a cualquier otro proceso que esté en ejecución y
tenga menor prioridad. Estos procesos se ejecutan hasta que se completen.
2. Procesos normales de usuario que se ejecutan en un planificador retroalimentado de tres niveles
(ver Ilustración 1). El quantum de tiempo del planificador es de 1 segundo. Este también es el
valor del quantum de tiempo de los planificadores retroalimentados.
El planificador necesita mantener dos colas de envío –prioridad de tiempo real y de usuario – que se
alimentan desde la lista de trabajos que se deben planificar. En esta lista se examina cada tick del
planificador y los trabajos que han llegado se transfieren a la cola adecuada. A continuación, se
1
examinan las colas; cualquier trabajo de tiempo real se ejecuta hasta su finalización, expulsando a
cualquier otro trabajo que esté ejecutando.
Ilustración 1
La cola de trabajos con prioridad de tiempo real debe estar vacía antes de que se reactive el
planificador retroalimentado de menor prioridad. Cualquier trabajo con prioridad de usuario en la cola
de trabajos de usuario que pueda ejecutar con los recursos disponibles (memoria y dispositivos de E/S)
se transfiere a la cola de prioridad adecuada. El funcionamiento normal de la cola retroalimentada
acepta todos los trabajos en el nivel máximo de prioridad y degrada su prioridad después de que se
complete cada rodaja de tiempo. Sin embargo, el planificador puede aceptar trabajos con menor
prioridad, en cuyo caso los inserta en la cola adecuada. Esta política le permite al planificador emular a
un planificador de tipo rotatorio (Ver Ilustración 2) si se aceptan todos los trabajos con la menor
prioridad posible.
Ilustración 2
Cuando se han finalizado todos los trabajos listos de mayor prioridad, el planificador
retroalimentado se reanuda comenzando o continuando con el proceso que se encuentre al principio de
2
la cola de mayor prioridad que no esté vacía. Al siguiente tick (momento) se suspende al trabajo actual
(o se finaliza y se liberan sus recursos) si hay cualquier otro trabajo listo con prioridad igual o mayor.
El flujo lógico debe ser el mostrado en la Ilustración 3.
Ilustración 3
Restricciones de recursos
SSOP tiene los siguientes recursos:
● 2 impresoras
● 1 Escáner
● 1 Camara web con Microfono
● 1 palantes
● 2048 Mbytes de memoria disponible para los procesos
Los procesos con menor prioridad pueden utilizar alguno o todos los recursos, pero en el momento
de envío del proceso se debe notificar al planificador del SSOP de los recursos que utilizará el proceso.
El planificador asegura que cada recurso solicitado está solamente disponible para ese proceso a lo
largo de todo su ciclo de vida en las colas: desde la transferencia inicial de la cola de trabajos a las
colas de prioridad, hasta la finalización del proceso, incluyendo las rodajas de tiempo que no esté
ejecutando.
3
Los procesos de tiempo real no necesitan ningún recurso de E/S, pero lógicamente necesitan
asignación de memoria – para trabajos de tiempo real el requisito de memoria siempre será igual o
menor a 64 Mbytes.
4
Asignación de Memoria
La asignación de memoria debe realizarse como un bloque contiguo de memoria para cada
proceso. Esta asignación permanece asociada al proceso durante todo su tiempo de vida.
Se debe dejar suficiente memoria contigua libre para que los procesos de tiempo real no se
queden bloqueados y puedan ejecutar – 64 Mbytes para cada trabajo de tiempo real en ejecución,
dejando 960 Mbytes para ser compartidos entre los trabajos de usuario activos.
El tamaño mínimo de cada bloque de Memoria es de 32 Mbytes, con este dato diseñe una
interfaz gráfica que muestre el estado de la memoria en cada segundo, asignando a cada proceso un
color, y los espacios de memoria libre se muestran de color blanco. Debe mostrar el ID del proceso en
cada bloque de memoria utilizado. La MMU del hardware de SSOP no soporta memoria virtual, por lo
que no es posible realizar intercambio entre memoria y disco. Tampoco es un sistema paginado.
Con estas restricciones se puede utilizar cualquier esquema apropiado de asignación de
memoria de particiones variables (Primer ajuste, siguiente ajuste, mejor ajuste, peor ajuste, etc).
Procesos
Los procesos en SSOP son simulados por el planificador, creando un nuevo proceso para cada
trabajo que se debe planificar. Los trabajos se cargan desde un archivo de texto, según se indica más
adelante en la Lista de Planificación.
Una vez leído el archivo, se inicializan las colas y se carga el primer trabajo para arrancar su
procesamiento, a cada quantum, se debe revisar si hay nuevos procesos, para actualizar las colas y
continuar el procesamiento hasta concluir con todas las tareas. Mostrando cada segundo la siguiente
información:
1. Un mensaje con el ID del proceso, cuando comienza el proceso;
2. Un mensaje cada segundo que el proceso está en ejecución;
3. Un mensaje cuando se suspende, continúa o finaliza el proceso.
Estos mensajes deberán mostrarse con saltos de línea, de manera tal que luego puedan ser copiados
y pegados en un archivo de texto.
Además, se deberá mostrar en pantalla de la lista total de procesos que tiene el Planificador, misma
que se debe actualizar en cada quantum. Para cada proceso se debe mostrar al menos la siguiente
información:
5
ID Estatus Tiemp Priorid Priorid Tiemp Tiemp Memor Ubicac Impres Impres Escáne Escáne CDs CDs
Proces (corrie o de ad ad o de o de ia ión en oras oras res res solicita asgina
o ndo, llegada inicial actual proces proces requeri memor solicita asigna solicita asigna dos dos
bloque ador ador da ia das das dos dos
ado, requeri restant
listo) do e
Utilice su creatividad para diseñar una interface atractiva y entendible.
El ciclo de vida de un proceso es:
1. Se envía el proceso a la cola de entrada del planificador a través de una lista de procesos inicial
que define el tiempo de llegada, la prioridad, el tiempo de procesador requerido (en segundos),
el tamaño del bloque de memoria y otros recursos solicitados.
2. Un proceso está listo para ejecutar cuando ha llegado y todos los recursos solicitados están
disponibles.
3. Todos los trabajos de tiempo real pendientes se envían para su ejecución según la política
primero en llegar primero en ser atendido.
4. Si hay recursos disponibles suficientes y memoria para un proceso de usuario de menor
prioridad, se transfiere el proceso a la cola de prioridades adecuada y se actualizan los
indicadores de recursos restantes (lista de memoria y dispositivos de E/S).
5. Cuando se comienza un trabajo, el planificador mostrará los parámetros del trabajo (ID de
proceso, prioridad, tiempo restante de procesador (en segundos), posición de memoria y tamaño
de bloque y recursos solicitados) antes de procesarlo.
6. Se permite ejecutar un proceso de tiempo real hasta que finalice, momento en el cual el
planificador lo mata.
7. Se permite ejecutar un trabajo de usuario de baja prioridad durante un tick (momento) del
planificador (un segundo), momento tras el cual se suspende o finaliza si su tiempo ha
finalizado. Si se suspende se baja su prioridad (si es posible) y se sitúa en la cola adecuada de
esa prioridad, como se muestra en las Ilustraciones 1 y 3. Para conseguir el rendimiento
mostrado de las políticas de planificación, el trabajo de usuario no se debe suspender y mover a
una menor prioridad a menos que haya otro proceso esperando a ser reiniciado.
8. Siempre que no estén pendientes trabajos de tiempo real de mayor prioridad, se inicia o reinicia
el proceso pendiente de mayor prioridad en las colas retroalimentadas.
9. Cuando se finaliza un proceso, los recursos que utilizó se devuelven al planificador para su
asignación a otros procesos.
10. Cuando no hay más procesos en la lista de entrada, la cola de entrada y las colas
retroalimentadas, finaliza el planificador.
Lista de planificación
6
La Lista de planificación es la lista de procesos que debe procesar el planificador. Reside en un archivo
de texto que se debe cargar.
Cada línea de la lista describe un proceso con los siguientes datos separados por comas:
<tiempo de llegada>, <prioridad>, <tiempo de procesador>, <Mbytes>, <cantidad de impresoras>,
<cantidad de escáneres>, <cantidad de Camara Web>, <cantidad de palantes>.
Por ejemplo:
11,0,1,64,0,0,0,0
12,1,2,128,1,0,0,1
13,3,6,128,1,0,1,2
Indicaría:
Primer trabajo: tiempo de llegada 12, prioridad 0 (tiempo real), requiere 1 segundo de tiempo de
procesador y 64 Mbytes de memoria, no requiere recursos de E/S.
Segundo trabajo: Tiempo de llegada 12, prioridad 1 (máxima prioridad de trabajo de usuario),
requiere 2 segundos de tiempo de procesador, 128 Mbytes de memoria, 1 impresora y 1 unidad de
webcam.
Tercer trabajo: Tiempo de llegada 13, prioridad 3 (mínima para trabajo de usuario), requiere 6
segundos de tiempo de procesador, 128 Mbytes de memoria, 1 impresora, y 1 unidad de webcam.
El archivo puede ser de cualquier longitud, con un contenido máximo de 1000 trabajos.
Requisitos del proyecto
1. Diseñe un planificador que satisfaga los criterios antes mencionados. En un documento formal
de diseño:
a. Describa y justifique qué algoritmos de asignación de memoria se podrían haber
utilizado y justifique su decisión final.
b. Describa y justifique las estructuras utilizadas por el planificador para las colas,
planificación, asignación de memoria y otros recursos.
c. Describa y justifique la estructura general de su programa, comentando sus módulos y
principales funciones (es necesaria una descripción de las interfaces de las funciones).
d. Justifique por qué se podría utilizar este esquema de planificación multinivel,
comparándolo con esquemas utilizados por sistemas operativos reales. Resuma las
desventajas de este esquema y sugiera posibles soluciones. Incluya en su justificación
los esquemas de asignación de memoria y recursos.
2. Implemente el planificador en Leguaje Java.
7
3. El código fuente debe estar extensamente comentado y apropiadamente estructurado, para
mejor comprensión.
4. Puede agregar gráficos de rendimiento, de distribución, escalas de tiempo o cualquier otra
herramienta que ayude a un mejor entendimiento del funcionamiento del SSOP. Puede obtener
puntos adicionales.
8
Grupos:
Grupo 1 Grupo 2 Grupo 3 Grupo 4
Grupo 5 Grupo 6 Grupo 7 Grupo 8
Grupo 9 Grupo 10 Grupo 11 Grupo 12
Grupo 13 Grupo 14 Grupo 15 Grupo 16