Capítulo 3. Conceptos teóricos

Tabla de contenidos
Asignación del procesador
Utilización de la memoria: (Algoritmos de selección de víctima)
Planificación de accesos a memoria secundaria

Los conceptos teóricos utilizados para la realización propia del sistema son los conceptos básicos de programación que no es necesario comentar, pero los conceptos que se pretenden ilustrar sí que merecen mención.

El sistema operativo está hecho para dar vida a los procesos, así que comenzaré por ellos. Un proceso, no es más que una lista de instrucciones que están en ejecución y se aplican a datos en memoria principal y secundaria. Además, en los sistemas informáticos actuales, las propias instrucciones también se guardan en memoria secundaria para su almacenamiento y en memoria principal para su ejecución.

La vida de un proceso comienza con la carga de sus instrucciones en memoria principal desde la memoria secundaria y el inicio de su ejecución a partir de su primera instrucción. A lo largo de su vida típicamente necesitará datos de memoria secundaria que almacenará en memoria principal para su procesamiento y posteriormente escribirá los datos resultantes en memoria secundaria y se terminará.

En los primeros tiempos de los ordenadores de arquitectura Von Newmann era directamente el hardware el que cargaba las instrucciones del proceso en memoria e iniciaba su ejecución, el procesador se dedicada enteramente a la ejecución de este único proceso y este disponía de toda la memoria principal y podía utilizar la memoria secundaria libremente.

Actualmente el problema es que pretendemos que varios procesos convivan en la misma máquina, de manera que se aproveche más el hardware disponible (ej. un proceso puede hacer cálculos mientras otro intenta leer de memoria secundaria) y se puedan realizar varias tareas simultáneamente en el tiempo (multitarea) e incluso que varios usuarios puedan compartir la misma máquina (multiusuario). Sin añadir elementos nuevos al sistema, la complejidad a la hora de programar crecería exponencialmente con el numero de procesos, para poder compartir recursos y el fallo de uno solo de los procesos podría afectar gravemente a los demás. Es necesario, pues, una coordinación.

La figura del sistema operativo se introduce inicialmente para realizar la tarea de intermediario entre los distintos procesos. Será cargado en memoria principal y ejecutado por el hardware y será el sistema operativo el que se ocupe de dar vida a los procesos y de repartir los recursos disponibles entre ellos. Al menos tendrá que realizar las siguientes labores:

Este programa ilustra los distintos algoritmos utilizados para estas tareas. Concretamente los algoritmos actualmente implementados son:

Asignación del procesador

First Come First Served: (Primero en llegar, primero en ser servido)

El primer proceso en condiciones de ejecutarse será el asignado al procesador y permanece asignado hasta no poder ejecutarse más por tener que esperar a algún evento o por haber terminado.

Round Robin

Se establece un tiempo máximo de ejecución o cuanto y se ejecuta cada proceso hasta que exceda su cuanto o no quiera ejecutarse más, entonces se asigna otro y así sucesivamente. Los procesos en espera de ejecución forman una cola circular.

Shortest Process Next: (El proceso más corto el próximo)

Se ejecuta el proceso más breve de los que estén preparados, y permanece asignado hasta no poder ejecutarse más, momento en el cual se volverá a elegir el proceso más corto.

Shortest Remaining Time: (El tiempo restante más corto)

Se ejecuta el proceso más corto de los que estén preparados, pero a diferencia del SPN el esquema es apropiativo, de manera que siempre que surja otro proceso listo para ejecutarse se comprobará si va a tardar menos en ejecutarse que el actual y si es así será el nuevo proceso el que se asigne y el actual tendrá que esperar.

Highest Response Ratio Next: (El de mayor tasa de respuesta el próximo)

Para cada proceso, basado en el tiempo que va a ocupar el procesador(s) y el tiempo que lleva esperando para ocuparlo (w), Se calcula w+s/s, una vez echo esto el proceso que tenga un valor mayor será asignado al procesador. Este algoritmo es bastante bueno, por que además de dar preferencia a los procesos cortos también tiene en cuenta el envejecimiento de los procesos para evitar así la "inanición".