Gracias por A2A. Se recomienda que comprenda la arquitectura de alto nivel del Kernel de Linux y la pila de sitios de usuario (bibliotecas / marcos).
Es esencial que también conozca las características principales del kernel de Linux que incluye lo siguiente:
- Linux paradigmas de diseño de kernel, objetivos y convenciones.
- Diferentes contextos de ejecución dentro del kernel-espacio y sus limitaciones.
- Varias características de propósito general dentro del kernel de Linux.
- Funciones de gestión de memoria dentro del espacio del kernel.
- Manejo de interrupciones y gestión de interrupciones de hardware.
- Varios mecanismos de concurrencia y sincronización.
- Técnicas de depuración / registro / instrumentación / diagnóstico / resolución de problemas.
- Una visión general del modelo de dispositivo Linux.
- Módulos de kernel cargables y funciones de kernel relacionadas.
- Varias macros específicas del compilador utilizadas dentro de la programación del kernel de Linux (probable (), improbable (), __init, __exit, etc.).
Más allá de los conceptos enumerados anteriormente, es posible que le interese especializarse en subsistemas particulares en función de sus requisitos de desarrollo que pueden incluir los siguientes:
- Controladores del sistema de archivos
- Bloquee la capa de E / S y bloquee los controladores de dispositivos
- Conductores de caracteres
- Controladores de red, pila de red y varios otros componentes relacionados con la red
- Controladores de plataforma / bus (PCI, USB, GPIO, SPI, etc.)
- Funciones relacionadas con la virtualización (KVM, SR-IOV, etc.)
Si tiene la intención de trabajar en kernel-space (desarrollo de controladores y transferencia), no es necesario conocer todas las llamadas al sistema, pero tendrá que tener una visión general de cómo funcionan las llamadas al sistema y las convenciones de diseño de Linux para exponer las API del kernel frente a las ABI. a la tierra de usuario.
- ¿Cuáles son las mejores películas para aprender algo de?
- ¿Cuáles son algunas maneras de animar a los jóvenes fotógrafos en ciernes y empujarlos a aprender y crecer?
- Cómo aprender español en poco tiempo.
- ¿Cómo se puede aprender a ser más escéptico?
- ¿Puedo comenzar a aprender tiro con arco a la edad de 28 años desde cero y ser bueno para participar en competiciones en 2 años de práctica regular de ahora en adelante?
También sería útil contar con un buen entendimiento sobre la pila de usuarios en tierra (el conocimiento de proyectos como busybox puede ser útil). Además, algunos conocimientos sobre los cargadores de arranque (u-boot, por ejemplo) y proyectos como buildroot, yocto project ayudarán a construir distribuciones de linux incrustadas mantenibles.
Espero que esta información ayude. Feliz hacking en Linux 🙂