Links: construyendo tu propio Sistema Operativo
Si te gusta meterte con cosas difíciles (como a mi), tenes una insaciable sed por hurgar hasta las entrañas del sistema, te gusta tener absoluto control sobre como funcionan las cosas, queres aprender a ser un PROGRAMADOR y no un simple desarrollador de soft de alto nivel, o simplemente tenes curiosidad, entonces los sistemas operativos son para vos, y estos links serán tu punto de partida.

Luego de la temeraria (?!) introducción, les explico un poco de qué va el tema. Hace algunos años era joven (lo sigo siendo =P ) y tenía tiempo, y como siempre amé la tecnología de los sistemas operativos, por su complejidad y porque manejan desde lo más básico que puede correr una máquina, comencé a hurgar en la programación de estos, y por suerte me encontré con bastante información y gente con el mismo sentimiento, así que recopilé una buena lista de links con tutoriales, artículos y libros de programación de estos sistemas y me pareció interesante compartirlo con aquellos que se acerquen a este humilde blog.

Si no tenes ni idea de como funciona un sistema operativo, te recomiendo comenzar leyendo excelentes libros como "Operating Systems: Design and Implementation" por Adrew "escribo de todo" S. Tanenbaum y Albert Woodhull, "Operating Systems Concepts" por Abraham Silverschatz, Peter Bael Galvin y Greg Gagne, y "Operating Systems: Internals and Design Principles" por William Stallings.

A continuación, los links:

The Operating Systems Resource Center. Completísima recopilación de datos sobre programación de OSs, agrupados en secciones relacionadas y en orden ascendente, en concordancia con los avances mientras se desarrolla. No solo cuenta con explicación sobre el software, sino que también incluye una gran lista de especificaciones de hardware. Como diría el sensei, un lujo.

Bona Fide OS Development. Otra excelente recopilación de tutoriales, documentos, libros, links, etc, con información específica sobre programación de OSs. Junto con OSRC, son las fuentes de información más completa que encontré.

El Universo Digital del IBM PC, AT y PS/2. Con información algo vieja pero todavía útil, esta página nos permite conocer un poco más de las arquitecturas, assembler, gestion de memoria, de proceso y demás cosas necesarias para programar un OS.

Construyendo un Bootstra. Porque todo se inicia con el bootstrap, les dejo el link al artículo que postié hace algún tiempo en este mismo blog.

Bootstrap Examples. Algunos ejemplos de código para la creación de bootstraps.

Linux Kernel 2.4 Internals. Explicación con bastante detalle sobre las funciones del kernel 2.4 de linux, explicando qué parte del código realiza cada tarea. Está dividido en 5 capítulos que explican el proceso de booteo, Manejo de procesos e Interrupciones, FileSystems Virtual, Linux Page Cache y Mecanismos IPC. Excelente guía para aprender cómo funciona el querido kernel.

Free BSD and Linux Kernel Cross Reference. Esta página nos permite navegar a través de los archivos de varios sistemas como FreeBSD, Linux, OpenSolaris, Minix, NetBSD y OpenBSD, entre otros. Si vas a programar algo, siempre es bueno tener ejemplos.

LinuxMM. Wiki sobre el manejo de memoria en Linux, una de las partes más complejas de un kernel.

Using Assembly Language in Linux
. Artículo algo corto pero muy útil para aprender sobre el uso de código assembler dentro de C, esto es, inline assembler, algo indispensable si queremos crear el sistema operativo en C (hacerlo completamente en asm sería una locura).

MINIX. El sistema operativo creado por Tanenbaum para enseñarle a sus alumnos en Amsterdam. Es posiblemente el mejor ejemplo para los iniciados dado que se creó con ese fin, aunque el estado de desarrollo actual ha introducido tantas cosas que ya es bastante complejo. Igualmente se pueden conseguir versiones antiguas para mejor comprensión.

Tu primer módulo cargable para el Linux Kernel pt1 y pt2. Para emezar con algo más simple que un sistema complejo, éste link nos enseña como crear módulos para el kernel de Linux y así aprender un poco de como éste funciona.

Intel Architecture Software Developer's Manual vol 1,2 y 3. No tengo el link a estos manuales, pero son algo realmente útil si vamos a programar el sistema en una arquitectura intel.

Para terminar, también me gustaría citar un libro que tiene buenas recomendaciones, pero que nunca me aventuré a leer. Este es "Understanding the Linux Kernel" por Daniel P. Bovet y Marco Cesati, y como su nombre lo indica, nos lleva a través del Kernel de Linux, explicandonos cómo funciona.

1 comentarios:

JaviZ dijo...

GRACIAS!!!! Me será de mucha utilidad esta info! ;)

btw:"Understanding the Linux Kernel" se puede leer sin problemas!

Publicar un comentario