You are on page 1of 51

Qu es un Sistema Operativo

1.1. Qu es un Sistema Operativo?


1.1.1. Qu es un Sistema Operativo?
El sistema operativo es el conjunto de programas que:
Gestionan y reparten de manera equitativa los recursos que ofrece el hardware entre los programas en
ejecucin. Concretamente, los recursos a gestionar son tres:

La CPU, tambin conocida como procesador o unidad central de procesamiento. Todo


procesador ofrece un conjunto de instrucciones de bajo nivel (lenguaje ensamblador) con
operaciones bsicas que ejecuta de manera secuencial.

La Memoria principal, memoria empleada para almacenar el estado de la ejecucin del


programa.

Los dispositivos de Entrada/Salida, tales como la tarjeta de vdeo, la tarjeta de red, los
dispositivos de almacenamiento masivo (disco duro del tipo que sea), teclado, ratn, pantalla,
entre muchos otros.

Ofrece un lanzador de aplicaciones, que pueden estar basados en:

Intrprete de rdenes/comandos (traduccin incorrecta del original ingls command, que


significa rden), tambin llamado shell. El dispositivo de entrada empleado es el teclado. Es
generalmente complejo pero ofrece funcionalidades avanzadas. Algunos ejemplos son la shell
de bash disponible en Linux o el PowerShell disponible en la recientes versiones de MSWindows. Para ejecutar un programa se escribe su nombre, seguido de opciones (en caso de que
las tenga y se pulsa la tecla de Intro).

Gestor de ventanas: Son los ms populares por su sencillez, aunque ofrecen menor
funcionalidad que los basados en intrpretes de rdenes. Los programas se ejecutan mediante un
clic sencillo o doble de ratn. En dispositivos porttiles en lugar del ratn se emplea una
pantalla tctil.

Ofrece una interfaz estable y homognea a los programas de usuario para solicitar servicios.
Esta interfaz se conoce como API (del ingls, Application Programming Interface) del sistema
operativo.

El sistema operativo se sita entre los programas de usuario en ejecucin y el hardware, de manera que
los programas siempre deben emplear la API del sistema operativo para acceder a los recursos que
ofrece el hardware.
1

1.1.2. Principios de diseo de un buen Sistema Operativo


Los aspectos a tener en cuenta respecto a la gestin de recursos son:

Realizar una gestin eficiente de los recursos.

Coordinar la asignacin de los mismos entre los programas de ejecucin (como se si tratase de
un moderador en un debate, asignando el turno de palabra a cada uno de los asistentes).

Hacer un reparto equitativo (del diccionario de la RAE, equidad significa "dar a cada uno lo que
merece"). Esto no significa hacer una divisin exacta de los recursos, si no que se tendrn en
cuenta la naturaleza de cada programa en ejecucin a la hora de hacer el reparto.

No ofrecer ninguna interfaz que permita a las aplicaciones acceder directamente los recursos
hardware.
Respecto a la API, debe:

Ser estable, no debe cambiar con el tiempo.

Ser homognea, guardar una similitud lgica en sus llamadas.

Debe abstraer y ocultar los detalles de bajo nivel de los componentes, de manera que los
programas lleguen a ser complemente independientes del hardware.

Adems de todo esto, un buen sistema operativo es portable, es decir, que soporte diferentes
arquitecturas hardware, como por ejemplo la ARM (tpicamente empleada en dispositivos mviles con
limitaciones importantes en materia de energa), la PC x86 y x86_64 de Intel, las variantes del PC que
ofrece AMD, la arquitectura PowerPC (empleada antao por Apple y desarrollada por IBM) y SPARC
(desarrollada por Sun Microsystems, adquirida por Oracle).

1.1.3. Tipos de Sistemas Operativos


Segn cuntas aplicaciones pueda ejecutar a la vez

Monoprogramables
En un determinado instante de tiempo, slo hay un nico proceso en ejecucin que
monopoliza todos los recursos del sistema.
Principal ventaja: su sencillez.
Generalmente, no tienen mecanismos de proteccin de memoria (esta caracterstica los
hace ms proclives a virus).
Dos subtipos:

Ofrece intrprete de rdenes.

Ofrece entrada a travs de cinta/switches (SSOO histricos).


Ejemplo: DOS.

Multiprogramables
Permiten ejecutar mltiples procesos en un nico procesador. Se tienen varios programas

cargados simultneamente en la memoria, as que el SO debe controlar los accesos y los espacios de la
misma.
Tienen mecanismos de proteccin del espacio de memoria (el SO impide que una aplicacin
acceda al espacio de memoria de otra).
Caractersticas que pueden presentar:

Multiprogramacin: se ejecutan varios procesos simultneamente de manera que se reparte el


uso del procesador. A esta caracterstica tambin se le llama (de forma imprecisa) "Multitarea".

Multiusuario: admite mltiples usuarios trabajando simultneamente.

Multiacceso: el sistema ofrece varios terminales (mecanismos) para acceso concurrente a l.

Multiprocesamiento o multiprocesadores: soporta ms de un procesador y hace uso de todos

ellos.
Tipos de sistemas multiprocesadores: Podemos diferencias 3 tipos: especializados, con acoplamiento
dbil y con acoplamiento fuerte:

Sistemas multiprocesadores con procesadores especializados: Son sistemas que cuentan con
un procesador de propsito general y varios procesadores especializados (como por ejemplo
coprocesadores aritmticos o el procesador de una tarjeta grfica). Dichos procesadores
especializados solo son capaces de ejecutar un conjunto de operaciones especificas y funcionan
nicamente cuando el procesador general se lo solicita, en ese momento colaboran con el
procesador general.

Sistemas multiprocesadores con acoplamiento dbil: Son sistemas con procesadores


relativamente independientes, cada uno tiene su propia memoria y sus propios canales de E/S.

Sistemas multiprocesadores con acoplamiento fuerte: Son sistemas con varios procesadores
de propsito general independientes entre s pero que comparten la memoria y trabajan bajo un
sistema operativo comn.

Tiempo real: intenta garantizar que determinadas tareas se ejecuten en un plazo de tiempo
determinado. Atendiendo al nivel de exigencia, se subdividiran en dos: soft (suave) o flexible y
hard (duro) o estricto. Un ejemplo puede ser el sistema operativo de tiempo real instalado en el
procesador de un telfono mvil; si llega una llamada tiene que pasarla en ese momento, sino
ese proceso deja de ser importante.

Distribuido: permite la ejecucin de mltiples procesos en diferentes mquinas comunicadas


por un enlace de red. El primer SO en soportar esta caracterstica fue Plan 9 de Bell Labs.

Segn cmo se presta el servicio


Clasificacin no excluyente:

Sistemas operativos de servidor

Sistemas operativos de ordenador personal

Sistemas operativos en tiempo real

Sistemas operativos embarcados / integrados / "embebidos", ejemplos, dispositivos mviles o

smartcard.

Sistemas operativos web

2. Organizacin bsica de un ordenador


Un ordenador est compuesto de los siguientes componentes bsicos:
Unidad de procesamiento (CPU). Dispone de juego de instrucciones bsicas de bajo nivel
(lenguaje ensamblador) definidas por el diseador/fabricante. Por tanto, el juego de
instrucciones y los parmetros que estas toman son diferentes segn el tipo de procesador que se
est empleado. Algunos ejemplos de procesadores, son las familias Intel x86 y x86_64, ARM,
SPARC y PowerPC, entre muchas otras.
Memoria principal. Almacena el estado de la ejecucin de los procesos, es decir, variables y
estructuras de datos empleadas. Es una memoria voltil, por tanto, al dejar de suministrarseles
energa, la informacin se desvanece.
Dispositivos de entrada y salida. Se tratan de dispositivos que permiten recibir y enviar datos
que pueden ser empleados por los programas en ejecucin. Por ejemplo, teclado, ratn, disco
duro magntico, tarjeta de red, tarjeta de vdeo, entre muchos otros.
En la arquitectura de Von Neumann, estos tres componentes se comunican a travs un nico bus.
Modos de operacin de la CPU
Los fabricantes de procesadores actuales ofrecen procesadores que generalmente disponen de, al
menos, dos modos de funcionamiento. El estado del procesador se guarda en conjunto de registros de 8,
16, 32 o 64 bits.
Adems de ellos, el procesador posee dos registros especiales, el de siguiente instruccin (IP, PC,) y
el de estado (CCR):
No privilegiado
Tambin llamado modo usuario (es preferible no usar este trmino para no llegar a confusin).
Modo en el que se ejecutan los procesos y bibliotecas del sistema operativo. En el caso concreto de los
sistemas operativos microncleos, los servidores tambin se ejecutan en modo no privilegiado, tales
como el servidor de ficheros, el administrador de memoria y los gestores de dispositivo.
Ofrece nicamente un subconjunto de las instrucciones disponibles.
Si en ste modo se intenta ejecutar una instruccin privilegiada, el sistema operativo o bien la ignora, o
bien lanza una excepcin.

Privilegiado
Tambin llamado modo supervisor (no confundir con usuario root).
Modo en el que se ejecuta el ncleo del sistema operativo.
Ofrece acceso total a las instrucciones de la CPU.
Un fallo de programacin en modo privilegiado puede plantar el SO, en modo no privilegiado
nunca pasara eso. Precisamente esa es la utilidad de tener varios modos de ejecucin, la construccin
de un sistema robusto. En la prctica, lo usual es que los procesadores tengan modos intermedios entre
usuario y supervisor. La transicin de modo supervisor a usuario es arbitraria, mientras que de usuario a
supervisor se realiza mediante una interrupcin. La CPU siempre arranca en modo supervisor, lo cual
se intuye, pues en el inicio del dispositivo, se tendr que ejecutar cdigo del sistema operativo.

Interrupciones y excepciones
Tipos de interrupciones y excepciones
Se llama interrupcin a una alteracin en la secuencia de ejecucin de instrucciones. Las
interrupciones pueden estar causadas por hardware, por una excepcin o por una peticin de
interrupcin por parte de algn proceso (interrupcin software).
Una excepcin es una interrupcin de la propia CPU cuando se intenta ejecutar una instruccin
prohibida.
La interrupcin software, por otro lado, se produce cuando un proceso pide un recurso al SO
mediante una llamada al sistema (open, write, read).
Tratamiento de interrupciones y excepciones
Cuando una interrupcin es causada por un componente hardware, su tratamiento es el
siguiente:
1. La CPU termina la instruccin que est ejecutando actualmente.
2. Almacena el estado de la CPU en la pila.
3. La CPU pasa a modo supervisor.
4. Se determina la direccin del Subprograma de Servicio de Interrupciones (SSI).
5. Se salta al SSI y se ejecuta.
6.
Se retorna del SSI restaurando el estado de la CPU desde la pila, as como el modo de
ejecucin.
7.

La CPU contina con la ejecucin del siguiente programa que corresponda.


6

Por otro lado, cuando la interrupcin es causada por una instruccin de peticin, el proceso es el
mismo hasta el cuarto punto, a partir de ah, difiere, ya que la CPU no siempre tiene por qu volver al
mismo punto.
Por ltimo, en el caso de las excepciones, nunca se vuelve al mismo punto, ya que es donde se
ha causado el error en cuestin. En ste caso se procede como antes, pero se llama al SSE
(Subprograma de Servicio de Excepciones). En los sistemas operativos, existe una tabla de vectores de
interrupcin, en la cual, cada vector apunta a la direccin de memoria del gestor, que se encargar de
tratar la interrupcin del tipo que corresponda. sta tabla est separada de otra, que contiene los
vectores de excepciones.

Arranque del sistema


Arranque de un sistema operativo
El arranque de un sistema operativo suele ser un proceso muy comn hasta cierto punto, en el cual
difieren en funcin del tipo de sistema.
1. Se inicia el procesador y se prepara para ejecutar instrucciones, las condiciones iniciales son fijas.
2. Se ejecutan las primeras instrucciones.
Un poco de historia:
Inicialmente, las instrucciones se metan a mano desde un panel.
Los equipos ms grandes tenan las instrucciones en una ROM, las cuales se copiaban la RAM.
Los equipos basados en microprocesadores tienen las instrucciones en una memoria junto a la
BIOS. La ventaja de esto es que no hay que copiarlas a la RAM, el inconveniente es que dichas
instrucciones ocupan memoria.
A partir de aqu, el proceso de arranque difiere, en sta entrada trataremos el arranque de los
equipos tipo PC.
Estos equipos, al ser de arquitectura abierta, no slo contemplan la BIOS como su propia ROM,
sino tambin dispositivos externos.
3. Se inicia lo principal (comprobacin de memoria, pantalla, teclado, reloj).
4. Se inician los dispositivos adicionales con ROM propia. Se miran ciertas posiciones de memoria, y si
no estn vacas, la ROM principal salta ah para iniciar el dispositivo (disco duro, disquete,).
5. Se determina de dnde se cargar el SO. Para esto, la BIOS carga un pequeo programa que es el
7

que inicia el SO.


En caso de que ste se inicie desde el disco duro, la BIOS consultar la posicin 0 del disco, en la que
se encuentra la tabla de particiones, donde se indica dnde est el programa de carga del SO, el cual se
iniciar y continuar con el proceso de arranque.
6. Se carga la parte principal del sistema operativo.
7. Se inicia el sistema operativo.

Se inician los elementos fundamentales del sistema operativo.

Se inician los elementos fundamentales de lectura/escritura (drivers).

Se comprueba el sistema de archivos.

Se completan las pruebas y se carga el software adicional.

Se arrancan los procesos necesarios del SO para que realice sus inicializaciones
particulares.

En ciertos casos, se inicia un archivo de rdenes que arranca los programas de


servicios.

A partir de ste punto, se realiza una nueva divisin, en funcin de si el SO es interactivo sin
identificacin de usuario (MS-DOS, por ejemplo), si requiere identificacin, si es por lotes sencillos o
si es por lotes superior.
8a. Se lanza el intrprete de rdenes y/la interfaz grfica.
8b. Se lanza un proceso de log-in por cada terminal, el cual se mantiene en espera hasta que se
identifique correctamente, punto en el cual, se lanzar el intrprete y la UI (interfaz de usuario).
8c. Se pone en marcha la cola de trabajos.
8d. Se inicia sesin en la consola del operador y ste montar los dispositivos, fijar los criterios
de funcionamiento

Componentes bsicos de un sistema operativo


Los componentes bsicos de un sistema operativo son los siguientes:
Gestin de procesos
Un procesador se dedica exclusivamente a un proceso, con todos sus recursos, no puede dedicar
unos recursos a un proceso y el resto a otro proceso simultneamente. Incluye:
Planificacin de procesos: se trata de la parte del sistema operativo que decide qu proceso
emplea el procesador en cada instante de tiempo.
Mecanismos de comunicacin entre procesos: permiten comunicar a dos procesos del sistema
operativo, tales como la mensajera.
Mecanismos de sincronizacin: permiten coordinar a procesos que realizan accesos
concurrentes a un cierto recurso.
Administracin de memoria principal
Tiene como objetivo la gestin de la memoria principal, lo que incluye la gestin del espacio de
memoria principal libre y ocupada, as como la asignacin de memoria principal a los procesos.
Administracin de ficheros
Gestiona la manera en que la informacin se almacena en dispositivos de entrada/salida que
permiten el almacenamiento estable.
Gestin de los dispositivos de entrada/salida (driver)
Parte del sistema operativo que conoce los detalles especficos de cada dispositivo, lo que
permite poder operar con l.
Adems, el sistema operativo ofrece:
Lanzador de aplicaciones: permite el lanzamiento de un programa. Esto incluye los intrpretes
de rdenes textuales y los basados en gestores de ventanas.
9

Llamadas al sistema: conjunto de servicios que los procesos pueden solicitar al sistema
operativo.

Conceptos bsicos
A continuacin se desarrollan conceptos bsicos que se emplearn a lo largo de la asignatura.
Programa
Un programa es una secuencia de instrucciones que, al ejecutarse, desarrolla algn tipo de
actividad.
Un programa, generalmente, se expresa en un lenguaje de programacin de medio o alto nivel
(tales como C, C++, Python, Java, Perl, Php, C#, etc) que, mediante un compilador o mquina virtual,
se traduce a instrucciones de bajo nivel que corresponden al juego de instrucciones que ofrece el
procesador.
El juego de instrucciones del procesador viene determinado por el fabricante.
Proceso
Un proceso es una instancia de un programa que est en ejecucin. De partida todo proceso dispone de
una nica lnea de ejecucin. Se puede entender como la vista dinmica (en ejecucin) de un programa.
Procesos en sistemas operativos tipo Unix
Todo proceso en un sistema operativo tipo Unix tiene un proceso padre y a su vez puede
disponer uno o ms de un proceso hijo.
Todo proceso en un sistema operativo tipo Unix tiene un propietario, que se trata del usuario
que ha lanzado dicho proceso.
El proceso init es el padre de todos los procesos. Es la excepcin a la norma general, pues no
tiene padre.
La informacin necesaria para administrar un proceso se guarda en una estructura controlada
por el S.O. llamada Bloque de Control de * Procesos o PCB (Process Control Block)
Para mostrar la relacin actual de procesos en el sistema se puede emplear la orden ps.
Para identificar los procesos el sistema operativo Unix asigna un numero de identificacin del
10

proceso, o pid (Process IDentification).

Procesos padre e hijo


Todo proceso (padre) puede lanzar un proceso hijo en cualquier momento, para ello el sistema
operativo nos ofrece una llamada al sistema que se denomina fork.
Un proceso hijo es un proceso clon del padre. Sin embargo, procesos padre e hijo no comparten
memoria, son completamente independientes.
Todo proceso padre es responsable de los procesos hijos que lanza, por ello, todo proceso padre
debe recoger el resultado de la ejecucin de los procesos hijos para que estos finalicen
adecuadamente. Para ello, el sistema operativo ofrece la llamada wait que nos permite obtener
el resultado de la ejecucin de uno o varios procesos hijo.
Si un proceso padre no recupera el resultado de la ejecucin de su hijo, se dice que el proceso
queda en estado zombi. Un proceso hijo zombi es un proceso que ha terminado su ejecucin y
que est pendiente de que su padre recoja el resultado de su ejecucin.
Llamadas a sistema
Se implementan a travs de una interfaz (o API) que ofrece el Sistema Operativo. Son
mecanismos que el S.O. pone a disposicin de los procesos para solicitar un servicio o recurso.
(Otra definicin, segn Wikipedia: Llamadas que ejecutan los programas de aplicacin para
pedir algn servicio al SO.) Estas llamadas a sistema evitan que el proceso acceda directamente
a los recursos del hardware.
En el caso de Linux tiene aproximadamente 350 llamadas al sistema en la versin 3.0.0. La mayor parte
de los Sistemas Operativos suelen implementar la API POSIX por razones de portabilidad.
Usuario
Sujeto que interacta con la computadora. Puede ser un humano o un autmata (software).
En sistemas UNIX encontramos un cdigo nico para cada uno, el UID (User IDentifier). A su
vez debe pertenecer a un grupo, definido por el GID (Group IDentifier).

11

Archivos o Ficheros
Estructura de datos que almacena informacin.
Los archivos se identifican mediante su nombre y su extensin (un apndice que se utiliza para indicar
el tipo de informacin que contiene el archivos).
El lugar donde se encuentra un fichero viene dado por su directorio. Dentro de un directorio pueden
existir otros directorios (llamados subdirectorios) lo que da lugar a una organizacion en forma de arbol.
Al camino que debemos seguir para encontrar un fichero lo llamamos camino absoluto (absolute
path), y al camino que debemos seguir para encontrar el fichero en relacin a otro fichero, que no sea
el fichero raz, se le conoce cmo camino relativo (relative path).

Llamadas al sistema
Definicin de llamada al sistema
Una llamada al sistema es un mtodo o funcin que puede invocar un proceso para solicitar un
cierto servicio al sistema operativo. Dado que el acceso a ciertos recursos del sistema requieren la
ejecucin de cdigo en modo privilegiado, el sistema operativo ofrece un conjunto de mtodos o
funciones que el programa puede emplear para acceder a dichos recursos. En otras palabras, el sistema
operativo acta como intermediario, ofreciendo una interfaz de programacin (API) que el programa
puede usar en cualquier momento para solicitar recursos gestionados por el sistema operativo.
Algunos ejemplos de llamadas al sistema son las siguientes:
time, que permite obtener la fecha y hora del sistema.
write, que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una
pantalla o un disco magntico.
read, que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco
magntico.
open, que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele
pasarse a write.
Todo sistema operativo ofrece un conjunto de llamadas al sistema. En el caso de Linux 3.0, se ofrecen
un total de 345 llamadas al sistema.
Toda llamada al sistema se identifica de manera unvoca mediante un valor numrico que no debe ser

12

modificado a lo largo de la vida del sistema operativo para evitar que se rompa la compatibilidad hacia
atrs.

Familias de llamadas al sistemas operativo: POSIX y WIN32/64


Las dos familias de APIs estandarizas ms importantes son:
POSIX.
WIN32/64, empleada en los sistemas operativos de tipo-Windows. Adems, existen emuladores
como Wine que tambin las implementan.

Implementacin de llamadas al sistema


El siguiente ejemplo muestra el cdigo en ensamblador de x86 para invocar a la llamada al sistema
write que permite escribir un dato en cualquier dispositivo. En concreto, se va a escribir una cadena
por el dispositivo de salida pantalla, que se identifica mediante el descriptor de fichero nmero 1.
<source lang="asm"> section .text
global _start

_start:
mov eax, 4

;cargamos el nmero de la llamada al sistema en el registro eax

mov ebx, 1

;cargamos el descriptor de fichero sobre el que queremos escribir

mov ecx, string

;cargamos en ecx la direccin de la cadena a imprimir

mov edx, lenght

;cargamos en edx el tamao de la cadena a imprimir

int 80h

;se invoca al de

mov eax, 1
mov ebx, 0
int 80h

section .data
string: db "Hola Mundo", 0x0A
lenght: equ 13

13

</source>
La instruccin int forma parte del conjunto de instrucciones de procesadores x86. Esta instruccin
emite una interrupcin por software cuyo tratamiento es realizado por la rutina dispatcher. Dicha rutina
se encarga del tratamiento de la interrupcin por software nmero 80.
El dispatcher
El dispatcher, que forma parte del SO, se ejecuta cuando se invoca una llamada al sistema. Cuando un
proceso hace una llamada al sistema, el dispatcher, se encarga de invocar la llamada que el proceso ha
solicitado.
Tiene un comportamiento sincronizado, cuando recibe una llamada y se la pasa al sistema operativo
hasta que no recibe respuesta no atiende otra llamada.
En el caso de x86, el dispatcher consulta el registro eax e invoca a la llamada al sistema identificada
con dicha numeracin.
El punto de entrada
Es la posicin de memoria desde la cual es posible solicitarle servicios al sistema operativo.
Normalmente hay un nico punto de entrada. En algunos SO se realiza mediante llamadas a
subprogramas. La direccin de memoria del punto de entrada puede cambiar si se modifica el SO. En
algunos SO ste problema lo solucionan usando una direccin fija, mientras en otros han preferido usar
una referencia a dicha direccin.
Lo ideal es que sean compatibles a lo largo del tiempo (aunque Windows normalmente no lo respeta).

14

Modelos de Diseo de SSOO


Modos de operacin del procesador
Para entender los modelos de diseo de los sistemas operativos, tenemos que hacer referencia a los
modos de ejecucin del procesador. El modo de ejecucin del procesador indica qu conjunto de
instrucciones y a qu recursos del procesador se puede acceder en un cierto instante de tiempo.
En la actualidad, un procesador ofrece como mnimo dos modos de operacin(ejecucin) que son:
Modo privilegiado(supervisor), que permite la ejecucin de todo el conjunto de instrucciones
que ofrece el procesador (no tiene ninguna relacin con el modo "root" o administrador de
algunos sistemas operativos).
Modo no privilegiado(usuario), que tiene algunas restricciones de acceso a aspectos del
procesador o de ejecucin de instrucciones.

Ncleo del sistema operativo


El ncleo del sistema operativo, tambin conocido por la terminologa inglesa kernel, es la parte ms
esencial del sistema operativo. Se trata de la capa visible del software ms baja del sistema que provee
y gestiona los recursos del sistema de forma segura a travs de las llamadas al sistema.
El ncleo de un sistema operativo suele operar en modo privilegiado. Al operar en dicho modo un error
de programacin en el ncleo del sistema operativo puede resultar en un error fatal del cual el sistema
slo puede recuperarse mediante el reinicio del sistema. A tal error fatal tambin se le conoce en los
sistemas operativos UNIX por la locucin inglesa kernel panic y en los sistemas operativos Windows
por el nombre de Pantallazo azul o BSOD.

Tipos de Sistemas Operativos


Los sistemas operativos se pueden clasificar en base a la cantidad de funcionalidad implementada en su
ncleo. En general distinguimos dos tipos de sistemas operativos:
Monolticos: son ncleos de gran tamao (muchas lneas de cdigo) con un alto nmero de
funcionalidades, las cuales normalmente son compiladas junto al ncleo en el mismo momento.
15

Microncleos: son ncleos de pequeo tamao que fueron compilados slo con las necesidades
ms bsicas del sistema operativo. El resto de funcionalidades son aadidas mediante la adicin
de mdulos externos al ncleo, lo que les proporciona flexibilidad y facilidad de ampliacin en
detrimento del desempeo necesario para la gestin dinmica de stos.
Pico/Nanoncleos: se puede considerar un subtipo de Microncleo, son ncleos muy pequeos
y flexibles, incluso mas pequeos que los Microncleos. Se usan en sistemas muy especficos,
como satlites, en los que ya se sabe los procesos que se van a realizar. Son muy fiables.

No obstante, existen tipologas hbridas o que acentan algunos aspectos, que tambin detallamos en
esta seccin.

Sistemas
operativos Monolticos
Los sistema operativos monolticos se caracterizan por emplear un ncleo que implementa la
planificacin de procesos, el sistema de comunicacin de procesos, el sistema de sincronizacin de
procesos, la administracin de la memoria principal, la administracin de ficheros y la gestin de los
dispositivos de entrada/salida. Por tanto, a mayor funcionalidad implementada en el ncleo, mayor
nmero de lneas de cdigo que se ejecutan en modo privilegiado.
Los sistemas operativos monolticos son los predominantes hoy da, algunos ejemplos son:
Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD.
Sistemas operativos GNU/Linux.
DOS, tales como MS-DOS y DR-DOS.
Como inconveniente, al emplear un ncleo que incluye gran parte de las funcionalidades bsicas del
sistema operativo, dispone de un alto nmero de lneas de cdigo ejecutndose en modo privilegiado.

16

Por ello, un error de programacin en el ncleo puede provocar un kernel panic. Adems el hecho de
aadir nuevas funcionalidades provocara una nueva recompilacin del ncleo llevando a reiniciar el
sistema para que se apliquen los nuevos cambios.
Como principal ventaja, los sistemas operativo monolticos ofrecen un alto rendimiento puesto que las
peticiones entre los diferentes componentes se reducen a invocaciones de funciones.

Sistemas operativos Microncleo


Tambin conocidos como sistemas operativos exokernel o exoncleo, se caracterizan por disponer de
un ncleo que implementa nicamente:
Planificacin de procesos
Mecanismo de comunicacin entre procesos
Gestin de interrupciones
Adems, existen procesos servidores que estn fuera del ncleo, que se ejecutan en modo no
privilegiado del procesador, y que implementan la:
Administracin de memoria principal
Administracin de archivos
Gestin de dispositivos de entrada/salida.
Siguiendo este esquema, cuando un proceso cualquiera solicita un servicio a travs de una llamada al
sistema, el microncleo canaliza la peticin al proceso servidor correspondiente. Dicha comunicacin
se realiza mediante mensajera.
La principal ventaja de los sistemas operativos microncleo es que, al ejecutar menos lneas de cdigo
en modo privilegiado, de manera intuitiva son ms fiables. Otras ventajas son que se garantiza el
aislamiento de las partes que estn fuera del ncleo, como los mdulos son independientes unos de
otros, si cae alguno de ello los dems no se ven afectados y pueden seguir funcionando.
Sin embargo, el principal problema que presentan es el rendimiento, puesto que cualquier peticin
requiere mensajera, que lleva consigo un coste extra debido a la construccin de los mensajes, el
reparto y la interpretacin. Son estos problemas relacionados con el rendimiento los que hacen que no
existan sistemas operativos microncleo desplegables en productivo, a excepcin de Minix 2, que tiene
propsitos educativos. Otro ejemplo de microncleo es Symbian OS.

17

Sistemas operativos Hbridos


Los ncleos hbridos se encuentran entre los monolticos y los microncleo. La mayora de sistemas
operativos modernos pertenecen a esta categora, siendo el ms popular Microsoft Windows. XNU, el
ncleo de Mac OS X, tambin es un microncleo modificado, debido a la inclusin de cdigo del
ncleo de FreeBSD en el ncleo basado en Mach. DragonFlyBSD es el primer sistema BSD que adopta
una arquitectura de ncleo hbrido sin basarse en Mach.
Algunos ejemplos de ncleos hbridos:
Microsoft Windows NT, usado en todos los sistemas que usan el cdigo base de Windows NT
XNU (usado en Mac OS X)
DragonFlyBSD
ReactOS
Hay gente que confunde el trmino ncleo hbrido con los ncleos monolticos que pueden cargar
mdulos despus del arranque, lo que es un error. Hbrido implica que el ncleo en cuestin usa
conceptos de arquitectura o mecanismos tanto del diseo monoltico como del microncleo,
especficamente el paso de mensajes y la ejecucin de ciertos componentes del sistema operativo en
espacio de usuario.

18

Virtualizacin
Tcnicas de virtualizacin
Las tcnicas de virtualizacin nos permiten ejecutar dos o ms sistemas operativos simultneamente
sobre una misma plataforma hardware. Sin ellas esto no es posible. Estas tcnicas apuntan
principalmente a ahorrar costes en material.
En general, la arquitectura que nos encontramos en un sistema operativo es la siguiente:
-----------------------| P1 | P2 | ....

| Px |

-----------------------|

Sistema operativo

-----------------------|

Hardware

------------------------

De esta manera, nicamente es posible ejecutar un nico sistema operativo. Para poder ejecutar ms de
un sistema operativo vamos a emplear un software denominado mquina virtual que abstrae los detalles
del hardware.
Segn el tipo de mquina virtual (o hypervisor como se conoce en ingls):
Tipo 2: Se trata de un proceso de espacio de usuario que simula en software todos los aspectos
propios del hardware.
---------------| P1 | P2 | P3 |
---------------|
| SO husped

---------------------------|

MV

Px | ... |

---------------------------|

SO anfitrin

----------------------------

19

Hardware

----------------------------

Como proceso de espacio de usuario convencional, la mquina virtual emplea la API de llamadas al
sistema operativo para solicitar recursos al sistema operativo.
Existen tcnicas de irtualizacin, que permiten al sistema operativo husped acceder de manera directa
a recursos del sistema operativo anfitrin.
Permite la ejecucin de diferentes sistemas operativos
Ejemplo: VirtualPC, VirtualBox, VMware.
Tipo 1:
---------------------| P1 | P2 | PX

| PY |

---------------------|

SO1

SO2

---------------------|

MV

---------------------|

Hardware

----------------------

La mquina virtual se trata de una especie de sistema operativo de sistemas operativos.


No permite la ejecucin de diferentes sistemas operativos.
Ejemplo: MS-Hypervisor.

20

Multiprogramacin
3.1 La Multiprogramacin
La multiprogramacin es una tcnica de multiplexacin que permite la ejecucin simultnea de
mltiples procesos en un nico procesador. En realidad, esta tcnica produce una ilusin de
paralelismo, de manera que parece que todos los procesos se estn ejecutando a la vez. Sin embargo,
hay un nico proceso ejecutndose en el procesador a la vez.
Un mtodo para la multiprogramacin es el Foreground/Background (o ejecucin jerarquizada) (usado
en sistemas por tandas, nunca en interactivos), en l hay un proceso prioritario (el foreground (FG)) que
se ejecuta con preferencia de todos los dems, cuando este proceso solicita una operacin
L/E(Lectura/Escritura), mientras el s.o. la realiza, el proceso FG estar bloqueado por esta operacin y
le cede el control al proceso background 1 (BG), y si ste realiza una operacin L/E, al BG2, Cuando
uno de los procesos bloqueados se desbloquea, recibe el control del procesador. Para que este mtodo
funcione de forma ptima la mejor forma es colocar los procesos ordenados de mayor a menor cantidad
de operaciones L/E.
El siguiente diagrama de ejemplo representa el uso del procesador por tres procesos:

Como se puede observar en el ejemplo anterior, los procesos alternan periodos en los que progresan
en su actividad, cuando estn asignados al procesador, con periodos de inactividad, en los que no
progresan en absoluto.
Si los periodos de inactividad son los suficientemente pequeos como para que el usuario del sistema
21

operativo no los note, que en prctica se traduce a periodos de inactividad de menos de 100ms, el
efecto causado es una ilusin de paralelismo. En caso contrario dar una sensacin de que se producen
"saltos".
El planificador de procesos es la parte del sistema operativo que se encarga de decidir qu proceso
emplea el procesador en cada instante, por tanto, es el encargado de implementar la multiprogramacin.

Estados de los procesos


Todo proceso en un sistema operativo presenta un estado que indica la situacin de la ejecucin en que
se encuentra. El nmero de posibles estados vara de un sistema operativo a otro.
Diagrama de estados simplificado
Consideramos que todo proceso puede estar, como mnimo, en uno de los siguientes tres estados:
Activo: el proceso est empleando la CPU, por tanto, est ejecutndose. Pueden haber tantos
procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un
nico procesador, nicamente puede haber un proceso activo a la vez.
Preparado: el proceso no est ejecutndose pero es candidato a pasar a estado activo. Es el
planificador el que, en base a un criterio de planificacin, decide qu proceso selecciona de la
lista de procesos preparados para pasar a estado activo.
Bloqueado: el proceso est pendiente de un evento externo que le ha hecho bloquear, tales
como una operacin de lectura/escritura, la espera de finalizacin de un proceso hijo, una seal
o una operacin sobre un semforo. El dispositivo/hecho externo "avisa" al S.O. cuando ha
terminado la accin que realizaba mediante una INTERRUPCIN, dejando el S.O. lo que est
haciendo para atender a esta ltima. Tras esto, el S.O. comprueba cuales son los procesos que
fueron bloqueados por ese evento externo, cambindolos al estado de preparado.
La transicin de activo a preparado y viceversa depende de decisiones tomadas por el planificador del
sistema operativo en base a un cierto criterio. La transicin de activo a bloqueado, y de bloqueado a
preparado puede inducirlas el programador mediante llamadas al sistema.

22

Diagrama de Estados Ampliado


En espera / Preparacin: Estado por el que pasan los procesos antes de pasar a estar
preparados por primera vez. Los procesos, cuando comienzan a existir, no estn preparados para
comenzar a ejecutar instrucciones hasta que el sistema no ha llevado a cabo una serie de
actividades. Una vez que el proceso est completamente cargado, ya se puede producir la
primera transicin al estado preparado.
Terminado: La transicin de activo a este estado ocurre cuando el proceso realiza una llamada
al sistema solicitando su propia terminacin. En estas circunstancias, hay estructuras de datos
correspondientes al proceso que no pueden ser liberadas hasta que el proceso padre del que est
terminando recoja el cdigo de terminacin del mismo. Hasta que esto ocurra, estas estructuras
se mantendrn y el proceso seguir existiendo en estado terminado.
Transicin: cuando se completa la operacin que mantiene a un proceso en estado bloqueado
termina, el proceso puede haber perdido parte de los recursos que necesita para proseguir su
ejecucin.
Hay tres posibles situaciones en las que se ejecutar el planificador del sistema operativo:
El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su
naturaleza, resulta en una transicin al estado bloqueado. Este es el caso de las llamadas read(),
write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al
planificador para que decida que otro proceso se asignar al procesador.
Si el proceso que se encuentra en el estado activo excede el tiempo mximo de asignacin, en
caso de que lo hubiere.
Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su
cdigo.
Adems, algunos sistemas operativos disponen de un estado terminado en el que los procesos pasan
antes de terminar su ejecucin.
En el caso del ncleo de Linux, existen tres tipos de estados bloqueado y dos estados terminado:

23

Planificador de procesos
Qu es el planificador de procesos?
El planificador de procesos (process scheduler, en ingls) es la parte del sistema operativo que se
encarga de seleccionar a qu proceso se asigna el recurso procesador y durante cunto tiempo.
Qu funciones tiene el planificador de procesos?
El planificador de procesos tiene como funciones principales:
Llevar el control del estado de cada proceso.
Decidir qu proceso usar el procesador y durante cuanto tiempo, para ello emplear un cierto
criterio en base al cual tomar las decisiones. Si implementa multiprogramacin, deber
emplear un criterio que evite que un proceso monopolice el procesador.
Asignar el procesador al proceso, restableciendo el contexto de la ejecucin del proceso por
donde fuere. El contexto de la ejecucin se encuentra almacenado en el PCB del proceso
asignado.
Retirar el procesador al proceso, salvando el contexto de la ejecucin del proceso, para poder
restablecerlo posteriormente una vez que vuelva a ser asignado. El contexto de la ejecucin se
almacenar en el PCB del proceso retirado.
El planificador de procesos es software, por tanto, requiere emplear el recurso procesador para ejecutar
su cdigo.

24

Ejemplo
Para la siguiente configuracin de procesos:
Proceso Pa: Llega en el instante de tiempo 0. Realiza una llamada al sistema bloqueante cada 1
unidad de tiempo, la operacin bloqueante se resuelve tras 2 unidades de tiempo. Para finalizar
su ejecucin requiere 4 unidades de ejecucin.
Proceso Pb: Llega en el instante de tiempo 1. Para finalizar su ejecucin requiere 4 unidades de
ejecucin.
Suponga que el proceso Pa tiene mayor prioridad que el proceso Pb, por tanto, el planificador
debe de dejar paso al proceso Pa siempre que ste est en estado preparado.
La evolucin de la asignacin del procesador que realizara el planificador es la siguiente:

Comportamiento de los procesos


Tipos de procesos
Un proceso, segn su comportamiento, se puede catalogar en dos tipos:
Procesos interactivos: Son procesos cuyo comportamiento est limitado por operaciones de
Entrada/Salida (I/O-bounded, en ingls). Este tipo de proceso realiza operaciones de
Entrada/Salida con frecuencia. Por tanto, el proceso suele pasar a estado bloqueado al poco

25

tiempo de estar asignado al procesador. Un ejemplo de este tipo de proceso es un editor de texto
que solicita datos del teclado de manera continuada.
Procesos por lotes: Son procesos cuyo comportamiento est limitado por el procesador
(processor-bounded, en ingls). Un ejemplo es un conversor de formato de vdeo MPG, este
proceso ejecuta cdigo de manera continuada hasta que el planificador decida retirarle el
procesador. Por oposicin, un proceso por lotes es un proceso no interactivo.

Esta categorizacin debe entenderse como gradual, es decir, un proceso presenta un


comportamiento interactivo en mayor o menor grado, o incluso su comportamiento puede variar a lo
largo del tiempo, presentando un comportamiento interactivo inicialmente para, posteriormente,
adoptar un comportamiento no interactivo.

En este ejemplo, podemos decir que el proceso Pa muestra un comportamiento interactivo, ya que
bloquea mucho, mientras que el proceso Pb muestra es un proceso por lotes, ya que emplea el
procesador hasta que el planificador se lo retira.

Bloque de control de procesos


Para llevar a cabo la gestin de un proceso, es necesario que el sistema operativo guarde cierta
informacin necesaria. Para ello, existe un registro especial que se conoce como el bloque de control
del proceso BCP, o PCB en ingls (Process Control Block).
26

El BCP es creado por el Sistema operativo cada vez que aparece un nuevo proceso. Los procesos son
conocidos para el sistema operativo y por tanto elegibles para competir por los recursos del sistema
slo cuando existe un BCP activo asociado a ellos. Cuando el programa termina, el BCP es eliminado
para dejar espacio libre en el registro, y usarlo para almacenar otros BCP.
El bloque de control de procesos difiere mucho de un sistema a otros, pero existen contenidos
comunes:
Identificador del proceso: Identificar de forma unvoca al proceso en el sistema, generalmente
se emplea un entero sin signo que se denomina PID (Process IDentifier)
Estado del proceso para el planificador de procesos: preparado, activo o bloqueado.
Contexto de la ejecucin: valor de los registros del procesador, bits de estados, etc. Esto es,
cada vez que se ejecuta el planificador y se realiza una conmutacin de procesos, la informacin
sobre en qu lugar se encontraba la ejecucin del proceso se encuentra guardada aqu, as como
el lugar en el que se par la ejecucin del anterior proceso (cada una en su respectivo BCP).
Aspectos relacionados con la administracin de memoria: tales como el espacio de
direcciones y la cantidad de memoria asignada a un proceso.
Aspectos relacionados con la administracin de ficheros: tales como los ficheros con los que
el proceso est actualmente operando.
Los procesadores en los que el proceso puede ejecutarse: en caso de soportar el sistema
multiprocesador.
En el caso de un sistema operativo tipo UNIX: el proceso padre de dicho proceso y la
relacin de procesos hijos.
Estadsticas temporales: Tiempo de lanzamiento del proceso, tiempo en estado activo, etc.

Conmutacin de procesos
La conmutacin de procesos es la operacin que consiste en retirar el procesador a un proceso para
asignrselo a otro. La conmutacin se produce por cuatro razones:
1. Un proceso agota el tiempo mximo asignado al procesador, por tanto, se debe dar paso a otro
proceso para garantizar que la multiprogramacin es llevada a cabo apropiadamente.
27

2. Un proceso est pendiente de un evento externo, por tanto, pasa a estado bloqueado haciendo
uso de la llamada al sistema bloqueante. El planificador debe asignar el procesador a otro nuevo
proceso de entre los que estn en estado preparado.
3. Que termine la ejecucin del proceso en cuestin.
4. Que haya una interrupcin en la ejecucin.
Los pasos que se siguen son los siguientes:
1. Pasar a modo privilegiado.
2. Guardar el contenido de los registros del hardware en el PCB (el llamado contexto de la
ejecucin).
3. Actualizar el estado del proceso en el PCB (el estado ha pasado de activo a bloqueado o
preparado).
4. Si se produjo una interrupcin, atenderla.
5. Seleccionar un nuevo proceso.
6. Restaurar el contexto de ejecucin del nuevo proceso seleccionado. En el caso de que el nuevo
proceso no hubiese estado en el contexto de la ejecucin deber inicializarse.
7. Pasar a modo no privilegiado.

El tiempo de conmutacin se considera una penalizancin, ya que si realizamos muchas conmutaciones


el rendimiento decrece y esto da al usuario la sensacin de que sus actividades van a saltos. Para
optimizar esto hay que evitar conmutaciones innecesarias, empleando para ello criterios de seleccin lo
ms eficientes posibles.

28

Hilos
Un hilo es un "proceso ligero", es decir, una lnea de ejecucin. En general, el planificador de procesos
da el mismo tratamiento a los hilos y a los procesos, pero la conmutacin de hilos es menos costosa que
la conmutacin de procesos.
Los procesos inicialmente parten con un nico hilo, aunque el sistema operativo ofrece llamadas al
sistema para crear y destruir hilos. Puedo hacer uso de estas llamadas al sistema desde el propio cdigo
del programa.
Cuando se crea un hilo, se le indica qu cdigo se quiere que ejecute. Distintos hilos, de un mismo
proceso, comparten espacio de memoria.
Veamos un ejemplo diseado para un solo procesador:
[[Archivo:Uso_del_procesador_hilos.svg]]
Con multiprocesamiento podemos ejecutar diferentes procesos a la vez. Si tenemos uno solo podemos
desdoblarlo en hilos, usando tcnicas de programacin apoyadas en APIS (como POSIX threads).
Para aumentar su eficiencia, un programa en ejecucin debe crear tantos hilos como el doble del
29

nmero de procesadores del los que disponga el sistema. Por ejemplo: 4 hilos para un programa
ejecutado con 2 procesadores.
Las principales ventajas del uso de hilos son:
*'''Menor penalizacin''' en cuanto a conmutacin. Ya que slo se produce un salto en la ejecucin de
cdigo del proceso, no interviene el planificador de procesos.
*Dos hilos de un mismo proceso '''comparten memoria''' aprovechando mejor los recursos y eliminando
los mecanismos de comunicacin necesarios para soluciones implementadas en varios procesos.
*Con un solo procesador es posible que una lnea de proceso haga uso de una llamada al sistema
bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro
proceso externo, ahorrando as tiempo de conmutacin asociado a la ejecucin del planificador de
procesos.

= Ejemplo =
El siguiente es un cdigo en C de ejemplo en el que se muestra la creacin de dos hilos. Se hace uso de
la llamada al sistema ''sleep'' que hace que el proceso pase a estado bloqueado durante N segundos.
Ntese que al compartir la variable ''a'', ambos hilos modifican su valor.
<source lang="c">
#include <stdio.h>
#include <pthread.h>
int a = 10;
void *codigo_hilo1(void *arg)
{
sleep(10);
a = a - 2;
30

printf("Soy el hilo 1 y la variable a vale %d\n", a);


return NULL;
}
void *codigo_hilo2(void *arg)
{
sleep(5);
a++;
printf("Soy el hilo 2 y la variable a vale %d\n", a);
return NULL;
}
int main(void)
{
pthread_t hilo1, hilo2;
pthread_create(&hilo1, NULL, codigo_hilo1, NULL);
pthread_create(&hilo2, NULL, codigo_hilo2, NULL);
pthread_join(hilo1, NULL);
pthread_join(hilo2, NULL);
}
</source>
Este ejemplo se compila en un terminal escribiendo: '''gcc archivo.c -lpthread'''

31

Planificacin de procesos
Todo planificador de procesos emplea uno o varios criterios (scheduling policy, en ingls) que
determinan el criterio de seleccin del proceso que emplear el procesador.
Aspectos para disear un buen criterio de planificacin
Adems de ofrecer una alta tasa de transferencia (throughput) y una baja latencia (latency), es deseable
que un planificador implemente las siguientes caractersticas:
Repetitividad : con cargas de trabajo similares(cantidad de procesos a atender) , el procesador
debe tener comportamientos similares.
Predecibilidad : hace referencia al tiempo de terminacin de un proceso para cierta carga de
trabajo, que debe ser similar para cargas de trabajo parecidas.
Eficiencia : debe tomar decisiones rpidas para aumentar el rendimiento.
Reduccin del nmero de conmutaciones : de nuevo, para aumentar el rendimiento y reducir
la penalizacin asociada.
Atencin de prioridades: uso de criterios de seleccin basados en prioridades
Degradacin uniforme del rendimiento: a mayores cargas de trabajo el rendimiento debe
degradarse uniformemente.
Capacidad de respuesta instantnea: los tiempos de espera para atender a un proceso deben
ser aceptables de cara al usuario, generalmente <100ms para seres humanos.
32

ndices de evaluacin
Cmo se evala un criterio de planificacin?
En base a los siguientes parmetros:
Throughput (tasa de transferencia, en castellano), indica la cantidad de procesos en estado
activo por unidad de tiempo. Un throughput alto es un indicador de un buen planificador (se
mide en nprocesos/segundo).
Latencia, indica el tiempo que tarda un planificador de procesos en seleccionar qu proceso
pasa a estado activo. Si el planificador toma mucho tiempo en decidir qu proceso pasa a estado
activo, se dice que la latencia ser alta (se mide en segundos).
Un buen planificador ofrecer un throughput alto y una latencia baja.
Adems, existen otros ndices que nos permiten evaluar el planificador:
Tiempo de ejecucin (tejecucin): Unidades de tiempo que requiere el proceso para finalizar su
ejecucin.
Tiempo de terminacin (Tterminacin): Diferencia entre el instante de lanzamiento y el instante
de terminacin.
Tiempo perdido: T-t . Es el tiempo durante el cual un proceso no est asignado al procesador.
Tiempo de inactividad: Tiempo durante el cual el procesador est ocioso (idle, en ingls), es
decir, que no tienen ningn proceso asignado.
Tiempo del sistema: Tiempo empleado por el planificador para la conmutacin de procesos.

33

Tiempo de espera: Tiempo desde el instante de lanzamiento hasta que el proceso pasa a estado
preparado (se suele despreciar).
ndice de penalizacin:

. Indica que un proceso ha tardado x-1 veces

ms en ejecutarse que si hubiera tenido el procesador en exclusividad y sin que se hubiese


producido ningn bloqueo. Ntese que el ndice de penalizacin crece rpidamente para
procesos cuyo tiempo de ejecucin es pequeo, mientras que para procesos con tiempo de
ejecucin mayores, lo hace de manera ms suave.

Suponga el siguiente ejemplo, en el que hay dos procesos Px y Py, para ilustrar los ndices definidos:
<

indica que el proceso est preparado

>

indica que el proceso ha finalizado su ejecucin

indica que al proceso se le ha retirado el procesador

indica la ejecucin del planificador para la conmutacin


|

|--->

Px

<---|---$

Py

<--->

planificador

|___|___|___|___|___|___|___
0

6
tiempo ->

Para el proceso Px:


t = 3 : Indica que el proceso Px requiere 3 unidades de tiempo para ejecutarse.
T = 4 : unidades de tiempo desde que se lanza hasta que se finaliza el proceso Px
T-t = 1 : unidades de tiempo durante la cual el proceso Px no est asignado al procesador, por
tanto, no progresa en su actividad.
x = 4/3 = 1.34 : el proceso Px ha tardado un 34% de tiempo ms en ejecutarse que si lo hubiera
tenido en exclusividad (al tener que haber que compartido el procesador con Py).
34

En el ejemplo anterior, los tiempos de espera y del sistema se suponen despreciables (en la prctica no
lo son, aunque son muy pequeos con respecto a los ilustrados).

Criterios de planificacin
Mtodos no apropiativos
El procesador es asignado al proceso hasta fin de ejecucin. Suele darse en sistemas operativos
monoprogramables y sistemas de tiempo real. En los mtodos no apropiativos, si el proceso se bloquea
o entra en estado bloqueado, el procesador quedar sin uso durante todo ese tiempo, pues estaba
dedicado/reservado para se proceso.
Estocstico
Se selecciona aleatoriamente el proceso a ser asignado al procesador. No cumple varios aspectos de
diseo de un buen planificador, como repetitividad o predecibilidad. Es un criterio de planificacin
terico que sirve de referencia, si se emplea un criterio de planificacin que ofrece resultados peores
que la planificacin de procesos estocstica, entonces es que no se trata de un buen criterio de
planificacin.
No se ofrece un ejemplo, puesto que para un conjunto de procesos existen tantas trazas de ejecucin
como posible combinaciones aleatorias.

Con conocimiento del futuro


En base al conocimiento del futuro se asignan los procesos. Se trata tambin de un criterio de
planificacin terico. Si un criterio de planificacin se acerca al criterio de planificacin con
conocimiento de futuro, entonces es que se trata de un buen planificador.
35

Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Datos del

_H0_|_0__|_1__|_3__|_6__|_7__|

problema

_t__|_3__|_5__|_2__|_3__|_1__|

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese momento
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<---|---|---|---|xxx|xxx|xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|
Pc|---|---|---<xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pd|---|---|---|---|---|---<---|---|---|---|---|xxx|xxx|xxx>---|---|---|---|---|---|
Pe|---|---|---|---|---|---|---<---|---|---|xxx>---|---|---|---|---|---|---|---|---|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Clculos

_t__|_3__|_5__|_2__|_3__|_1__|

de tiempos

_T__|_3__|_9__|_2__|_8__|_4__|

z = ndice de penalizacin

_z__|_1__|_9/5|_1__|_8/3|_4/1|

36

En este ejemplo, al conocer los tiempos en los que llegar cada proceso, y el tiempo de proceso,
podemos buscar la forma de asignarlos de forma que, por ejemplo, consigamos la mnima penalizacin.

Por orden de llegada (First In, First Out: FIFO)


Se selecciona el proceso por orden de llegada al sistema, cuando un proceso est preparado se aade al
final de la cola y se ejecuta segn el orden de incorporacin. Su principales ventajas son su facilidad de
implementacin, consume muy poco tiempo de procesador (casi ninguno) y su orden de complejidad,
O(1). Su desventaja es que los procesos de corta duracin pueden quedar a la espera de procesos muy
prolongados, as que presentarn un alto ndice de penalizacin.
Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Datos del

_H0_|_0__|_1__|_3__|_9__|_12_|

problema

_t__|_3__|_5__|_2__|_5__|_5__|
< = lanzamiento del proceso
> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese

momento
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<---|---|xxx|xxx|xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|
Pc|---|---|---<---|---|---|---|---|xxx|xxx>---|---|---|---|---|---|---|---|---|---|
Pd|---|---|---|---|---|---|---|---|---<---|xxx|xxx|xxx|xxx|xxx>---|---|---|---|---|
Pe|---|---|---|---|---|---|---|---|---|---|---|---<---|---|---|xxx|xxx|xxx|xxx|xxx>
--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
t 0

10

11

12

13

14

15

16

17

18

19

20

37

____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Clculos

_t__|_3__|_5__|_2__|_5__|_5__|

t = tiempo de ejecucin

de tiempos

_T__|_3__|_7__|_7__|_6__|_8__|

T = tiempo de terminacin

_z__|_1__|_7/5|_7/2|_6/5|_8/5|

z = ndice de penalizacin

El siguiente, el ms corto (Shortest Job First: SJF)


Se selecciona el proceso que requiera menos tiempo de ejecucin de entre todos los que estn listos
para ejecutarse. Se necesita conocer con antelacin el tiempo de ejecucin de cada proceso, algo que es
muy difcil en muchas ocasiones. Para procesos largos puede presentar un ndice de penalizacin
elevado: Si se tienen muchos procesos cortos, el de mayor duracin puede quedar en espera
indefinidamente. Otro inconveniente es que todo trabajo corto que llegue cuando ya ha comenzado un
trabajo largo tiene un gran retraso. Su orden de complejidad es O(n).
Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Datos del

_H0_|_0__|_1__|_3__|_9__|_12_|

problema

_t__|_3__|_5__|_2__|_5__|_5__|

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese momento
& = se ejecuta el planificador
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<---|---|---|---|xxx|xxx|xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|
Pc|---|---|---<xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pd|---|---|---|---|---|---|---|---|---<---|xxx|xxx|xxx|xxx|xxx>---|---|---|---|---|
Pe|---|---|---|---|---|---|---|---|---|---|---|---<---|---|---|xxx|xxx|xxx|xxx|xxx>
planif&---|---|---&---|---&---|---|---|---|---&---|---|---|---|---&---|---|---|--&
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|

38

Clculos

_t__|_3__|_5__|_2__|_5__|_5__|

de tiempos

_T__|_3__|_9__|_2__|_6__|_8__|

z = ndice de penalizacin

_z__|_1__|_9/5|_1__|_6/5|_8/5|

Basado en ndice de penalizacin

Se selecciona el proceso que tendr el ndice de penalizacin

de mayor valor.

Este mtodo puede producir aplazamientos de ejecucin de procesos,pero no son indefinidos. Su orden
de complejidad es O(n).
Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Datos del

_H0_|_0__|_1__|_3__|_7__|_6__|

problema

_t__|_3__|_5__|_4__|_3__|_5__|

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese momento
& = se ejecuta el planficador
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<---|---|xxx|xxx|xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|
Pc|---|---|---<---|---|---|---|---|xxx|xxx|xxx|xxx>---|---|---|---|---|---|---|---|
Pd|---|---|---|---|---|---|---<---|---|---|---|---|xxx|xxx|xxx>---|---|---|---|---|
Pe|---|---|---|---|---|---<---|---|---|---|---|---|---|---|---|xxx|xxx|xxx|xxx|xxx>
planif.&--|---|---&---|---|---|---|---&---|---|---|---&---|---|---&---|---|---|---&
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Clculos

_t__|_3__|_5__|_4__|_3__|_5__|

de tiempos

_T__|_3__|_7__|_9__|_13_|_11_|
z(3)|_1__|_7/5|_1__|____|____|

39

z(8)|_1__|_7/5|_9/4|_4/3|_7/5|
z(12)|_1__|_7/5|_9/4|_8/3|11/5|

z = ndice de penalizacin

z(15)|_1__|_7/5|_9/4|_8/3|14/5|
z(20)|_1__|_7/5|_9/4|_8/3|14/5|

Mtodos apropiativos
El planificador puede retirar el procesador en cualquier momento al proceso activo. Se emplea
fundamentalmente en sistemas operativos multiprogramables.

Con mtodos apropiativos, la decisin de planificacin tiene lugar si:


El proceso activo pasa a estado bloqueado.
El proceso activo termina su ejecucin.
Se lanza un nuevo proceso.
El proceso activo agota el tiempo mximo de asignacin del procesador (vese Turno
Rotatorio).

El siguiente, el ms corto (Shortest Job First: SJF)


Se selecciona el proceso que requiera menos tiempo de ejecucin. Si hay un proceso en estado
preparado que requiere menos tiempo de ejecucin del que le falta al actual, se le retira el procesador al
actual proceso y se le asigna al nuevo. Su orden de complejidad es O(n), pero, a diferencia del no
apropiativo, cuando entra un proceso en la lista de procesos, se ejecuta cdigo de planificador. Con este
mtodo los procesos ms largos se ven perjudicados, pues se puede retrasar tanto su tiempo de inicio,
como el de finalizacin.

40

Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Datos del

_H0_|_0__|_1__|_4__|_6__|_12_|

problema

_t__|_3__|_5__|_1__|_8__|_3__|

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese momento
$

indica

la

ejecucin

del

planificador

para

retirar

un

proceso y establecer otro segn el criterio


& = se ejecuta el cdigo del planificador
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|xxx|xxx>---$---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<---|---|xxx|---|xxx|xxx|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|
Pc|---|---|---|---<xxx>---|---|---|---|---|---|---$---|---|---|---|---|---|---|---|
Pd|---|---|---|---|---|---<---|---|---|xxx|xxx|xxx|---|---|---|xxx|xxx|xxx|xxx|xxx>
Pe|---|---|---|---|---|---|---|---|---|---|---|---<xxx|xxx|xxx>---|---|---|---|---|
Plani.|---&---|---&---&---&---&---|---|---&---|---|---&---|---|---&---|---|---|---|
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Clculos

_t__|_3__|_5__|_1__|_8__|_3__|

de tiempos

_T__|_3__|_8__|_1__|_14_|_3__|

z = ndice de penalizacin

_z__|_1__|_8/5|_1__|14/8|_1__|

41

Por prioridades
Se establecen ndices de prioridad a cada proceso:
ndice esttico: Establecido por el usuario. En el caso de sistemas operativos tipo Unix, se
dispone de una ndice denominado nice value cuyos valores estn entre -20 (mxima prioridad)
y 19 (mnima prioridad).
ndice dinmico: Establecido por el planificador, inicialmente basado en el ndice esttico,
despus se va recalculando en base a las observaciones que realiza el planificador sobre el
comportamiento de los procesos, aumentndola cuando un proceso est a la espera o
disminuyndola cuando tiene adjudicado el procesador.
El mtodo funciona de la siguiente manera: El planificador mantiene ordenada la cola de procesos
preparados, segn prioridades decrecientes. Si el proceso en ejecucin se bloquea, el planificador
selecciona el primero de la lista. Cuando un proceso pasa a la situacin de preparado, comprueba si su
prioridad es mayor que la del proceso activo. En tal caso, suspende la ejecucin de ste, colocndolo al
principio de la cola de preparados, y elige al recin llegado; si no, lo inserta en la cola segn su
prioridad. Cuando hay varios procesos con la misma prioridad se pueden aplicar diversos criterios,
como seguir el orden de llegada a la cola de preparados, o el que necesite menos tiempo para acabar
entre otros.

42

El orden es siempre O(n).


Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|
Datos del

_H0_|_0__|_1__|_2__|_3__|

problema

_t__|_2__|_4__|_2__|_7__|

p = prioridad esttica

_p__|_0__|-20_|_4__|_10_|

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese momento
$

indica

la

ejecucin

del

planificador

para

retirar

un

proceso y establecer otro segn el criterio


& = se ejecuta el cdigo del planificador

|---$---|---|---|---$---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|---|---|---|---|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<xxx|xxx|xxx|xxx>---$---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pc|---|---<---|---|---|---|xxx|xxx>---|---|---|---|---|---|---|---|---|---|---|---|
Pd|---|---|---<---|---|---|---|---|xxx|xxx|xxx|xxx|xxx|xxx|xxx>---|---|---|---|---|
Plani.|---&---&---&---|---&---&---|---&---|---|---|---|---|---|---&---|---|---|---|
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|
Clculos

_t__|_2__|_4__|_2__|_7__|

de tiempos

_T__|_6__|_4__|_6__|_12_|

z = ndice de penalizacin

_z__|_3__|_1__|_3__|12/7|

43

Turno rotatorio
Turno rotatorio estricto (Round Robin: RR)
En este criterio, todo proceso es asignado al procesador durante un tiempo establecido denominado
quantum, tras el cual se le retira y se asigna a otro proceso rotatoriamente. De esta manera, los procesos
acceden al procesador por turnos.
El tamao del quantum es fundamental para determinar el comportamiento de este criterio de
planificacin. Si el quantum empleado es pequeo, por ejemplo de 10 ms, suponiendo que la
conmutacin de procesos requiere 10ms, el 50% del tiempo se emplear el procesador para ejecutar el
cdigo que permite conmutar entre procesos. Sin embargo, si el quantum empleado es grande, por
ejemplo de 5 s, la latencia ser mayor, degradando la experiencia del usuario que notar como sus
procesos progresan a saltos, puesto que, en el peor de los casos, hasta pasados 5 s no se le asignar el
procesador a otro proceso .
Si un proceso bloquea antes de consumir su quantum se le retira el procesador y se aade al final de la
cola. Esto beneficia a los procesos por lotes, cuyo comportamiento est limitado por el procesador, pues
se pasan ms tiempo asignados al procesador.
Puesto que el reparto del procesador es estricto, los procesos recin lanzados deben acceder al
procesador lo antes posible, por tanto, se les da oportunidad de ejecucin por orden de llegada por
delante de los procesos en la cola de procesos preparados. De esta manera, se evita que los procesos
recin lanzados queden postergados indefinidamente.
Este criterio se puede implementar con una cola, de manera que el orden de complejidad en la seleccin
del proceso que pasa a estado activo es O(1). Ntese que a mayor nmero de procesos preparados,
mayor tiempo tardar un proceso en volver a pasar a estado activo.

44

Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|
Datos del

_H0_|_0__|_1__|_2__|_3__|

problema

_t__|_2__|_4__|_2__|_7__|

quantum = 1 unidad de tiempo

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese momento
$

indica

la

ejecucin

del

planificador

para

retirar

un

proceso y establecer otro segn el criterio

|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|---|---|---|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<xxx|---|---|---|xxx|---|---|xxx|---|xxx>---|---|---|---|---|---|---|---|---|
Pc|---|---<xxx|---|---|---|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|
Pd|---|---|---<xxx|---|---|---|xxx|---|xxx|---|xxx|xxx|xxx|xxx>---|---|---|---|---|
$ $---$---$---$---$---$---$---$---$---$---$---$---$---$---$---$---|---|---|---|---|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|
Clculos

_t__|_2__|_4__|_2__|_7__|

de tiempos

_T__|_5__|_10_|_5__|_12_|

z = ndice de penalizacin

_z__|_5/2|10/4|_5/2|12/7|

45

Turno rotatorio con compensacin


Es una variante del anterior. Para no perjudicar a los procesos cuyo comportamiento est limitado por
operaciones de entrada/salida, se reinsertan en la cola en proporcin al tiempo consumido. Es decir, que
si un cierto proceso ha consumido el 25% de su quantum, se reinserta en el 25% de la cola, contando
desde el principio (dispondr de otro quantum completo). Este tipo de criterio tiene un problema y es
que se pueden posponer indefinidamente algunos procesos si hay varios procesos que bloqueen.
Hay que tener en cuenta que:
Cuando un proceso consume su quantum pasa al final de la cola de preparados.
Un proceso en estado bloqueado se inserta en la cola de preparados una vez que pasa el tiempo
de bloqueo.
Ejemplo:
|_Pa_|_Pb_|_Pc_|_Pd_|

Pa y Pc bloquean cada 1 unidad de tiempo

Datos del

H0_|_0__|_1__|_2__|_3__|El bloqueo se resuelve tras 2 unidades de

problema

t__|_2__|_4__|_2__|_7__|

quantum = 2 unidad de tiempo

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese momento
$

indica

la

ejecucin

del

planificador

para

retirar

un

proceso y establecer otro segn el criterio


|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|---|---|---|---|---|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<xxxxxxx|---|---|---|---|---|xxx|xxx>---|---|---|---|---|---|---|---|---|---|
Pc|---|---<---|xxx|---|---|---|xxx>---|---|---|---|---|---|---|---|---|---|---|---|
Pd|---|---|---<---|xxx|xxx|---|---|---|---|xxxxxxxxxxxxxxxxxxx>---|---|---|---|---|
$ $---$---|---$---$---$---|---$---$---|---$---|---$---|---$---$---|---|---|---|---|
-|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|

46

Clculos

_t__|_2__|_4__|_2__|_7__|

de tiempos

_T__|_7__|_9__|_6__|_12_|

z = ndice de penalizacin

_z__|_7/2|_9/4|_6/2|12/7|

Turno rotatorio con quantum dependiente del nmero de procesos


Otra variante se trata de emplear un quantum proporcional al nmero de procesos que haya en estado
preparado. De esta forma se obtiene una progresin ms uniforme, y por tanto una mejor experiencia
para el usuario. Sin embargo, esto aumenta el nmero de conmutaciones entre procesos. Para evitar la
degradacin del rendimiento por un exceso de conmutaciones, se establece un mnimo de manera que el
quantum no puede ser menor a ste.

Colas multinivel
En este tipo de criterio se mantienen mltiples colas con los procesos en estado preparado. Los
procesos se clasifican en las colas segn sus caractersticas, cada cola recibe un tratamiento distinto.
Un ejemplo sera el siguiente, compuesto de cuatro colas:
1. Esta primera cola es para procesos que poseen menor tiempo de ejecucin, son los gestores de
interrupcin y los gestores de dispositivos (drivers). Hay que tomar los datos y almacenarlos en
memoria lo antes posible para poder recoger ms, aunque se posponga el procesamiento de
dichos datos.
2. En esta cola se almacenan los procesos del servidor, tales como : proceso administrador de
memoria, administrador de ficheros, administrador de red, etc.
3. Esta cola esta reservada a los procesos de usuario (procesos tiles para el usuario). Esta se
divide a su vez en dos colas:
1. Cola de procesos interactivos, limitados por E/S.
2. Cola de procesos por lotes, limitados por el procesador.
Las colas tienen prioridad segn su nmero, por ejemplo mientras que haya procesos preparados en la
primera cola, no se mira la segunda. Esto puede dar lugar a que si hay muchos procesos de gestin de
dispositivos se degrade la eficiencia del sistema.
La primera cola esta implementada con una FIFO(no apropiativo), mientras que las colas 2 y 3 se basan
en un sistema de RR (turno rotatorio).

47

Colas multinivel con realimentacin (feedback)


Es una variante de las colas multinivel en las que los procesos pasan de una cola a otra segn su
comportamiento, de manera que:
Los procesos interactivos tienen ms oportunidades de emplear el procesador.
Los procesos por lotes disponen del procesador durante ms tiempo.
Los procesos se asignan al procesador por turnos rotatorios, empleando un quantum dependiente de la
cola en la que se encuentren. Los procesos que consumen el quantum asignado completamente un
nmero determinado de veces pasan a colas en las que se asignan quantum mayores. Ntese que los
procesos que no consumen su quantum muestran un comportamiento interactivo. Para no discriminar a
los procesos que se encuentran en las colas con quantum menores, se les dan ms oportunidades de
ejecucin.
Por ejemplo, en un sencillo planificador de colas multinivel con realimentacin compuesto por dos
colas:
En la primera cola se le asignan un quantum de 2 unidades de tiempo a los procesos.
En la segunda cola se le asignan un quantum de 1 unidad de tiempo a los procesos.
Si un proceso no consume el quantum asignado dos veces, pasa a la cola en la que en la se le asignan
quantum de 1 unidad de tiempo.
Para que los procesos interactivos no salgan perjudicados, en aras de hacer un reparto del procesador
ms equitativo, se le dan dos oportunidades de ejecucin a los procesos situados en la cola con
quantum de 1 unidad de tiempo. De esta manera, los procesos de la primera cola reciben una
oportunidad de ejecucin con un quantum de 2 unidades de tiempo y los de la segunda reciben dos
oportunidades de ejecucin con un quantum de 1 unidad de tiempo.

48

Ejemplo:
Pa y Pc bloquean cada 1 unidad de tiempo
El bloqueo se resuelve tras 2 unidades de tiempo
Colas multinivel:

1. Procesos interactivos (quantum = 1 unidad de tiempo)


2. Procesos por lotes

(quantum = 2 unidad de tiempo)

Inicialmente todos los procesos van a la cola 2


Los procesos que no consuman su quantum al menos una vez pasan a la cola 1
Las colas implementan turno rotatorio estricto.
Siempre que haya procesos en la cola 1, debe ser atendidos de manera preferente
frente a la cola 2.
____|_Pa_|_Pb_|_Pc_|_Pd_|
Datos del

_H0_|_0__|_1__|_2__|_3__|

problema

_t__|_2__|_4__|_2__|_7__|

< = lanzamiento del proceso


> = finalizacin del proceso
x = indica que el proceso est asignado al procesador en ese
momento
$ = indica la ejecucin del planificador para retirar un
proceso y establecer otro segn el criterio
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pa<xxx|---|---|xxx>---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pb|---<xxxxxxx|---|---|---|---|---|xxxxxxx>---|---|---|---|---|---|---|---|---|---|
Pc|---|---<---|---|xxx|---|---|xxx>---|---|---|---|---|---|---|---|---|---|---|---|
Pd|---|---|---<---|---|xxxxxxx|---|---|---|xxxxxxxxxxxxxxxxxxx>---|---|---|---|---|
$ $---$---|---$---$---$---|---$---$---|---$---|---$---|---$---$---|---|---|---|---|
--|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
t 0

10

11

12

13

14

15

16

17

18

19

20

____|_Pa_|_Pb_|_Pc_|_Pd_|
Clculos

_t__|_2__|_4__|_2__|_7__|

de tiempos

_T__|_4__|_9__|_6__|_12_|

z = ndice de penalizacin

_z__|_4/2|_9/4|_6/2|12/7|

49

Planificadores de sistemas operativos existentes


Planificador de Linux 2.6
Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de
procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).
Posee un mapa de bits (140 bits), 1 bit para cada prioridad en la que implementan distintas estructuras
SCHED_FIFO y SCHED_RR ambas para tiempo real y el resto SCHED_OTHER. Esta ultima
estructura posee el nmero de procesos preparados y dos colas, una para los procesos pendientes y otra
para los que ya han consumido su quantum. Cuando un proceso solo consume una parte de su quantum
es insertado al final de la cola de pendientes con lo que le queda de su ventana de tiempo(es decir, si ha
consumido el 25% la siguiente vez que sea asignado al procesador solo tendra el 75% del quantum), y
si consume totalmente su tiempo de asignacin al procesador este pasa a la cola de consumido hasta
que este totalmente vaca la cola de pendientes. (Esto se hace para compensar los procesos ms
interactivos)
Esquema de estructura de SCHED_OTHER:
struct{
int num_procesos_preparados
cola pendientes
cola consumido_quantum
}

Planificador Mac Os X (Darwin)


La planificacin en el kernel de Mac OS X esta basada en cuatro listas de ejecucin, cada una de ellas
con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en funcin de sus
requerimientos, dependiendo de la poltica en concreto que se utilice en el sistema. En general, es
posible manejar estas prioridades mediante los procedimientos definidos en el estndar de llamadas
POSIX. Con lo que podemos decir, que se trata de un criterio de planificacin en colas multinivel
mezclado con prioridades. Algo parecido al planificador SCHED_OTHER de Linux.
Las cuatro listas de ejecucin que maneja el planificador de Mac OS X, son:
50

Planificador de Windows
El planificador utiliza un sistema de multi-cola ordenadas por prioridades. Son 32 niveles de
prioridades (de 0 a 31) que se dividen de la siguiente forma:
- Niveles 16 a 31: Tiempo Real
- Niveles 1 a 15: Variable
- Nivel 0: Reservado para el sistema

El planificador utiliza Round Robin para recorrer las distintas colas. Tiene un quantum fijo que por
defecto valdr q=2 o q=12, dependiendo de si es un SO de servidor o de usuario. El quantum se puede
cambiar entre estos dos valores a travs del sistema.
Windows utiliza este sistema de planificacin desde Windows NT. Si quieres saber mas del sistema de
planificacin de Windows puedes leer el libro Windows Internals[1](PDF), donde se explica el
funcionamiento y las caracteristicas del todo el SO.

51

You might also like