Diferencia entre revisiones de «Introducción a Linux/Arquitectura»

Contenido eliminado Contenido añadido
Línea 86:
Comentaba anteriormente que el primer proceso en ejecutarse el init. En realidad esto no ha sido más que una mentira con fines pedagógicos. El primer proceso en ejecutarse es el Kernel. El kernel hace de frontera entre el software y el hardware. Para nuestra CPU, el kernel es un programa de software como cualquier otro (o casi como cualquier otro) pero para el resto de procesos, init incluido, el kernel se comporta como si fuese hardware. Cuando un proceso quiere acceder al hardware no lo hace directamente, sino que se lo pide al kernel. El kernel hace de interlocutor entre procesos y hardware. Si varios procesos quieren acceder al disco duro o a Internet, el kernel asignará un tiempo a cada uno de ellos, copiará los datos que cada proceso quiere enviar y los enviará al disco duro o a la red. También es el kernel el encargado de distribuir el tiempo de CPU asignado a cada proceso. Linux es un sistema multiproceso debido a que, aun disponiendo de un único procesador, Linux es capaz de ejecutar simultáneamente varias tareas haciendo rotar el propietario de la CPU cada fracción de segundo. En realidad puede asignar el control de la CPU a un nuevo proceso entre 100 o 1000 veces por segundo, dependiendo de la potencia de la CPU. Para un ser humano da la impresión de que todas las tareas se están ejecutando de forma simultánea. Este sistema de asignación de la CPU es clave y está extremadamente estudiado y optimizado. P.ej, Linux es lo suficientemente inteligente como para saber qué procesos están a la espera de recibir un dato de internet y, mientras este dato no llegue, no le asignará el valioso tiempo de CPU.
Desde hace unos años a esta parte, los procesadores han desarrollado sistemas de ahorro de energía permitiendo disminuir la frecuencia, potencia o ciclo de trabajo de la CPU cuando no hay tareas que hacer. Linux está al tanto de este hecho y si observa que no hay aplicaciones demandando la CPU automáticamente le indica al procesador que disminuya el consumo de energía.
 
Si antes nombrábamos que los procesos están asociados a usuarios y gestionan ficheros, en realidad estos usuarios y ficheros son gestionados por el kernel. Cuando un proceso quiere acceder a un fichero, en realidad le pide al kernel que acceda al fichero y será el kernel quien le devuelva los datos que haya leido. Antes de ello el kernel comprueba el usuario y grupo asociado al proceso, comprueba a su vez los usuarios o grupos que pueden acceder a dicho fichero. Si no concuerdan, en vez de devolver el dato, devolverá un error o excepción al proceso llamante indicándole el "porque".
 
Otra labor del kernel es abstraer a los procesos del hardware real de la máquina. Un proceso 'visor de fotos' que quiera acceder al fichero /home/usuario1/FOTOS/vaciones001.png no tiene que preocuparse si dicho fichero está en un disco duro, una memoria SSD o debe ser accedido a través de la red local ya que se encuentra en otro ordenador. El kernel mediante un sistema llamado "montaje" mapea rutas lógicas de directorios, p.ej, /home/usuario1 con un dispositivo físico, p.ej, el disco duro local o un disco duro en Internet a 1000 kms. de distancia. El proceso 'visor de fotos' no se tiene que preocupar de dónde está fisicamente el fichero, sólamente de su ruta simbólica /home/usuario1/FOTOS/vacaciones0001.png.
La palabra Linux, en realidad se refiere al kernel. Los procesos normales en realidad no son Linux, son procesos desarrollados por diferentes grupos de trabajo (fundación GNU, Mozilla, empresas,...). Sin embargo es costumbre resumir, por abuso del lenguaje, como Linux a todo y cuanto se ejecuta bajo el kernel.
 
La memoria RAM de un sistema es limitada, y de nuevo el kernel se encarga de asignar memoria a los procesos. Además, de nuevo, es lo suficientemente inteligente como para saber qué procesos llevan mucho tiempo sin ejecutarse (por ejemplo un servidor de correo que lleva 10 minutos sin enviar ni recibir correos) y si la memoria RAM escasea, es capaz de mover el proceso de RAM al disco duro y asignar la memoria RAM a procesos que en un instante dado puedan hacer mejor uso de la misma.
 
'''La palabra Linux, estrictamente hablando, en realidad se refiere sólamente al kernel. Los procesos normales en realidad no son Linux, son procesos desarrollados por diferentes grupos de trabajo (fundación GNU, Mozilla, empresas,...). Sin embargo es costumbre resumir, por abuso del lenguaje, como Linux a todo y cuanto se ejecuta bajo el kernel (algo que en realidad siempre ha molestado a otros grupos de desarrollo que se ven injustamente ignorados por este hecho)'''.