¿Cuáles son los desafíos tecnológicos involucrados en alimentar el código fuente de una máquina Linux y hacer que aprenda a codificar un núcleo Linux similar?

¿Cómo crear un robot para hacer la programación del kernel de Linux?

Para poder codificar el kernel de Linux, las siguientes capacidades son mínimamente necesarias:

a. Comprender los conceptos de bloqueo / desbloqueo o sincronización de acceso.

si. Comprender el significado del acceso por CPU frente al acceso de CPU cruzada o accesible globalmente por diferentes CPU.

C. Comprender la necesidad de asignación de memoria.

re. Comprender el significado de máquina de estado, protocolo de comunicación (entre dos objetos, CPU o dos computadoras, subprocesos, etc.) y sus convenciones, y protocolos de acceso de hardware (actualización / lectura / escritura).

Y muchos otros conceptos más. Y después de “comprender” este concepto, debe ser capaz de construir tareas lógicamente y programarlas para que se ejecuten en un cierto orden. Y luego poder simular el resultado de las tareas ejecutadas, de modo que si el resultado no parece correcto, poder “reprogramar” las tareas para un flujo de ejecución más optimizado. Es decir, “diagrama de flujo” y “planificación”. Los siguientes son los clásicos recursos de programación / optimizaciones:

Planificación y programación automatizadas – Wikipedia

http://users.dsic.upv.es/~msalid…

Es poco probable que las entidades sobre las que se basa la máquina de razonamiento sean lenguaje C, pero directamente manipulables y capaces de hacer razonamientos lógicos por parte de la computadora; algo como el IR de LLVM será una buena opción. Pero este es un gran problema clásico: cómo representar el conocimiento para el razonamiento:

http://airccse.org/journal/ijcse…

Representación del conocimiento y razonamiento

Otra estrategia de optimización es hacer un razonamiento de alto nivel: para esto necesita una tupla de acción + entradas, condiciones previas de la acción y resultados posteriores de las acciones. Y luego simplemente encadena las condiciones previas a la acción a sus resultados, que proporcionan condiciones previas para otra acción. El razonamiento se realiza en el nivel de “acción”, y los detalles de “acción” supuestamente se realizan antes.

Por ejemplo, “strcpy / memcpy /” como acción: todos pueden agruparse en una construcción genérica “copy_from_to”, y solo se necesitan tres entradas para esta construcción. Entonces, básicamente, se necesitan acciones + entradas. Y si se cumplen sus condiciones previas, la acción puede ejecutarse y los resultados generarse, lo que puede ser un precursor de otras acciones de razonamiento.

Estos conceptos se pueden encontrar en documentos de “razonamiento automatizado”:

http://www.cl.cam.ac.uk/~jrh13/s…

Razonamiento automatizado – Wikipedia

http://www.michaelbeeson.com/res…

http://www.cs.cornell.edu/home/k…

Muchas veces el razonamiento puede permitirse tener errores, ya que las consecuencias no son graves. Pero en la programación de computadoras, se necesita un razonamiento lógico más riguroso, razón por la cual se necesita un componente de “simulación” para verificarse a sí mismo. Quizás un ejemplo aproximado aproximado de esto es la inteligencia artificial “simbólica”, mediante el uso de la representación del conocimiento que podemos manipular fácilmente para hacer un razonamiento intuitivo y simbólico:

http://www2.fiit.stuba.sk/~kvasnicka/NeuralNetworks/1.prednaska/symbolic.pdf

https://mkw.host.cs.st-andrews.ac.uk/IC_Group/What_is_Symbolic_AI_full.html

Un mecanismo óptico de reconocimiento de caracteres.

El código fuente para un sistema operativo Linux solo tiene que compilarse y vincularse para convertirse en un núcleo y el resto del sistema operativo.

¿O quiso decir “alimentar una máquina con código de tiempo de ejecución de Linux y hacer que aprenda a crear una fuente de kernel de Linux similar?”

(El código fuente es lo que los humanos escribimos, alimentarlo a una computadora no requiere que la computadora cree nada más que el código objeto, la versión del código fuente que puede ejecutarse en la computadora, y eso lo han hecho compiladores y enlazadores por décadas.

(Incluso si lo “alimenta” con el código objeto, la versión que se ejecuta en la computadora, y le dice que lo descompile o lo desarme, los desensambladores y los descompiladores lo han estado haciendo durante décadas. Lo único que queda es “alimentarlo” archivo en blanco y “contándolo” [de alguna manera, ¿conectando un micrófono a la computadora?] para “crear un kernel de Linux”. Y ningún AI o ML podrá hacerlo por mucho tiempo ).

¿Qué “temas debería uno aprender”? No es tanto lo que deberíamos aprender, es lo que la computadora con inteligencia artificial tiene que aprender, debe tener la capacidad de existir, independientemente, en el mundo real. Esa es la única forma en que “crear un sistema operativo Linux para este hardware” podrá significar algo. No es aparente, pero aprendimos sobre los hombros de otros, que aprendieron sobre … etc., volviendo a los días en que salíamos del cieno primordial. No nacemos sabiendo lo que significa “kernel de Linux”.

More Interesting

Soy un hombre de 25 años que estudió CS, aprendizaje automático y minería de datos para mi maestría. Mi verdadera pasión radica en la música y los viajes. He estado sin trabajo durante 7 a 8 meses, solicito un doctorado en ML y música, y mi papá quiere que consiga un trabajo. ¿Qué debo hacer?

¿R necesita una herramienta de flujo de trabajo visual como RapidMiner y Knime?

¿Son los modelos de n-gramas, la codificación de uno en caliente y word2vec diferentes tipos de representaciones de palabras y vectores de palabras?

¿Cómo puedo diseñar una gran red neuronal?

¿Debo aprender a desarrollar backend si quiero ser ingeniero de aprendizaje automático?

¿Es aconsejable crear una aplicación basada en el aprendizaje automático y el procesamiento de imágenes sin comprender el concepto matemático subyacente?

¿Cuáles son las implicaciones epistemológicas del hecho de que no podríamos haber programado conscientemente una red neuronal para hacer lo que hace?

¿Qué ha aprendido sobre el aprendizaje automático, la recuperación de información y la minería de datos después de unirse a una empresa de Internet que se ocupa de big data?

Cómo realizar el aprendizaje de refuerzo en una red neuronal de alimentación oculta de capas múltiples

¿Cuál es una forma intuitiva de explicar los resultados de la PCA?

¿Cuál es la relación entre un modelo múltiple que interactúa y un filtro de Kalman?

¿Cuándo es el final de la red neuronal profunda? La gente está loca por esto y muchos de ellos no saben lo que está pasando dentro

¿Cuál es un ejemplo ilustrativo donde LDA y SVM dan límites de decisión diferentes?

¿Cuáles son algunas habilidades matemáticas altamente relevantes que se requieren si quiero comenzar a investigar en algoritmos de Machine Learning?

¿Cuál es la mejor manera de encontrar el conjunto de patrones similares en datos de series de tiempo?