Академический Документы
Профессиональный Документы
Культура Документы
Planificador de procesos
Administrador de memoria
Manejador de E/S (como mnimo con controladores para video, teclado y disco)
Sistema de archivos
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
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.
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.
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:
Hay muchas situaciones donde las dos condiciones anteriores pueden ocurrir, este es
un ejemplo tpico:
El sistema operativo, una de sus rutinas, revisa los buffer de los dispositivos de
entrada
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:
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 las banderas del procesador (las banderas son un registro
utilizado por el procesador para indicar situaciones como divisin por cero,
overflow, signo negativo etc.)
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
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.