Creative Commons 3.0 RSS CSS 2.1 XHTML 1.0
Entrar  
Rexistru
Lo que pasa detrás y delantre la pantalla 
Escrito por Sumiciu el martes, 12 xunu de 2007

Esta es una traducción de este artículo sobre un vistazo muy por encima al núcleo de GNU/Linux aparecido entre los artículos de la base de conocimiento de IBM y que considero bastante importante para empezar a entender algunos detalles del S.O.




Anatomía del núcleo de Linux



El kernel de Linux es el núcleo de un sistema operativo extenso y complejo, y aunque su tamaño es enorme, esta correctamente organizado en subsistemas y capas. En este artículo, se explorará la estructura general del kernel de Linux y se conseguirá conocer sus subsistemas e interfaces del núcleo más importantes.[...]



Dado que la meta de este artículo es introducirse en el kernel de Linux y explorar su arquitectura y componentes principales, empezaremos con una vuelta rápida por la historia del kernel, después nos centraremos en la arquitectura del kernel de Linux a vista de pájaro y, finalmente, examinaremos sus subsistemas más importantes. El kernel de Linux tiene más de seis millones de líneas de código, por lo tanto, esta introducción no es exhaustiva. Los recursos ayudarán a profundizar.



Un pequeño viaje a través de la historia de Linux

Aunque podría decirse que Linux es el sistema operativo de código abierto más popular, su historia es realmente bastante corta considerando la línea temporal de los sistemas operativos. En los primero momentos de la computación, los programadores desarrollaban sobre el hardware directamente en el lenguaje que él entendía. La falta de un sistema operativo significaba que únicamente una aplicación (y por lo tanto un único usuario) podía usar una dispositivo enorme y caro de cada vez. Los primeros sistemas operativos fueron desarrollados en los años 50 para proveer de una experiencia de desarrollo más simple. Algunos ejemplos son General Motors Operating System (GMOS) desarrollado para el IBM 701 y el FORTRAN Monitor System (FMS) desarrollado por la aviación americana para el IBM 709.




En los años 60, el Instituto Tecnológico de Massachussets (MIT) y un grupo de compañías desarrollaron un sistema operativo experimental llamado Multics (Multiplexed Information and Computing Service) para la GE-654. Uno de los desarrolladores de este sistema, AT&T, abandonó Multics y desarrolló su propio sistema operativo en 1970 llamado Unics. Junto con este sistema operativo vino el lenguaje C, para el que fue desarrollado y, posteriormente, reescrito con el fin de hacer el desarrollo del sistema operativo portable.



Veinte años más tarde, Andrew Tanenbaum creo una versión de UNIX con un microkernel llamada MINIX que corría en pequeños PC. Este sistema operativo de código abierto inspiró el desarrollo inicial de Linux por parte de Linus Torvals a principios de los 90 (ver figura 1).



Linux evolucionó rápidamente para transformarse de ser un proyecto de una sola persona a un proyecto de desarrollo de extensión mundial que involucraba a miles de programadores. Una de las más importantes decisiones para Linux fue la adopción de la Licencia Pública General de la GNU (GPL). Bajo la GPL, el kernel de Linux fue protegido contra el la explotación comercial, y además beneficiado por el espacio de desarrollo del proyecto GNU. Esto permitió que aplicaciones útiles como GCC y varias shell fueran soportadas.





Introducción al kernel de Linux



Ahora, visión a grandes rasgos sobre la arquitectura del sistema operativo GNU/Linux. Puedes pensar en un sistema operativo desde dos niveles, señalados en la figura 2.




En la parte más alta está el espacio de usuario o aplicación. Aquí es donde las aplicaciones de usuario son ejecutadas. Por debajo del espacio de usuario esta el espacio del núcleo donde aparece el kernel de Linux.



También está la librería de C de GNU (glibc) que provee la interfaz de llamadas al sistema que conecta con el kernel y provee del mecanismo de transición entre las aplicaciones usuario y el núcleo. Esto es importante, ya que el kernel y las aplicaciones de usuario ocupan diferentes áreas de direcciones protegidas. Y mientras cada proceso de usuario ocupa su propio espacio de direcciones virtual, el kernel ocupa un espacio de direcciones único.



Podemos ir más allá dentro del kernel dividiéndolo en tres niveles a grandes rasgos. En lo más alto esta la interfaz de llamadas al sistema, que implementa las funciones básicas tales como read o write. Por debajo de ella, se encuentra el código del kernel, o mejor dicho, el código del kernel independiente de la arquitectura, este código es común a todas las arquitecturas de procesadores soportadas por Linux. Más abajo aún, está el código dependiente de la arquitectura, que forma lo que es más comúnmente llamado BSP (Board Support Package). Este código es específico para cada procesador y plataforma.



Propiedades del kernel de Linux



Cuando discutimos acerca de un sistema extenso y complejo, podemos enfocarlo desde varias perspectivas. Una forma acertada en la descomposición de la arquitectura es el proveer de un modo de entender mejor el código, y esto es lo que haremos aquí.



El kernel de Linux, implementa un número de atributos importantes de arquitectura. Tanto al más alto nivel, como al más bajo nivel, el kernel es dividido en un distintos subsistemas. Linux puede ser considerado también como un kernel monolítico ya que engloba dentro suyo todos los servicios básicos. Esto lo diferencia de una arquitectura de microkernel donde el kernel provee de servicios básicos tanto de comunicación, de entrada/salida, manejo de procesos y memoria y los servicios más específicos están conectados a la capa del microkernel. Cada uno tiene sus ventajas y desventajas.




A lo largo del tiempo el kernel de Linux ha conseguido eficiencia en términos de uso de memoria y CPU, así como ser extremadamente estable. Pero el aspecto más interesante de Linux, dado su tamaño y complejidad, es su portabilidad. Linux puede ser compilado para funcionar en un enorme número de procesadores y plataformas con diferentes restricciones de arquitectura y necesidades. Un ejemplo es la capacidad de Linux para correr en un procesador con MMU como en uno que no la tiene. El port uClient del kernel de Linux provee soporte para arquitecturas sin MMU.



Sistemas principales del kernel de Linux



Ahora, echaremos un vistazo a los principales componentes del kernel de Linux usando el desglose mostrado en la figura 3 como guía.



Interfaz de llamadas al sistema (SCI)



La SCI es una fina capa que provee de la capacidad de realizar llamadas a funciones desde el espacio de usuario al kernel. Tal y como se ha discutido previamente, esta interfaz puede ser dependiente de la arquitectura, incluso dentro de la misma familia de procesadores. La SCI es realmente un interesante servicio multiplexador y demultiplexador de llamadas al sistema. Puede encontrarse su implementación en ./linux/kernel, así como las porciones dependientes de la arquitectura en ./linux/arch.




Gestión de procesos



La gestión de procesos está centrada en la ejecución de los procesos. En el kernel, son llamados hilos y representan una virtualización individual del procesador (código del hilo, registros de la CPU, datos y pila). En el espacio de usuario, se suele usar el término proceso, aunque en la implementación de Linux no separa los dos conceptos (hilos y procesos). El núcleo provee una API a través de la SCI con la que se pueden crear nuevos procesos (fork, exec, o funciones POSIX), parar un proceso (kill, exit) y comunicarse y sincronizarse entre ellos (signal, o mecanismos POSIX)



La gestión de procesos es necesaria para compartir la CPU entre los hilos activos. El kernel implementa un novedoso algoritmo de planificación que opera en tiempo constante, sin tener el cuenta el numero de procesos que compiten por la CPU. Este es el planificador O(1), denotando que le lleva misma cantidad de tiempo la planificación de un sólo hilo que la de varios. El planificador O(1) también soporta multiproceso (SMP). Se pueden encontrar las fuentes de la gestión de procesos en ./linux/kernel (y los dependientes de la arquitectura en ./linux/arch).

Gestión de memoria

Otro importante recurso que es controlado por el kernel es la memoria. Por eficiencia, dada la manera en la que el hardware maneja la memoria virtual, la memoria es gestionada en lo que se llaman páginas (4kb para la mayoría de las arquitecturas). Linux incluye las definiciones para manejar la memoria disponible, así como los mecanismos hardware para el mapeo físico y virtual.

Pero la gestión de memoria es mucho más que manejar buffers de 4KB. Linux contiene abstracciones de buffers más allá de los de 4KB, como el localizador de slabs. Este esquema de manejo de memoria usa buffers de 4kb como base, pero además reserva estructuras dentro de ellos, llevando la cuenta de que páginas están completas, parcialmente usadas o vacías. Esto permite que el esquema de memoria crezca y disminuya dinámicamente según las necesidades incluso del sistema más grande.

Con varios usuarios haciendo uso de la memoria, existen ocasiones en las que la memoria disponible puede agotarse. Por esta razón, las páginas pueden ser movidas de memoria y guardadas en el disco. Este proceso se llama intercambio (swapping) ya que las páginas son intercambiadas entre la memoria y el disco duro. Se pueden encontrar más recursos sobre el manejo de la memoria en ./linux/mm



El sistema de archivos virtual




El sistema de archivos virtual (VFS- virtual file system) es un aspecto interesante del kernel de Linux ya que provee una interfaz común de abstracción para los sistemas de archivos. El VFS proporciona una capa de intercambio entre la SCI y los sistemas de archivos soportados por el kernel (ver figura 4)



En la parte más alta del VFS se encuentra un API común que contiene las abstracciones de funciones tales como open, close, read y write. En la parte más baja, están las abstracciones del sistema que definen cómo debe ser implementada la capa superior. Estas son añadidos para el sistema de ficheros dado (existen más de 50). Se pueden encontrar las fuentes del sistema de archivos en ./linux/fs



Bajo la capa del sistema de archivos está la caché del buffer, que proporciona un conjunto sencillo de funciones a la capa del sistema de archivos (independientemente del sistema de ficheros en particular). Esta capa de caché optimiza el acceso a los dispositivos físicos manteniendo brevemente información (o arriesgándose a leer de forma anticipada para que los datos estén disponibles para cuando hagan falta). Por debajo del caché del buffer están los drivers de los dispositivos, que implementan la interfaz de cada dispositivo específico.



Red



La pila de red, por diseño, sigue una arquitectura por capas modelada tras los protocolos en sí. Recordando que el Protocolo de Internet (IP) es el protocolo central de las capas de red que se sitúa bajo el protocolo de transporte (TCP). Sobre el protocolo TCP está la capa de sockets, que es llamada a través de la SCI.



La capa de sockets es la API estándar para el subsistema de trabajo en red y proporciona una interfaz de usuario para varios protocolos de red. Desde acceso a raw frames hasta las unidades de datos del protocolo IP (los PDUs), el protocolo TCP y el Protocolo de Datagrama de Usuario (UDP), la capa de sockets provee de una manera estandarizada de manejar las conexiones y mover datos entre puntos de destino. Las fuentes de red están disponibles en el kernel en ./linux/net




Drivers de dispositivos



La inmensa mayoría del código del kernel de Linux está en los drivers de los dispositivos que hacen a determinado elemento hardware usable. El árbol de código de Linux proporciona un subdirectorio para los drivers que está, a su vez, divido entre los varios dispositivos que soporta, tales como Bluetooth, I2C, de serie... Se pueden encontrar en el código en ./linux/drivers.



Código dependiente de la arquitectura

Aunque Linux es independiente de la arquitectura en la que corra, hay varios elementos que deben tenerla en cuenta para operaciones habituales y eficiencia. El subdirectorio ./linux/arch define la porción del kernel dependiente de la arquitectura contenida en un número de subdirectorios que son específicos a ella (en conjunto forman la BSP). Para un típico ordenador de sobremesa, se usa el directorio i386. Cada directorio de cada arquitectura contiene otros subdirectorios que se centran en un aspecto concreto del kernel, como el inicio, gestión de memoria...Puedes encontrar el código dependiente de la plataforma en ./linux/arch





Características interesantes del kernel de Linux



Por si la eficiencia y la portabilidad del kernel no eran suficientes, también proporciona otras características que no pueden ser clasificadas en el desglose anterior.




Linux, por ser un sistema operativo de producción y de código libre, es un buen banco de pruebas para nuevos protocolos y avances de esos protocolos. Linux soporta un gran número de protocolos de red, incluyendo el típico TCP/IP, así como la extensión para red de alta velocidad (mayor que Ethernet de 1 o 10 Gigabits). Linux también soportas protocolos como el SCTP, que proporciona características avanzadas sobre TCP (como reemplazo del protocolo del nivel de transporte).



Linux es también un kernel dinámico, soporta el añadido y eliminación de componentes software al vuelo. Esto se conoce como módulos del kernel instalables dinámicamente, y pueden ser insertados al inicio, cuando sean necesarios si un dispositivo concreto es encontrado requiriendo el módulo) o en cualquier otro momento a petición del usuario.

Un reciente avance de Linux es su uso como un sistema operativo para otros sistemas operativos (llamado hipervisor). Recientemente, se realizó una modificación en el kernel que fue llamada la Kernel based Virtual Machine (KVM). Esta modificación permitió una nueva interfaz de usuario que permite a otros sistemas operativos correr sobre un KVM-enabled kernel. Además de correr otra instancia de Linux, Windows puede ser virtualizado. La única restricción es que el procesador usado debe soportar las nueva instrucciones de virtualización.



Yendo más allá



Este artículo simplemente roza la superficie de la arquitectura del kernel de Linux y sus características y capacidades. Puedes buscar en el directorio de documentación que se proporciona con cada distribución de Linux para información detallada sobre los contenidos del kernel. No te olvides de mirar la sección de recursos al final de este articulo para información más detallada sobre algunos de los temas discutidos aquí.
11 Comentarios Temes relacionaos: Linux 

Unviáu por iiiiiii el xueves, 1 xineru de 1970

gttttttyhujuju
Unviáu por walther s zapata el xueves, 1 xineru de 1970

exelente informacion, mmuy practica para mis trabajos de la U.
no siendo mas, muchas gracias por la info!! sigan asi :)
Unviáu por dark el xueves, 1 xineru de 1970

muchas gracias por el trabajo me ha servido de mucha ayuda: Un saludo
Unviáu por louboutin uk el xueves, 1 xineru de 1970

n detallada sobre los contenidos
Unviáu por Nike blazer el xueves, 1 xineru de 1970

It is possible to locate the best Nike models and also the newest in the industry.
Unviáu por replica watches el xueves, 1 xineru de 1970

Great! Thanks for your documents, its been very helpful. Thanks again for sharing your information.
Unviáu por Replicas de relojes el xueves, 1 xineru de 1970

Réplicas de relojes y Replicas de relojes imitación desde Espana Venta online de réplicas de relojes desde Espana Relojes Replicas.Comprar Hublot, Tag Heuer, Omega, Breitling, Panerai,Relojes de imitacion relojes originales, perfumes,
Unviáu por Sjcg123 el xueves, 1 xineru de 1970

Ugg boots Sale
toms sale
nike sneakers
australia uggs outlet
pandora online
canada goose jacket outlet
reebok running shoes
new jordan releases
Air Max Femme
cheap christian louboutin
Soccer Boots Outlet nike
Nike Air Max 90
Stone Island Outlet
portafoglio michael kors
nike chaussures
Sportschuhe Nike
pandora charm bracelet sale
billige nike sko
Doudoune Moncler Solde
Ray-Ban Official Discounted Site
Doudoune Femme Pas Cher
scarpe hogan outlet
Nike Zapatos
moncler jacket sale
toms shoes outlet
Toms Shoes For Women
botas de futbol
Veste Moncler Pas Cher
nike joggesko
Moncler Jacket Womens
michael kors handbags on sale
goedkope nike air max
Chaussure Nike Pas Cher
Air Jordan News
Toms Outlet Online
nike tn pas cher
coach factory outlet online
ugg store
Air Max Sneakers
tru religion jeans
Nike Pas Cher Homme
Soldes Ugg
Nike Air 90
nike sportschuhe
canada goose jackets on sale
Anelli Pandora
womens nike air max
uggs for cheap
cheap uggs for women
Ugg Classic Tall
Oakley Outlet
Michael Kors
zapatillas running
ugg boots outlet online
Ugg Pas Cher En France
Nike Air Max Cheap
Adidas Superstar
Nike Shoes Sale Store
Vans Black Sneakers
The official UGG
Canada Goose Official Site
new pandora charms
Sheepskin Ugg Boots
Yeezy Black
chaussures nike pas cher
Air Jordan Retro Sale
Michael Kors handbag on sale
Jordan Schoenen
pandora outlet store
Jordan Sneakers For Sale
Nike Store
moncler girls
Original Ugg Boots
hogan rebel donna
abercrombie and fitch store
nike jordan shoes
Moncler Sale
ray ban wayfarer eyeglasses
Ray ban sale online
cheap nike air max
Nike Factory Store
Nike Pas Cher Femme
Ugg Homme Pas cher
Ugg Grise Pas Cher
Ugg Femme Pas Cher
Ugg Outlet Online Store
new yeezy shoes
nike mercurial soccer cleats
Cheap Stone Island Jackets
Adidas Shoes Discount Marketplace
hogan scontate
Chaussure Nike Air Max Pas Cher
Pandora Store
ugg factory outlet
Doudoune Moncler Femme Pas Cher
nike free
Canada Goose Outlet Store
Canada Goose Outlet
Canada Goose Outlet
Jordan Store
nike air max running shoes
chaussure basket homme
michael kors bags outlet
air force one pas cher
Cheap Michael Kors
Michael Kors Outlet
Ugg Pas Cher Femme
Moncler Store
Michael Kors handbag discount
sac coach soldes
adidas store
Botte Ugg Femme
moncler coats for women
ugg boots for women
adidas outlet stores online
Moncler Outlet Online
Bottes Ugg Femme Pas Cher
louboutin heels
scarpe nike
sac a main michael kors
ugg boots classic
Boty Nike Air
Pandora Beads And Charms
Nike Air Jordan 11
chaussures de foot pas cher
pandora rings
Air Max For Sale
Pandora Official Website
Boutique Ugg
zapatos de futbol nike
fitflops sale uk
Adidas Originals Superstar
zapatillas nike baratas
Air Jordan Release Date
Uggs Outlet Store
retro jordans for cheap
Nike Air Women
Ugg Noir Pas Cher
Bottes Ugg Pas Cher
Michael Kors Handbags Discount
Jordan Future
hyperdunk 2014
nike schuhe günstig
uggs for women
cheap uggs
Ugg Button
cheap air max outlet
pandora bracelet charms
prada outlet
Coach Bags On Sale
Oakley Sunglasses Cheap
huarache sneakers
ugg clearance
Nike Air Huarache For Sale
Uomo Hogan
Timberland skor
Kobe Shoes Nike
air jordan
Air Max 90
converse store
vans shoe store
ugg boots cheap
australia uggs outlet
adidas kläder
zapatilla adidas
Veste Moncler Femme
nike damenschuhe
ugg outlet online
Doudoune Moncler Pas Cher
Nike Air Max Boutique
adidas schoenen
nfl store
official NHL jerseys
nike sb stefan janoski
uggs outlet
nike air
Ugg Boots On Clearance
nike air jordan pas cher
religion store
Doudoune Moncler Site Officiel
chaussure Nike homme
Womens Ugg Boots
Air Huarache
Orecchini Pandora
pandora jewelry store
Lebron 13
canada goose sale online
Negozi Pandora
christian louboutin outlet
nike air schuhe herren
longchamp tote bag
Timberland Outlet
adidas outlet
Sneakers Nike
longchamp bags on sale
cheap real uggs
nike shoes
Nike Air Sneakers
Uggs Pas Cher Soldes
pandora beads
moncler outlet
Nike Online Store
Air Nike
Yeezy Boost Sale Online
Chestnut Ugg Boots
23 is back
newest lebron shoes
nike sportschuhe damen
0205Sjcg

Escribe'l to comentariu:

Nome:
Web personal (opcional):