Está en la página 1de 13

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO

ESCUELA SUPERIOR DE TLAHUELILPAN

LICENCIATURA EN INGENIERÍA DE SOFTWARE

SISTEMAS OPERATIVOS

PRACTICAS Y TRABAJOS DE CUARENTENA

“KERNEL”

Jose Angel Ramirez Sanchez (374885)


ABRIL/2020

UAEH – Escuela Superior de Tlahuelilpan. Ex Hacienda de San Servando, s/n. Col. Centro, C.P. 42780.
Tlahuelilpan, Hgo. Tel. (01-771) 717-2000, Ext. 5502. E-mail: ing_software@uaeh.edu.mx
INDICE

INDICE..............................................................................................ii
INTRODUCCION.............................................................................3
¿Qué es Kernel?...............................................................................4
DESARROLLO.................................................................................5
Funciones del Kernel.......................................................................5
Versiones de Kérneles.....................................................................6
Estructura Kernel.............................................................................7
Tipos de Kernel................................................................................8
El Kernel de Windows.....................................................................9
El Kernel de Linux.........................................................................10
El Kernel de Android.....................................................................11
El Kernel de iOS............................................................................12
CONCLUSION................................................................................13
Bibliografía.......................................................................................13

ii
INTRODUCCION
Hoy en día todos conocen qué es Android, y es que actualmente tiene el 82% de mercado frente al resto de
sistemas operativos para móviles y tabletas. El sistema operativo es el conjunto de todo el software que hace
funcionar un dispositivo. Sin embargo, aunque el sistema operativo es importante, existe un aspecto en el que
no se suele reparar, el kernel.

Kernel se puede traducir como núcleo, y en definitiva es eso, el núcleo de un terminal. Es el que se encarga de
realizar las comunicaciones entre hardware y software, y administrar sus recursos. Entonces, se puede concluir
que, es uno de los aspectos más importantes para tener en cuenta en un dispositivo. Se trata de una pieza
fundamental en el rendimiento del teléfono, y es donde se encuentran los controladores de la pantalla, cámara,
bluetooth, Wi-Fi, audio, procesador, etc.

En la imagen se ven las capas que forman la arquitectura de Android. El kernel se usa para que los componentes
de Android, las bibliotecas y las aplicaciones funcionen sobre un entorno que no dependa del hardware.

Android tiene como su núcleo a Linux, y por muchas cabezas puede pasar la pregunta: ¿Pero Linux no es otro
sistema operativo?  Pues la respuesta es no, Linux es solamente el núcleo que usan otros sistemas operativos
para funcionar. Linux es un kernel libre y abierto, es así como cualquiera que quiera desarrollar un sistema
operativo puede usarlo como base.

3
¿Qué es Kernel?

Es la parte central o el corazón de cualquier sistema operativo. Se podría


decir que el kernel funciona como intermediaro entre el software y el
hardware, puesto que es el que recibe las órdenes de los elementos del
sistema operativo para enviarlas al procesador u otros elementos del
hardware para que se ejecuten.
El kernel es la primera capa de software donde tenemos los drivers que
controlan todos los componentes del hardware como: pantalla, cámara,
bluetooth, memoria, USB, Wi-Fi, Audio, Carga, CPU, etc.

Todo dispositivo se compone de dos grandes partes, el hardware (los componentes, las piezas) y el software (el
sistema operativo). Del óptimo entendimiento entre ambos depende el funcionamiento del dispositivo. Pues
bien, el kernel puede ser definido como el intermediario entre el hardware y el software, en tanto que el sistema
operativo envía una serie de órdenes que son recibidas por el kernel quien a su vez las envía al componente de
harware que corresponda con el fin de que sean ejecutadas. Por lo tanto, el kernel podría ser definido también
como el epicentro del sistema operativo, pues es un software que forma parte del él.

Si nos ponemos técnicos, la palabra kernel tiene su origen en la raíz


de origen germano “kern” y significa núcleo, siendo la parte la parte
del sistema operativo que se ejecuta en modo privilegiado, es decir, la
que facilita que los diferentes programas gocen de un acceso seguro a
los componentes (hardware) del equipo o dispositivo gestionando los
recursos.

En este sentido, debemos saber que en el kernel se encuentran los


drivers gracias a los cuáles podemos controlar el audio, el bluetooth,
la conectividad WiFi, la pantalla, la vcarga, etcétera en un teléfono
móvil, en una tablet o en otro dispositivo por el estilo.

Además, existen varios tipos de kernel. El sistema operativo Android hace uso del Linux Kernel con soporte a
largo plazo (LTS) que es la última versión más estable, mientras que el GNU (o GNU/Linux) es el segundo más
popular y se suele utilizar con su última versión liberada (“vainilla”), que no es la más estable. Por ello puede
parecer que Android va más atrasado, pero no es así, simplemente prefiere la última versión estable.

[ CITATION Ecu20 \l 2058 ]

4
DESARROLLO
Funciones del Kernel

Ahora sabemos que el kernel permite la comunicación entre el software y los dispositivos físicos de un
ordenador, tanto el hardware interno como la placa base, procesador, memoria y unidades de almacenamiento,
hasta aquellos que se consideran periféricos, como el ratón, teclado, monitor, llaves USB, cámaras, teléfonos,
etc.}

Además de esto, el núcleo kernel también debe hacer una gestión de la memoria RAM. La memoria debe ser
utilizada de manera eficiente, dividiéndola entre los distintos servicios y aplicaciones para que todo funcione de
forma fluida, ya que un sistema operativo actual es ‘multitarea’, por lo que se ejecutan todo el tiempo varias
aplicaciones y servicios al mismo tiempo.

Al igual que la memoria, el procesador también debe ser gestionado por el


núcleo de Linux. Actualmente tenemos procesadores con múltiples núcleos
e hilos, así que el kernel debe dividir las tareas que hace el ordenador entre
todos los núcleos de la CPU para que esas tareas se realicen correctamente
sin solaparse unas con otras.

 Administración de la memoria para todos


los programas y procesos en ejecución.
 Administración del tiempo de procesador que los programas y procesos en ejecución utilizan.
 La comunicación entre los programas que solicitan recursos y el hardware.
 Gestión de los distintos programas informáticos (tareas) de una máquina.
 Gestión del hardware (memoria,procesador,periférico, forma de almacenamiento, etc.).

[ CITATION Gus18 \l 2058 ]

5
Versiones de Kérneles

Las versiones de Windows han estado basadas en este


Kernel con más de 20 añós de edad. La versión 5.1.2600 fue
Windows XP, la 6.0.6002 fue Windows Vista, y la 6.1.7601
Windows 7. Antes hubo otros Windows Server 2008 y 2003,
y después llegaron las versiones de NT 6.2.9200 llamada
Windows 8, la 6.3.9600 o Windows 8, y finalmente la NT
10.0, también conocida como Windows 10.

La principal característica del Kernel de Windows NT es


que es bastante modular, y está basada en dos capas
principales, la de usuario y la de kernel. El sistema
utiliza cada una para diferentes tipos de programa. Por ejemplo, las aplicaciones se ejecutan en el modo usuario,
y los componentes principales del sistema operativo en el modo kernel. Mientras, la mayoría de los drivers
suelen usar el modo kernel, aunque con excepciones.

La principal característica del Kernel de Windows NT es que es bastante modular, y está basada en dos capas
principales, la de usuario y la de kernel. El sistema utiliza cada una para diferentes tipos de programa. Por
ejemplo, las aplicaciones se ejecutan en el modo usuario, y los componentes principales del sistema operativo
en el modo kernel. Mientras, la mayoría de los drivers
suelen usar el modo kernel, aunque con excepciones.

Es por eso que se refieren a él como Kernel híbrido, pero


sobre todo también porque permite tener subsistemas en el
espacio del usuario que se comunicaban con el kernel a
través de un mecanismo de IPC.
Cuando ejecutas una aplicación, esta accede al modo
usuario, donde Windows crea un proceso específico para la
aplicación. Cada aplicación tiene su dirección virtual
privada, ninguna puede alterar los datos que pertenecen a
otra y tampoco acceder al espacio virtual del propio sistema
operativo. Es por lo tanto el modo que menos privilegios
otorga, incluso el acceso al hardware está limitado, y para
pedir los servicios del sistema las aplicaciones tienen que
recurrir a la API de Windows.

[ CITATION Yub17 \l 2058 ]

6
Estructura Kernel
Cuál es la estructura de kernel

- El planificador de procesos (sched).

- El administrador o gestor de la memoria (mm).

- El sistema de archivos virtual o conmutador de sistema de archivos virtual (vfs, virtual filesystem switch).

- La interfaz de red (net).

- La comunicación entre procesos (ipc, Inter-Process Communication).

Los kernels de Windows NT o Minix son de tipo micro-kernel, caracterizado porque proveen al sistema de un
estado mínimo necesario de funcionalidad, cargando el resto de funciones necesarias en procesos autónomos e
independientes unos de otros, comunicándose con este micro-kernel a través de una interfaz bien definida. Este
tipo de estructura es más fácil de mantener y el desarrollo de nuevos componentes es mucho más simple, dando
a su vez una mayor estabilidad al sistema. Por otro lado, debido a la estructura rígida del interfaz, estos tipos de
kernel son mucho más complicados de reestructurar, y además, debido a las arquitecturas del hardware actual,
el proceso de intercomunicación dentro del micro-kernel es mucho más que una simple llamada, por lo que hace
que esta estructura sea más lenta que los kernels de tipo monolíticos o macro-kernels.

En el caso de Linux, la gran parte del kernel está escrito en C, existiendo también instrucciones en ensamblador,
aunque estas últimas se usan mayoritariamente en los procesos de arranque y en el control de co-procesador. A
continuación, se muestra una tabla con la cantidad de lineas en C y ensamblador que se usan aproximadamente
en la versión 2.0 del kernel de Linux, el cual consta de unas 470.000 lineas de código (la versión 1.0 constaba
“únicamente” de 165.000 lineas):

7
Tipos de Kernel

No necesariamente se necesita un núcleo para usar una computadora. Los programas pueden cargarse y
ejecutarse directamente en una computadora «vacía», siempre que sus autores quieran desarrollarlos sin usar
ninguna abstracción del hardware ni ninguna ayuda del sistema operativo. Ésta era la forma normal de usar
muchas de las primeras computadoras: para usar distintos programas se tenía que reiniciar y reconfigurar la
computadora cada vez.

Con el tiempo, se empezó a dejar en memoria (aún entre distintas ejecuciones) pequeños programas auxiliares,
como el cargador y el depurador, o se cargaban desde memoria de sólo lectura. A medida que se fueron
desarrollando, se convirtieron en los fundamentos de lo que llegarían a ser los primeros núcleos de sistema
operativo.

Hay cuatro grandes tipos de núcleos:

Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente


potentes y variadas.

Los micronúcleos: proporcionan un pequeño conjunto de abstracciones simples del


hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor
funcionalidad.

Los núcleos híbridos: son muy parecidos a los micronúcleos


puros, excepto porque incluyen código adicional en el espacio
de núcleo para que se ejecute más rápidamente.

Los exonúcleos: no facilitan ninguna abstracción, pero permiten el uso de bibliotecas


que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al
hardware.

[ CITATION Ecu20 \l 2058 ]

8
El Kernel de Windows

Windows NT, un Kernel para más de dos décadas

En la década de los noventa Microsoft estaba basando sus sistemas operativos en los kernel Windows 9x, donde
el código básico tenía muchas similitudes con MS-DOS. De hecho necesitaba recurrir a él para poder operar.
Paralelamente, Microsoft también estaba desarrollando otra versión de su sistema dirigido a los
servidores llamada Windows NT, que nació el 26 de julio de 1993.

La principal característica del Kernel de Windows NT es que es bastante modular, y está basada en dos capas
principales, la de usuario y la de kernel. El sistema utiliza cada una para diferentes tipos de programa. Por
ejemplo, las aplicaciones se ejecutan en el modo usuario, y los componentes principales del sistema operativo
en el modo kernel. Mientras, la mayoría de los drivers suelen usar el modo
kernel, aunque con excepciones.
Es por eso que se refieren a él como Kernel híbrido, pero sobre todo también
porque permite tener subsistemas en el espacio del usuario que se
comunicaban con el kernel a través de un mecanismo de IPC.

Cuando ejecutas una aplicación, esta accede al modo usuario, donde Windows
crea un proceso específico para la aplicación. Cada aplicación tiene su
dirección virtual privada, ninguna puede alterar los datos que pertenecen a otra
y tampoco acceder al espacio virtual del propio sistema operativo. Es por lo
tanto el modo que menos privilegios otorga, incluso el acceso al hardware está
limitado, y para pedir los servicios del sistema las aplicaciones tienen que
recurrir a la API de Windows.

El modo núcleo en cambio es ese en el que el código que se ejecuta en él tiene acceso directo a todo el
hardware y toda la memoria del equipo. Aquí todo el código comparte un mismo espacio virtual, y puede
incluso acceder a los espacios de dirección de todos los procesos del modo usuario. Esto es peligroso, ya que si
un driver en el modo kernel toca lo que no debe podría afectar al funcionamiento de todo el sistema operativo.

Este modo núcleo está formado por servicios executive, como el controlador de caché, el gestor de
comunicación, gestor de E/S, las llamadas de procedimientos locales, o los gestores de energía y memoria entre
otros. Estos a su vez están formados por varios módulos que realizan tareas específicas, controladores de
núcleo, un núcleo y una Capa de Abstracción del Hardware o HAL
La principal diferencia entre el Kernel de los sistemas operativos Windows y el de Linux está en su filosofía. El
desarrollado por el equipo de Linus Torvalds es de código abierto y cualquiera puede cogerlo y modificarlo,
algo que le sirve para estar presente en múltiples sistemas operativos o distros GNU/Linux. El de Microsoft en
cambio es bastante más cerrado, y está hecho por y para el sistema operativo Windows.

Sin embargo, al ser Microsoft una empresa y su sistema operativo el que domina el escritorio, le cuesta menos
que se asocien para trabajar con ellos implementando controladores. Eso hace, por ejemplo, que en temas de
compatibilidad de hardware Windows vaya siempre un poco por delante, por lo menos en aspectos clave como
el de los drivers de las tarjetas gráficas.
[ CITATION Yub17 \l 2058 ]

9
El Kernel de Linux

El Kernel de Linux, es el corazón del sistema operativo. Sin el Kernel, sencillamente no podríamos realizar
ninguna tarea, ya que se encarga principalmente de que el software y el Hardware de nuestro PC funcionen
correctamente y puedan interactuar entre ellos.

Identificación del Kernel


Luego de la versión 2.6, el núcleo de Linux ha sufrido ciertos cambios en su nomenclatura de identificación, ya
que antiguamente se identificaba con tres números que nos indicaban la serie, la versión y la revisión en ese
orden. Ahora, esta identificación viene dada por 4 números separados por puntos: AA.BB.CC.DD, donde:
 AA: Este número indica la versión del Kernel.
 BB: Con este número podemos saber la revisión actual del núcleo.
 CC: Nos da información sobre si el núcleo cuenta con revisiones
menores. Este número cambia cuando se añade nuevo soporte
de drivers o se adicionan nuevas características al Kernel.
 DD: Esta cifra es indicadora de actualizaciones y corrección de fallos en
el Kernel y cambia cuando se realiza una tarea de corrección.

Las principales funciones del Kernel, son las siguientes:

 Administrar la memoria RAM, para que puedan funcionar todos los programas y procesos en ejecución.
 Administrar el tiempo de procesador, que es utilizado por los procesos en ejecución.
 Gestionar el acceso y uso de los diferentes periféricos conectados al ordenador.

Todas las distribuciones de Linux vienen con un Kernel o Núcleo


integrado, los cuales pueden ser actualizados automáticamente por
nuestras distribuciones. Todos estos núcleos están basados en el
Kernel básico llamado Vanilla, suministrado directamente por
Linus Torvalds, desde los servidores de la organización Kernell.org.
En dicha dirección, podemos acceder a diferentes repositorios, en
los que puede conseguirse el Kernel Vanilla rápidamente.

Si deseamos instalar este Kernel, debemos descargarlo y


configurarlo manualmente. Es una operación un poco engorrosa,
que requiere ser usuario avanzado, por lo que si eres un usuario
novato, es mejor que actualices el Kernel mediante la aplicación automática de tu distribución favorita.

[ CITATION cul20 \l 2058 ]

10
El Kernel de Android

La realidad es que esta parte de nuestro smartphone es la que hace que funcionen correctamente todos sus
componentes. De hecho, en lo que respecta a modificación los usuarios root, suelen jugar con este apartado para
intentar sacarle más provecho a su smartphone. 

l Kernel, también conocido núcleo, es una parte fundamental del sistema operativo. En concreto, el Kernel es el
encargado de comunicar al software con el hardware de un dispositivo. Una de sus principales funciones es
traducir lo que el software pide y comunicárselo al hardware para que el sistema operativo pueda funcionar.
Estas órdenes son traducidas mediante los que conocemos como drivers, que básicamente es un “libro” con las
instrucciones para un determinado hardware. De esta manera, cámara, USB, altavoz, Wi-Fi o carga, serían
controlados por el Kernel, a través del driver.

Así mismo, el Kernel no sólo se encarga de la


comunicación entre software y hardware, sino que
tiene otras funciones más básicas y profundas. De
este modo, el Kernel también estaría encargado
de garantizar la carga y la ejecución de los
procesos, las entradas/salidas y proponer una
interfaz entre el espacio núcleo y los programas del
espacio del usuario.

En qué puede afectar el Kernel en nuestro Android


El Kernel es el encargado de gestionar los
principales parámetros de Android. De esta
manera, controlaría aspectos como la cantidad de
recursos asignados para cada proceso, gestión de la
RAM en momentos clave, bloqueo del uso del protocolo MTP del USB, entre otras. Debido al control de la
mayoría de configuraciones del smartphone, una de las principales consecuencias es la mejora de la autonomía.

Por esta razón, algunos de los usuarios roots que creen que se le puede sacar más partido a su smartphone,
crean custom Kernels que únicamente pueden ser instalados con un custom recovery y los suben a internet con
el fin de que otros usuarios se beneficien de sus mejoras. De hecho, hace unos días os hablamos de Kernel
Adiutor en las mejores aplicaciones para el root.
Así mismo, las compañías saben los puntos fuertes y débiles de sus smartphones y por eso deberíamos de tener
cuidado modificando nuestro Kernel, ya que podríamos inutilizar nuestro smartphone.

[ CITATION Ant20 \l 2058 ]

11
El Kernel de iOS

XNU es un núcleo o kernel desarrollado originalmente


por NeXT e implementado por Apple Inc. en 1996 en
su sistema operativo macOS. XNU es el acrónimo de "X is
Not Unix". Fue liberado como software libre y de código
abierto como parte del sistema operativo Darwin. Es un
núcleo híbrido, lo que significa que su arquitectura de
diseño es una combinación de arquitecturas basadas
en núcleo monolítico y micronúcleo. Está basado
en Mach 3.0 (desarrollado en la Universidad Carnegie
Mellon en 1980) y el código BSD, en especial
de FreeBSD 5.x y usa I/O Kit, un framework de controlador de dispositivos orientado a objetos que hace de
XNU un kernel diferente al de los sistemas tradicionales.

Como algunos núcleos modernos, XNU tiene una funcionalidad equivalente a un núcleo híbrido y tiene
características tanto de los núcleos monolíticos como de los micronúcleos. Intenta hacer un mejor uso de las dos
tecnologías, como la capacidad de pasar mensajes de los micronúcleos, permitiendo un mayor modularidad y
que grandes porciones del SO se beneficien de la protección de memoria. Asimismo, permite mantener la
velocidad de los núcleos monolíticos para desempeñar determinadas tareas.
Actualmente, XNU funciona en procesadores basados en ARM, x86, x86-
64 y PowerPC, tanto en modelos de un único procesador como
modelos SMP.
El corazón de XNU, Mach, fue originalmente concebido como un
micronúcleo. Como tal, es capaz de hacer funcionar la base de un sistema
operativo como procesos separados, lo que permite una mayor flexibilidad
(se podrían ejecutar varios sistemas operativos en paralelo sobre la base de
Mach), pero a menudo reduce el rendimiento debido al tiempo consumido
para cambiar del contexto kernel al contexto usuario, y al trabajo que se
deriva de mapear o copiar mensajes entre el espacio de direcciones del
micronúcleo y el de los demonios de servicios. Con Mac OS X, los
diseñadores han intentado hacer más sencillas algunas tareas, y las
funcionalidades de BSD se han implementado en espacio privilegiado
junto con Mach. El resultado es una combinación de Mach y un clásico núcleo BSD, con algunas ventajas y
desventajas de ambos.
GNU Hurd también hace uso de Mach, sin embargo, toda la funcionalidad aparte de Mach que XNU
implementa en espacio privilegiado, Hurd lo hace en espacio de usuario (los servidores o) junto con la
biblioteca de tiempo de ejecución (la biblioteca del lenguaje C). GNU Hurd es fiel a un diseño de micronúcleo.

[ CITATION Wik19 \l 2058 ]

12
CONCLUSION
Con esta práctica aprendí sobre la arquitectura del Kernel de distintos Sistemas Operativos. Se puede observar
que básicamente en cualquier Sistema Operativo el Kernel es el encargado de administrar todos los procesos
que ocurren en el sistema.

Bibliografía
culturacion. (28 de 04 de 2020). culturacion. Obtenido de https://culturacion.com/que-es-y-que-funcion-tiene-
el-kernel-de-linux/
EcuRed. (28 de 04 de 2020). EcuRed. Obtenido de
https://www.ecured.cu/Kernel#Arquitectura_del_k.C3.A9rnel_Linux
Espinosa, A. (28 de 04 de 2020). ProAndroid. Obtenido de https://www.proandroid.com/que-es-el-kernel-
como-afecta-movil-android/
FM, Y. (16 de Enero de 2017). genbeta. Obtenido de https://www.genbeta.com/a-fondo/como-es-el-kernel-de-
windows-y-cuales-son-sus-diferencias-con-el-de-linux
Gamarra, G. (04 de Enero de 2018). profesionalreview. Obtenido de
https://www.profesionalreview.com/2018/01/04/que-es-el-kernel-y-como-funciona/
Wikipedia. (13 de Septiembre de 2019). Wikipedia. Obtenido de https://es.wikipedia.org/wiki/XNU

13

También podría gustarte