Entonces quieres ser parte de un club muy exclusivo. Permítame ayudarnos a comprender el papel del núcleo primero y los atributos de alto nivel que necesita:
- Un buen núcleo debe proporcionar la mejor abstracción posible del hardware para que los desarrolladores de aplicaciones puedan aprovechar los chips subyacentes utilizando lenguajes de nivel superior. Por ejemplo, piense en llamadas malloc / mmap mientras trata con memoria; llamadas de socket / connect para tratar con la red; abrir / cerrar / leer / escribir para tratar con archivos, etc. Todos operan independientemente del H / W subyacente, pero cada uno hace que el núcleo haga cosas masivas debajo (y muchos registros de lectura / escritura) que el escritor de aplicaciones no le importa. Por lo tanto, necesita una muy buena capacidad para comprender las abstracciones y lo que las aplicaciones necesitan ahora y en el futuro mientras se cruzan con una amplia variedad de plataformas.
- El objetivo es dar a las aplicaciones la mayor cantidad de recursos H / W posible. El mejor escenario para un núcleo es que nadie se da cuenta de que hay un núcleo. Por lo tanto, se trata de eficiencia, lo que significa hilos y bloqueos y rendimiento. Poder comprender su estructura de datos, el bloqueo, el subprocesamiento múltiple de adentro hacia afuera es de suma importancia. Observe que a propósito omití algoritmos. En general, los escritores del núcleo se esfuerzan por mantener algoritmos simples / bien conocidos para que las cosas sean más fáciles de depurar y mantener. Dado el crecimiento de la hiperescala, debe agregar sistemas distribuidos a la lista.
- Tu habilidad para predecir el futuro. Tanto desde H / W como desde el punto de vista de la plataforma y la aplicación necesita el punto de vista. Las versiones típicas del kernel se ejecutan en un ciclo de 18 a 24 meses y las actualizaciones importantes toman aún más tiempo. Su trabajo de hoy debe cruzarse con las necesidades de la aplicación del mañana y guiar el desarrollo de la plataforma / chip en consecuencia mientras descubre la competencia, etc.
Podría seguir con más cosas sobre mentalidad / disciplina, capacidad de visualizar sistemas grandes, necesidad de depurar cosas sobre la marcha bajo estrés, etc. pero al menos las tres cualidades anteriores me han beneficiado mucho de comenzar como un desarrollador joven en 1995 a tener 100 + emitió patentes en el espacio de virtualización y sistemas distribuidos y actualmente está construyendo un sistema operativo de conmutador distribuido muy exitoso.
El desarrollo del kernel es un trabajo muy ingrato a veces, pero cuando ve aplicaciones masivas que aprovechan su trabajo y cambian el paradigma existente, todo vale la pena. Acabo de regresar de una visita de un cliente donde ves una infraestructura masiva que se está moviendo hacia algo que desarrollamos en los últimos 2-3 años y era la hora del champán (pero mientras estábamos en desarrollo, fueron años oscuros 🙂
- El CGPA de mis dos semestres es 6.0 y las habilidades de programación son promedio. ¿Puedo obtener una colocación en nitt?
- ¿Cuáles son los exámenes que alguien puede escribir en el último año de ingeniería civil (BTech)?
- ¿Cómo llegan los trabajadores calificados a Nueva Zelanda?
- ¿Qué tipo de trabajo pueden hacer los estudiantes de ingeniería mecánica después de la graduación?
- ¿Puedo publicar el trabajo de mi empresa en mi GitHub que hice como pasante?
Espero que esto pueda ayudarlo a comenzar y preguntar cosas más específicas. Escribí esto para ayudar a influir en los brillantes estudiantes de hoy para que consideren el desarrollo del kernel como una carrera.