Prefacio al análisis del escenario del kernel de Windows
Algunas personas en el mundo no se conforman con sólo saber lo que les interesa, sino que deben saber qué pueden aceptar. Aquellos interesados en los sistemas operativos de computadoras, especialmente los sistemas operativos Windows, deberían poder obtener respuestas a muchas preguntas en este libro. De hecho, el propio autor también es miembro de este grupo. El autor ha leído y analizado el código fuente del kernel de Linux. Naturalmente, también quiere leer el código fuente del kernel de Windows y comprender el kernel de Windows. En opinión del autor, para software complejo como el kernel del sistema operativo, si quieres entenderlo, debes profundizar en el código del programa. De hecho, el autor ha tenido este deseo durante muchos años, pero el código del kernel de Windows no está abierto al público. Incluso si me conformo con la siguiente mejor opción y encuentro algunos libros que presentan el kernel de Windows en profundidad, los hay. Solo unos pocos, y a menudo no entiendo el punto después de leerlo. Creo que es realmente incoherente o incluso ambiguo. De hecho, cualquier lenguaje natural sólo puede describirse como vago e impreciso en comparación con el código de un programa. Afortunadamente, existe un proyecto de código abierto de ReactOS que tiene como objetivo desarrollar un kernel de Windows de código abierto. Las personas involucradas en el proyecto deben haber puesto mucho esfuerzo en el kernel de Windows, intentando imitar a Windows en su código, intentando ser fiel a Windows, pero a su propia implementación. Al leer el código de ReactOS, a menudo pienso en algunos capítulos o fragmentos de escritos relevantes. No lo entendí cuando lo leí antes, pero realmente lo entiendo ahora cuando veo el código. Esto hace que la gente sienta que para software complejo como el kernel del sistema operativo, debe combinarse con un código específico (incluso si es solo un pseudocódigo utilizado para describir el algoritmo) para que quede claro de un vistazo. Bloquear la investigación sobre el código del núcleo es en realidad un desprecio por el "derecho a saber" de la humanidad. Para el autor del código ReactOS, el autor es agradecido, admirado y respetado, y siente que debe compartir su comprensión y experiencia con los lectores. El código de este libro es básicamente de la versión 0.3.3 de ReactOS, por lo que puede descargar una copia del código y leerlo junto con este libro.
Otro proyecto de código abierto muy relacionado con ReactOS es Wine, que pretende colocar una capa de adaptación fuera del kernel de Linux, compuesta por un proceso de servicio y unas bibliotecas de enlaces dinámicos, para que el código binario de las aplicaciones de Windows se se puede ejecutar directamente en el kernel de Linux (no es necesario migrar ni recompilar). La capa de adaptador permite que las aplicaciones de Windows se ejecuten directamente en el kernel de Linux (sin portar ni recompilar). En pocas palabras, esta es la "diferencia entre los kernels". Se supone que el software de aplicación de Windows se ejecuta en el kernel de Windows, pero obviamente existen muchas diferencias entre el kernel de Windows y el kernel de Linux. El propósito de Wine es mejorar el kernel (. Espacio de usuario) las diferencias se compensan y virtualizan para que el software de aplicación de Windows pueda ejecutarse en el kernel de Linux. El propósito de Wine es compensar y virtualizar fuera del kernel (espacio de usuario) para que las aplicaciones de Windows puedan ejecutarse en el kernel de Linux. En cierto sentido, esto es más difícil de hacer que ReactOS, porque está reconstruyendo un kernel virtual de Windows en una base y entorno diferentes, lo que obviamente es imposible sin un conocimiento profundo y real del kernel de Windows. He escuchado (y visto) cierto escepticismo sobre ReactOS, diciendo ¿cómo es posible que la gente de ReactOS tenga un conocimiento tan profundo del kernel de Windows? ¿Obtuvieron el código fuente del kernel de Windows y simplemente volvieron a dibujar la calabaza? La existencia y el éxito (quizás parcial) de Wine responde a esta pregunta y sirve como evidencia.
El autor de Wine conoce el kernel de Windows tan bien como el autor de ReactOS, pero el código de Wine está muy alejado del kernel de Windows. Si Wine puede escribir código línea por línea desde cero, ¿por qué no ReactOS?
Sin embargo, en lugar de desarrollar un kernel de Windows de código abierto, creo que sería mejor transformar el kernel de Linux en un kernel unificado, uno que admita aplicaciones tanto de Linux como de Windows. Soporte de kernel tanto para aplicaciones Linux como para aplicaciones Windows. Esto será de gran beneficio para la popularidad del sistema operativo Linux. Debido a que muchos usuarios ya están acostumbrados a usar sistemas operativos Windows y aplicaciones de Windows, para que estos usuarios cambien a sistemas operativos Linux, es necesario proporcionar un plan de transición sin problemas. Lo más importante es permitir que los usuarios continúen usándolos. que han invertido en él Varios recursos, pero usuarios que ya están acostumbrados a utilizar aplicaciones de Windows. Aunque Wine puede desempeñar un papel similar o básicamente el mismo en su función, la práctica de compensar las diferencias del núcleo a través de procesos de servicio fuera del núcleo inevitablemente provocará una degradación del rendimiento. Para evitar la degradación del rendimiento, tenemos que compensar la. diferencias del kernel en el kernel. El autor de esta propuesta recibió un fuerte apoyo de Insigma Technology Co., Ltd. de la Universidad de Zhejiang y estableció un equipo de I + D compatible con el kernel para este propósito. Posteriormente, también recibió apoyo para el proyecto de la Comisión Nacional de Desarrollo y Reforma y el Departamento Provincial de Zhejiang. Ciencia y Tecnología. Como proyecto de código abierto, el desarrollo de núcleos compatibles está en curso. Los autores desean agradecer sinceramente a ZDNS por su apoyo. Además, ya sea que se trate del desarrollo del núcleo de compatibilidad o de la redacción de este libro, el autor recibió el estímulo y el apoyo de Lu Shouqun, presidente de la Asociación de Promoción de Software de Código Abierto de China, y del académico Ni Guangnan, por lo que le gustaría para expresar su agradecimiento.
Por lo tanto, la motivación para escribir este libro no es solo la investigación e introducción del kernel de Windows, sino también la necesidad de desarrollar un kernel compatible. En cierto sentido, este libro es un subproducto del Proyecto Kernel de Compatibilidad; sin el Proyecto Kernel de Compatibilidad, me temo que este libro no existiría. De hecho, cuando Electronic Industry Press me pidió que escribiera un manuscrito, mi intención original era escribir un libro de 500 a 600 páginas sobre el estudio comparativo de Windows y Linux. Pero después de comenzar a escribir, sentí que no era apropiado hacerlo, porque dado que ya existe un libro "Análisis de escenarios de aplicaciones de código fuente del kernel de Linux", no es apropiado repetir el contenido del libro, sino que debería centrarse en Ventanas. Por otro lado, y lo que es más importante, quienes participan en el desarrollo del kernel compatible saben más sobre el kernel de Linux, mientras que quienes participan en el desarrollo del kernel compatible saben menos sobre el kernel de Windows y necesitan urgentemente un análisis de escenarios del kernel de Windows. Por lo tanto, el plan de escritura de este libro se cambió una y otra vez, la extensión se hizo cada vez más grande y el tiempo se prolongó. Finalmente, se necesitaron tres años para completar la escritura de este libro y la extensión alcanzó más de 1000 páginas. . Por esta razón, me gustaría agradecer a los dos editores Zhu Shuhong y Bai Tao de Electronic Industry Press por su paciencia y entusiasmo, y también por su cuidadosa edición de este libro.
Durante la redacción de este libro, Microsoft abrió el código fuente de un "Windows Research Kernel (WRK)" en miniatura para su uso en la enseñanza universitaria. En lo que respecta a Microsoft, este es sin duda un paso adelante bienvenido, pero no significa que WRK sea de código abierto; Primero, WRK sólo está disponible para universidades, no para el público, y su licencia establece explícitamente que la distribución se limita a "su institución educativa". Además, aunque la licencia permite citar fragmentos de código en artículos y libros, estipula que "la cantidad total de código fuente para cada fragmento no debe exceder las 50 líneas", lo que significa que cada fragmento no debe exceder las 50 líneas de longitud. La cantidad total de código fuente para cada fragmento no debe exceder las 50 líneas". Más importante aún, WRK es solo un modelo de enseñanza, no un sistema operativo real. En mi opinión, WRK está en realidad más cerca de Windows que ReactOS. Está incluso más lejos (de Ventanas).
Por lo tanto, incluso independientemente de las restricciones de licencia, si este libro se escribiera utilizando el código WRK, me temo que más de la mitad del contenido de este libro no existiría. Teniendo esto en cuenta, el autor decidió utilizar el código ReactOS.
Sin embargo, ReactOS no es Windows en sí, y algunas características y mecanismos de Windows (como Notificar en el sistema de archivos) aún no están implementados en ReactOS. Por lo tanto, espero sinceramente que algún día Microsoft haga público todo el código del kernel de Windows y luego, si todas las condiciones lo permiten, espero poder escribir un informe de análisis de escenario "real" sobre el código fuente del kernel de Windows.
Por supuesto, la razón por la que queremos estudiar el kernel de Windows no es sólo para satisfacer nuestra curiosidad intelectual. El kernel del sistema operativo está en la fase inicial e incluso en el origen de toda la cadena de la industria del software. Una comprensión profunda del kernel del sistema operativo tiene un impacto importante en el desarrollo de otro software, especialmente el software del sistema. Mi amigo el profesor Hu Ximing utiliza a menudo la medicina china y la medicina occidental para comparar los dos modelos de desarrollo de software. La medicina tradicional china ciertamente puede curar enfermedades, pero algunas enfermedades sólo pueden curarse con la medicina occidental. El fundamento más fundamental de la medicina occidental es la anatomía humana. De hecho, la medicina china ahora también requiere rayos X.
Los cineastas dicen que las películas son un arte del arrepentimiento, porque una vez que se obtienen los resultados, no se pueden cambiar, por lo que muchas veces dejan arrepentimientos. De hecho, no son sólo las películas las que dejan obras lamentables. Aunque este libro aún no se ha publicado, también me arrepiento de que parte del contenido debería haberse investigado y escrito cuidadosamente en este libro, pero mi tiempo y energía ya no lo permitieron. Para un sistema tan complejo y enorme como el kernel de Windows, el autor se da cuenta de que es imposible comprender cada detalle correctamente, por lo que hay falacias inevitables en el libro, pero el autor ya no tiene el tiempo ni la energía para desenterrarlo en detalle. , lo cual también es una lástima.