Red de conocimiento informático - Material del sitio web - Cómo aprender el sistema operativo

Cómo aprender el sistema operativo

He estado estudiando tecnología informática hasta ahora y tengo algunas opiniones sobre cómo aprender los principios de los sistemas operativos. Ahora las escribo, ¡esperando que sean útiles para todos!

Para aprender el sistema operativo, primero debes pensar de dónde vino el sistema operativo y cómo se programaba en la época en la que no existía el sistema operativo. Esta es la pregunta principal

. No sé si alguien ha leído la documentación oficial de la CPU de INTEL, que siempre se divide en tres partes: programación a nivel de aplicación, programación a nivel de sistema y conjuntos de instrucciones. Entre ellos, la programación a nivel de sistema

es la más complicada. No hablaré sobre el contenido. Solo mire el tamaño del archivo. El volumen de programación a nivel de aplicación del Manual de programación IA-64 es de 2 MB. , pero el volumen del sistema es de 6 MB. Incluso

Incluso la parte del volumen del sistema del manual de programación del IA-32 es mucho mayor que el volumen de la aplicación. Por supuesto, aún no he leído estos contenidos, pero en el catálogo siento que hay muchas similitudes

, como direccionamiento de la memoria de la CPU, administración de la memoria virtual, interrupciones y protección, etc. léalo en la documentación de CPU de INTEL. Se puede ver que varias CPU o máquinas

Aunque cada una tiene sus propias diferencias y características, los problemas centrales que la CPU actual tiene que resolver son solo algunos, como cómo dirección

Memoria, cómo gestionar el almacenamiento virtual, cómo implementar interrupciones, cómo proteger los recursos, etc.

Todos los colegas programadores deben tener muy claro que el sistema operativo de la computadora proporciona servicios para la programación a nivel de aplicación. Los servicios que se brindan son cosas como

cómo direccionar la memoria, cómo administrar la virtual. memoria, cómo hacer interrupciones, cómo administrar discos, cómo. . . . etc. El sistema operativo lo hace por nosotros

La parte más ardua de la programación a nivel de sistema, por lo que solo nos sentiremos cómodos cuando usemos programación a nivel de aplicación como C++ Asignando una variable con int

. p>

La dirección se guarda. Cuando una función quiere llamar a otra función para su ejecución, el proceso de ejecución puede saltar a esa función. Si la memoria no es suficiente, no importa.

El sistema se inicia automáticamente con la memoria virtual (simplemente más lenta), por lo que la programación a nivel de aplicación es la más cómoda, la programación a nivel del sistema operativo es más difícil y hacer directamente un microcontrolador puede ser la más difícil. Porque incluso si se trata de programación a nivel de sistema operativo, es posible que se hayan hecho muchas cosas relacionadas con la capa inferior de la CPU. Lo que debe hacer es comprender qué funciones ha realizado su sistema operativo y cómo llamarlas. La microcomputadora de un solo chip no es tan divertida. Nunca he creado una microcomputadora de un solo chip. Creo que puede estar programada directamente en una CPU en forma ensamblada y probablemente sin un sistema operativo. De esta manera, el trabajo complejo y pesado que debe realizar el sistema operativo, como la gestión de la memoria, las interrupciones, los saltos de procesos, etc., debe ser soportado por el propio programador. La carga sobre el programador será mayor que la de la aplicación actual. programación de nivel mucho más.

Supongo que antes de que existiera un sistema operativo, la vida de todo programador informático no sería tan fácil como lo es ahora, porque para hacer cada programa, debes hacerlo tú mismo.

Para asignar y administrar memoria, no solo debe considerar cómo administrar la memoria de manera eficiente, sino también saber cómo realizar saltos de procesos, etc. Hay mucho trabajo detallado

y estos detalles son diferentes en diferentes CPU. Los métodos de implementación también son diferentes. No es hasta que se resuelven estos problemas que comienzas a considerar realmente cómo compilar la lógica del programa de tu aplicación. Por supuesto, aunque los detalles de implementación a nivel del sistema de la CPU subyacente son diferentes, los problemas que deben resolverse en cuanto al nivel del sistema de la CPU son los mismos, por lo que en la documentación oficial de INTEL, ya sea el volumen del sistema de los dos. manuales de programación IA-32 o IA-64, sólo hay unos pocos contenidos.

Dado que las tareas a resolver a nivel del sistema son las mismas, cada programador debe considerar estos aspectos al programar, entonces puede

pensar, ¿por qué no extraer las mismas tareas que estos? Los programas deben resolverse, esto forma el sistema operativo, la tarea del núcleo del sistema operativo, que es específicamente responsable de resolver cada problema que los primeros programadores de computadoras programan. Hay varias tareas a nivel del sistema que deben resolverse. la carga que queda en el nivel de la aplicación es muy ligera

Olvidé dónde lo vi. Parece que el sistema de base de datos anterior pertenecía al software de aplicación, probablemente porque cada software de aplicación y el sistema operativo requieren una base de datos. por lo que el sistema de base de datos se propuso por separado como software del sistema. No entiendo por qué el sistema operativo actual usa un sistema de archivos. ¿No sería mejor usar un sistema de base de datos directamente?

Creo que si quieres aprender los principios de los sistemas operativos, no es necesario leer libros sobre los llamados principios de los sistemas operativos, ni siquiera libros en idiomas extranjeros.

Es necesario leerlo, porque el volumen de programación a nivel de sistema de la documentación de CPU proporcionado por los fabricantes internacionales de CPU es el material didáctico real, original y mejor. La mayoría de las tareas del sistema operativo que desea escribir son Resuelva las tareas en el volumen del sistema. . Una vez estaba charlando en QQ con un tipo que estaba fabricando microcontroladores. Era un poco más joven que yo y le dije que la capa inferior del sistema operativo actual era muy difícil. Podría hacerlo de inmediato. Incluso un compilador puede crear un sistema operativo. Me sorprendió que fuera tan bueno en ese momento. Ahora entiendo que aquellos que fabrican microcontroladores probablemente crearán sistemas operativos. Debido a que cada programación del microcontrolador se ocupa de la capa inferior del sistema, quienes programan el microcontrolador naturalmente comprenderán mejor el núcleo de un sistema operativo.

Me gustaría sugerir que aquellos que, como yo, estén interesados ​​en los principios del sistema operativo y la capa inferior del sistema, vayan directamente a los materiales oficiales de INTEL, Principios del sistema operativo.

¿Cuántas hay y qué tareas deben resolverse? Al consultar los manuales de programación de volúmenes del sistema de diferentes CPU, puede encontrar las mismas tareas y lógica y resumir cómo lo hace el sistema operativo. No hay duda de que este método. Se puede aprender. La mayoría de las personas asisten a la reunión y la comprensión puede ser más profunda que los métodos de aprendizaje ordinarios.

Amigos que están aprendiendo software de aplicación, también les aconsejo que echen un vistazo al sistema operativo, el kernel y otras cosas de bajo nivel del sistema. Después de leerlo, sentirá que la programación a nivel de aplicación será más fluida y fácil de aprender. Así es como aprendí, aprendí MFC y luego comencé a aprender programación a nivel de aplicación de la CPU INTEL. Ahora decidí comenzar a aprender desde el nivel del sistema. En la actualidad, también voy al sitio web de MSDN en inglés para ver cosas sobre MFC, pero no miro MFC principalmente porque quiero escribir programas de aplicaciones MFC, sino porque quiero ver cómo Microsoft utiliza el sistema para proporcionar todos los servicios que proporciona la programación a nivel de aplicación. ¿Cómo se construye todo este conjunto de estructuras? La biblioteca de datos de Oracle es mi próximo objetivo después del documento de INTEL. También quiero ver cómo se ve una arquitectura de base de datos. ¿Estará integrado en el sistema operativo?