3) REACTOS 3.1) INTRODUCCION ReactOS (React Operating System) es un sistema operativo de código abierto destinado a lograr la compatibilidad binaria con aplicaciones de software y controladores de dispositivos hechos para Microsoft Windows NT versiones 5.x en adelante (Windows XP y sus sucesores).
3.1.1) PROYECTO REACTOS ReactOS es un avanzado sistema operativo gratuito de código abierto que provee una implementación creada de cero de un sistema operativo compatible con Microsoft Windows XP. ReactOS tiene como meta lograr compatibilidad binaria con aplicaciones y drivers de dispositivos para sistemas NT (XP, 2003) usando una arquitectura similar y proveyendo una interfaz pública completa y equivalente. ReactOS es el modelo más completo de un sistema operativo como Windows disponible libremente. Por lo tanto, los programadores podrán aprender mucho estudiando el código de ReactOS o inclusive participando en el desarrollo del mismo. ReactOS tiene y va a continuar incorporando características de nuevas versiones y cuando sea posible definirá tecnología de punta en sistemas operativos. En resumen, ReactOS trata de correr tus aplicaciones y tus dispositivos, un sistema operativo gratis para todos! Por favor, recuerden tener en mente que ReactOS 0.3.14 todavía está en estado alpha, lo que significa que no está completo aún y no se recomienda para uso diario.
3.2) ¿ORIGEN DE REACTOS? 3.2.1) DE FREEWIN95 A REACTOS RE ACTOS En 1996 un grupo de programadores y desarrolladores de software libre comenzaron un proyecto llamado FreeWin95 el cual consistía en implementar un clon de Windows 95. El proyecto estuvo bajo discusión por el diseño del sistema ya habiendo desarrollado la capa compatible con MS-DOS, pero lamentablemente esta fue una situación que no se completó. Para 1997 el proyecto no había lanzado ninguna versión, por lo que los miembros de éste, coordinados por Jason Filby, pudieron revivirlo. Se decidió cambiar el núcleo del sistema compatible con MS-DOS y de ahora en adelante basarlo en uno compatible con Windows NT y así el proyecto pudo seguir adelante con el nombre actual de ReactOS, que comenzó en febrero de 1998, desarrollando las bases del kernel, algunos drivers básicos y ha continuado con la incorporación gradual de las características que ya se encuentran en Windows.
3.2.2) ETIMOLOGÍA El nombre ReactOS fue acuñado por el fundador del proyecto Jason Filby, un desarrollador de Oracle desde Durban, Sudáfrica. El término "OS" hace referencia a "sistema operativo" ( operating inglés), y el término "React" (Reacción) se refiere a la insatisfacción del grupo con la system , en inglés), posición de monopolio de Microsoft, así como -la reacción aa - dicha situación.
3.3) ¿QUÉ ES REACTOS? 1
ReactOS es un sistema operativo Libre y de Código Abierto basado en la arquitectura Windows NT, incluyendo soporte para los drivers y aplicaciones existentes y una alternativa al sistema operativo dominante entre usuarios domésticos y servidores. Quizá sería importante comenzar diciendo aquello que ReactOS NO ES. No es un encapsulador montado sobre Linux, como lo es WINE. No tiene intención de competir con WINE; de hecho, la parte de modo de usuario de ReactOS está prácticamente toda ella basada en WINE y nuestros equipos han cooperado codo con codo en el pasado. ReactOS tampoc es "otro sistema operativo". No trata de ser una tercera alternativa, como SkyOS o cualquier otro sistema operativo. No se persigue que la gente elimine Linux y use ReactOS en su lugar; ReactOS es una alternativa para los usuarios de Windows que quieran un reemplazo de Windows que funcione tal y como lo hace Windows. A pesar de que el actual a ctual uso y disponibuilidad del código có digo fuente de ReactOS está destinado a programadores para expandirlo y mejorarlo, no se necesita ser un sólido científico para utilizarlo, y en su versión definitiva será un amigable sistema operativo. Si has usado Windows anteriormente, te encontrarás con un entorno familiar en ReactOS. El aprendizaje, si es que lo hay, debería ser mínimo, ya que ReactOS duplica muchos de los elementos del sistema grafico (apariencia) de Windowstales como: applets, paneles de contriol y cajas de diálogo (Windows (Windows 2000/XP/2003). ReactOS está principalmente escrito en C, con algunos elementos, como el Explorador de ReactOS, escritos en C++. El proyecto se está portando a las arquitecturas de procesador ARM y AMD64, y en parte implementa la funcionalidad de la API de Windows. Este último cuenta con la asistencia mediante la inclusión de partes de la capa de compatibilidad Wine para sistemas operativos tipo Unix, pero otra funcionalidad se lleva a cabo por los propios desarrolladores. Sin embargo, el progreso se ha visto obstaculizado por la falta de desarrolladores experimentados. La auditoría del código es amplia para proteger el proyecto contra los posibles problemas legales, de tal manera que la implementación de la API de Windows se realiza únicamente por medio de un proceso completo de sala limpia de ingeniería inversa. Esto ha permanecido en vigor después de afirmaciones hechas en 2006, por un desarrollador de primera y un tercero en incidentes separados, de que el proyecto contenía código assembly desensamblado de Windows, o archivos directamente originarios de Microsoft. Tales denuncias no han tenido consecuencias legales adversas al proyecto, y el desarrollo continúa hasta hoy. ReactOS se ha conocido por su información sobre las indocumentadas APIs de Windows y, en general, como el software de código abierto para el reemplazo de Windows. El objetivo del proyecto, como se cita a sí mismo, es permitir a los usuarios de Windows renunciar por completo al uso de software comercial de propiedad sin tener que cambiar a un sistema operativo que no es compatible a nivel binario con Windows, como GNU/Linux. Sin embargo, la falta de patrocinadores corporativos y desarrolladores dedicados han limitado sus esfuerzos para realizar este trabajo. El objetivo en la actualidad es desarrollar ReactOS hacia un punto en el que sea capaz de hacer funcionar la mayoría de las aplicaciones y drivers para Windows "out of the box." Esto no quiere decir que ReactOS acabe ahí; mientras se añadan más características a Windows, nuestros desarrolladores tratarán de incorporarlas a futuras versiones de ReactOS. Una vez queel nivel de compatibilidad sea logrado, incluso se pretende mejorar ReactOS mas alla de sus raíces de Windows. Estos cambios podrían incluir desde la apariencia externa del SO, hasta la implementación de funciones y ventajas adicionales. Por ejemplo, uno de nuestros objetivos es incorporar compatibilidad POSIX (Portable Operating System Interface de UNIX), al igual que con otros servicios basados en Windows. También podría ser tan simple como soporte nativo múltiples escritorios sin embargo, en lugar de requerir un powertoy (colección de aplicaciones informáticas 2
provistas por Microsoft para el sistema operativo Windows. No están integradas en Windows, ya que su fecha de lanzamiento fue posterior al del SO. Tampoco existe un soporte técnico específico para la colección ya que no están sometidas a las mismas pruebas que el resto de componentes del SO.).
3.3.1) ¿POR QUÉ REIMPLEMENTAR NT? En primer lugar, el “Windows” que la gente conoce es realmente tan solo una parte del moderno sistema operativo Windows. Normalmente esto implica el subsistema Win32, una capa sobre el núcleo NT, que proporciona la interfaz para el usuario y las aplicaciones. "NT está ahí fuera, conocido como XP y Vista" La mayoría de la gente cree que 'NT' es 'WinNT 4', cuando en realidad el término NT se refiere a la serie NT, desde la versión 3 pasando por NT5 (2000, XP, 2003) hasta NT6 (Vista). La arquitectura NT fue diseñada por un equipo dirigido por David Cutler, desarrollador principal de VMS. Les llevó más de 4 años combinar lo mejor de UNIX, VMS y OS/2 y crear la arquitectura NT.
3.3.2) ¿Y QUÉ HAY DE UNIX? "Para todo SO hay un igual y un contrario, ReactOS" MacOS X, Linux, BSD y otros derivados de UNIX comparten una herencia común basada en un diseño de un sistema operativo básico que data más de tres décadas, y que a lo largo del tiempo se ha convertido en un SO complejo. Encarnaciones modernas como Mac OS X colocan una interfaz gráfica sobre el núcleo UNIX, para ocultar los detalles del sistema y centrarse en principiantes dejando afuera a muchos usuarios avanzados. Las características más avanzadas no pueden ser accedidas desde la interfaz gráfica. Prácticamente todas las variantes de UNIX mantienen alguno de los defectos de diseño originales, y normalmente no hay compatibilidad entre versiones. Teóricamente, hay unos pocos estándares UNIX como POSIX, pero en la práctica éstos son antiguos y sólo cubren el SO y el entorno de terminal. Otros, como el Linux Standard Base con frecuencia no son implementados. Como no hay estándares de interfaz de usuario ni APIs estándar, los usuarios han de usar aplicaciones en linea de comandos o pelearse con las interfaces gráficas. Muchos derivados de UNIX usan el estándar de-facto X-Window para salida gráfica, que probablemente posee uno de los peores diseños en la historia del software. Aún así, los derivados actuales de UNIX intentan hacer uso de innovaciones recientes, y algunas de ellas ya poseen características importantes, como listas de control de acceso. Al contrario que UNIX, ReactOS ha sido diseñado para resultar familiar con el entorno de Windows. Puede hacerse de todo a través de la conocida interfaz de Win32 y los usuarios avanzados pueden automatizar tareas con scripts o usar la consola.
3.3.3) COMPATIBLE "¡Cambia tu SO, no tus programas!" El proyecto ReactOS reimplementa un sistema operativo novedoso y abierto basado en NT. Por suspuesto, con él se provee un subsistema WIN32, compatibilidad con drivers de NT y un puñado de aplicaciones y herramientas útiles. ReactOS combina la potencia y fortaleza del núcleo 3
NT - conocido por su extensibilidad, portabilidad, fiabilidad, robustez, rendimiento y compatibilidad – con la compatibilidad con Win32.
3.3.4) SEGURO "Todo está en la configuración" Aunque hay escritos en contra, NT es seguro por diseño. Fue el primer sistema operativo de uso general con una implementación apropiada de un modelo de seguridad muy flexible basado en listas de control de acceso. Los últimos sistemas de Redmond basados en NT, especialmente XP, tienen mala reputación por su configuración inicial de seguridad débil; principalmente, para facilitar la transición desde Win9x de usuarios y aplicaciones antiguas. Tan solo esta decisión invalidó muchas de las características de seguridad de NT. ReactOS incorporará las configuraciones por defecto apropiadas. ReactOS ha sido diseñado para ser muy seguro; no comparte defectos de seguridad comunes en otros sistemas operativos. "¿Virus, Malware? Un problema menor." Más en detalle, los virus informáticos (que son programas normales) no son tan difundidos actualmente. La mayoría del software maligno son scripts cuyo objetivo princupal son programas de red comunes, como navegadores o programas de correo y software que tiene integradas capacidades de scripting como Office. Obviamente, los sistemas más usados y con más usuarios son más proclives a ser atacados que sistemas menores como Macintosh y Linux.
3.3.5) LIGERO Brevemente, ReactOS está diseñado para ser poderoso y ligero. Puedes pensar que será ligero como lo fue Win95, una interfaz de usuario consistente y un pequeño conjunto de herramientas útiles. Por contra, ReactOS ofrece mucho más, una experiencia actualizada, costruido desde cero tomando como base el sólido núcleo NT.
3.3.6) ABIERTO "Gratis y a código abierto" ReactOS es Software Libre, el código fuente del sistema está disponible y licenciado bajolicencia GNU GPL. ReactOS no te llama a casa o monitoriza tu uso, ni contiene softwareespía. Otros conocidos competidores son famosos por estas prácticas. Convivir con otros sistemas operativos tiende a ser una relación de amor-odio, con gente a favor de uno y otros a favor de otros. El proyecto ReactOS cuenta con una gran comunidad la cuál es bien apreciada.
3.3.7) FIABLE "Abre tus Windows a la libertad" De hecho, ReactOS ha sido escrito de cero desde 1996, una sólida implementación de NT, y un sistema operativo fiable y robusto para teareas que van desde micro computadores incrustados a computadores personales, estaciones de trabajo y clúster de servidores, mainframes 4
y superordenadores. ReactOS incorpora muchas decisiones de diseño de otras familias como UNIX, VMS, OS/2 y desde luego NT, el objetivo es que sea 'la' nueva plataforma que sirva a todas.
3.3.8) RENDIMIENTO ReactOS es ligero y rápido y superará a otros sistemas operativos en varias facetas.
3.3.9) PORTABLE "ReactOS – El sucesor de XP que la gente buscaba" El diseño del sistema operativo ReactOS proporciona compatibilidad entre familias de procesadores, como Intel x86 e incluso compatibilidad entre diferentes arquitecturas de procesadores, como CISC y RISC. Hay un único corazón del SO, el núcleo; el portar ReactOS a otras arquitecturas 'tan sólo' incluye el hardware abstraction layer (HAL, capa de abstracción de hardware), la parte del SO de más bajo nivel, que habla directamente con la plataforma hardware.
3.3.10) EXTENSIBLE ReactOS es flexible y extensible por diseño. ReactOS es probablemente uno de los sistemas operativos más versátiles, gracias especialmente a su núcleo NT y su naturaleza 'open source'. ReactOS puede ser extendido con la ayuda de los llamados "subsistemas" para proporcionar soporte a aplicaciones antuguas de otras plataformas. Por ejemplño, un subsistema POSIX dotaría de compatibilidad con muchas aplicaciones para UNIX.
3.3.11) BASADO EN OBJETOS ReactOS no es un sistema orientado a objetos en el sentido más estricto de la palabra, pero utiliza objetos para representar los recursos internos del sistema. Los objetos en software son una combinación de instrucciones y datos que modelan el comportamiento de las cosas, reales o imaginarias, que existen en el mundo. "¡La metáfora de los ficheros de UNIX es de 1970!" Los sistemas UNIX se basan en que todo, incluyendo dispositivos como impresoras, dispositivos de almacenamiento, teclados, y monitores aparentan ser ficheros regulares tanto para los programadores como para los usuarios. Esto simplifica muchas tareas rutinarias, y es un componente clave en la extensibilidad del sistema. Esta "metáfora" tiene varias connotaciones, y se sabe que es un cuello de botella de los sistemas operativos tipo UNIX. ReactOS toma nota de esta metáfora y la extiende. Utiliza una metáfora de objeto que se introduce en la propia arquitectura del sistema. No sólo considera objeetos todo aquello que UNIX considera ficheros, sino que también lo hace con procesos, hilos, segmentos de memoria compartida, la base de datos del registro e incluso los permisos de acceso.
3.4) ¿POR QUÉ REACTOS? 5
Mucha gente en los foros se pregunta: “¿por qué debería usar ReacOS?” o “¿Por qué alguien iba a necesitar ReactOS?” o “¿Por qué no ayudar a desarrollar Wine en lugar de esto?” o “¿Por que no usar Linux con wine?”. Tenemos respuesta para todas estas preguntas, pero no es
ninguna palabra magica. Nombramos aqui algunos problemas clave:
Hay muchos sistemas operativos *nix en la calle, eso esta muy bien. Sin embargo tienen distino proposito (se ajustan perfectamente al mercado de los servidores, pero aun no han conquistado el de los escritorios, y algunos factores juegan en contra de las alternativas a Windows que existen). Actualmente no hay ningun sistema operativo que implemente el diseño de arquitectura del kernel de la familia de Windows NT (GNU/Linux es la mejor comparación: Linux empezó como un “clon” de Minix y Unix (convirtiendose tarde o temprano en un reemplazo a Unix), y ReactOS empezócomo un “clone” de Windows NT).
Linux+Wine nunca serán un reemplazo total de un sistema Windows. No solamente porque es Linux (despite there are some really user-friendly Linux distros out there), y no solamente porque muchos usarios verán la transiciń a Linux/BSD dificil, sino también debido a las
decisiones de diseño e implementación de las arquitecturas de Linux y Wine, quue impiden un 100% de compatibilidad. A pesar de que Linux soporta muchos tipos de hardware, Windows es aún la plataforma dominante para los fabricantes de dispositivos. Existen intentos de vencer esta situación (como el encapsulador NDIS para controladores de las tarjetas de red de NT, hay rumores acerca de soportar drivers de vídeo de NT, NTFS nativo para soportar el sistema de ficheros de NT), pero ReactOS lo resuelve desde el primer día debido a su diseño – ser compatible con los driver y aplicaciones actualmente disponibles. Hay mucha gente a la que no les gusta el comportamiento de *nix o no está de acuerdo con las convenciones usadas. Para ellos, Linux, BSD, yMac OS X no son una opción, incluso antes de que la compatibilidad entre aplicaciones y hardware entrara en juego. Un sistema operativo debería dar al consumidor lo que desean en lugar de exigir la conformidad del usuario. Incluso con WINE, estás corriendo un sistema operativo que se comporta de forma distinta a Windows, tanto a nivel de usuario como a nivel de sistema. compatibilidad hacia atrás. Esto es algo vital para algunas personas y empresas, pero la filosofía de desarrollo de Linux y el proyecto GNU no lo considera una prioridad. La familia Windows siempre tiene un modo de asegurar una API estable y compatibilidad hacia atrás. Por su diseño, ReactOS también seguirá esta filosofía con aplicaciones, existentes y futuras, diseñadas para la familia de Windows NT. No hay planes para liberar Windows bajo una licencia compatible con GPL (al menos, el equipo de ReactOS no es consciente de ellos).
Finalmente, ReactOS ofrece otra alternativa, para la gente que está harta de las políticas de Microsoft pero no quieren abandonar el familiar entorno, diseño arquitectónico, millones de aplicaciones de software y miles de controladores de hardware.
3.5) DESARROLLO DE REACTOS ReactOS está principalmente escrito en C, con algunos elementos, tales como ReactOS Explorer y la pila del sonido, escritos en C++. El proyecto se basa en MinGW para la compilación, y se contribuye a su desarrollo a través de la presentación de los parches a sus componentes. 6
Los desarrolladores tienen por objeto hacer que el núcleo sea más compatible con Windows NT 5.2 (Windows Server 2003), y el API de modo de usuario con Windows NT 6.0 (Windows Vista), para añadir soporte para más aplicaciones y hardware. El soporte para DirectX se lleva a cabo a través de ReactX, una reimplementación de la empresa. El renderizado 2D acelerado por hardware se hace de forma nativa, mientras que la funcionalidad de dibujo se redirige a OpenGL como una solución temporal. El desarrollo está limitado por la falta de gente con experiencia. A partir del 24 de marzo de 2010, la entrada de ReactOS en Ohloh , lleva a un "equipo activo de desarrollo muy grande", que lista 37 desarrolladores que han contribuido por un período de más de 12 meses y un total acumulado de 97 usuarios actuales y pasados que han contribuido con código al proyecto a través de Subversion desde su creación. Por el contrario, hay 1000 de los desarrolladores que trabajaron solamente en Windows 7, organizados en 25 equipos, cada equipo con un promedio de 40 desarrolladores. Además, en su presentación en Hackmeeting 2009 en Milán, Michele C., desarrollador de ReactOS, señaló que la mayoría de los desarrolladores aprenden sobre la arquitectura de Windows mientras se trabaja en ReactOS sin tener ningún conocimiento previo.
3.5.1) DEPENDENCIAS ReactOS hace uso del código de otros proyectos donde sea posible, de manera que los desarrolladores puedan evitar la duplicación de funciones disponibles y centrarse en la compatibilidad binaria con Windows.
A) WINE: ReactOS usa porciones del proyecto Wine para que pueda beneficiarse de sus avances en la aplicación de Win32 API. NTDLL, USER32, KERNEL32, GDI32 y componentes de Advapi no pueden ser utilizados debido a sus diferencias con la arquitercura de ReactOS, pero las otras partes del código pueden ser compartidas entre ambos proyectos. Los componentes que no están disponibles a partir de Wine se desarrollan por separado.
Diagrama de la arquitectura de ReactOS simplificada, con las dependencias de Wine indicadas con el logo de éste.
Por otra parte, la rama ARWINSS fue creada como un medio alternativo para mejorar el apoyo de USER32 y GDI32 a través de una implementación alternativa de la API Win32. Considerando que el subsistema original Win32 de ReactOS fue modelado creca después de su equivalente en Windows, ARWINSS combina la arquitectura de ese subsistema con la aplicación correspondiente en Wine. Con este fin, ARWINSS utiliza las bibliotecas de Wine y USER32 y GDI32 con algunos 7
cambios para obtener más ventaja en la compatibilidad de Wine con el software existente. ARWINSS también permite al usuario utilizar un servidor X remoto en lugar de una pantalla local.27
B) OSKIT / FREEBSD: en una breve entrevista con network performance daily, art yerkes, entonces un desarrollador para secret level, mencionó que importó la parte tcp del puerto de oskit de la pila de red de freebsd, como parte de su esfuerzo para limpiar y mejorar la funcionalidad de red. otras partes de la pila de red de reactos, como las implementaciones de los protocolos por paquetes, como ip, son desarrolladas internamente. C) OTROS: FreeType se utiliza en la presentación de las fuentes en la interfaz gráfica de usuario, mientras que Mesa 3D proporciona renderizado OpenGL. Los conductores Serial ATA son proporcionados por UniATA. Desde la última actualización para el controlador UniATA, el 10 de septiembre de 2008, UniATA ha sido mantenido por los mismos desarrolladores de ReactOS. El proyecto también ha experimentado con el uso de la biblioteca de FullFAT en la reescritura del Sistema de Archivos Instalable FAT. 3.5.2) ARQUITECTURAS SOPORTADAS ReactOS soporta varias arquitecturas:
IA-32. Xbox (Regresión). PowerPC. (Detenido) ARM (Arranque parcial). AMD64 (Arranque parcial).
Windows NT 4.0 fue portado a otras arquitecturas de IA-32 como MIPS, Alpha AXP y PowerPC, y los derivados de NT han sido tratados de manera similar, como Windows XP portado a AMD64, y Windows Server 2003 portado a AMD64 e Itanium. En vista de esto, los desarrolladores de ReactOS lo han portado parcialmente a las arquitecturas AMD64 y ARM. El soporte para la Xbox, una variante de la IA-32, se añadió a través de una arquitectura específica de la HAL, aunque ésta, junto con el soporte para PowerPC, ya no es mantenido activamente.
3.5.3) USABILIDAD El equipo de desarrollo de ReactOS considera que el software se encuentra en fase alpha; es decir, que no está completo y no se recomienda para su uso diario. El núcleo está incompleto, y sólo unas pocas aplicaciones de Windows funcionan sin problemas. Sin embargo, el sistema operativo se considera bastante estable, con tiempos de instalación y arranque muy cortos. En el futuro, la serie 0.4x también será marcada como alpha. La serie 0.5x será marcada como beta, lo que significa que ya estará apta para su uso diariamente, pero que se verá sometida a un riguroso control de calidad.
3.5.4) AUDITORÍA INTERNA El 27 de enero de 2006, el equipo de ReactOS decidió suspender temporalmente el acceso a los archivos del sistema operativo para los “no desarrolladores”, después de una reunión para verificar la afirmación de que el proyecto habría sido contaminado con el código con derechos de 8
autor de Microsoft. Sin embargo, al ser abordados por NewsForge, Microsoft no quiso hacer comentarios sobre el incidente. Siendo el proyecto de desarrollo de ReactOS un software gratuito y de código abierto, la demanda provocó una reacción negativa de la comunidad del software libre. En particular, Wine prohibió a algunos desarrolladores de ReactOS contribuir a su código, citando preocupaciones sobre el origen de sus contribuciones. La afirmación fue hecha el 17 de enero de 2006 por el ahora ex-desarrollador Hartmut Birr en la lista de correo de desarrolladores de ReactOS (ros-dev), afirmando que contenía un código de ReactOS derivado del desmontaje de Microsoft Windows. El código que Birr disputa implicó la función BadStack en syscall.S, así como otros casos no especificados. Comparando esta función con los binarios desmontados de Windows XP, Birr argumentó que la función BadStack fue simplemente copiar y pegar de Windows XP, ya que eran idénticos. Alex Ionescu, el autor del código, afirmó que si bien el binario de Windows XP en cuestión fue desmontado y estudiado en efecto, el código no se limita a copiar-pegar, sino a ser reimplementado. La razón por la cual las funciones son idénticas, según Lonescu, era porque sólo había una forma posible de implementar la función. En un comunicado publicado en su página web, ReactOS cita diferentes definiciones legales de lo que constituye la sala limpia de ingeniería inversa como una de las causas del conflicto, ya que algunos países, incluyendo Estados Unidos, requieren que la reimplementación del código desensamblado esté escrita por alguien que no sea la persona que ha desmontado y examinado el código original, mientras que en otros países se permitirán que ambas tareas sean realizadas por un mismo individuo. En consecuencia, ReactOS aclaró su Declaración de Política de Requisitos de Propiedad Intelectual de la sala limpia de ingeniería inversa conforme a la ley EE.UU. Una auditoría de código interno se llevó a cabo para asegurar que sólo la sala limpia de ingeniería inversa era utilizada, y todos los desarrolladores fueron obligados a firmar un acuerdo comprometiéndose a cumplir con las políticas del proyecto de ingeniería inversa. Los contribuidores del desarrollo no se vieron afectados por estos eventos, y todo el acceso a las herramientas de desarrollo de software se restableció poco después. En septiembre de 2007, con la realización de auditoría a punto, el estado de auditoría fue retirado de la página web de ReactOS. Aunque la auditoría se realizó, los detalles específicos no se hicieron públicos, ya que sólo fue un esfuerzo interno para asegurar que el código era producido legalmente. En un incidente separado, Betov, desarrollador de RosASM, afirmó que la mayoría de los archivos sospechosos no estaban en la lista de archivos seleccionados para la auditoría. Sin embargo, ReactOS afirma que los archivos en disputa se obtuvieron de Sanos. Mientras tanto, desde el cierre inicial, el código fuente de ReactOS ha quedado disponible y abierto para su inspección.
3.6) FICHA TECNICA REACTOS
9
Escritorio de ReactOS
Desarrollador Fundación ReactOS www.reactos.org
Información general Modelo de desarrollo FLOSS Lanzamiento inicial 25 de enero de 2004 Última versión estable 0.3.14 7 de febrero de 2012; hace 8 meses
Última versión en pruebas Trunk Builds Escrito en C, C++ Híbrido Tipo de núcleo Interfaz gráfica por defecto ReactOS Explorer Método de actualización Re-instalación GNU GPL, LGPL, y Licencia BSD Licencia Estado actual Alpha en desarrollo Idiomas Multilingüe En español 3.6.1) VERSIONES DE REACTOS Muchas herramientas de desarrollo entre API y ABI están listas para un nivel alto de desarrollo y una interfaz básica en GUI también lo está. ReactOS también posee ReactOS Explorer, una interfaz de usuario similar al ya conocido Explorador de Windows.
COLOR SIGNIFICADO Rojo Sin soporte Verde Versión actual Azul Versión futura VERSIÓN
FECHA DE LANZAMIENTO
NOVEDADES
10
0.2.0 0.2.2 0.2.5 0.2.8 0.3.0 0.3.1
0.3.3
25-01-2004 27-04-2004 02-01-2005 29-10-2005 27-08-2006 10-03-2007 NUNCA LANZADO 12-09-2007
0.3.4
22-01-2008
0.3.5 0.3.6 0.3.7 0.3.8
30-06-2008 06-08-2008 04-11-2008 04-02-2009
0.3.9
26-04-2009
0.3.10
05-07-2009
0.3.11
16-12-2009
0.3.12
20-10-2010
0.3.13
22-03-2011
0.3.14
07-02-2012 NO Alpha. PUBLICADO NO Beta. PUBLICADO NO Listo para el uso diario. PUBLICADO
0.3.2
0.4.0 0.5.0 1.0.0
Primer lanzamiento, con una interfaz gráfica de usuario funcional. Solo corrección de errores. Detección de VMWare, reescritura de CSRSS. Primera versión que oficialmente soporta creación de redes. Administrador de programas incluido, inicio de la reescritura del kernel. Nunca lanzado. Mejoras en kernel y win32k. Reescritura del soporte de registros, cliente de escritorio remoto y Plug and play. Solo corrección de errores. Soporte RTL. Mejoras en x86-64; MSVC, nuevos stacks. Se introduce PSEH y soporte multipartición HDD en LiveCD. Se establece el mínimo de 24MB de RAM, mapeo del hiperespacio más rápido, soporte inicial de sonido. Soporte inicial SATA, soporte USB para teclado y mouse, clon de Microsoft Paint, inicial MSVC. Reescritura de kdcom; fuentes chinas y coreanas; actualizaciones de compatibilidad, mejora del sistema de sonido. Reescritura de trap handler; reescritura del manejo del temporizador y mensajes; soporte de NMI; soporte ensamblado «side-by-side assembly»; soporte parcial de manejo de servicios de emergencia. Mejoras en la gestión de memoria para un mejor control de sonido y visualización. Soporte para temas de XP, WiFi, ACPI y reescritura del shell32
3.6.2) REQUISITOS DEL SISTEMA REACTOS
Procesador compatible con x86, Pentium o superior. 24MB de RAM (se recomienda 128MB). Disco duro IDE de al menos 150MB. Partición de arranque en formato FAT16/FAT32. Adaptador de gráficos VGA de 2M. Unidad de CD-ROM. Teclado estándar. Ratón PS / 2 compatible con Microsoft Mouse o ratón compatible de serie.
3.6.3) OBTENER REACTOS El software ReactOS incluye distribuciones binarias y de código fuente de la última 11
publicación de ReactOS. Esto incluye el kernel, los distintos subsistemas y algunas aplicaciones básicas. Para información acerca de la instalación mira la Guía a la instalación y el correspondiente artículo en la Wiki.
A) PAQUETES PARA EL USUARIO FINAL CD de Instalación: Con el CD de instalación puedes instalar ReactOS en tu ordenador. Esta imagen contiene una versión de depuración de ReactOS que incluye el depurador del kernel (KDBG). Live
CD: El Live CD permite que pruebes ReactOS sin instalar nada en tu disco duro. Preinstalado en QEMU: Esta descarga incluye la versión actual de ReactOS preinstalada en una máquina virtual QEMU. Se incluye también una versión para Windows de QEMU, para que puedas probar ReactOS fácilmente.
con
Preinstalado en VMware: Este paquete contiene una máquina virtual VMware ReactOS preinstalado. Preinstalado en Virtual Box: Este paquete contiene una máquina virtual Virtual Box con una versión preinstalada de ReactOS. Carátula CD (versión 0.3.1) - PNG Carátula CD (versión 0.3.1) - PDF Carátulas de CD/DVD de ReactOS, disponibles en formato PNG y PDF.
B) PAQUETES PARA DESARROLLADORES CÓDIGO FUENTE: Este paquete contiene el código fuente completo de esta versión de ReactOS. COMPILADOR (recomendado): Entorno de Desarrollo de ReactOS (RosBE) EMULADORES: a veces no es posible correr reactos bajo hardware real. Los emuladores son programas que lo permiten bajo máquinas virtuales en tu sistema operativo. VMware: Web de VMware VirtualBox: Web de VirtualBox QEMU: Web de QEMU
VERSIONES EN DESARROLLO: Descarga versiones en desarrollo (Archivos ISO de cada revisión). Para una lista completa de descargas visita la página de descargas de Sourceforge. Si tienes problemas para acceder a SourceForge.net, puedes utilizar un mirror para la descarga. 3.7) IMPACTO Varias personas han reconocido a ReactOS y las implicaciones de tener una alternativa viable de código abierto para sustituir Windows: 12
En su columna para la Free Software Magazine, David Sugar señaló que ReactOS podría permitir el uso de aplicaciones en función de las versiones anteriores de Windows, cuyas APIs han sido desechadas. Así mismo, reconoció su potencial para ampliar la base total del despliegue del software libre, y como un recurso para los desarrolladores que desean saber sobre las indocumentadas APIs de Windows en el curso de escritura de aplicaciones portátiles. Viktor Alksnis también se ha reunido con el actual coordinador del proyecto Aleksey Bragin quien realizó una presentación y demostración del proyecto, que muestra ejecutándose en ReactOS Total Commander y Mozilla Firefox. John C. Dvorak, columnista de PC Magazine, señaló que la arquitectura de Windows NT se ha mantenido prácticamente igual hasta ahora, por lo que es un candidato ideal para su clonación, y cree que ReactOS podría ser "una amenaza mayor que Linux para el dominio de Microsoft". De hecho, Aleskey Bragin ha mencionado en un comentario al semanario alemán Der Spiegel que ReactOS está dirigido a usuarios de Windows que quieren renunciar al uso del software comercial de propiedad sin tener que cambiar a Linux. Sin embargo, ReactOS aún presenta problemas. En respuesta a la columna de Dvorak, la periodista Dana Blankenhorn de ZDNet technologi señala que la falta de patrocinadores corporativos y socios ha prestado el proyecto inocuo a Microsoft. Haciendo eco de esto, Thom Holwerda de OSNews clasifica a ReactOS en una familia de sistemas operativos aficionados que se mantienen sólo por pequeños grupos de desarrolladores que trabajan en su tiempo libre, y que no cuenta con el apoyo financiero que tienen los principales sistemas operativos, ni con el legado de otros sistemas más antiguos y utilizados, como RISC OS.
3.7.1) PROYECTOS RELACIONADOS
ReactOS comparte algunas dependencias con Wine. Otros proyectos relacionados son Samba / Samba TNG, que implementan LSASS, SAM, NETLOGON, Colas de impresión de Windows y otros servicios de red. Un proyecto más distante a nivel arquitectónico es el del Kernel de Linux unificado que pretende ser compatible a nivel binario con aplicaciones y controladores de Microsoft Windows y Linux. Este núcleo importa todas las principales características del kernel de Windows en su equivalente en Linux para soportar aplicaciones y controladores de Windows. NDISwrapper recreó parcialmente el núcleo de Windows NT dentro del kernel de Linux que permite ejecutar modernos controladores de Windows dentro de la caja del núcleo NT. NDISwrapper consiste en un API NTOSKRNL, un controlador básico de WDM, y una serie de envoltorios de llamanas a Windows, tales como Wireless / NDIS / USB / PnP para Linux API. NDISwrapper no se limita a ejecutar los conductores sólo NDIS; otros controladores WDM se pueden utilizar siempre y cuando el controlador no llame a una API de Windows no implementada. Independientemente pero no simultáneamente con el proyecto NDISwrapper, Bill Paul, de Wind River Systems ha desarrollado un sistema similar, conocido como Proyecto Evil o El NDISulator, para FreeBSD. Desde entonces, ha sido portado a NetBSD, pero no a OpenBSD, debido a la última política de anti-blob binario. El NDISulator carece de algunas funciones de ndiswrapper, como el soporte USB. NTFS-3G, controlador de NTFS para Linux, Mac OS X, FreeBSD, NetBSD, OpenSolaris, QNX, Haiku y otros sistemas operativos. El proyecto WÔÓS se basa en el código de ReactOS.
3.7.2) COMPATIBILIDAD FUTURA 13
La compatibilidad del proyecto ReactOS se divide actualmente en dos objetivos: compatibilidad a nivel de kernel con Windows 2003 Server SP1, y compatibilidad a nivel de Win32 con Windows Vista (NT 6.0). Esto es así debido a que el kernel no cambia muy seguido, mientras que Win32 cambia más rápidamente. Anteriormente los objetivos de compatibilidad han sido Windows NT 4.0, Windows 2000 (NT 5.0), y Windows XP (NT 5.1).
3.7.3) SOPORTE PARA APLICACIONES DE OTROS SISTEMAS La arquitectura de ReactOS permite tener subsistemas, así como lo hace la arquitectura de Windows NT. Un subsistema es una implementación de APIs de otro sistema operativo, permitiendo así ejecutar aplicaciones de otros sistemas operativos en ReactOS (subsistemas para Java, OS/2, DOS y otros).
14
4) CONCLUSION ReactOS promete ser una completa propuesta para aquellos que desean un sistema operativo libre y de código abierto totalmente compatible con las aplicaciones Windows existentes, manteniendo a nivel de usuario una apariencia muy similar y sin las complicaciones (especialmente a nivel de instalación y configuración) presentadas por Linux
4.1) REACTOS FUNDRAISER 2012 El Proyecto ReactOS ha realizado varias "Campañas para Recaudar Fondos" en el pasado, gracias a ellas y a donaciones no-monetarias, se ha conseguido desarrollar y levantar una gran infraestructura industrial que está siendo mejorada continuamente. Las donaciones también han ayudado a pagar los viajes a los desarrolladores para promocionar ReactOS en diversas conferencias y eventos. Estas presentaciones han sido cruciales para captar una mayor atención sobre el proyecto y han ayudado a obtener nuevas donaciones. Este año queremos hacer algo diferente,algo incluso más grande. ReactOS está muy cerca de comenzar su Beta Testeo y estamos constantemente mejorando el propio proceso de desarrollo. Sin embargo para muchos de los principales desarrolladores, ReactOS es un hobby en el cual ayudan en su tiempo libre cuando las obligaciones se lo permiten. Todos los desarrolladores son excelentes y sus contribuciones mejoran significativamente la calidad de ReactOS. Por primera vez en nuestra Historia, la Fundación ReactOS busca ir más allá de las usuales pequeñas campañas de donativos orientadas a pagar los gastos de infraestructura. Nos gustaría recaudar dinero para contratar formalmente tantos desarrolladores como sea posible, para que trabajen en el proyecto que ellos creen, el proyecto en el que han estado trabajando, transformando el Hobby en un Trabajo para que así puedan dedicar todo su tiempo a ReactOS. Los significativos avances que el proyecto ha vivido gracias al trabajo realizado durante el Google's Summer of Code 2011, ha demostrado que la mejor forma de acelerar el desarrollo de ReactOS es pagando directamente a los desarrolladores para que contribuyan a ReactOS. Por ello, desde el proyecto estamos intentando contactar con nuestros seguidores y con todos aquellos que apuestan por nosotros para hacerlo realidad. Juntos podemos hacer de ReactOS un nuevo competidor y una verdadera alternativa para los usuarios de todo el mundo. ReactOS es un esfuerzo por crear un reemplazo libre para Microsoft Windows compatible con el hardware y el software existente!
ReactOS 0.3.14 se encuentra bajo desarrollo (fase alpha) y no está preparado para uso diario. Puedes ayudar a ReactOS corriendo la voz, donando algo de dinero a la Fundación ReactOS, dedicando algo de tu tiempo o contribuyendo de alguna forma (parches, traducciones, foros, etc.).
15
6) ANEXOS 6.1) CONVERSACION CON DESARROLADORES EN FORO DE REACTOS (Solo se colocaron los comentarios significativos, además toda la información fue suministrada en ingles por lo que ha sido traducida por el grupo) LRIVAS (18-09-2012, 11:35): Lo que me interesa conocer es la manera como Reactos asigna a Procesos o Hilos los recursos memoria, CPU, perifericos, informacion, etc. Mi idea es presentarlo en la universidad para que mis compañeros y profesores lo conozcan (a traves de una exposicion a realizarse en un mes). Por lo que agradeceria cualquier informacion al respecto que puedan brindarme para tal fin B4DC0D3R (21-09-2012, 2:10): Creo que nadie te ha contestado porque la respuesta es muy complicada. El libro "Windows Internals", probablemente en su 4ª ó 5ª edición, sería un gran lugar para comenzar. Tambien considero como una buena opción el libro de Charles Petzold "Programming Windows" el cual te dara una base de fondo, ya que la arquitectura Intel (x86 / x64) y el sistema operativo tienen que trabajar juntos para la gestión de memoria y las interrupciones. Después de eso, cuando sepas con claridad qué es lo que buscas, puedes descargar el código fuente de ReactOS para ver como nuestro SO realiza estos procedimientos y luego compararlo con Windows. Pero en base a tu pregunta, me tomaria más de un mes para poder explicarlo. LRIVAS (21-09-2012, 11:54): No tengo tanto tiempo, lo que necesito saber es: ¿Cómo este SO asigna los recursos a los procesos? Si pueden ayudarme al respecto se los agradeceríamos mucho, necesitamos presentarlo en la universidad a finales del próximo mes, el resto de la información podemos obtenerla por nuestra cuenta. Por favor ¿podrían hacer lo posible para ayudarnos? VICMARCAL (21-09-2012, 12:58): En primer lugar, ReactOS es un clon de código abierto de Windows. Esto significa que el gestor de memoria, Cache y todos los procesos relacionados con hilos y recursos están diseñados para ser compatibles con Windows, en caso contrario si manejamos la memoria de una manera totalmente diferente podríamos terminar teniendo serias incompatibilidades de aplicaciones y hardware. Las aplicaciones esperan que el SO funcione de la misma manera en que lo hace Windows, por lo que buscamos ofrecer una manera com patible con Windows. Así que, básicamente la respuesta a su pregunta: "¿Cómo se gestiona ReactOS recursos, hilos y procesos?" seria: "De la misma forma que Windows hace". Por lo menos desde el punto de vista de diseño: HAL, Subsystems, MM, CC, Win32k, etc. Mi duda ahora, sin animo de ofender, es entonces: ¿Saben ustedes como Windows asigna y usa sus recursos? De ser asi, ya tienen su respuesta. Nosotros no usamos mecanismos diferentes, sino unos similares a los usados por Windows server 2003. Ademas, como Windows no es un SO de código abierto no podemos, a fin de preservar la legalidad de nuestro proyecto, ni siquiera mirar su código interno, por lo que procuramos implementar su funcionamiento de la forma mas cercana posible en base a lo que sabemos acerca de su comportamiento. En cuanto a documentación b4dc0d3r te ha indicado algunos buenos libros al respecto, asimismo la creación de pruebas adecuadas nos dara todas las pistas necesarias para aprender como trabaja Windows internamente. Aunque tu pregunta, me parece muy amplia, ya que para nosotros podría significar: ¿Podrias mostrarnos como es creado y destruido internamente un hilo en ReactOS? ó, ¿Cómo asigna ReactOS los bloques de memoria? ó tambien, ¿Cómo es la paginación de Memoria en ReactOS? 16
e incluso, ¿Cómo ustedes manejan los apuntadores en ReactOS? y para responder cualquiera de esas cuestiones necesitaríamos varias paginas de un libro, consideramos que no bastaría con una entrada rápida en un blog. Por ello si pudieran indicarnos de la manera mas precisa posible que información es la que realmente les resulta mas importante, podríamos una vez delimitada adecuadamente la pregunta presentarle la mejor y mas resumida respuesta posible
LRIVAS (22-09-2012, 11:52): Primeramente, gracias por su ayuda, su respuesta nos ha dado una mejor idea acerca del SO ReactOS, por ahora solo necesitamos saber: ¿Como es creado y destruido internamente un hilo en ReactOS? y ¿Cómo asigna ReactOS los recursos de memoria? Creo que eso sería suficiente para completar nuestra exposicion, no necesitamos nada demasiado detallado, solo una idea básica para luego nosotros encargarnos de su desarrollo posterior, de todos modos voy a consultar al profesor al respecto. ANGELUS (22-09-2012, 12:24): Tambien podrían revisar las exposiciones y documentos que hemos realizado para presentar ReactOS en algunos importantes eventos (FOSDEM, Chemnitzer Linux Tage, Imaginatica,...). Esto podría ser muy útil para la preparación de su exposicion. Por favor, revisa esta pagina: “ http://svn.reactos.org/svn/press-media/trunk/Events/”, donde podras encontrar la información al respecto, no se si requieras registrarte VICMARCAL (24-09-2012, 1:52): 6.1.1) CREAR-DESTRUIR HILOS EN REACTOS Cuando una aplicación Windows solicita crear un nuevo hilo, es usada una función perteneciente a winapi llada CreateThread(). En la pagina MSDN (“ http://msdn.microsoft.com/enus/library/windows/desktop/ms682453%28v=vs. 85%29.aspx”) allí puedes encontrar “como” las aplicaciones pueden llamar (enviar parámetros a) al API de Windows para crear un nuevo hilo. CreateThread es una funcion codificada en el archivo Kernel32.DLL. Microsoft ya la ha codificado, por lo que el desarrollador de aplicaciones solo debe hacer el llamado y listo. Como puedes imaginar, la función CreateThread es propia de Windows y su código no esta disponble para el publico. Que pasa exactamente cuando l a aplicación llama a la función CreateThread? Nadie “sabe”. Nosotros solo podemos tratar de “adivinarlo” o “estudiarlo” de manera legal. ¿Cómo podemos
lograr esto? Sabemos el objetivo del API, los parametros que utiliza, e incluso algunos errores que se deben devolver como se explica en el documento de MSDN. También hay libros disponibles sobre el sistema NT (como Windows Internal X Edición). Agregamos algunas de pruebas (rostests y winetests), que consiste, básicamente, en enviar al API de un conjunto de parametros diferentes y comprobar los valores devueltos .. y listo: ¡Hecho! Así que cuando una aplicación quiere crear un nuevo hilo, llama a la funcion CreateThread(). Realmente a la aplicación "no le importa" si se ejecuta en la parte superior de ReactOS, emulador Wine o Windows. Sólo espera que CreateThread() realize su trabajo correctamente. Entonces, ReactOS básicamente esta enfocado en implementar una función CreateThread() compatible, que acepte la misma cantidad y tipo de parámetros (en el mismo orden).Esta es colocada dentro del Kernel32.dll de ReactOS. En resumen: una versión de Codigo Abierto para ReactOS totalmente compatible de la función CreateThread() de código cerrado original de Microsoft. La gran diferencia es que en ReactOS la función CreateThread() es totalmente de abierta, pueden ver su código en la siguiente pagina: “http://doxygen.reactos.org/d0/d85/dll_2win32_2kernel32_2client_2thread_8c_a178fa87b1da6553
17
2ff01f9faf3298c1d.html” (Doxygen es una herramienta realmente buena que puede ayu darte a
saber como ha sido codificada nuestra función CreateThread, allí ustedes pueden llegar tan profundo como quieran. Solo deben seleccionar el nombre de la función, el cual es su link, para que les muestre el código que la implementa. Puedes terminar revisando otras funciones relacionadas como: CreateRemoteThread, NtCreateThread ó NtQueryInformationThread. Para descubrir como han sido implementadas. Mientras mas profundo llegues, será mas difícil segir. Puedes incluso pasar del modo usuario al de kernel. Buena suerte!
6.1.2) ASIGNACION DE LA MEMORIA EN REACTOS Hay diferentes formas de asignar la memoria. GlobalAlloc, LocalAlloc y HeapAlloc son las funciones que en ultima instancia se encargan de asignar memoria de un mismo bloque. En el siguiente link: “http://msdn.microsoft.com/ enus/library/windows/desktop/aa366533%28v=vs.85%29.aspx” exsiste un articulo muy interesante respecto a las diferencias entre ellos y otras maneras de asignar la memoria denominado “Comparing Memory Allocation Methods” (Comparando Metodos de Asignacion de Memoria). Asi mismo, las funciones GlobalAlloc y LocalAlloc son implementadas como contenedores que llaman a la función HeapAlloc utilizando un identificador de pila predeterminado del proceso, según indica el documento correspondiente de MSDN. Esto brinda una importante pista a los desarrolladores de reactOS al saber la relación existente entre ellos. En términos mas simples, esto significa que las funciones GlobalAlloc() y LocalAlloc() de Microsoft llaman a HeapAlloc(). Entonces, ¿En ReactOS las funciones GlobalAlloc() and LocalAlloc() llaman a HeapAlloc() para realizar las tareas? Puedes revisar el código de ReactOS correspondiente a estas funciones gracias a Doxygen! El código fuente de la función LocalAlloc() de ReactOS puede ser encontrada aquí: “http://doxygen.reactos.org/db/dbb/winbase_8h_a48dea1c9b15579f042e4cd2 db91d8926.html#a48dea1c9b15579f042e4cd2db91d8926” donde podran apreciar que esta
función no llama a HeapAlloc() para llevar a cabo la tarea a través de ella, sino que usa la funcion RtlAllocateHeap para asignar memoria. Mientras que el código fuente de la función GlobalAlloc() de ReactOS se encuentra en: http://doxygen.reactos.org/db/dbb/winbase_8h_a4 a975479e850693f95e122aa6f0db8db.html#a4a975479e850693f95e122aa6f0db8db donde también se usa para el manejo de la memoria la función RtlAllocateHeap en lugar de HeapAlloc() de Microsoft. Gracias a la información de referencia proporcionada por MSDN, tenemos una guia acerca como microsoft manipula internamente la memoria a través de las funciones GlobalAlloc() y LocalAlloc(). Pero, curiosamente, ReactOS parece no estar utilizando esa guía en su implementación de dichas funciones!! Recuerda: la guía dice que las funciones GlobalAlloc y LocalAlloc de Microsoft llaman a HeapAlloc() para realizar sus tareas! Quizas en este punto ustedes piensen: ¿Sera que ellos estan tratando de reinventar la rueda? ¿Por qué no seguir el mismo camino que Windows gracias a esa maravillosa pieza adicional de información? Bueno ... Veamos más de cerca a nuestras funciones ReactOS! Que pasa si buscamos HeapAlloc en Doxygen? Pues aparecerá lo siguiente: http://doxygen.reactos.org/d7/dff/lzexpand_8c_a6538f4e4ad1604ab998356e736e5be91.html# a6538f4e4ad1604ab998356e736e5be91 http://doxygen.reactos.org/d0/db5/dll_2win32_2kernel32_2wine_2res_8c_a6538f4e4ad1604ab 998356e736e5be91.html#a6538f4e4ad1604ab998356e736e5be91 http://doxygen.reactos.org/d0/db5/dll_2win32_2kernel32_2wine_2res_8c_a6538f4e4ad1604ab 998356e736e5be91.html#a6538f4e4ad1604ab998356e736e5be91
18
Notaran que en todos estos links aparece el mismo codigo: Code: Select all. #define HeapAlloc RtlAllocateHeap Lo cual significa que para nosotros HeapAlloc y RtlAllocateHeap son “sinónimos” en la mayoría de
los casos (Lo cual asegura su compatibilidad). En otras palabras: cuando la funciones GlobalAlloc() y LocalAlloc() de ReactOS llaman a RtlAllocateHeap realmente esta llamando a HeapAlloc, tal como se indica en MSDN! Entonces, nosotros no estamos reinventando la rueda y estamos usando esta información. RtlAllocateHeap es la base de estas funciones y puede ser en: http://doxygen.reactos.org/d8/d68/lib_2rtl_2heap_8c_ a28159ea98c98066d74d699413ec0416d.html#a28159ea98c98066d74d699413ec0416d. Allí puedes encontrar las funciones internas usadas para asignar una porción de memoria en la pila. Si ustedes son lo suficientemente valientes pueden intentar seguir cómo esas funciones a través de sus enlaces para averiguar como llevan sus tareas. De hacerlo van a terminar en nuestro amado Administrador de memoria, por su puesto, cuanto más profundo vayan, más difícil sera. Desconozco el nivel de profundidad con el que se supone deben hacer su exposición, pero si quieren entender en profundidad los conceptos acerca de Memoria Virtual, Manejo de memoria, pilas y otros relacionados … les recomiendo remitirse a algún buen libro de “Sistemas Operativos”
6.2) FAQ DE REACTOS Contiene información sumamente importante acerca de este SO
6.2.1) ¿REACTOS ESTÁ BASADO EN MICROSOFT WINDOWS? No! ReactOS consiste sólo en la licencia GNU GPL (General Public License) y en el código fuente con licencia compatible con GPL.
6.2.2) ¿REACTOS ESTÁ BASADO EN LINUX/UNIX? No! ReactOS no está basado en UNIX/Linux. Está escrito desde cero.
6.2.3) ¿REACTOS ES LEGAL? Sí. Es completamente legal. Los desarrolladores no han tenido acceso al código fuente de Windows. Han usado documentación sobre sistemas operativos Windows disponible públicamente. Han hecho vaios tests para entender como trabaja Windows. De hecho, ReactOS hace lo mismo que Windows, pero no exactamente de la misma forma, ya que no tienen el mismo código fuente. Todo el código en ReactOS está bajo licencia GNU GPL (General Public License).
6.2.4) ¿POR QUÉ NTFS NO ESTÁ SOPORTADO EN REACTOS? NTFS es muy difícil de implementar. La única implementación casi completa es NTFS-3g (FUSE), que no es un driver de nivel de núcleo. Las razones son: NTFS es un sistema de ficheros muy complejo. No está documentado. Por esta razón es aún más complejo el crear una implementación. No se asegura una compatibilidad total con Windows en circunstancias inusuales, ni con versiones futuras de Windows.
19
Puedes encontrar discusiones exahustivas acerca de este punto en los foros de ReactOS para más detalles. NTFS podría ser implementado en futuras versiones de desarrollo de ReactOS. Por favor, sé paciente.
6.2.5) ¡NO ME GUSTA LA GUI DE REACTOS! ¿POR QUÉ NO USAN ALGÚN OTRO SHELL? Cuando ReactOS esté más completo serás libre de usar cualquier otro shell alternativo. Pero, por compatibilidad, necesitamos un shell tipo Explorer. Tu requerimiento no cambiará nada
6.2.6) ¿POR QUÉ UNA APLICACIÓN MÍA NO CORRE EN REACTOS? ReactOS está en fase alpha y no se recomienda para uso diario. Muchas aplicaciones no funcionan (correctamente) porque muchas llamadas a la API simplemente no han sido implementadas aún. Esta puede ser una de las razones por las cuales ese programa no funciona.
6.2.7) ¿POR QUÉ REACTOS? ¿POR QUÉ CLONAR MICROSOFT WINDOWS? En primer lugar, ReactOS no es un clon de Windows. ReactOS es un sistema operativo compatible con los drives y aplicaciones de Microsoft Windows. Algunas de las razones para su desarrollo son las mismas que para el desarrollo de Linux (¿clon de código abierto de Unix?) Brevemente, Linux es un gran sistema operativo, pero no es la solución para todos. Hay mucha gente a la que le gusta Microsoft Windows, pero se sienten frustrados con las políticas de Microsoft en varios asuntos. La familia de Microsoft Windows 9x está basada en DOS, y comparte muchas de sus vulnerabilidades, lo cual es la principal razón why Microsoft Windows has such a bad name. Sin embargo, la familia Windows NT tiene un diseño sólido. No todo es perfecto, pero sin acceso al código fuente, no hay forma de arreglarlo, por lo que un sistema operativo compatible debe ser escrito desde los cimientos.
6.2.8) ¿POR QUÉ NO AYUDAN A DESARROLLAR WINE/LINUX EN LUGAR DE ESTO? Esta es una pregunta muy comun, por lo que también está incluida en las FAQ de usuarios (y una respuesta técnica se da en preguntas frecuentes de desarrolladores). ReactOS trabaja conjuntamente con Wine, y ambos proyectos se benefician el uno del otro. Tenemos varios desarrolladores en ambos proyectos que trabajan con problemas de compatibilidad entre los dos proyectos. Nuestra visión es que Linux + Wine nunca puede ser un reemplazo completo a Microsoft Windows. ReactOS tiene, potencialmente, un mayor grado de compatibilidad especialmente con los drivers para Microsoft Windows - que WINE no contempla.
6.2.9) ¿BAJO QUÉ PROCESADORES CORRERÁ REACTOS? Actualmente ReacctOS sólo soporta la arquitectura de procesadores x86, si bien se está pensando en hacer una versión para PowerPC. ReactOS correrá bajo procesadores Intel Pentium x64, Intel Xeon x64, AMD Athlon x64 y AMD Opteron en el modo 32 bits, pero el modo 64 bits de estos procesadores ahora mismo no está soportada. Mira la base de datos de compatibilidad para una lista de controladores de dispositivos soportados.
6.2.10) ¿CUÁNDO ESTARÁ LISTO? 20
Primeramente has de definir qué debería ser ReactOS capaz de hacer antes de considerarlo "listo". Puesto que esta defnicion puede variar enormemente dependiendo de la persona, la pregunta no puede ser contestada completamente. Una cosa sí es segura: ReactOS continuará siendo desarrollado, ya qu esiempre habrá necesidad de mejora. Para más información, visita la página de plan de futuro de ReactOS.
6.2.11) QUIERO PROBAR REACTOS SIN PONER EN RIESGO MI INSTALACIÓN ACTUAL. ¿PUEDO TESTEARLO DE ALGUNA OTRA MANERA? Claro, puedes probar ReactOS bajo hardware virtual. Puedes testearlo enQemu, para lo cual hay paquetes disponibles en la página de descargas. De esta forma podrás correr ReactOS en una ventana sin abandonar tu sistema operativo. Sin embargo, dado que Qemu es un emulador, ReactOS correrá mucho más lento a como lo haría bajo hardware real. Otros emuladores deberían ser capaces de correr ReactOS también, y se sabe que ReactOS corre en al menos Bochs, VMWare, VirtualPC y QEMU. si sabes de otras máquinas virtuales que lo soporten, por favor envía un e-mail a la lista de correo de desarrollo.
6.2.12) ¿POR QUÉ NO PERMITIR A MIS EMPLEADOS QUE ALOJEN VUESTRA WEB GRATIS? Gracias por la oferta, pero no. Las cosas pueden cambiar dentro de tu compaia y entonces podríamos o bien optar por pagar religiosamente una cantidad X o ir a otro sitio. Con la configuración actual, tenemos acceso drecto a la máquina, y el ancho de banda no es un problema, si bien el hardware necesta mejoras (si te gustaría donar hardware para esta causa, contacta con uno de los coordinadores de ReactOS).
6.2.13) NO PUEDO INICIAR SESIÓN. PONE QUE YA LA HE INICIADO. Se está trabajando en este problema. Sin embargo, a modo de "parche", usa el enlace ¿Olvidaste tu contraseña? y cámbiala; tu antigua sesión será eliminada y podrás iniciarla de nuevo con la nueva contraseña. Tras esto, recuerda cambiar la opcion de "multisesion" en tu perfil, lo que te permittira iniciar sesion multiples veces.
6.3) CURRENT COMPONENT STATUS Detalla el estado actual de los componentes de este SO Name
Current Status
General Website localization See RosCMS (permissions needed) or ask appropriate language maintainer. Operating system Depends on language. Ask appropriate language maintainer. localization Software compatibility See Compatibility Database Win32 Subsystem
21
Win32 DLLs
See Testman reports
Win32k
User mode printer drivers: Support for unimplemented. Text/font system: needs complete rewrite. DIB code: mostly implemented, could need optimisation in some places. Mouse pointer: missing alpha support. Region support : interface improvements needed, ROS specific structures to be deprecated. Pens: missing support for geometric pens. Brushes: missing support for driver managed hatch brushes. GDI handle manager: rewritten in r51470. User handle manager: needs to be fixed to work more like Windows. Bitmap code: DIB sections are very broken, needs lots of fixing.. Line Drawing: needs full rewrite. Coordinate transfomation: possibly to be moved to usermode.
Core Bootloader
In a rather good shape, needs further development in terms of adding more features and fixing existing. We switched to the NT-compatible booting method with r43273. Old bootmethod has been removed in r52491.
Kernel Memory manager (MM)
In a process of a soft rewrite, resulting in a functional equivalent of NT's (2003's) memory manager, without made up ROS-specific implementations and assumptions.
Object manager (OB)
Nearly perfect. Functionally equivalent to 2003's OB. Tested code, works very good. Experienced only bugfixes during the last two years.
Common Cache (CC)
Stays as it is for now, adapting to the changing memory manager. There exist three rewrites: No-Cc (a version of the kernel which does no caching at all, very slow); cache-manager-rewrite, started long time ago, but still occasionally maintained in a working condition; arty-cc by Art Yerkes, totally new Cc with a good, separated from Mm architecture, WIP.
File system support FAT32 NTFS Ext2 Driver support PNP manager
Needs a rewrite of a file system driver (fastfat), test it against windows 2003. Started in r38693 Completely missing (not to count a very simple stubbed IFS driver). It would make sense to use NTFS 3g from Linux and develop an own driver, also should be developed against Windows 2003. Support in the kernel is missing for a good/known to work driver. Supports all driver operations. However, the functional logic is not always the same as in Windows. Implementation is also still very different from Windows PNP. A complete rewrite of the kernel part is planned in the future.
VXD 2D/3D Graphics
Not planned at all, it's a Win9x thing.
GDI
Pretty good shape overall, missing Metafile support. Relies heavil y on win32k.
GDI+
Completely shared with Wine, relies on GDI. Uses software rendering by default, via Mesa3D ICD driver. API is almost complete, only few wgl* functions are missing. Can load various ICD drivers and works fine on WinXP too.
OpenGL ReactX
D3D9, D3D8 & DDraw APIs are supported via WineD3D - wrapper translating DirectX functions to OpenGL.
Sound Portcls
Is a class driver for the audio driver subsystem. MIDI support is missing. HW testing needed for port driver implementation (IPortWavePci & IPortWaveRT). Portcls / sysaudio also need testing & bugfixing for WaveIn (audio recording).
22
Handles access to the audio port drivers by managing the device interfaces. Needs to map multiple audiostream to a virtual audio pin in kmixer. Portcls / sysaudio also need testing & bugfixing for WaveIn (audio recording).
Sysaudio
Is a kernel mode component of wdmaud.drv . Implements the Wave / Mixer / MIDI API. Needs MIDI APIs implemented and WaveIn support + Mixer support. Performs mixing / conversions of streams. Currently very poorly implemented. Needs Kernel FPU float saving support before more work can be done.
Wdmaud Kmixer
6.6) COMPARACIÓN DE SISTEMAS OPERATIVOS A continuación se presenta información general, técnica y el ambiente gráfico de algunos sistemas operativos. IDENTIFICACION DEL SO Sistema operativo
Windows Windows Windows XP Vista 2000
Windows 7
Creador
Microsoft
Microsoft
Microsoft
Año de primera distribución
2009
2007
2001
Mac OS X
Mac OS
Debian GNU/Linux
Fedora (Linux)
openSUSE Linux
Mandriva Linux
ReactOS
Microsoft
Apple
Apple
Proyecto Debian
Proyecto Fedora
SuSE
Mandriva (empresa)
Fundacion ReactOS
2000
2001
1984
1993
2003
1994
1998
2004
ASPECTOS GENERALES Sistema operativo ltima versión estable
Costo
Licencia
Tipo de usuario
Windows Vista
Windows 7
6.0 build 6000 Service Pack 2 U$S 90 U$S 199.99 (Home (Home Basic) Premium) 299.99 179 (Home (Professional) Premium) 229 319.99 (Ultimate) (Business) 349 (Ultimate) 6.1 build 7601 Service pack 1
No Libre
No Libre
Hogar, negocios y redes
Hogar, negocios y redes
Windows XP
Windows 2000
Mac OS X
Mac OS
Debian GNU/Linux
Fedora (Linux)
openSUSE Linux
Mandriva Linux
ReactOS
9.2
6.0 Squeeze
15
11.4
2010.0 Adelie
0.3.14
Gratuito
Gratuito
Gratuito
Gra tuito
Gratuito
Libre: GPL
Libre: GPL
Libre: GPL
Libre: GPL
GNU GPL, LGPL, y Licencia BSD1
5.1 build 2600 5.0 con Mac OS X con Service Service Pack v10.7 ("Lion") Pack 3 4 143,526€ $2
152.89 MX (Home) 217,593€ $3 263.895 MX(Pro) No Libre
29€ o
?
preinstalado
No Libre
Hogar, negocios y redes
Gratuito hasta 7.5.5, 9.2
Negocios
No Libre Parcialmente software libre Hogar, diseño, negocios, servidores, programacion y redes
cuesta 15,60€
para dueños de Mac OS X No Libre
Hogar, diseño, negocios
Hogar, ciencia, servidores, redes, negocios
Hogar, ciencia, servidores
Hogar, ciencia, servidores, redes, Hogar, ciencia, Hogar, negocios negocios, servidores y redes empresas, Estaciones de trabajo , escritorio
ASPECTOS TECNICOS Sistema operativo Tipo de núcleo
Windows 7
Windows Vista
Windows XP
Windows 2000
Híbrido
Híbrido
Híbrido
Híbrido
Arquitecturas Intel x86, Intel Intel x86, Intel Intel x86, Intel de x86 64, Intel x86 64, Intel x86 64, Intel procesador IA64 IA64 IA64 soportadas
Sistema de
NTFS
NTFS
NTFS
Intel x86
Mac OS X
Mac OS
Mach Ninguno/ (Micronúcleo) Micronúcleo
Intel x86 64, PowerPC
NTFS/FAT HFS+/UFS
Debian GNU/Linux
Fedora (Linux)
openSUSE Linux
Mandriva Linux
ReactOS
Monolítico
Monolítico
Monolítico
Monolítico
Hibrido
Intel x86, AMD64, PowerPC
Intel x86, AMD64, PowerPC
Intel x86, AMD64, PowerPC
Intel x86, x64, AMD64
ext4
ext4
ext4
FAT32
Intel x86, Intel IA64, AMD64, DEC Alpha, ARM, HP PARISC, MIPS PowerPC (big endian), MIPS (little endian), PowerPC, IMB S/390, Sparc HFS/HFS+ ext3
23
archivos por defecto Soporte de sistemas de archivo de 16 bits Soporte de sistemas de archivo de 32 bits Soporte de sistemas de archivo de 64 bits Herramienta de actualización por defecto
32
No
No
Sí
Sí
No
Sí
?
Sí
?
?
Si
Sí
Sí
Sí
Sí
Sí
Sí
Sí
Sí
Sí
Sí
Si
Si
Si
Si
No
Sí
No
Sí
Sí
Sí
Sí
No (en proyecto)
Windows Update
Windows Update
Windows Update
Windows Update
Software Update
Software Update
apt
yum
YaST
urpmi y RPMDrake
Re-Instalacion
Sistema operativo
Windows 7
Windows Vista
Fedora (Linux)
openSUSE Linux
Mandriva Linux
ReactOS
Entorno gráfico
Basado en el Basado en el Basado en el Basado en núcleo núcleo núcleo el núcleo
Sistema de ventanas por defecto Estilo de Interfaz gráfica de usuario
ASPECTOS GRAFICOS Windows Debian Windows XP Mac OS X Mac OS 2000 GNU/Linux
Standard Windows
Standard Windows
Standard Windows
Aero
Aero
Estilo Luna
Basado en el Basado en el Aplicación: X Aplicación: X Aplicación: X Aplicación: X Basado en el núcleo núcleo Window System Window System Window System Window System nucleo (Quartz)
Standard Macintosh OS X Finder Windows Finder Estilo clásico interfaz
Aqua
Platinum
GNOME
GNOME
KDE
Metacity
Metacity con tema ClearLooks
kwin con tema Air
KDE y GNOME Tipo Windows
Metacity con tema La ora
ReactOs Explorer
6.7) woos. El proyecto de origen español WOOS se basa en el código de ReactOS, pretendiendo ser una distribución derivada. Woo es un sistema operativo Web, un entorno de escritorio integrado en un navegador web. Esto significa que el sistema operativo se ejecuta en un navegador web y las aplicaciones, datos, archivos, configuración, ajustes y privilegios de acceso se ejecutan de forma remota a través de Internet y el equipo local sólo se utiliza para la visualización y entrada de datos. Woos integra aplicaciones webs a las que ya se conocen en una PC de escritorio normal, como el software para redactar documentos, escuchar las canciones o escribir correos electrónicos. Con este software o los archivos privados, es posible conectarse desde cualquier lugar, sin importar donde se encuentre el usuario y cuáles pc que tiene, sólo una conexión a Internet es necesaria. Este tipo de sistema ofrece una mayor seguridad contra la pérdida de datos causada por virus o fallos. Desde el punto de vista de apariencia WOOS es semejante al entorno de escritorio Windows o Mac.
6.7.1) ABIERTAMENTE GRATUITO. COMPATIBLE.NATURALMENTE. WôôS es un sitema operativo gratuito capaz de ejecutar aplicaciones y drivers compatibles con Windows. Diseñado desde cero no necesita de una formación específica para su manejo. Propone correr aplicaciones de Windows (uno de sus asesores es el presidente de Reactos). Es un sistema operativo online open source ¡Toda la potencia de las aplicaciones compatibles con Windows en un entorno abierto y gratuito! 24