Вы находитесь на странице: 1из 7

Esta es una serie de artculos introductorios acerca de lo que es el manejador de

procesos de un sistema operativo, la idea es tener un concepto muy general de lo que


hace esta parte de todo sistema operativo, sin embargo es un tema muy extenso y que
puede llegar a ser bastante complejo, por lo cual cabe aclarar que por el momento solo
trataremos los conceptos de manera muy superficial.

El manejador de procesos (tambin llamado planificador, scheduler, calendarizador


etc.) es la parte fundamental de todo sistema operativo, de hecho se puede decir que
para crear un sistema operativo bsico basta con crear cuatro componentes
fundamentales:

Planificador de procesos

Administrador de memoria

Manejador de E/S (como mnimo con controladores para video, teclado y disco)

Sistema de archivos

El manejador de procesos es el encargado, de permitir le ejecucin de los diferentes


procesos en una o varias CPU. A simple vista esta tarea es sencilla, pero esta lejos de
serlo.
El procesador es un dispositivo que ejecuta un conjunto de instrucciones y devuelve un
resultado, as que desde el punto de vista del procesador el concepto de proceso no
existe ms all de ejecutar una instruccin en cada ciclo de procesamiento; es el
sistema operativo quien determina que es un proceso en si: un conjunto de
instrucciones agrupadas con un(os) objetivo(s) especifico(s).
Cuando estamos utilizando un sistema operativo como Windows siempre tenemos la
percepcin de que hay mltiples programas ejecutndose al mismo tiempo, podemos
ver varias ventanas abiertas mientras escuchamos msica, navegamos por internet y
diligenciamos una hoja de clculo de excel, pero esto no es ms que una ilusin.
Para simplificar un poco el trabajo examinaremos la situacin cuando solo hay presente
un procesador de un nico ncleo.

Funcionamiento bsico de una CPU

La CPU, solo puede ejecutar una instruccin a la vez, pero cmo es esto?
Digamos que queremos sumar los valores 2+3 utilizando la CPU, la CPU tiene una
especie de ranuras llamadas registros algunas de estas ranuras reciben los nombres
de Ax, Bx, Cx (hay varias ms) y son utilizados por la CPU como fuente de entrada y
salida de informacin.
Lo que se hace entonces para la suma es colocar los valores a sumar en los registros,
esto es un mini ejemplo en lenguaje ensamblador:
mov AX, 2 ;poner el nmero 2 en el registro AX
add AX, 3 ;sumar al contenido de AX el valor 3, la respuesta queda en AX

Los comentarios en asm se inician con ;

Veamos estos dos pasos en el siguiente grfico (lo he expandido a 4 pasos para mayor
claridad)

Cualquier instruccin ejecutada por la CPU funciona de manera similar, utilizando los
registros como ranuras de intercambio de datos.

Qu pasa cuando es ms de una


instruccin?

El procesador posee otro registro que es un apuntador que le permite saber en que
instruccin del programa se encuentra de tal manera que cada vez que ejecuta una
instruccin el mueve al apuntador a la siguiente instruccin a ser ejecutada.

Cmo se ejecutan varios procesos?


De acuerdo al tema tratado anteriormente pudimos ver que una CPU solo puede
ejecutar una instruccin a la vez, y como es de suponerse dicha instruccin pertenece
a un proceso determinado.
Hay varias maneras de llevar a cabo la ejecucin de procesos.

Sistemas Operativos Monotarea


La CPU por si sola no puede iniciar la ejecucin de otro proceso, es el sistema operativo
es quien le dice a la CPU cuando comenzar a ejecutar un conjunto de instrucciones

determinado, sin embargo la CPU ejecutara todas las instrucciones de un proceso


hasta finalizar y solo en ese momento continuara la ejecucin del sistema operativo
(otro proceso).
Luego el OS (sistema operativo) seleccionara el siguiente proceso a ejecutar
suspendindose a si mismo hasta que el proceso finalice, despues nuevamente
volvera a seleccionar un nuevo proceso y as sucesivamente hasta que no hubiesen
procesos por ejecutar.

Cmo es que se vuelve a ejecutar el


sistema operativo cuando acaba de
terminar un proceso?
El truco es sencillo, devolvmonos a algunos sistemas mono tarea tipo DOS en sus
primeras versiones, si hacamos un programa en C este al final del main siempre tenia
la instruccin return, pues bien el compilador al compilar cdigo converta esa
expresin return en instrucciones de maquina que hacan que la siguiente instruccin a
ejecutar fuera
Una instruccin del sistema operativo, la cual est en otra porcin de memora, as que
bsicamente todo programa hecho finaliza con una instruccin para devolver el control
al sistema operativo.
Este tipo de comportamiento es el habitual en sistemas operativos mono-proceso, es
decir que solo pueden ejecutar un proceso a la vez de tal forma que todos los procesos
deben esperar su turno en una larga fila de procesos pendientes: esto tambin es
conocido como: planificacin por lotes (batch).

Si Windows funcionara de esta manera no podramos hacer nada con el pues no


podramos tener sino un programa a la vez y esto excluye de manera inevitable los
propios servicios que el sistema operativo corre en segundo plano, incluso si mandaras
un trabajo de impresin no podras hacer absolutamente nada ms hasta que el trabajo
de impresin finalice.
Esto esta muy lejos de ser el comportamiento que estamos habituados a ver, es decir
un sistema con decenas de procesos ejecutndose 'al tiempo', entonces cmo
funciona esto? bueno todo se resuelve con un truco que realiza el sistema operativo.

Sistemas Operativos Multitarea


Como su nombre lo indica 'multitarea' se refiere a que puede realizar varias tareas a la
vez, al menos eso es lo que parece.

Lo que sucede es que el sistema operativo esta hecho para no permitir a un programa
ejecutarse sino por una fraccin de tiempo muy pequea, de tal forma que en un solo
segundo muchos programas han tenido tiempo de procesamiento, es decir muchos
programas se han ejecutado en lapsos diminutos de tiempo.
El concepto es sencillo, implementarlo suele ser ms complicado pues hay muchos ms
aspectos involucrados, estudiaremos algunos.

1 Interrupcin de la Ejecucin de un
Proceso
Al ejecutarse un proceso en un sistema multitarea, este tiene la oportunidad de realizar
un conjunto indeterminado de instrucciones, lo que alcance a hacer en un tiempo
limitado, una vez ese tiempo se ha cumplido el sistema operativo debe decidir que
proceso debe continuar su ejecucin, esto lo hace teniendo en cuenta una lista de
procesos y unas listas por prioridades de procesos, donde algunos procesos tienen ms
tiempo de ejecucin que otros y tienen una prioridad mayor que les permite 'avanzar
ms rpido en la fila'. Usualmente estos procesos con prioridades ms altas hacen
parte del propio sistema o son los servicios.
El sistema operativo sabe que se ha cumplido el tiempo de ejecucin de un proceso
cuando recibe una seal de interrupcin por parte del procesador, esta seal se activa
solo cada determinado tiempo (este lapso de tiempo es llamado Quantum),
bsicamente existe un microprograma que en ese momento le permite al procesador
suspender la ejecucin y enviar el control (es decir ejecutar) al sistema operativo para
que lleve a cabo la planificacin necesaria.
Esta rutina (microprograma) se ejecuta como parte de la lgica propia del procesador,
el OS tiena la facultad de cambiar algunas cosas como por ejemplo el tiempo entre una
y otra interrupcin.
Sin embargo hay otros mecanismos que pueden generar interrupciones como por
ejemplo:

Una Seal enviada desde un dispositivo de hardware

Un proceso puede optar por suspenderse a si mismo

Hay muchas situaciones donde las dos condiciones anteriores pueden ocurrir, este es
un ejemplo tpico:

El proceso P1 se encuentra en ejecucin

En un momento determinado espera respuesta desde un dispositivo de E/S (por


ejemplo una tarjeta de red)

P1 no sabe en que momento se recibir dicha respuesta

P1 se encuentra en espera y suspende su propia ejecucin (haciendo llamado al


OS)

Ahora el sistema operativo coloca al proceso P2 en ejecucin

P2 comienza a ejecutarse durante su Quantum

P2 termina su tiempo de ejecucin

Siguen en ejecucin otros procesos P3Pn.

Pero pongmoslo ms interesante.

En un momento determinado el proceso P5 se encontraba en ejecucin

El dispositivo de red (hardware independiente) envi la respuesta que estaba


esperando P1

Esta respuesta viaja por el hardware generando una nueva interrupcin en el


procesador

El procesador devuelve el control otra vez al sistema operativo suspendiendo


inmediatamente el proceso en ejecucin

El sistema operativo, una de sus rutinas, revisa los buffer de los dispositivos de
entrada

Encuentra la respuesta que segn sus datos esperaba P1

El OS Activa inmediatamente P1 para que este contine con su ejecucin por un


nuevo Quantum de tiempo

Tenemos entonces tres maneras que permiten que un proceso suspenda su ejecucin
para que otros se ejecuten:
Interrupcin por el reloj del procesador (Quantum de tiempo)
Interrupcin por dispositivos de E/S
Auto suspensin del proceso o finalizacin del proceso.

2 Estado de la Ejecucin de un
Proceso

Ya hemos visto como es que el sistema operativo alterna entre varios procesos para
dar la impresin de que esta haciendo varias cosas a la vez, pero puede que alguno de
ustedes ya le haya surgido la pregunta
Cmo sabe el sistema en que iba mi proceso justo antes de suspenderlo?
Veamos el caso anterior (el de 2 +3) en un entorno multitarea:

En la grfica vemos al proceso P1 justo terminando de finalizar su primera instruccin,


as que como respuesta a esta instruccin el procesador dej el valor 2 en el registro
AX, luego vienen los dems procesos cada uno utilizando los registros segn sus
necesidades como se ve en la grfica:

Hasta que por alguna razn le vuelve a tocar el turno de ejecucin al proceso P1 y
ooops!!!
Cuando P1 estaba ejecutandose estaba esperando que en AX estuviera el valor 2 para
que as su suma sea 2+3, pero ahora ya el proceso P1 no tendra en los registros los
mismos valores que tenia justo antes de suspenderse.
Por otro lado el sistema operativo tambin necesita saber en que instruccin estaba la
ejecucin de P1 para continuar justo donde estaba antes de suspender su ejecucin, y
algunos otros datos ms, entonces como hace para que todo pueda continuar normal?
Como lo dije anteriormente cuando un proceso se suspende bsicamente se devuelve
la ejecucin al sistema operativo, all el sistema lleva a acabo la planificacin de
procesos y otras tareas, pero qu hace realmente?
El sistema lo primero que hace es guardar el estado del proceso en algn sitio, el
estado del proceso es una estructura en memoria que guarda:

Los valores de TODOS los registros

Los valores de las banderas del procesador (las banderas son un registro
utilizado por el procesador para indicar situaciones como divisin por cero,
overflow, signo negativo etc.)

Esto incluye el registro IP (Instruccin Pointer) que contiene un apuntador que


indica al procesador en que instruccin de cdigo va la ejecucin, y los registros
Ax, Bx, Cx, etc.

Una vez ese dato queda guardado el sistema:

Verifica cual es el siguiente proceso que debe tener un Quantum de ejecucin,


digamos el proceso P2

Lee el estado del proceso P2 y comienza a dejar las cosas en su lugar, es decir
lee los valores que deberan tener cada uno de los registros, las banderas, etc. y
establece esos valores en el procesador

Una vez todos los valores estn establecidos los ltimos valores que establece
el sistema otros registros y el registro IP

Inicia la ejecucin de P2 hasta que sea interrumpido y se contine con la labor


de planificacin una y otra vez.

Si desean ms informacin acerca de los registros los invito a consultar este Tutorial de
Assembler.
Esto es todo por el momento, los ms conocedores me perdonaran por todas las cosas
que he podido pasar por alto pero recuerden que esto es solo un post introductorio y no
pretendo detallar las cosas ms all de los conocimientos generales, de igual forma
cualquier duda o correccin que tengan es bienvenida.

Otros artculos de esta serie

Sistemas Operativos - Manejador de procesos - Fundamentos

Sistemas Operativos - Manejador de procesos - Los Procesos

Sistemas Operativos - Manejador de procesos - Los Threads

Вам также может понравиться