Implementación del sistema operativo" Prefacio del autor
Este libro es la segunda edición de "Sistemas operativos que puede hacer usted mismo" y proporciona a los lectores ejemplos específicos de implementación de prototipos de sistemas operativos. Hay muchos libros sobre sistemas operativos, pero no muchos que se centren en ayudar a los lectores a implementar sistemas operativos experimentales. Este libro comienza con un sector de arranque simple y cuenta la historia de crecimiento de un sistema operativo para referencia de los lectores.
Este libro está orientado a la práctica y enseña a los lectores a desarrollar sus propios sistemas operativos a través de ejemplos específicos. Los pasos del libro siguen el orden de pequeño a grande, de superficial a profundo. Siguiendo estos pasos, los lectores pueden comenzar con un sector de arranque simple, mejorar gradualmente el código, expandir funciones y finalmente formar un pequeño sistema operativo.
Este libro no solo presenta los elementos de un sistema operativo, sino que también cubre todos los aspectos necesarios para desarrollar un sistema operativo, como cómo configurar un entorno de desarrollo, cómo depurar y cómo ejecutarlo. una máquina virtual. Los ejemplos de sistemas operativos de este libro utilizan IA32 como plataforma predeterminada, por lo que el modo protegido también figura como un punto de conocimiento necesario, que a menudo se ignora en los libros prácticos sobre sistemas operativos tradicionales. En resumen, siempre que sea el conocimiento necesario para desarrollar su propio sistema operativo, este libro intentará cubrirlo para referencia de los lectores.
Como todos sabemos, un sistema operativo completo suele ser muy complejo. Si se tiene en cuenta el estatus especial del sistema operativo como puente entre hardware y software, puede parecer más difícil de entender que el sistema de software promedio, porque su núcleo a menudo contiene muchas operaciones dirigidas directamente a la CPU, la memoria y la interfaz de usuario. O puertos, y estos Las operaciones se intercalan en un mar de código más oscuro.
Tenemos muchos sistemas operativos cuyo código fuente es abierto y se puede descargar y leer en cualquier momento. Esto puede parecer que facilitará la implementación de un sistema operativo pequeño con el que puedas jugar, pero. Este no es siempre el caso, es tan fácil, porque el número de líneas de código es de decenas de miles o incluso cientos de millones de líneas, y los detalles a menudo están relacionados entre sí, lo que aumenta la dificultad de comprensión. Tenemos muchos tutoriales sobre sistemas operativos disponibles, pero leerlos siempre parece hacernos sentir desconectados y desconectados. La razón fundamental de todo esto es que lo que los estudiantes enfrentan al principio es un sistema operativo completo, o una serie de resultados teóricos acumulados por sus predecesores durante décadas. No importa cuán alto sea el nivel de escritura del autor, cuán inteligente sea el lector o cuán bueno sea el código, es difícil para los principiantes entenderlo todo.
No soy alarmista, porque esta ha sido mi experiencia personal. Por supuesto, si es solo para afrontar el examen, algunos libros teóricos sobre sistemas operativos son suficientes y no es necesario ser tan claro en los detalles. Pero ¿y si es por interés? ¿Qué pasa si quieres escribir tu propio sistema operativo? Descubrirá que los libros teóricos de repente le parecen inútiles y se dará cuenta de que cualquier malentendido de los detalles puede provocar que el código que ha escrito con tanto esfuerzo se ejecute de forma anormal o incluso falle.
¡Yo también he pasado por esto! Una vez leí un libro "Sistemas operativos: diseño e implementación" pero no pude encontrar por dónde empezar a implementar un sistema operativo. Esto no quiere decir que estos libros no sean buenos, ni que el código de los predecesores no sea bueno, pero como principiantes que no sabemos nada al respecto, no solo no entendemos el conocimiento teórico en el palacio, sino que tampoco entendemos el detalles reales, lo que nos hace difícil comenzar.
Quizás en opinión de los autores de estos libros de texto, los detalles prácticos no forman parte del plan de estudios, o que se mencionan con demasiada facilidad, o que forman parte de la llamada "experiencia" que se generalmente reservado para Depende de los lectores explorar por sí mismos. Pero la realidad es que el contenido que no se menciona en estos libros ocupa la mayor parte del tiempo de los principiantes e incluso dificulta el aprendizaje.
Aún recuerdo la frustración que sufrí cuando comencé a escribir mi propio sistema operativo, la impotencia de no saber por dónde empezar. Afortunadamente, persistí, superé muchas dificultades y completé el prototipo de mi propio sistema operativo.
En ese momento, pensé que no debía ser el único interesado en escribir mi propio sistema operativo, y no debía ser el único que encontraba dificultades en la práctica.
Tal vez debería escribir mi experiencia para ayudar a otros que vengan después de mí, así que escribí la primera versión de este libro, que es "Escribiendo su propio sistema operativo". Creo que si también sientes curiosidad por el mágico mundo de las computadoras y quieres conocer la historia detrás de escribir tu propio sistema operativo, definitivamente obtendrás ayuda de este libro. Si realmente reavivas tu entusiasmo por practicar sistemas operativos gracias a mi libro y comienzas tu viaje hacia los sistemas operativos, estaré muy feliz.
Sin embargo, para ser honesto, cuando escribí Do-It-Yourself OS, no esperaba mucha respuesta, en parte porque los sistemas operativos no son un tema de moda y en parte porque la razón es que Estoy aprendiendo, tal vez sólo un pequeño paso por delante del lector. Pero para mi sorpresa, este libro se ha reimpreso muchas veces desde que salió, e incluso encabezó la lista de ventas por un tiempo. Esto me hace sentir que tiene cierto valor de referencia. Me gustaría aprovechar esta oportunidad para agradecer a todos los lectores. quienes me apoyan.
Cuando escribí Do-It-Yourself Operating Systems, no tenía idea de que hoy estaría disponible una segunda edición. La razón es que quería que este libro llenara un vacío en lugar de repetir algo que otros ya han hecho bien. Al llenar los vacíos, me refiero específicamente a brindarles a los entusiastas de los sistemas operativos como yo la confianza para leer el código de otros sistemas operativos de código abierto más populares y la capacidad de escribir sus propios sistemas operativos desde cero después de leer exactamente este libro. Edición ya realizada.
Entonces, ¿por qué debería escribir una segunda edición? Hay varias razones. En primer lugar, aunque la primera edición no cubre la comunicación entre procesos, los sistemas de archivos, etc., que se explican en muchos libros, todavía siento que existen problemas comunes de incoherencia al leer. El propio autor puede ser muy claro al respecto. las razones, pero la escritura es demasiado simplista que puede no resultar clara para los lectores. En segundo lugar, yo también quiero dibujar un círculo. La primera edición de este libro cumplió su misión, pero después de todo, al final del libro, lo que el lector ve no es un sistema operativo real. No tiene sistema de archivos, ni administración de memoria, y no puede hacer nada. En la segunda edición verás que a través de la compilación cruzada ya puedes escribir aplicaciones para nuestro sistema operativo experimental, es decir, ya tiene las funciones básicas del sistema operativo, aunque aún es sumamente rudimentario, el primero. Después de todo, se ha trazado un círculo. En tercer lugar, todavía hay muy pocos libros prácticos sobre sistemas operativos. Además de leer uno de los pocos libros representados por "Sistema operativo", solo necesita ver cómo lo hacen otros: Diseño e implementación, todo lo que tiene. Lo que hay que hacer es sumergirse en el código fuente, y los resultados a veces pueden ser bastante frustrantes. Yo mismo me he desanimado, así que en esta segunda edición todavía intento escribirlo con más cuidado y compartir mi propia experiencia. Elegí el diseño más minimalista que se me ocurrió para que el lector no se sintiera abrumado con demasiados detalles para ver la imagen completa. Creo que ese es el valor de este libro: un diseño simplificado y fácil de entender con tantos detalles como sea posible.
En esta edición el contenido se divide en dos partes. La primera parte es básicamente una revisión de la primera edición, pero con un ajuste: crear el entorno de desarrollo para escribir sistemas operativos bajo Linux de forma predeterminada, teniendo en cuenta a los usuarios de Windows y Linux. Las razones de esto se explicarán en detalle en el Capítulo 2. Por supuesto, el entorno de desarrollo es secundario y el contenido y el código involucrados en el libro son los mismos que en la primera edición. La siguiente parte del libro es completamente nueva y agrega comunicación entre procesos, sistemas de archivos y administración de memoria. Como en la primera edición, el foco del próximo capítulo todavía no está sólo en los resultados, sino también en los procesos que conducen a ellos. Al mismo tiempo, dado que el propósito de este libro es compartir y guiar, el diseño se ha simplificado lo más posible para resaltar las partes más importantes. El lector verá cuán toscos son el sistema de archivos y la administración de memoria del sistema operativo. La simplicidad no es una desventaja, para nosotros los principiantes, aquí es exactamente donde debemos empezar. En otras palabras, si ya tiene cierta experiencia en la implementación de sistemas operativos, es posible que este libro no sea para usted. Este libro es adecuado para principiantes que nunca han escrito un sistema operativo.
El diseño de este libro lo completé yo mismo usando L ATEX.
Me esfuerzo en el formato porque quiero que los lectores compren, primero, un libro que sea fácil de leer y agradable a la vista y, segundo, un libro que explique cómo escribir un sistema operativo. Además, el código que figura en el libro se incrusta automáticamente en el archivo fuente L ATEX mediante un programa escrito por mí, lo que garantiza una coherencia estricta entre el libro y el CD-ROM, de modo que los lectores puedan encontrar fácilmente el código en el CD-ROM. ROM basada en el nombre del archivo y el número de línea La ubicación exacta
.
Además, hay algunos cambios menores en la segunda edición. La primera es que el nombre del sistema operativo ha cambiado. Esto se debe a que, aunque nuestro sistema operativo experimental toma mucho de sus predecesores, el diseño de sus diversas partes (como el sistema de archivos y la administración de memoria) es a menudo único, por lo que. Cambié el Tinix original (que significa TryMinix) por el nuevo nombre Orange's (el nombre vino de mi esposa) para mostrar la diferencia. Además, el estilo del código del libro se ha ajustado en algunos lugares.
Creo que aunque la segunda edición ha cambiado de una forma u otra, una cosa que no ha cambiado es que este libro intenta contar a los lectores tanto como sea posible sobre mi experiencia al escribir mi propio sistema operativo. mientras intentaba tal vez contarme más sobre mi proceso de pensamiento inicial y mi proceso de codificación. Lo más probable es que el lector sea más inteligente que yo y tenga una mejor manera de resolver el problema, pero de todos modos, creo que mi propia experiencia será útil para el lector. Si ese fuera el caso
sería muy feliz.
También quiero agradecer a muchas personas por escribir la segunda edición. Me gustaría agradecer a mis padres y a mi abuelo por cuidarme y espero que no se preocupen por mí; escribir un libro es un trabajo duro, pero también me da muchas recompensas. Papá me ayudó a revisar el texto en la etapa final de la segunda edición. Estás en este libro. Me gustaría agradecer a todos en Bowen Viewpoint, gracias al profesor Guo por su comprensión y apoyo, gracias a Li Ling por su arduo trabajo y gracias a Jiang Li y Li Bing. Admiro su eficiencia en el trabajo. También me gustaría agradecer al Sr. Meng Yan. Siempre tendré presente su aliento. Me gustaría agradecer a mi querido amigo Guo Hongqiao. No sólo me brindó ayuda técnica, sino también apoyo moral. Gracias a mi colega y amigo Zhang Huichang, cuya amplitud y profundidad técnica siempre me han impresionado. Además, quisiera agradecer nuevamente a quienes me ayudaron con la primera edición, porque sin la primera edición no habría segunda edición.
De todas las personas, a la que más debo y quiero agradecer es a mi esposa Huang Danhong. Gracias por todos los consejos que me diste y gracias por ayudarme a hacer dibujos. Especialmente cuando este libro no se completó en el tiempo que esperaba, cuando encontré dificultades que no pudieron resolverse durante mucho tiempo, siempre estuviste a mi lado para animarme. Contigo, nunca me he sentido más cálido. No habría podido terminar este libro sin su apoyo. Gracias, este libro también te pertenece.
En comparación con la primera edición, este libro cubre más aspectos del diseño de sistemas operativos. Debido al nivel limitado del autor, inevitablemente hay errores e incluso falacias en el libro. Se ruega a los lectores que lo critiquen y. corregirlos. Si tiene alguna pregunta, comentario o sugerencia, permítanos ****hablar****, **** y progresar juntos.
Introducción a este libro
Lectores destinatarios de este libro
Este libro es un libro técnico sobre la práctica del sistema operativo. Los profesionales que estén interesados en la tecnología de sistemas operativos y quieran experimentar el proceso de escritura de un sistema operativo de primera mano, así como los entusiastas del código fuente de Minix y Linux, obtendrán el conocimiento y las ideas necesarios para practicar los sistemas operativos con este libro.
Este libro se guía por la ideología rectora de la "escritura práctica". Siempre que esté relacionado con la "escritura práctica" del sistema operativo, se discutirá como una introducción. desde el establecimiento del entorno de desarrollo, pasando por el modo de protección, hasta el conocimiento del chip en IBM PC y, finalmente, el conocimiento del propio sistema operativo. Por lo tanto, desde el entorno de desarrollo hasta el modo protegido, pasando por el conocimiento del chip IBMPC y, finalmente, hasta el diseño y la implementación del sistema operativo en sí, puede encontrar la introducción correspondiente en este artículo. Por tanto, si quieres hacerlo tú mismo, este libro puede ahorrarte el proceso de buscar la información correspondiente en librerías e Internet, haciendo que tu proceso de aprendizaje sea más efectivo con la mitad del esfuerzo.
Después de leer este libro, no solo tendrá una comprensión preliminar del sistema operativo, sino que también tendrá un cierto grado de comprensión de la interfaz de la PC IBM, el modo de protección de la arquitectura IA y el marco general del sistema operativo.
El autor cree que después de leer este libro, si vuelve a leer esos libros puramente teóricos sobre sistemas operativos, su experiencia será completamente diferente, porque ya no son un espejismo para usted.
Para los entusiastas de los sistemas operativos que desean leer el código fuente de Linux, este libro proporciona la base de conocimientos necesaria, que se refleja plenamente no solo en este libro, sino también en muchos libros de Linux.
Especialmente para aquellos lectores que quieran aprender sobre sistemas operativos leyendo "Operating Systems: Design and Implementation" de Andrew S. Tanenbaum y Albert S. Woodhull, este libro es especialmente adecuado para ellos:
Especialmente para aquellos que desean aprender sobre sistemas operativos leyendo "Sistemas operativos: diseño e implementación" de Andrew S. Tanenbaum y Albert S. Woodhull, este libro es especialmente adecuado como libro introductorio porque es una buena introducción para principiantes. En "Sistemas operativos" se proporciona una introducción detallada a la acumulación de conocimientos necesarios para comenzar. El propio autor utiliza este libro como uno de los principales libros de referencia para escribir artículos relacionados con sistemas operativos, por lo que se basa en gran medida en el contenido de este libro.
Qué fundamentos técnicos necesitas
Este libro utiliza sólo dos lenguajes informáticos: ensamblador y C. Por lo tanto, siempre que tenga experiencia con ensamblador y el lenguaje C, puede leer este libro. Este libro no asume ninguna experiencia que no sea una comprensión de sentido común de los sistemas operativos (por ejemplo, conocimiento de conceptos como interrupciones, procesos, etc.).
Si ya has realizado un curso teórico sobre sistemas operativos, encontrarás que este libro es coherente y complementa el curso teórico. Le muestra la imagen completa del sistema operativo desde una perspectiva práctica.
El modo de protección de la CPU Intel, los comandos de Linux y otros contenidos involucrados en el libro se explicarán lo más claramente posible. Si el autor cree que algún contenido se puede aprender sistemáticamente a través de otros libros de texto, también lo explicará. en el libro.
Además, este libro solo cubre la plataforma Intel x86.
Unifiquemos nuestros pensamientos: acompañemos estos aspectos
Capítulo "Tao"
Haga que el aprendizaje sea efectivo y agradable
Es posible que aún recuerde la alegría cuando escribió el primer programa "Hola mundo" y lo ejecutó con éxito. Esta sensación de logro inspiró su interés en escribir programas. Continúas estudiando y cada vez que aprendes una nueva gramática, no puedes esperar para depurarla en la computadora, superar dificultades, aprender nuevos conocimientos y obtener una nueva sensación de logro.
Pero ahora imagina si el curso no estuviera organizado de esta manera, sino que intentara contarte toda la gramática primero, sin ejercicios de por medio. Creo que lo único que sientes es aburrimiento.
¿Por qué? Es simple, porque con la práctica continua, ya no tendrás una sensación constante de logro. La sensación de logro es la fuente de felicidad en el proceso de aprendizaje. Sin la sensación de logro, la diversión del aprendizaje se reducirá considerablemente y el efecto no será optimista.
Todos esperan tener un proceso de aprendizaje efectivo y agradable. Desafortunadamente, nueve de cada diez cursos sobre sistemas operativos que hemos visto nos han decepcionado. El autor habla interminablemente sobre gestión de procesos, gestión de almacenamiento, control de E/S y algoritmos de programación, pero al final no tenemos ni idea. Parece que entendemos, pero parece que no sabemos nada. Obviamente, no teníamos ninguna sensación de logro, en absoluto. Odio este tipo de proceso de aprendizaje. Nunca volveré a cometer el mismo error. Dar a los lectores una sensación de logro será el alma de este libro.
De hecho, este libro se puede llamar una memoria, que registra el proceso desde el principio, cuando el autor no sabía qué modo de protección utilizar, hasta la formación final de un pequeño
OS. La naturaleza de memoria del libro asegura que la disposición de los capítulos se ajuste completamente al orden cronológico de las operaciones, asegurando así la operatividad de cada paso. ¡No hay duda de que si sigues esta idea, cada capítulo tendrá resultados! Requiere esfuerzo, pero no hace falta decirlo. Paso a paso es nuestra estrategia y la sensación de logro es nuestro objetivo.
Comenzaremos con 20 líneas de código y dejaremos que nuestro bebé del sistema operativo más simple se convierta lentamente en un atractivo adolescente. Bajo la guía de este libro, usted mismo puede hacerlo en cada paso del camino. ya ves, ¡y listo! En el proceso de práctica continua, tendrá una sensación continua de logro. El autor espera sinceramente que en el proceso de lectura de este libro, su proceso de aprendizaje sea agradable y eficaz.
El proceso de aprendizaje debe ser un proceso de percepción a racional.
Antes de escalar el Monte Tai, no importa cómo se describa en el libro, no puedes imaginar su verdadera apariencia. de ello es sólo unilateral. No hay duda de que mil libros sobre el monte Tai no se pueden comparar con una experiencia de escalada. Las descripciones literarias pueden ser magníficas y hermosas, pero el efecto de tales descripciones puede ser que usted mismo deba ir al Monte Tai. Por otro lado, si hubieras escalado Tarzán, ¿el efecto de la experiencia te habría hecho querer leer todos los libros sobre Tarzán? Quizás por el contrario, es posible que nunca más quieras volver a leer un libro sobre Tarzán.
Sí, una buena historia es mejor que una experiencia personal. Ésta es la ley del conocimiento humano. Sólo con el conocimiento perceptivo se puede elevar a la categoría de teoría racional. Al contrario, será la mitad del resultado con el doble de resultado.
Si el sistema operativo es una gran montaña, entonces este libro está dispuesto a ser su guía y conducirlo hasta su puerta. Los libros del sistema operativo tradicional simplemente te cuentan la historia de esta montaña. Simplemente escuchas la historia y no estás inmerso en ella. Pero con la experiencia personal de este libro, es como estar allí. No solo puedes leerlo. detalle frente a ti y camina toda la montaña con confianza.
Vale la pena mencionar que este libro es solo una guía y no lo llevará a toda la montaña. Sin embargo, los lectores interesados pueden comprender fácilmente otros temas según el marco final de este libro. mencionado en los libros de sistemas operativos, para tener una comprensión clara de los sistemas operativos desde lo perceptual hasta lo racional.
Los errores temporales no son terribles
Cuando no entendemos completamente la imagen completa de algo, es probable que malinterpretemos algunas partes. Esto es lo que se llama tomar cosas. fuera de contexto. Muchas veces es inevitable sacar las citas de contexto, pero en el proceso de aprendizaje continuo, gradualmente veremos y comprenderemos más, y nuestra comprensión de las cosas originales se volverá más profunda e incluso diferente.
Para algo tan complejo como un sistema operativo, sin duda es muy difícil entender todos los detalles, por lo que durante la práctica pueden ocurrir algunos malentendidos en muchos lugares. No importa, a medida que tu comprensión se profundice, estos malentendidos siempre se aclararán y luego descubrirás que ya estás muy familiarizado con cierto aspecto. La sensación de logro en este momento definitivamente te hará muy feliz.
La disposición de este libro sigue el orden cronológico de la escritura del código. Es más como un diario de desarrollo, por lo que el libro conserva intencionalmente algunos productos imperfectos del proceso intermedio y los discutirá en capítulos posteriores. Mejorar, porque el autor cree que detrás de algunas cosas exquisitas debe haber muchos productos intermedios escondidos. Un gran descubrimiento puede no ser un destello de genialidad, debe haber algo detrás que no hayamos visto. una falacia. Quiero seguir los pasos de quienes me precedieron y volver a recorrer sus pasos. Sin duda, es difícil lograrlo, pero incluso si no es posible, siempre que pueda despertar el pensamiento de los lectores, es una gran bendición para este libro.
Lo que bloquea el camino a menudo no son árboles grandes, sino enredaderas pequeñas.
Si no lo haces tú mismo, es posible que nunca sepas dónde radica la dificultad.
Es como si compraras un horno microondas superpotente, estudiaras todo el manual de instrucciones al llegar a casa y quisieras cocinar con dudas, pero de repente descubrieras que se te había acabado el aceite y la sal en casa.
Son las 11 de la noche, todas las tiendas están cerradas y estás tan enojado que solo quieres sacar una cuchara de metal y tirarla al inocente microondas.
No hay nada de malo en estudiar las instrucciones, pero antes de comenzar, nunca adivinarías que la razón por la que no sabes cocinar es una botella de aceite de diez dólares y una aún más insignificante de un dólar. bolsa de sal. También se podría pensar que la dificultad radica en los teclados de control densamente poblados en el panel del horno microondas.
Lo mismo ocurre con otras cosas, como escribir un sistema operativo; incluso un pequeño prototipo de sistema operativo del que los teóricos se burlan podría encontrarse con una gran cantidad de problemas en los que no había pensado y que de otro modo serían solucionados. un problema en la programación tradicional. No se menciona en absoluto en los libros sobre sistemas operativos. Así que la única manera de saber cuál es el problema es hacerlo, y la única manera de saber cuál es el problema es hacerlo.
Arte
Poniendo lo aprendido
No estamos haciendo exámenes, solo estamos trabajando duro por nuestros ideales, así que seamos fieles a nuestras preferencias. y no tienes que leer todos los capítulos del examen, por tedioso que sea. Pongámoslo en práctica de inmediato y encontremos formas de resolver los problemas cuando los encontremos. El autor recomienda encarecidamente este método de aprendizaje:
Practicar → Encontrar un problema → Resolver el problema → Practicar de nuevo
Porque sabemos por qué estudiamos, estamos muy involucrados porque conocemos nuestro; objetivo ¿Qué problema hay que resolver? Por eso estamos muy concentrados porque aprendemos en la práctica, somos muy eficientes. Lo más interesante es que al final encontrarás que no has aprendido menos por elegir este método de aprendizaje, al contrario, encontrarás que aprendiste más conocimientos en menos tiempo y el aprendizaje fue particularmente sólido;
Mientras trabajes duro, no hay nada que no puedas aprender
Aún recuerdo claramente mi estado de ánimo cuando acabo de descargar los tres terribles archivos PDF del "Intel Architecture Software Manual del desarrollador", murmuré en secreto en mi corazón, ¡cuándo podré entender estas cosas! Pero de repente, un día, cuando básicamente había terminado de leer estas cosas, recordé mi miedo original y no había pasado mucho tiempo.
Todos los principios están interconectados. De hecho, no hay nada que temer. Especialmente, lo que estamos haciendo no es un trabajo creativo. Todos los problemas se han resuelto antes, por lo que somos más valientes. sin mencionar que no solo tenemos librerías, sino también Internet, podemos encontrar la información que necesitamos con solo unos pocos clics de nuestras manos y pies.
Así que cuando tengas dificultades, cálmate y estudia despacio, porque mientras te lo propongas, no hay nada que no puedas aprender.
Tragar azufaifa de forma adecuada
Si tragar azufaifa de todo corazón es sólo un proceso y no el punto final del aprendizaje, entonces puede que no sea algo malo. Todos deberían haber escuchado la historia del Sr. Lu Xun. Sugirió que si encuentra algo que no comprende mientras estudia, puede ignorarlo por un tiempo y el problema se resolverá naturalmente.
En este libro, a veces se enumerará primero un fragmento de código para indicarle qué hace. En este momento, puede leerlo en general, porque habrá una explicación detallada a continuación. La primera vez que lo leas, sólo necesitas hacerte una idea general.
Principios de este libro
1. Es mejor ser menos que excesivo
Algunos lugares del libro pueden hacerte sentir que algunas preguntas "simples" están enumerados, e incluso parecen un poco detallados, pero prefiero escribir el contenido de una manera más detallada, porque también tuve una experiencia al leer este libro. Cuando estaba leyendo, tuve una experiencia, es decir, a veces no podía resolver un problema. Cuando finalmente lo entendí después de leer durante mucho tiempo, me di cuenta de que era muy "simple". Tal vez el autor pensó que era fácil y se lo saltó, pero el lector puede no tener tanta suerte y descubrirlo todo de una vez.
Sin embargo, en capítulos posteriores de este libro, si se han cubierto detalles en capítulos anteriores, se han omitido intencionalmente. Para dar un ejemplo muy simple, el libro recuerda a los lectores al principio que no olviden modificar el Makefile después de agregar los archivos fuente, pero los capítulos posteriores asumen que los lectores ya están familiarizados con este paso, por lo que es posible que no lo vuelvan a mencionar.
2. Intenta ser lo más accesible posible
El autor prefiere llamar a este libro un cuaderno o un diario de aprendizaje. Esto no se debe sólo a que este libro sea básicamente una reproducción del mismo. proceso de aprendizaje real, pero también porque no quiere. Este libro se siente condescendiente e incluso misterioso. Si cree que hay algo que no está claro en el libro y no comprende, dígamelo y lo mejoraré en el futuro.
3. El código se centra en la legibilidad pero no en la eficiencia.
El código de este libro se esfuerza por ser simple y fácil de entender, pero se presta poca atención a la eficiencia operativa. Por un lado, el código de este libro es solo para aprendizaje y no para uso real por el momento. Por otro lado, el autor cree que no es demasiado tarde para considerar cuestiones de eficiencia una vez que tengamos una comprensión suficiente; el sistema operativo.
Descripción del CD-ROM
El CD-ROM contiene todo el código fuente utilizado en este libro. En particular, contiene no sólo el código completo del sistema operativo, sino también artefactos intermedios para cada paso. En otras palabras, el código de cada paso del proceso de desarrollo se puede encontrar en carpetas separadas en el CD. Por ejemplo, si el sector de arranque se introduce al principio de este libro, el lector sólo verá el código del sector de arranque en la carpeta correspondiente; si el sistema de archivos se introduce en el Capítulo 9, la carpeta correspondiente no contendrá el código para el; sector de arranque. Código del Capítulo 10 "Administración de memoria". En la carpeta correspondiente a cualquier paso, se incluye un árbol de código compilable completo para que los lectores experimenten. De esta manera, en cualquier etapa del proceso de aprendizaje, los lectores pueden comprender completamente los objetivos de la etapa sin preocuparse por verse afectados por el contenido que aún no ha aprendido, sin dejar así callejones sin salida en el aprendizaje.
Las referencias de códigos en el texto de este libro están marcadas con los archivos de los que provienen. Tome "chapter5/b/bar.c" como ejemplo: si está utilizando un sistema Linux y el CD-ROM está montado en "/mnt/cdrom", entonces la ruta absoluta del archivo es "/mnt/cdrom/ capítulo5 /bar.c"; si está utilizando un sistema Windows y el CD-ROM es un disco X:, la ruta absoluta al archivo es "X:nchapter5nbnbar.c".