Sistemas Operativos Guia
Sistemas Operativos Guia
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.
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
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:
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).
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:
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:
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 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.
smartcard.
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.
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.
Se arrancan los procesos necesarios del SO para que realice sus inicializaciones
particulares.
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
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
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.
_start:
mov eax, 4
mov ebx, 1
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
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.
17
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
----------------------
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.
22
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:
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.
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.
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.
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
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:
Suponga el siguiente ejemplo, en el que hay dos procesos Px y Py, para ilustrar los ndices definidos:
<
>
|--->
Px
<---|---$
Py
<--->
planificador
|___|___|___|___|___|___|___
0
6
tiempo ->
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.
Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Datos del
_H0_|_0__|_1__|_3__|_6__|_7__|
problema
_t__|_3__|_5__|_2__|_3__|_1__|
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.
_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
_H0_|_0__|_1__|_3__|_9__|_12_|
problema
_t__|_3__|_5__|_2__|_5__|_5__|
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|
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__|
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.
40
Ejemplo:
____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|
Datos del
_H0_|_0__|_1__|_4__|_6__|_12_|
problema
_t__|_3__|_5__|_1__|_8__|_3__|
indica
la
ejecucin
del
planificador
para
retirar
un
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
_H0_|_0__|_1__|_2__|_3__|
problema
_t__|_2__|_4__|_2__|_7__|
p = prioridad esttica
_p__|_0__|-20_|_4__|_10_|
indica
la
ejecucin
del
planificador
para
retirar
un
|---$---|---|---|---$---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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__|
indica
la
ejecucin
del
planificador
para
retirar
un
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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
Datos del
problema
t__|_2__|_4__|_2__|_7__|
indica
la
ejecucin
del
planificador
para
retirar
un
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|
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
48
Ejemplo:
Pa y Pc bloquean cada 1 unidad de tiempo
El bloqueo se resuelve tras 2 unidades de tiempo
Colas multinivel:
_H0_|_0__|_1__|_2__|_3__|
problema
_t__|_2__|_4__|_2__|_7__|
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
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