Está en la página 1de 20

República Bolivariana de Venezuela

Ministerio del Poder Popular para la defensa


Universidad Nacional Experimental Politécnica de la Fuerza Armada
UNEFA

Procesos en los Sistemas


Operativos y Planificador de
Procesos
(Análisis)

Prof: Bachilleres:
Ing. Elvis Vanegas Javier Enrique Vilchez Aparicio
Ci:27.393.998
José Ángel Diaz Mosquera
Ci:30.009.440

Asignatura:
Sistemas Operativos.
6to semestre, Ing. De Sistemas.

Puerto Cabello, noviembre del 2020


Procesos en los Sistemas Operativos

Un proceso, en informática, puede entenderse informalmente como


un programa en ejecución. Formalmente un proceso es "Una unidad de actividad
que se caracteriza por la ejecución de una secuencia de instrucciones, un estado
actual, y un conjunto de recursos del sistema asociados".
Para entender mejor lo que es un proceso y la diferencia entre un programa y un
proceso, A. S. Tanenbaum propone la analogía "Un científico computacional con
mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para
un pastel de cumpleaños y una cocina bien equipada con todos los ingredientes
necesarios, harina, huevo, azúcar, leche, etc." Situando cada parte de la analogía
se puede decir que la receta representa el programa (el algoritmo), el científico
computacional es el procesador y los ingredientes son las entradas del programa.
El proceso es la actividad que consiste en que el científico computacional vaya
leyendo la receta, obteniendo los ingredientes y horneando el pastel.
Cada proceso tiene su contador de programa, registros y variables, aislados de
otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuando
este último caso sucede, el sistema operativo usa la misma región de memoria de
código, debido a que dicho código no cambiará, a menos que se ejecute una
versión distinta del programa.
Un proceso es un concepto manejado por el sistema operativo que consiste en el
conjunto formado por:
 Las instrucciones de un programa destinadas a ser ejecutadas por el
microprocesador.
 Su estado de ejecución en un momento dado, esto es, los valores de
los registros de la CPU para dicho programa.
 Su memoria de trabajo, es decir, la memoria que ha reservado y sus
contenidos.
 Otra información que permite al sistema operativo su planificación.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo,


donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida
por todos los hilos) y la información de planificación. Cada hilo consta de
instrucciones y estado de ejecución.
Los procesos son creados y destruidos por el sistema operativo, así como también
este se debe hacer cargo de la comunicación entre procesos, pero lo hace a
petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso
se denomina bifurcación (fork). Los nuevos procesos son independientes y no
comparten memoria (es decir, información) con el proceso que los ha creado.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La
diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y
en que dichos hilos comparten toda la memoria reservada para el proceso.
Contador de programa
El contador de programa (en inglés Program Counter o PC), también
llamado Puntero de instrucciones (Instruction Pointer), parte del coche
motorizado en algunas computadoras, es un registro del procesador de un
computador que indica la posición donde está el procesador en su secuencia de
instrucciones. Dependiendo de los detalles de la máquina particular, contiene o la
dirección de la instrucción que es ejecutada, o la dirección de la próxima
instrucción a ser ejecutada. El contador de programa es incrementado
automáticamente en cada ciclo de instrucción de tal manera que las instrucciones
son leídas en secuencia desde la memoria. Ciertas instrucciones, tales como las
bifurcaciones y las llamadas y retornos de subrutinas, interrumpen la secuencia al
colocar un nuevo valor en el contador de programa.

Memoria de los procesos


La memoria tiene tres funciones básicas: recoge nueva información, organiza la
información para que tenga un significado y la recupera cuando necesita recordar
algo. El recuerdo de rostros, datos, hechos o conocimientos consta de tres etapas:
codificación, almacenamiento y recuperación.

o Codificación: es la transformación de los estímulos en una representación


mental. En esta fase es muy importante la atención  y la intensidad con que
se procesan los estímulos.

o Almacenamiento: consiste en retener los datos en la memoria para


utilizarlos posteriormente. La organización de la información se realiza
mediante esquemas, unidades estructuradas de conocimiento que reúnen
conceptos, categorías y relaciones, formando conjuntos de conocimientos.

o Recuperación: es la forma en que las personas acceden a la información


almacenada en su memoria.

Estados de un proceso
El principal trabajo del procesador es ejecutar las instrucciones de máquina que se
encuentran en memoria principal. Estas instrucciones se encuentran en forma
de programas. Para que un programa pueda ser ejecutado, el sistema
operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las
instrucciones del mismo.
En un entorno de multiprogramación, el procesador intercalará la ejecución de
instrucciones de varios programas que se encuentran en memoria.
El sistema operativo es el responsable de determinar las pautas de intercalado y
asignación de recursos a cada proceso.
Los estados de un proceso obedecen a su participación y disponibilidad dentro del
sistema operativo y surgen de la necesidad de controlar la ejecución de cada
proceso. Los procesadores sólo pueden ejecutar un solo proceso a la vez,
turnándolos para el uso de este. Existen procesos no apropiativos o cooperativos
que básicamente ocupan todo el tiempo del procesador hasta que ellos deciden
dejarlo. Los procesos apropiativos son aquellos que ocupan por un período de
tiempo el procesador hasta que una interrupción o señal llega al procesador para
hacer el cambio de proceso, a esto se le conoce como cambio de contexto.
Los posibles estados que puede tener un proceso son ejecución, bloqueado y
listo:

 Ejecución, es un proceso que está haciendo uso del procesador.


 Bloqueado, No puede ejecutarse hasta que un evento externo sea llevado a
cabo.
 Listo, ha dejado disponible al procesador para que otro proceso pueda
ocuparlo.
Las posibles transiciones son 4. La primera se realiza cuando el sistema operativo
determina que el proceso no puede continuar justo en ese momento, en algunos
sistemas se puede hacer una llamada al sistema "pause" para pasar al estado
bloqueado, en Unix cuando el proceso está leyendo datos provenientes de una
canalización o de un archivo especial (terminal) y no hay entrada disponible, el
proceso se bloquea de forma automática.
Las transiciones 2 y 3 son llevadas a cabo por el planificador de procesos, siendo
que el proceso no tiene conocimiento de este. La transición 2 se da cuando el
planificador de procesos decide que el proceso ya estuvo el tiempo suficiente en
ejecución y debe dar paso a la ejecución de otros procesos (adquieran tiempo del
procesador). La transición 3 se realiza cuando todos los procesos han ocupado
tiempo del procesador y debe retomarse el primer proceso.
La transición 4 ocurre cuando se produce un evento externo por el que un proceso
estaba en espera, por ejemplo, introducir datos desde la terminal. Si no hay otro
proceso en ejecución en ese instante, la transición 3 se activa y el proceso
comienza a ejecutarse; también podría pasar al estado de "listo" y esperar un
momento para iniciar la ejecución.
Transiciones entre los estados
Veamos ahora como los procesos pueden cambiar de estados a partir de
determinados hechos. A continuación se muestra el diagrama de estados y
transiciones de los procesos:

Nuevo –> Listo: Al crearse un proceso pasa inmediatamente al estado listo.


Listo –> Ejecutando: En el estado de listo, el proceso solo espera para que se le
asigne un procesador para ejecutar. Al liberarse un procesador el planificador
(scheduler) selecciona el próximo proceso, según algún criterio definido, a
ejecutar.
Ejecutando –> Listo: Ante una interrupción que se genere, el proceso puede
perder el recurso procesador y pasar al estado de listo. El planificador será el
encargado de seleccionar el próximo proceso a ejecutar.
Ejecutando –> Bloqueado: A medida que el proceso ejecuta instrucciones realiza
pedidos en distintos componentes (ej.: genera un pedido de E/S). El proceso es
puesto en una cola de espera hasta que se complete su pedido. De esta forma, se
logra utilizar en forma más eficiente el procesador.
Bloqueado –> Listo: Una vez que ocurre el evento que el proceso estaba
esperando en la cola de espera, el proceso es puesto nuevamente en la cola de
procesos listos.
Ejecutando -> Terminado: Cuando el proceso ejecuta su última instrucción pasa
al estado terminado. El sistema libera las estructuras que representan al proceso.

Modelo de dos estados.

El modelo de estados más simple es el de dos estados. En este modelo, un


proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se
pone en estado de No ejecución. En algún momento el proceso que se está
ejecutando pasará al estado No ejecución y otro proceso se elegirá de la lista
de procesos listos para ejecutar para ponerlo en estado Ejecución.
De esta explicación se desprende que es necesario que el sistema operativo
pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa
en memoria. Además los procesos que no se están ejecutando deben guardarse
en algún tipo de cola mientras esperan su turno para ejecutar.

Modelo de cinco estados


El modelo anterior de dos estados funcionaría bien con una cola FIFO
y planificación por turno rotatorio para los procesos que no están en ejecución, si
los procesos estuvieran siempre listos para ejecutar. En la realidad, los procesos
utilizan datos para operar con ellos, y puede suceder que no se encuentren listos,
o que se deba esperar algún suceso antes de continuar, como una operación de
Entrada/Salida. Es por esto que se necesita un estado donde los procesos
permanezcan bloqueados esperando hasta que puedan proseguir. Se divide
entonces al estado No ejecución en dos estados: Listo y Bloqueado. Se agregan
además un estado Nuevo y otro Terminado.

Los cinco estados de este diagrama son los siguientes:


 Ejecución: el proceso está actualmente en ejecución.
 Listo: el proceso está listo para ser ejecutado, sólo está esperando que el
planificador así lo disponga.
 Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto
suceso, como una operación de Entrada/Salida.
 Nuevo: El proceso recién fue creado y todavía no fue admitido por el
sistema operativo. En general los procesos que se encuentran en este
estado todavía no fueron cargados en la memoria principal.
 Terminado: El proceso fue expulsado del grupo de procesos ejecutables,
ya sea porque terminó o por algún fallo, como un error de protección,
aritmético, etc.

Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. En


este modelo los estados Bloqueado y Listo tienen ambos una cola de espera.
Cuando un nuevo proceso es admitido por el sistema operativo, se sitúa en la cola
de listos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. Los
procesos suspendidos son mantenidos en una cola de bloqueados. Cuando se da
un suceso se pasan a la cola de listos los procesos que esperaban por ese
suceso.
Si existe un esquema con diferentes niveles de prioridad de procesos es
conveniente mantener varias colas de procesos listos, una para cada nivel de
prioridad, lo que ayuda a determinar cuál es el proceso que más conviene ejecutar
a continuación.

Procesos suspendidos
Una de las razones para implementar el estado Bloqueado era poder hacer que
los procesos se puedan mantener esperando algún suceso, por ejemplo una
Entrada/Salida. Sin embargo, al ser mucho más lentas estas operaciones, puede
suceder en nuestro modelo de cinco estados todos los procesos en memoria estén
esperando en el estado Bloqueado y que no haya más memoria disponible para
nuevos procesos. Podría conseguirse más memoria, aunque es probable que esto
sólo permita procesos más grandes y no necesariamente nuevos procesos.
Además hay un costo asociado a la memoria y de cualquier forma es probable que
se llegaría al mismo estado con el tiempo.
Otra solución es el intercambio. El intercambio se lleva a cabo moviendo una parte
de un proceso o un proceso completo desde la memoria principal al disco,
quedando en el estado Suspendido. Después del intercambio, se puede aceptar
un nuevo proceso o traer a memoria un proceso suspendido anteriormente.
El problema que se presenta ahora es que puede ser que si se decide traer a
memoria un proceso que está en el estado Suspendido, el mismo todavía se
encuentre bloqueado. Sólo convendría traerlo cuando ya está listo para ejecutar,
esto implica que ya aconteció el suceso que estaba esperando cuando se
bloqueó. Para tener esta diferenciación entre procesos suspendidos, ya sean listos
como bloqueados, se utilizan cuatro estados: Listo, Bloqueado, Bloqueado y
suspendido y Listo y suspendido.
Procesos en espera
Dos o más procesos pueden cooperar mediante señales de forma que uno obliga
a detenerse a los otros hasta que reciban una señal para continuar.
Se usa una variable llamada semáforo para intercambiar señales.
Si un proceso esta esperando una señal, se suspende (WAIT) hasta que la señal
se envíe (SIGNAL).
Se mantiene una cola de procesos en ESPERA en el semáforo.
La forma de elegir los procesos de la cola en ESPERA es mediante
una política FIFO.
La sincronización explícita entre procesos es un caso particular del estado
"bloqueado". En este caso, el suceso que permite desbloquear un proceso no es
una operación de entrada/salida, sino una señal generada a propósito por el
programador desde otro proceso.
Creación y terminación de procesos
Los procesos se crean mediante una llamada al sistema de “crear
proceso”, durante el curso de su ejecución se construye las estructuras de datos
que son usadas para administrar los procesos y le asigna espacio de direcciones.
Los procesos pueden ser creados por:

 El sistema operativo.
 Por otro proceso (en este caso el proceso creador se
denomina padre mientras que al proceso creado se le llama hijo).
 Por las aplicaciones de usuario.
 Por la entrada de un nuevo usuario al sistema.

Cada vez que el SO crea un proceso se procede de la siguiente manera:


 Asignar un único identificador del proceso.
 Asignar espacio para el proceso. Elementos de la imagen del proceso.
Espacio de direcciones privado, de la pila.
 Inicializar el Bloque de Control de Procesos.
 Establecer los enlaces apropiados. Colocarlo en la lista de procesos listos o
suspendidos.
 Crear otras estructuras de control.
Bloque de Control de Procesos
Cada proceso se representa en el Sistema Operativo con un bloque de control de
proceso (también llamado bloque de control de tarea).

Estado: actual del proceso.


Contador de programa: indica la
dirección de la siguiente instrucción
que se ejecutará de ese proceso.
Registros de CPU: acumuladores,
registros, índice, punteros de pila y
registros generales.
Información de planificación de
CPU: prioridad del proceso, punteros
a colas de planificación, etc.
Información de gestión de
memoria: valor de los registros de
base y límite, tabla de páginas o
tabla de segmentos.
Información de
contabilidad: tiempo de CPU,
tiempo consumido, números de
procesos, etc.
Información de estado de
E/S: dispositivos de E/S asignados a
este proceso, lista de archivos
abiertos, etc.

Terminación de un proceso 
Un proceso termina cuando ejecuta su última instrucción y pide al sistema
operativo que lo elimine. En este momento, el proceso puede devolver un valor de
estado a su proceso padre.
El sistema operativo libera la asignación de todos los recursos del proceso,
incluyendo las memorias física y virtual, los archivos abiertos y los búferes de E\S.
Razones para la terminación de un proceso:

Normal: El proceso ejecuta llamada al servicio del SO que notifica su terminación


normal.
Por tiempo excedido: Una tarea tiene asignada la CPU ejecuta el tiempo máximo
y le es requisada la CPU y pasa a la cola para competir por la nueva asignación.
Violación de límites: Proceso trata de acceder a una posición de memoria que no
le está permitida acceder.
No memoria disponible: El proceso necesita más memoria de la que el sistema
puede proporcionar.
Error de protección: El proceso intenta utilizar un recurso o archivo que no le
está permitido utilizar, o trata de utilizarlo de forma incorrecta.
 Error aritmético: Si el proceso intenta hacer un cálculo prohibido, como la
división por cero, o trata de acceder a un número mayor del que el hardware
acepta.
Tiempo máximo de espera de recurso: El proceso ha esperado más allá del
tiempo máximo especificado para que se produzca cierto suceso.
Fallo de dispositivo de E/S: Se produce un error en una operación de E/S
Instrucción no valida: El proceso intenta ejecutar una instrucción inexistente ( a
menudo como resultado de un salto para ejecutar datos en la zona de datos)
Intento de acceso a una instrucción privilegiada: El proceso intenta utilizar una
instrucción reservada para el SO.
Finalización del padre: Cuando un proceso padre finaliza, el SO puede diseñarse
para terminar automáticamente con todos sus descendientes.
Mal uso de los datos: Un elemento de dato, no está inicializado o es de un tipo
equivocado.
Intervención del operador o del SO: Por alguna razón el operador o el SO
termina con un proceso (ej.: Interbloqueo).
Solicitud del padre:  Un proceso padre tiene normalmente autoridad para
terminar con cualquiera de sus hijos.
Hilos en procesos
En sistemas operativos, un hilo o hebra (del inglés thread), proceso
ligero o subproceso es una secuencia de tareas encadenadas muy pequeña que
puede ser ejecutada por un sistema operativo.
La destrucción de los hilos antiguos por los nuevos es una característica que no
permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los
distintos hilos de ejecución comparten una serie de recursos tales como el espacio
de memoria, los archivos abiertos, la situación de autenticación, etc. Esta técnica
permite simplificar el diseño de una aplicación que debe llevar a cabo distintas
funciones simultáneamente.
Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo que
otra tarea.
Los hilos de ejecución que comparten los mismos recursos, sumados a estos
recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos
de ejecución de un mismo proceso compartan los recursos hace que cualquiera de
estos hilos pueda modificar estos recursos. Cuando un hilo modifica un dato en la
memoria, los otros hilos acceden a ese dato modificado inmediatamente.
Lo que es propio de cada hilo es el contador de programa, la pila de ejecución y el
estado de la CPU (incluyendo el valor de los registros).
El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución
siga activo. Cuando el proceso finaliza, todos sus hilos de ejecución también han
terminado. Asimismo en el momento en el que todos los hilos de ejecución
finalizan, el proceso no existe más y todos sus recursos son liberados.
Algunos lenguajes de programación tienen características de diseño
expresamente creadas para permitir a los programadores lidiar con hilos de
ejecución (como Java o Delphi). Otros (la mayoría) desconocen la existencia de
hilos de ejecución y estos deben ser creados mediante llamadas de biblioteca
especiales que dependen del sistema operativo en el que estos lenguajes están
siendo utilizados (como es el caso del C y del C++).
Listas y colas de procesos.
Los procesos, según su estado, deberán esperar por determinados eventos.
Puede suceder, que más de un proceso esté esperando por el mismo evento, es
por eso que se deben organizar en diferentes colas o listas:
• Lista de procesos del sistema (job queue): Esta será una lista especial,
porque los procesos que están en ella no esperan por nada en particular, sino que
es la lista de todos los procesos del sistema. Al crearse un nuevo proceso se
agrega el PCB a esta lista. Cuando el proceso termina su ejecución es borrado.
• Cola de procesos listos (ready queue): Esta cola se compondrá de los
procesos que estén en estado listo. La estructura de esta cola dependerá de la
estrategia de planificación utilizada.
• Cola de espera de dispositivos (device queue): Los procesos que esperan por
un dispositivo de E/S particular son agrupados en una lista específica al
dispositivo. Cada dispositivo de E/S tendrá su cola de espera, por lo que existirán
varias device queue

Comunicación entre procesos


Procesos que se ejecutan concurrentemente pueden ser procesos independientes
o cooperativos. Un proceso es cooperativo si puede afectar o verse afectado por
los restantes procesos que se ejecuten en el sistema, y es independiente si no.
Evidentemente, cualquier proceso que comparta datos con otro será cooperativo.
Veamos algunas razones por las cuales es bueno tener un entorno que permita la
cooperación de procesos:
• Compartir información. Dado que varios usuarios pueden estar interesados en la
misma información, se debe proveer un acceso concurrente a ella.
• Acelerar cálculos. Si deseamos que una determinada operación se ejecute
rápidamente, debemos dividirla en subtareas ejecutándose cada una de ellas en
paralelo. Esto consigue solo si hay múltiples CPU o varios canales de E/S.
El mecanismo que provee esto es IPC (Interprocess comunication), que permite
intercambiar datos e información
Cambio de contexto (context switch)
A la tarea de cambiar un proceso por otro en el procesador se le denomina cambio
de contexto cambio de contexto. Esta tarea implica:
• Salvar el estado del proceso (registros, información de punteros de memoria) que
está ejecutando en su PCB.
• Cambiar el estado del proceso que estaba ejecutando al que corresponda (Listo,
bloqueado o terminado).
• Cargar el estado del proceso asignado a la CPU a partir de su PCB.
• Cambiar el estado del proceso nuevo a ejecutando.

Bloque descriptor de proceso (PCB).


El proceso es representado, a nivel del sistema operativo, a través del bloque
descriptor de proceso (Process Control Block). En él, se guarda toda la
información relevante del proceso, como estado, nombre, recursos asignados,
identificador, padre del proceso (pid del proceso que lo creó), hijos del proceso
(procesos que creó), entre otros datos.

Jerarquía de procesos
En un sistema lo suficientemente sencillo es posible que todos los procesos que
podrían ser necesarios en algún momento pueden estar presentes durante la
inicialización del sistema, pero en la mayoría de los sistemas, es necesario una
forma de crear y destruir procesos, cundo se requiera durante la operación.
Desde el punto de vista macro, los procesos son las actividades claves que se
requieren para manjar y, o dirigir una organización, es necesario mostrar la
jerarquía de proceso en la siguiente grafica.
Esta jerarquía muestra cinco niveles: nivel macroproceso, nivel proceso, nivel
subproceso, nivel actividades y nivel de tareas específicas a realizar en un
proceso concreto.
Planificador de procesos
El planificador de procesos (process scheduler, en inglés) es la parte del sistema
operativo que se encarga de seleccionar a qué proceso se asigna el recurso
procesador y durante cuánto tiempo. Son Conjunto de políticas y mecanismos
incorporados al sistema operativo, a través de un módulo denominado
planificador, que debe decidir cuál de los procesos en condiciones de ser
ejecutado conviene ser despachado primero y qué orden de ejecución debe
seguirse. Esto debe realizarse sin perder de vista su principal objetivo que
consiste en el máximo aprovechamiento del sistema, lo que implica proveer un
buen servicio a los procesos existentes en un momento dado.

El planificador de procesos tiene como funciones principales:

 Llevar el control del estado de cada proceso.


 Decidir qué proceso usará el procesador y durante cuánto tiempo, para ello
empleará un cierto criterio en base al cual tomará las decisiones. Si
implementa multiprogramación, deberá emplear un criterio que evite que un
proceso monopolice el procesador.
 Asignar el procesador al proceso, restableciendo el contexto de la ejecución
del proceso por donde fuere. El contexto de la ejecución se encuentra
almacenado en el PCB del proceso asignado.
 Retirar el procesador al proceso, salvando el contexto de la ejecución del
proceso, para poder restablecerlo posteriormente una vez que vuelva a ser
asignado. El contexto de la ejecución se almacenará en el PCB del proceso
retirado.
El planificador de procesos es software, por tanto, requiere emplear el recurso
procesador para ejecutar su código.

La ejecución de un proceso consiste en una alternancia entre ráfagas de CPU y


ráfagas de E/S .
Un proceso limitado por E/S (I/O bound) es aquél que pasa más tiempo haciendo
E/S que usando la CPU (tiene ráfagas de CPU cortas) .
Un proceso limitado por CPU (CPU bound) es aquél que pasa más tiempo
computando que haciendo E/S (tiene ráfagas de CPU largas).
Tipos de planificadores
Planificador a largo plazo (planificador de trabajos): escoge los procesos que
ingresarán en la cola de listos.
Planificador a medio plazo: escoge los procesos que se sacarán/introducirán
temporalmente de/en la memoria principal (intercambio, swapping) .
Planificador a corto plazo (planificador de CPU) : escoge el proceso que se
ejecutará a continuación y le asigna la CPU.

Planificador de CPU
Escoge un proceso de entre los que están en memoria listos para ejecutarse y le
asigna la CPU al proceso elegido.
La decisión de planificación puede ocurrir:
1. Cuando un proceso pasa de ejecución a espera
2. Cuando un proceso pasa de ejecución a listo .
3. Cuando un proceso pasa de espera a listo .
4. Cuando un proceso termina .
Un planificador es no expropiativo (nonpreemptive) cuando sólo planifica en los
casos 1 y 4.
En otro caso decimos que el planificador es expropiativo (preemptive).

Despachador
El despachador es un módulo que cede la CPU al proceso elegido por el
planificador de CPU. Para ello el despachador tiene que:
 Realizar una conmutación de contexto.
 Cambiar la máquina a modo usuario (no privilegiado).
 Saltar al punto apropiado del programa para continuar con su ejecución.
El tiempo que tarda el despachador en detener un proceso y poner otro en
ejecución se denomina latencia del despachador. Debe ser lo más pequeña
posible.

Criterios de Planificación
 Utilización de la CPU: mantener la CPU tan ocupada como sea posible
(maximizar).
 Rendimiento: número de procesos que se completan por unidad de tiempo
(maximizar).
 Tiempo de retorno: tiempo transcurrido desde que se presenta el proceso
hasta que se completa (minimizar).
 Tiempo de espera: tiempo que un proceso pasa en la cola de procesos
listos esperando la CPU (minimizar).
 Tiempo de respuesta: tiempo que tarda un proceso desde que se le
presenta una solicitud hasta que produce la primera respuesta (minimizar).
Algoritmos de Planificación

Primero en llegar primero en ser servido


Conocido como FCFS (First Come First Served). Este algoritmo emplea una cola
de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando
el proceso llega es puesto en su lugar en la cola después del que llegó antes que
él y se pone en estado de listo. Cuando un proceso comienza a ejecutarse no se
interrumpe su ejecución hasta que termina de hacerlo.
Prioridad al más corto
Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecución
cambiará de estado voluntariamente, o sea, no tendrá un tiempo de ejecución
determinado para el proceso. A cada proceso se le asigna el tiempo que usará
cuando vuelva a estar en ejecución, y se irá ejecutando el que tenga un menor
tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese
aspecto emplea el algoritmo FCFS.
Round Robin
A cada proceso se le asigna un tiempo determinado para su ejecución, el mismo
tiempo para todos. En caso de que un proceso no pueda ser ejecutado
completamente en ese tiempo se continuará su ejecución después de que todos
los procesos restantes sean ejecutados durante el tiempo establecido. Este es un
algoritmo basado en FCFS que trata la cola de procesos que se encuentran en
estado de listos como una cola circular.
Planificación por prioridad
En este tipo de planificación a cada proceso se le asigna una prioridad siguiendo
un criterio determinado, y de acuerdo con esa prioridad será el orden en que se
atienda cada proceso.
Planificación garantizada
Para realizar esta planificación el sistema tiene en cuenta el número de usuarios
que deben ser atendidos. Para un número "n" de usuarios se asignará a cada uno
un tiempo de ejecución igual a 1/n.
Planificación de Colas Múltiples
El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la
cola de procesos que se encuentran en estado de listos es dividida en un número
determinado de colas más pequeñas. Los procesos son clasificados mediante un
criterio para determinar en qué cola será colocado cada uno cuando quede en
estado de listo. Cada cola puede manejar un algoritmo de planificación diferente a
las demás.

Tiempos
En la Planificación de procesos se tiene en cuenta diferentes tiempos que pueden
ser calculados, como son el "Tiempo de espera medio", el "Tiempo de retorno del
proceso" y el "Tiempo de retorno medio".
Tiempo de espera medio
Es el promedio de tiempos en que los procesos están en estado de listos. En
algoritmos FCFS este tiempo suele ser bastante largo. En algoritmos SJF para los
procesos largos este tiempo suele ser muy grande, pues se estarán ejecutando
constantemente los procesos más cortos y los más largos se encontrarán
constantemente en espera, por lo que pueden entrar en inanición. En Planificación
por prioridad los procesos de prioridad baja podrían no ejecutarse nunca. Para dar
solución a este problema el envejecimiento de un programa eleva su prioridad.
Tiempo de retorno del proceso
Es el tiempo que transcurre desde la creación de un proceso hasta que termina la
ejecución del programa que le dio lugar.
Tiempo de retorno medio
Es la suma de los tiempos de retorno de cada uno de los procesos dividida entre
la cantidad de procesos.

Planificación en Linux 
Se usan dos algoritmos: tiempo compartido y tiempo real
 Tiempo compartido

 Prioridad basada en créditos: el proceso con más créditos es el


siguiente en tomar la CPU
 Los créditos se reducen cuando ocurre una interrupción de reloj .
 Cuando el crédito es 0, se escoge otro proceso.
 Cuando todos los procesos tienen crédito 0 se asigna de nuevo crédito
para todos los procesos
 Basado en factores como prioridad e historia.

 Tiempo real

 Tiempo real blando.


 Cumple el estándar Posix.1b – dos clases.
 FCFS y RR.
 El proceso de mayor prioridad siempre se ejecuta primero.

Evaluación de los Algoritmos


 Modelado determinista: toma una carga de trabajo predeterminada y define
el rendimiento de cada algoritmo para esa carga 
 Modelos de colas
 Implementación.