El Kernel consiste en la parte principal del código del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, en otras palabras, el kernel es el corazón del sistema operativo.

Cada sistema operativo tiene un tipo distinto de kernel: asi los Unix mas tradicionales como FreeBSD usan un kernel " monolitico" en el que esta todo compilado dentro, otros usan los llamados "microkernels" como el Darwin, Hurd e incluso Windows (krnl32.dll). GNU/Linux usa un kernel "modular" (vmlinuz); un núcleo bastante grande comparado con un microkernel, pero que es capaz de delegar funciones en los llamados " modulos" , partes independientes del núcleo que pueden ser incorporadas dinamicamente si hacen falta y luego descargadas si molestan. Así se pueden cargar "drivers" para hardware, firewall o funciones especiales de red (ppp, rdsi, etc) cuando se necesiten y cuando por ejemplo, se cierre la conexión a internet, liberar la memoria que usaba ese modulo.
Interrupciones
Una interrupción es un evento que altera la secuencia en que el procesador ejecuta las instrucciones. La interrupción es generada por el hardware del sistema de computo.
Cuando ocurre una interrupción:
Una interrupción puede ser iniciada específicamente por un proceso en ejecución (en cuyo caso se suele denominar trampa (trap), y se dice que esta sincronizada con la operación del proceso) o puede ser causada por algún evento que puede estar relacionado o no con el proceso en ejecución (en cuyo caso se dice que es asíncrona con la operación del proceso). Los sistemas orientados hacia las interrupciones pueden sobrecargarse. Si estas llegan con mucha frecuencia, el sistema no sera capaz de atenderlas. En algunos sistemas orientados hacia el teclado, cada tecla presionada almacena en la memoria un código de un byte y genera un interrupción para informar a la UCP que un carácter esta listo para ser procesado. Si la UCP no puede procesar el dato antes de que se presione la siguiente tecla, se pierde el primer carácter.
Despachador SCHEDULER
Su misión es asignar los procesadores centrales a los procesos. Es llamado cuando un proceso no puede seguir o puede emplearse mejor en otra parte. Se activa en las situaciones siguientes:
Para determinar el proceso mas adecuado para ser ejecutado se ordenan los procesos ejecutables de acuerdo con algun criterio de prioridad. Las prioridades de los procesos vienen dadas y por tanto no son mision del dispatcher. Se utilizara una cola ordenada de modo que en cabeza de la cola este el proceso mas adecuado, asi la mision del dispatcher es la de ejecutar el primer proceso de la cola que no este siendo ejecutado. Se puede tener en lugar de una cola, mas de una. Por ejemplo tres. Una para aquellos procesos a los que se les permiten dos segundos consecutivos de CPU. Otra para los que se les permiten 0,25 y otra para los que se les permite solo 0,02 segundos. Cada cola se sirve con el criterio de "el primero en llegar es el primero en ser servido". Las colas con menor tiempo tienen mayor prioridad. Los procesos se colocan inicialmente en la cola de menor tiempo. Si consume todo el tiempo asignado se transfiere a la siguiente cola en prioridad, asi sucesivamente. Se consigue asi que los procesos que consumen menos tiempo de procesador, reciban un proceso rapido, mientras que las tareas habituales uno mas largo.
Primitivas de Comunicación
Los procesos que se ejecutan concurrentemente pueden ser procesos independientes o procesos cooperativos. Un proceso es independiente si no puede afectar o verse afectado por los restantes procesos que se ejecutan en el sistema. Cualquier proceso que no comparte datos con ningun otro proceso es un proceso independiente. Un proceso es cooperativo si puede afectar o verse afecta-do por los demas procesos que se ejecutan en el sistema. Evidentemente, cualquier proceso que comparte datos con otros procesos es un proceso cooperativo. Hay varias razones para proporcionar un entorno que permita la cooperacion entre procesos: Compartir informacion. Dado que varios usuarios pueden estar interesados en la misma informacion (por ejemplo, un archivo compartido), debemos proporcionar un entorno que permita el acceso concurrente a dicha informacion. Acelerar los calculos. Si deseamos que una determinada tarea se ejecute rapidamente, debemos dividirla en subtareas, ejecutandose cada una de ellas en paralelo con las demas. Observe que tal aceleracion solo se puede conseguir si la computadora tiene multiples ele-mentos de procesamiento, como por ejemplos varias CPU o varios canales de E/S. Modularidad. Podemos querer construir el sistema de forma modular, dividiendo las fun-ciones del sistema en diferentes procesos o hebras Conveniencia. Incluso un solo usuario puede querer trabajar en muchas tareas al mismo tiempo. Por ejemplo, un usuario puede estar editando, imprimiendo y compilando en paralelo. La cooperacion entre procesos requiere mecanismos de comunicacion interprocesos (IPC, interprocess communication) que les permitan intercambiar datos e informacion. Existen dos modelos fundamentales de comunicacion interprocesos: (1) memoria compartida y (2) paso de mensajes. En el modelo de memoria compartida, se establece una region de la memoria para que sea compartida por los procesos cooperativos. De este modo, los procesos pueden intercambiar informacion leyendo y escribiendo datos en la zona compartida. |
No hay comentarios.:
Publicar un comentario