versiones ultima sirve que para descargar definicion caracteristicas linux operating-system kernel projects

ultima - ¿Cuáles son algunos proyectos de kernel de Linux pequeños e interesantes para ayudar a aprender la fuente?



ultima version de linux (5)

¿Qué proyectos pequeños sugerirías a un novato con kernel, pero alguien que tenga muchos sistemas y experiencia en C? El objetivo es desarrollar una familiaridad con el código fuente del núcleo, y una facilidad para la experimentación con ideas locas.

Estoy tratando de pensar en algunas pequeñas tareas manejables (por ejemplo, agregar un syscall), pero ¿qué sugieres? Para un público objetivo, piense en alguien que tenga al menos un curso de pregrado en el sistema operativo.


A riesgo de comenzar una guerra de llamas: recomendaría que se mantenga alejado del código del kernel de Linux. Si quiere ensuciarse las manos con la programación del kernel, vaya con FreeBSD, NetBSD o OpenSolaris, por ejemplo. El código es mucho más limpio y mejor estructurado (esto es, por supuesto, una opinión subjetiva), realmente diseñado e incluso documentado. Además, tienen un depurador de kernel (tenga en cuenta que Linus está en contra de los depuradores del kernel y de la API estable del kernel, lo que hace que cualquier núcleo sea un objetivo móvil para su trabajo). Estos OS-es incluso tienen una lista de proyectos en sus respectivos sitios web, y personalmente tengo una muy buena experiencia con personas en foros de OpenSolaris y listas de correo de NetBSD.

Usted dice que tiene experiencia con C: consulte los repositorios de código fuente web de Linux y de OpenSolaris o algunos de los BSD, compare el código y formule su propia opinión. Lo que estoy diciendo es, supongo, que hay más en UNIX de código abierto que en Linux, y que al menos debería mirarlos antes de ir a Linux.


Cuando tomé el curso de pregrado de OS, una de nuestras tareas fue agregar algunas llamadas de sistema. Eran extremadamente simples, nada más que leer y restablecer los contadores que contaban la cantidad de veces que se invocaron otras llamadas de sistema. Sin embargo, agregar un syscall requiere mirar y modificar bastantes archivos ... muchos de ellos están en el mismo subárbol relativamente pequeño de la fuente del núcleo, pero es suficiente para familiarizarte con las convenciones de codificación, al menos.

También podrías considerar:

  • Agregando otro modo (muy simple) al planificador para implementar una política que le parezca interesante. La "única implementación para gobernarlos a todos" es bastante difícil (y aún más difícil de acordar), pero hacer un simple planificador de O (N), incluso un programador O (1) rudimentario, puede hacerse de manera relativamente simple, algorítmicamente hablando. Aun así, requiere hurgar en un montón de código.

  • Escribir un controlador de dispositivo para una pieza muy simple de hardware externo, como un microcontrolador de 8 bits que se comunica en serie, o incluso algo que construyas tú mismo. Si tiene alguna experiencia de hardware, tal vez intente escribir un controlador de dispositivo que emule un controlador NES (utilice unos pocos cables usando el puerto serie y tal vez un registro de desplazamiento de serie a paralelo). También podría hacer algo como conducir una pantalla LED de 7 segmentos realmente simple (como la que tiene en una alarma de reloj), o una pequeña colección de ellos.



Un buen lugar para comenzar es un proyecto basado en Unix v6. "Xv6, un sistema operativo de enseñanza simple parecido a Unix"

También hay cynix , un kernel monolítico unix IA-32 simple (sin mantenimiento)

Un gran tutorial es " Roll your own UNIX-clone OS ".


Intente descargar el código fuente de MINIX y juegue con él, intente comprender la lógica y le tomará tiempo sin duda, pero si se apega a él puede ser un experto en algún momento