La diferencia entre los núcleos LINUX y WINDOWS es

  

Hay muchas estaciones de slobber sobre LINUX y WINDOWS. Este documento intenta comparar las similitudes y diferencias entre los dos sistemas operativos principales
desde una perspectiva técnica. Centrarse en la parte del núcleo.

I. Motivación:

Fui el primer campamento de WINDOWS. He escrito más de 2 años de drivers bajo WINDOWS. Más tarde, debido a la necesidad de aprender, me cambié a LINUX, y fue casi 2 años. Durante el período, experimenté muchos giros y vueltas y aprendí mucho. Dado que la experiencia y el conocimiento no son suficientes al desarrollar el controlador de WINDOWS, me siento más familiarizado con LINUX ahora.

Por supuesto, cada dos años de estudio solo se puede decir que están en la puerta. Cada sistema operativo es muy potente y en constante desarrollo. Por lo tanto, lo comparo desde un punto de vista personal. Es inevitable que haya deficiencias. Dé la bienvenida a todos para que me corrijan.

Estoy escribiendo este artículo para ayudar a aquellos que también se han transferido del campo de WINDOW. También espero que las personas que están interesadas en pasar de LINUX a WINDOWS (como el jefe) y aquellos que estén interesados ​​en ambos tengan alguna Ayuda

En general, creo que los dos sistemas operativos tienen sus propias fortalezas. Me gusta la libertad y la franqueza de LINUX, y me gusta la uniformidad y compatibilidad de WINDOWS. Lo siguiente comparará las similitudes y diferencias entre los siguientes dos sistemas operativos.

Por cierto: con respecto a la versión del sistema operativo, el kernel de WINDOWS no ha cambiado mucho desde WIN 2K. También estoy familiarizado con WIN2K, WIN XP. El kernel de LINUX en el artículo es 2.6. O más específicamente, es 2.6.18. Porque estoy más familiarizado con esta versión. Sin embargo, la última parece haber sido 2.6.31. Además, en relación con 2.6.18, una cita de esta versión de los estudiantes de T-Bagwell: "2.6.18 parece ser una versión grande relativamente estable, al igual que 2.4.18, relativamente estable, muchas empresas, uso integrado" . El CENTOS 5 que uso está basado en 2.6.18.

En segundo lugar, la diferencia entre los dos:

Creo que la mayor diferencia entre los dos es que WINDOWS es un software comercial, y LINUX es un software de código abierto. La ventaja del software comercial es que puede concentrar una gran cantidad de mano de obra y recursos para hacer una cosa. Fácil de unificar y compatible (debido a las necesidades del cliente). Los beneficios del código abierto son flexibles y abiertos.

En la siguiente comparación, generalmente introduzco WINDOWS primero, luego introduzco LINUX.

1, concepto: business VS open source

WINDOWS es un software comercial, su código fuente es confidencial. Por supuesto, otras personas que no son MS aún tienen la oportunidad de ver el código fuente. Si usted y MS firma un NDA (ACUERDO DE NO DIVULGACIÓN), entonces también puede obtener el código WINDOWS.

Sin embargo, para la mayoría de los estudiantes pobres, e incluso VISUAL STUDIO está utilizando compañías piratas de Tuen Mun, firme un NDA con MS Es casi inimaginable. Entonces, en el mundo de WINDOWS, es muy difícil entender la información específica del kernel de WINDOW. Solo se puede filtrar por DDK (KIT DE DESARROLLO DEL CONDUCTOR) y WINDBG (herramienta de depuración del kernel). Luego está REVERSE ENGINEERING (reverso) La ingeniería, que puede entenderse simplemente como desmontaje, es en realidad más complicada.)

Esto también causó la razón por la que el libro < WINDOWS INTERNALS > es muy bueno. Está autorizado por Microsoft y se ha publicado mucho. Detalles internos. Otro libro en el núcleo es < WINDOWS INDOCUMENTADO 2K SECRETS >, aunque antiguo, pero con mucha información privilegiada. Acerca de WINDOWS, los indocumentados y los secretos Estas dos palabras son definitivamente análogas a las palabras "Super belleza". Debido a que estas cosas generalmente no son visibles.

En consecuencia, en el mundo de Linux, una palabra común es RTFS. Eso es LEER EL CÓDIGO DE FUENTE FXXXXXX (se dice que esta oración es el primer linus torvalds, el padre de LINUX). Significado significa "leer el maldito código". El significado de las palabras, te daré el código, ¿aún quieres jurar? Es como un hombre que le dice: GF /LP /LD, te he dado todas las contraseñas de las cuentas bancarias, ¿todavía quieres jurar?

De hecho, él no sabe (o no sabe) que las mujeres todavía necesitan su tiempo y energía para acompañarla. Es como si el programador de LINUX no tuviera conocimiento de la documentación. Por supuesto, los programadores de LINUX también deben saber la importancia de la documentación, pero una de ellas es que el costo de mantenimiento es demasiado alto y el kernel de LINUX cambia demasiado rápido. Así que la documentación de LINUX siempre se siente peor que MSDN.

Cuando el código fuente de WIN 2K se filtró, no podía esperar para descargarlo. Aunque todavía no lo he visto, la sensación de obtener el código fuente de WINDOWS definitivamente no es peor que una belleza sin igual.
(Por supuesto, realmente quiero casarme con mi esposa o mirar hacia adentro).

En contraste, LINUX es de código abierto, el código siempre está visible. Esto es muy impactante para mí, recién transferido del mundo de WINDOWS. Todo el mundo conoce este hecho, pero cuando descubres que tienes que usar todo tipo de métodos antes, puedes obtener toda la información en pocas palabras y ahora estás completamente presente frente a ti, puedes entender que el código abierto es un gran proyecto.

Después de leer el código fuente de Linux, finalmente descubrí que la mayoría del kernel original también es lenguaje C (en lugar del ensamblaje previamente imaginado). Al mismo tiempo, el kernel parece ser así, no tan misterioso como antes. El kernel es un poco más molesto que compilar un programa normal, y lleva mucho tiempo. El kernel compilado original se puede usar con un compilador normal de C. El kernel original también es un archivo ejecutable normal (PS: sospecho que MS también está utilizando VS). Traducción de WINDOWS. Al mismo tiempo, también sé que el kernel de WINDOWS también es un archivo ejecutable.) El reemplazo original del kernel es muy simple.

Finalmente, el kernel puede ser cambiado por mí. Wow hahaha!

Sigue las reglas, creo que el negocio sigue siendo bueno. Por ejemplo, la compatibilidad es buena. Solía ​​escribir un controlador con WDM. Puedo ejecutarlo bajo WIN 98, WIN 2K, WIN XP como máximo. Muy conveniente Y si cambias a LINUX, debes rezar para que las diferentes versiones del kernel no cambien los archivos de encabezado y las interfaces de función que utilizas. De lo contrario, tienes que cambiar el código.

Al mismo tiempo, los beneficios del código abierto son adecuados para el aprendizaje y muy flexibles. Creo que LINUX es muy adecuado para escuelas, estudiantes. Debido a la fuente abierta, cuando encuentra algo que no entiende, puede ir directamente a la fuente (¿recuerda RTFS?). Si no entiendes, puedes preguntar en el foro. Para WINDOWS, usted quiere entender su mecanismo interno, tiene que GOOGLE y luego orar. Un mejor recurso es una revista bajo MSDN, que tiene un tema llamado UNDER THE HOOD, o Soso BUGSLAYER. Matt Pietrek y John Robbins, los autores de los dos temas, son personajes muy cansados.

Por cierto, el nombre BAJO LA CAMPANA en sí. Nunca lo he entendido antes, porque la palabra CAMPANA significa una portada. Entonces, ¿cuál es el defecto debajo de la cubierta? ¿Por qué quieres mirar debajo de la portada?

Después de venir a los Estados Unidos, poco a poco lo entendí. HOOD debe entenderse aquí como el capó de un coche. En los Estados Unidos, los autos son muy comunes. Si conduce, pero nunca abre el capó, solo lo utilizará, no el interior del automóvil. ¿Y qué si abres la tapa? Puedes ver muchos detalles internos, como el motor destrozado.

En el reino del automóvil de los Estados Unidos, muchos términos de software están relacionados con los automóviles, porque las personas conocen bien los automóviles en su vida diaria. Por ejemplo, la palabra "motor", al jugar juegos en 3D, a menudo veo la introducción, el juego utiliza el último motor en 3D. A que te refieres La parte central del juego (el motor del automóvil) se ha actualizado. No se trata solo de cambiar la imagen de la persona externa.

Además, el software de código abierto a menudo se analiza con los automóviles. Después del accidente de código abierto, compró un automóvil (software), puede hacer que un taller de reparaciones lo repare. Es decir, cualquiera puede cambiar, siempre que lo entienda. El software COPY RIGHT es que usted compró el auto, pero la cubierta del motor está bloqueada. Si está rota, solo puede ser reparada por el fabricante. Otras personas no pueden repararla. ¿Si el fabricante no quiere repararlo o repararlo? Entonces solo puedes aceptar tu vida.

Está un poco más lejos, deténlo.

1.1, versión: código fuente binario de VS

La discusión principal aquí es sobre las diferentes formas y conceptos adoptados por WINDOWS y LINUX en el programa de publicación. Estos y los conceptos básicos del negocio anterior o fuente abierta son Enlazados juntos.

En el mundo de WINDOWS, casi todos los instaladores se lanzan en formato binario. En otras palabras, el usuario descarga un programa y luego hace doble clic en él todo el camino SIGUIENTE, SIGUIENTE, SIGUIENTE. Este método es muy adecuado para los principiantes. Existen mecanismos similares en el mundo de Linux, como YUM, APT-GET, etc. Sin embargo, YUM y APT-GET son relativamente tarde, y antes de eso, fue más problemático instalar el programa en el mundo de Linux.

A veces, LINUX YUM, APT-GET no es suficiente. Por ejemplo, un pequeño software escrito por algunas personas no se coloca en estas grandes bibliotecas públicas. En este momento, encontrará que generalmente proporcionan uno o varios archivos de origen, y luego los usuarios necesitan descargarlos ellos mismos, " compilar ", instalar. Esta es también la forma de lanzamiento del código fuente que es común en el mundo de Linux.

Al principio, no estaba acostumbrado a esta forma de publicar Linux. Usando la instalación de WINDOWS con doble clic, siempre siento que la instalación de LINUX es muy problemática, y tengo que hacerlo yo mismo. /CONFIGURAR, HACER, INSTALAR. En caso de que este software dependa de otras bibliotecas, entonces tengo que encontrar esas bibliotecas por mi cuenta. Esas bibliotecas dependen de otras bibliotecas ... Además, las versiones de las distintas bibliotecas también son un problema. Si no son compatibles, busque una compatible.

¿Por qué hay tanto código fuente lanzado en el mundo de Linux? ¿Por qué se lanza el popular archivo binario de WINDOWS en lugar del código fuente? Con respecto a esto último, está bien explicado, porque muchos códigos fuente en WINDOWS son secretos comerciales y no son públicos. Al mismo tiempo, las bibliotecas utilizadas por el programa WINDOWS se instalan en el sistema general. Por lo tanto, el lanzamiento binario es factible y muy conveniente.

Sobre la pregunta anterior, creo que una de las ventajas de la versión del código fuente es que puede realizar algunas optimizaciones y configuraciones en el momento de la compilación. Por ejemplo, el mismo código puede optimizarse correctamente cuando se compila en una plataforma de 32 o 64 bits. Además, los usuarios también pueden configurar algunos conmutadores en tiempo de compilación, por lo que la optimización durante la compilación es generalmente mejor que la optimización en tiempo de ejecución.

Uno de los inconvenientes del lanzamiento del código fuente es que es más exigente para los usuarios. Si ejecuta Configue, el comando make está bien. Si no te va bien, tienes que cambiar tus propios archivos, lo que es indudablemente imposible para los usuarios normales. Además, las dependencias entre las bibliotecas son muy problemáticas si se manejan manualmente. Afortunadamente, en el mundo de Linux, había un sistema de administración de paquetes como YUM APT-GET. La mayoría del software se puede instalar fácilmente.

2, proceso y su creación CreateProcess VS fork + execv

En el mundo de WINDOWS, la API de WIN32 más utilizada para crear procesos es CreateProcess y funciones relacionadas. Esta función requiere un montón de parámetros (características de la API de WINDOWS), pero muchos parámetros pueden representarse simplemente mediante NULL, TRUE O FALSE. Además, le dices directamente qué archivo ejecutar.

En el mundo de Linux, sé vagamente que la bifurcación se usa para crear un nuevo proceso. Pero cuando miré la descripción de la función de fork, me quedé atónito. Porque la horquilla no requiere ningún parámetro. Estoy acostumbrado a los 10 parámetros de CreateProcess, y de repente cambié a una función que no requiere ningún parámetro, se siente maravilloso. Por un lado, parece que las cosas son mucho más simples y no tienes que descubrir cada significado de 10 parámetros. Por otro lado, estoy muy confundido. ¿Cómo puedo decir que deseo ejecutar un archivo?

Más tarde supe que el significado del proceso en LINUX es diferente de WINDOWS. El proceso en sí en LINUX es ejecutable. En WINDOWS, un proceso simplemente representa al propietario de un recurso y no se puede ejecutar. Para ejecutar, debes tener un hilo. Esto también explica, en parte, por qué el nombre del archivo a ejecutar debe pasar en CreateProcess.

Copyright © Conocimiento de Windows All Rights Reserved