miércoles, 17 de febrero de 2010

Manual: Arwinss (II)

 

A estas alturas,y tras leer la primera parte, ya podemos hablar sobre subsistemas sin que nadie salga corriendo.

Dejamos varias preguntas sin contestar, asi que vamos con ellas,y con algunas mas. Al actual Subsistema de ReactOS le llamaremos Win32Ros.

Resumiendo:

ARWINSS es un subsistema,que al igual que el actual Win32Ros, se encarga de entender y hablar con las aplicaciones Windows.

¿Pero cual es la razon de “perder el tiempo” creando otro Subsistema que hace lo mismo?

 

Crear un segundo subsistema desde cero(y más aún,uno tan grande como el Win32) es una locura.Por eso no estamos creando un nuevo subsistema.

 

¿No estáis creando un nuevo Subsistema?No entiendo nada…

 

Es hora de entrar en materia.Abrochaos los cinturones.

winehq_logo_glass Como comentamos en la anterior entrada, Wine ha creado un subsistema Win32 capaz de hacer que una aplicación de Windows se pueda comunicar con el kernel Linux. Para ello ha implementado “su propio subsistema” Win32 y añadido algunos hacks.

Por ejemplo, ha añadido el ntoskrnl.exe dentro del subsistema.El ntoskrnel.exe en Windows está fuera del subsistema,incluso más,fuera del Modo Usuario, incluso más,es el Corazón del Modo administrador.En la analogía con el edificio, estaría en una de las primeras plantas.Por eso comenté en la anterior entrada, que hacer que una aplicación de un Sistema Operativo funcione sobre otro,era algo complejo y “sujeto a las limitaciones impuestas por los vecinos de las plantas inferiores”.En este caso Wine se ha visto obligado a añadir el ntoskrnl.exe y otros apartamentos de los niveles bajos de Windows en el subsistema.Son pequeños hacks debido a la gran diferencia de las arquitecturas NT y Linux.

 

¿Porqué lo de “su propio subsistema”?

 

Porque es bastante importante.Wine ha decidido que su subsistema (llamémosle WINe32) se comporte igual que el original de Microsoft(de lo contrario las aplicaciones no funcionarían en Wine).Sin embargo, sus funciones no siguen las directrices marcadas por Microsoft.

 

¿Directrices marcadas por Microsoft?

 

Aunque poca, existe documentación de como ciertas funciones están creadas.O el nombre de las variables.O como una funcion llama a otra que a su vez llama a otra que a su vez llama a la siguiente(a esto se le denomina Cadena de llamadas).Pues Wine “pasa” de seguir las cadenas de llamadas que la (poca) documentación de Windows indican, y siguen sus “propias” cadenas de llamadas,sus propias estructuras,e incluso su propia lógica.Un ejemplo, imagínate que Microsoft define la multiplicación como: 2x8= 2+2+2+2+2+2+2+2=16

Y que Wine define la multiplicación como: 2x8=8+8=16

Efectivamente el resultado es el mismo, pero la lógica es distinta.(Esto es un ejemplo chorra)

 

¿Y eso es bueno o malo?

 

Regular. La parte mala es que no está “clavando” sus cadenas de llamadas.Y esto puede dar lugar a “posibles” incompatibilidades.La mejor manera de ser 100% compatible es seguir las mismas cadenas de llamadas, usar las mismas estructuras,etc…que Windows.De lo contrario, podemos de pronto toparnos con Bugs debidos a una incorrecta aplicación de la lógica, y que pueden llevar a una completa reescritura del código.

La parte buena, es que es tu propio código(por lo que es perfectamente comprensible) y que no tienes que perder tiempo investigando como lo ha implementado Windows.

 

¿Y como es el actual Win32ROS en ReactOS?

 

El actual Win32ROS intenta clavar las cadenas de llamadas,intenta usar las estructuras de Windows y la forma en la que son manejadas.De hecho, el trabajo actual de los desarrolladores de este subsistema es reescribir aquellas partes del código que no siguen al 100% las directrices de Windows.

Por eso, actualmente en ReactOS no se utiliza todo el código de Wine, sino solo aquel que sigue las directrices de Microsoft.Queremos un sistema 100% compatible con las aplicaciones.

 

¿Y que tiene que ver Wine con Arwinss?

 

Como hemos dicho, Wine implementa un subsistema propio que sigue sus propias directrices llamémoslo “WINe32”.A este subsistema se le han añadido varios hacks para hacerle funcionar en Linux.

La pregunta que se nos plantea es: ¿Podríamos hacer uso de este subsistema “WINe32” en ReactOS?Por un lado, este subsistema se encontraría mas cómodo en una arquitectura NT que en una arquitectura Linux.Por otro lado no necesitaría esos Hacks(como el del ntoskrnl.exe) para funcionar.

Arwinss es por lo tanto un subsistema que nace “casi totalmente” de WINe32.

¿Como afecta esto al proyecto y a la compatibilidad?

 

Actualmente Reactos (con su Win32Ros) tiene una compatibilidad con aplicaciones menor que Linux+Wine.

Esto se debe a que Win32ROS es mucho más dificil de crear(cada vez que se implementa algo hay que hacer una profunda investigación de sobre como lo hace Windows) y por lo tanto se encuentra a un nivel inferior a Wine.

Si pudieramos hacer un rápido Port de “WINe32”,podríamos tener automáticamente una compatibilidad similar a la que actualmente tiene Linux+Wine. Este es el proyecto Arwinss.

Dejaremos para una siguiente entrada(habrá Manual Arwinss(III) ) unas gráficas comparativas sobre como afectará la inclusión de Arwinss al desarrollo(y compatibilidad) del proyecto.

 

 

¿Dejar al usuario la capacidad de decisión?

 

Como hemos dicho,la idea es la de incluir ambos subsistemas Win32ROS y Arwinss en ReactOS.De modo que el usuario puede decidir si usar uno u otro.Lógicamente,por defecto, estará activo el que mayor compatibilidad con aplicaciones demuestre. El objetivo real es que los testeadores puedan comprobar de manera sencilla el comportamiento de ambos ante una misma aplicación.

 

 

¿Como afectará esto a…los desarrolladores?

 

Si bien Arwinss promete ser un gran salto adelante de compatibilidad,todos los desarrolladores están de acuerdo en que el futuro pasa por mejorar y reparar los bugs de nuestro actual Win32ROS. Una de las ventajas de Arwinss (en cuanto al desarrollo) es la sencillez de actualización,y del hecho de tener que despreocuparnos del Modo Usuario(que casi completamente provendría de Wine)y poder centrarnos en la compatibilidad de Drivers. Mientras (y ya teniendo un Sistema Operativo realmente usable) nuestros actuales desarrolladores del Modo Usuario,ya sin presión,pueden dedicarse a reparar/reescribir/mejorar nuestro Win32ROS.

 

 

¿Como afectará esto a …los testeadores?

 

La inclusión de estos dos subsistemas van a obligar a los testeadores a trabajar casi el doble. Cada vez que se instale una aplicación,se arrancará con Win32ROS y luego con Arwinss.De esta manera podrán aislar mejor los bugs. SI el bug aparece en la aplicación cuando se ejecuta bajo Win32ROS pero no cuando se ejecuta bajo Arwinss, entonces el problema estará en el código fuente de Win32ROS.Pero si aparece en ambos, el problema vendrá derivado de la zona común: El Modo Administrador.

 

¿Como afectará a ….los usuarios?

 

El objetivo de la creación de arwinss es poder ofrecer cuanto antes un Sistema Operativo que haga honor a la parte “Operativa” del mismo.De esta manera podremos atraer muchos mas usuarios,e incluso (¿por que no?)alguna empresa que quiera mostrar su respaldo al proyecto. En definitiva: resultados, que es lo único que realmente le importa al usuario final.

 

 

¿Cual es el estado actual de Arwinss?

 

Arwinss todavía no forma parte de ReactOS,y sigue su desarrollo en un branch del arbol principal.Arwinss está demostrando mejoras evidentes en varias de las aplicaciones que normalmente hemos testeado,e incluso ha sido capaz de ejecutar aplicaciones que hasta el momento eran “incompatibles” con nuestro actual subsistema.En la próxima entrada mostraremos algunas capturas al respecto ;)

Sin embargo, a Arwinss aún le queda camino por recorrer antes de su inclusión en el trunk. Existen varios bugs graves que deben ser resueltos, y que podéis ver AQUI.La lista de cosas por hacer(la TODO list) está casi completada,lo que indica que queda poco para ver a Arwinss funcionando.

8 comentarios:

  1. hola:

    Pero si dejan al usuario la capacidad de elegir el subsistema lo mas seguro es que no elija ninguno o se vaya por el de default, claro hablamos de un usuario normal que no tiene idea de sistemas operativos, el nomas quiere que funcionen sus programas, yo creo que hay que hacer que arwinss supere al sistema por ahora y lo reemplace algun dia o bien se complemente pero que no halla necesidad de que el usuario elija, o que opinan?

    ResponderEliminar
  2. Hola :)
    Realmente durante la instalación al usuario no se le dará la posibilidad de instalar uno u otro subsistema(eso añadiría una complejidad innecesaria, o que el propio usuario se arrascara la cabeza, algo que va en contra de nuestro principio de sencillez), simplemente se instalarán ambos(son pequeñitos), y por defecto estará activo el que tenga una mayor compatibilidad con aplicaciones.Ya sea Arwinss o Win32Ros. Lo que se permitirá al usuario es cambiarlo desde el "Panel de Control", para que use el que más le apetezca.En general ningun usuario necesita cambiarlo,salvo que quiera testear o probar algo especial.

    ResponderEliminar
  3. ah ok, me parece muy bien asi, por cierto ya pude instalar mis primeras aplicaciones en reactos y veo que la conexion a internet funciona bien, ya pude navegar a traves de firefox (2), creo que entonces el problema es con ftp entonces, ojala lo corrigan mas adelante, gran trabajo con reactos.

    ResponderEliminar
  4. Como en las mejores novelas, no puedo esperar a leer el último capítulo de esta serie. Y es que lo que necesita ReactOS, como muy bien apuntáis, es un empuje en usabilidad. Que ReactOS demuestre su gran potencial, y no sea visto como la eterna promesa, será la mejor publicidad para poder atraer a más desarrolladores y, lógicamente, usuarios.

    Muchas gracias por vuestra dedicación a este blog.

    ResponderEliminar
  5. por cierto para cuando el subsistema de win16?, ademas seria practico poder correr aplicaciones linux asi como asi, pues mucho software genial solo existe para este sistema operativo.

    ResponderEliminar
  6. Manuel, hacer un subsistema win16 sería para aplicaciones como MS Office 97 no aplicaciones Linux, es otro mundo diferente. Existen programas que hace posible correr aplicaciones Linux en ReactOS.

    ResponderEliminar
  7. me referia a que seria bueno que reactos de manera nativa pudiera correr aplicaciones linux, y que tambien pudiera correr aplicaciones win16 de manera natural mediante subsistemas, podria ser eso posible?, saludos.

    ResponderEliminar
  8. Raijinzrael (Hyoenmadan)4 de marzo de 2010, 16:00

    Jejeje... sobre Win16 dudo mucho que pase a corto plazo, porque para eso primero el equipo de ReactOS debe desarrollar el Subsistema NTVDM, o lo que es lo mismo, la compatibilidad con las aplicaciones de DOS, y despues sobre ese subsistema desarrollar lo que se le conoce como WoW16 (Windows on Windows-16Bits), una capa de compatibilidad que corre una version adaptada y reducida de Windows 3.1 y el api Win16, que es donde corren las aplicaciones de Win 3.X y algunas de Windows 95...

    Y sobre Linux ni hablar... en este momento la prioridad fundamental de proyecto es el Subsistema Win32.

    PD: Por cierto en la plataforma Wintel X86 NTVDM requiere que la CPU soporte el modo Virtual x86, que ya esta descartado en el modo de 64-Bits de las CPUs modernas de AMD e Intel... por lo tanto, veo poco factible de que veamos un sistema NTVDM en ReactOS... claro, al menos que se siga el metodo que empleo Microsoft en las versiones MIPS/PPC/Alpha de Windows NT, en donde usaron una version recortada del emulador SoftPC-AT, como nucleo de la NTVDM, para tener la compatibilidad MSDOS en CPUS que no eran Intel x86... no se, tal vez usando en lugar de SoftPC una version recortada y optimizada del nucleo de QEMU... aunque tal vez a muy, muuuuy largo plazo...

    ResponderEliminar