miércoles, 26 de agosto de 2009

Manual: Arquitectura NT: ¿Qué es…una Arquitectura?

TRESWindows es un Sistema Operativo bastante bien conocido desde el punto de vista del usuario (dime que tu primer juego no fue el buscaminas o el solitario en alguna versión de Windows), además gracias a libros como “Windows Internals 4ª Edición” ahora puedes comenzar a comprender el comportamiento interno de Windows.

ReactOS es un sistema operativo cuyo objetivo es tener el mismo comportamiento interno que Windows, intentando alcanzarlo, ReactOS será capaz de cargar/correr Aplicaciones y Drivers diseñados para Windows.

Windows, Gnu-Linux,ReactOS o cualquier otro Sistema Operativo tienen un único objetivo desde el punto de vista del usuario: Ejecutar Aplicaciones. Y varios, desde el punto de vista del desarrollo: Crear la manera más fácil y fiable de conectar las aplicaciones con el hardware, procesar y devolver resultados.

Pero “Windows” es solo un fácil nombre para recordar. La forma en la que el SO se comporta, la forma en la que el SO procesa la información, cómo la aplicación es “procesada” y como está conectada con el hardware (para mostrar los resultados en una pantalla LCD) se llama Arquitectura, de hecho “Windows” ha seguido diferentes arquitecturas. La última es la  “Arquitectura NT”.

¿Qué es una Arquitectura?

Me gusta la idea de comparar la lArquitectura de un SO con la arquitectura de un Edificio. Imagina que eres un arquitecto, imagina que puedes construir un edificio con la forma que tu quieras pero que tienes que dar alojamiento a 100 habitantes. Para resolver este “problema” puedes decidir crear un edificio con 10 plantas y en cada planta crear 10 apartamentos(Vamos a suponer que todos son solteros ), o puedes decidir crear un rascacielos con 100 plantas y solo un apartamento en cada planta. Son dos arquitecturas completamente diferentes, pero ambas son soluciones válidas.

De la misma manera puedes tener diferentes Arquitecturas en los Sistemas Operativos,en este caso el requisito(problema a resolver) es “procesar y conectar el Hardware con el Software”, de esta manera puedes encontrarte con: la arquitectura NT, la arquitectura Mac OS X, el kernel Linux.

Y la mejor arquitectura es…

Volvamos a la idea de los edificios. Decidir hacer un rascacielos o un edificio de 10 plantas te llevará a encararte con diferentes problemas a resolver.

second Estudiemos el caso del rascacielos: Tienes un habitante en cada planta, esto significa que dicha persona solo tiene relaciones directas con el habitante de la planta superior y el habitante de la planta inferior. Así pues la planta es bastante silenciosa. Es una buena cosa si eres el arquitecto y aun mejor si eres el dueño del edificio: “Se alquilan apartamentos que ocupan una planta entera muy silenciosos”.Un buen anuncio.

Pero por supuesto tiene sus problemas,el primero: Si el habitante de la primera planta quiere ir al tejado necesitará unas buenas piernas y unos buenos sandwiches para llegar al tejado si no existe un ascensor directo.

La arquitectura de 10 plantas es otra de las posibilidades, es mucho mas barata de construir, pero hay mucho más ruido en cada planta y muchas relaciones entre cada vecino(lo que en una vecindad puede llevar a problemas). Contemos las relaciones: cada vecino de la planta 5ª tiene 9 vecinos en su planta, otros 10 vecinos sobre su cabeza y 10 más debajo de sus pies. En total: 29 relaciones directas CADA VECINO. Intenta calcular el número total de relaciones directas y compáralas con el numero de relaciones directas totales si hubieras construido el rascacielos.

Podemos inventar otra nueva arquitectura, llamémosla “Arquitectura de 1 sola planta”. Un extraño edificio que solo tiene una planta, y por lo tanto 100 apartamentos.¿Puedes calcular el número total de relaciones directas?Sí, demasiadas.But ey! Los vecinos pueden subir al tejado muy facilmente, sin ningún tipo de ascensor! Wowww….(*ejem*)

Vale,está bien.¿Por qué estoy hablando de Tejados, Vecinos,y Plantas?

Traduciendo…

La arquitectura de un SO puede ser estudiada como un conjunto de capas superpuestas, de la misma manera que un Edificio puede ser estudiado como un conjunto de Plantas superpuestas. Así podemos tener una Arquitectura con 100 capas u otra con 1 sola. Esto de momento no dice mucho, pero continuemos. Cada capa usualmente está dividida en diferentes estructuras, de la misma manera que nuestra Planta está divida en apartamentos. Y cada apartamento(perdón: estructura) tiene su propia tarea dentro de la Arquitectura. Un apartamento(perdón: estructura) procesa los gráficos,otro apartamento “habla” con el hardware,otro apartamento “habla” con la aplicación, otro apartamento “habla” con el apartamento#2 para que le haga de intermediario con el apartamento#3.

Volvamos al ejemplo del rascacielos de nuevo:

En lo más alto(el “tejado”) del rascacielos tenemos a la Aplicación, en el sótano del edificio está el Hardware, y los Apartamentos tienen que crear “un camino” para que la aplicación llegue hasta el hardware. (Al final todo termina en el microprocesador,¿no?, o accediendo al Disco Duro, o mostrando información por la pantalla)

DOS El rascacielos es el típico ejemplo de un un Sistema Operativo con excesivas capas. Una arquitectura excesivamente “capeada" tiene algunas ventajas: como programador no tienes que crear muchas relaciones directas entre las estructuras(en este rascacielos solo hay como máximo 2 relaciones directas). Esto parece fácil de controlar,y de tenerlo ordenado..pero entonces te encuentras con un problema principal: la Lentitud. La “llamada” tiene que atravesar 100 pantas.No, no hay un ascensor directo. Tal vez la “llamada” no necesita ser procesada en la planta 63,pero tiene que atravesarla simplemente para poder llegar a la planta 62.

¿Que ocurre con la arquitectura de 1-sola-planta?Esta es la típica arquitectura sin capas. Las capas son interesantes ya que reducen el numero de relaciones directas(asi como poder tener todo mucho mejor organizado).¿Calculaste el número de relaciones directas que la arquitectura de  1-sola-planta necesita?

Una arquitectura sin capas tiene una gran cantidad de relaciones directas, y es un completo desorden ya que veríamos la “llamada” yendo al Apartamento#1,de allí al Apartamento#35,luego volviendo al #12, de allí al #98… y todo esto ocurriendo en UNA ÚNICA PLANTA.

UNO Por supuesto una aplicación hace diferentes “llamadas”(“caminos”). Una “llamada” que calcula 2+2 no es lo mismo que una “llamada” que reproduce una canción.Esto significa que una llamada que calcula 2+2 necesita atravesar ciertos “apartamentos” que podrían ser diferentes(algunos seguramente serán comunes) que los “apartamentos” que tenga que recorrer la “llamada sonora”.

En la arquitectura  de 1-sola-planta (y gracias a que todos los apartamentos están en una única planta), las “llamadas” solo tienen que entrar y salir de los apartamentos necesarios y bajar por último al sótano donde está el Hardware. Ahora imagina de nuevo el rascacielos: ¡ambas llamadas tendrán que atravesar (quieran o no) las 100 plantas! Esto es tiempo desperdiciado.

Observa los dos dibujos: Están las 2 llamadas representadas, pero en diferentes arquitecturas.(Rascacielos vs 10-Plantas)

Llamada1: Naranja: Esta tiene que pararse(y ser procesada) únicamente en el Apartamento#98 y en el #4 antes de llegar al Hardware

Llamada2: Rosa: Esta tiene que visitar el #20, el #19 y el #3

Como puedes ver en la Arquitectura de  Rascacielos las llamadas tienen que atravesar todas las plantas para llegar a los Apartamentos deseados.Algo asi como que te llamen a la puerta y te digan: “Hola, quiero entrar en tu Apartamento pero solo porque necesito llegar al vecino que está debajo de tus pies.Mis disculpas”

En la de 10-Plantas, esto ocurre mucho menos,pero tambien puedes encontrar “llamadas”(mira la “Llamada1”) que atraviesan Apartamentos solo para alcanzar los del piso inferior.

Observa ademas que la Llamada1 al ir de #100 a #98 no nea cesita (esta vez) atravesar el apartamento #99.Esto es posible gracias a las “Relaciones Directas” dentro de la capa(planta).Lo mismo con #19 y #3. Por supuesto es una decisión del desarrollador si crea o no Relaciones Directas entre TODOS los apartamentos o  si solo se crean entre algunos de ellos.

Mira la llamada que va por #20,#19,#3: Es posible que 20 y 3 no tengan Relacion Directa asi que la llamada necesita pasar por 19 simplemente para ser redirigida o tal vez necesite ser procesada en dicho apartamento..r

“Entonces es mejor la arquitectura de 1-sola-planta”…

Bueno, no realmente. Imagina que el 100% de las veces necesitas al menos pasar por 2 Apartamentos. Entonces es obvio que si creas una arquitectura de 2-Plantas(recuerda que puedes colocar los apartamentos dentro de las dos plantas como tu quieras: tu eres el Arquitecto) no vas a perder tiempo por añadir esta capa extra!

Asi que, tienes que encontrar el equilibrio entre el número de Relaciones Directas(mas facil, mas claro, y lo más estructurado posible) con el rendimiento del Sistema Operativo( no demasiadas capas). Además también depende del objetivo del Sistema Operativo: Un Sistema Operativo a tiempo-real no puede tener muchas capas o perderá “demasiado tiempo” desde el punto de vista de un Sistema Operativo a Tiempo Real(cada nanosegundo cuenta).

Asi pues cada Sistema Operativo intenta aportar su propia solución a este problema de equilibrio, y por eso existen diferentes arquitecturas.

ReactOS sigue la arquitectura NT y sus capas están colocadas de la misma manera en la que la NT las tiene.

Y sí: Estamos intentando explicar la Arquitectura de ReactOS (NT). ¿Estás preparado?

Nos vemos la proxima semana ;)

2 comentarios:

  1. [...] con un edificio,siendo el programa la “azotea” del mismo, y el Hardware el “sótano”.Aquí podéis ver dicho [...]

    ResponderEliminar
  2. [...] el programa la “azotea” del mismo, y el Hardware el “sótano”.Aquí podéis ver dicho [...]

    ResponderEliminar