23 puntos por kuroneko 2023-08-31 | 10 comentarios | Compartir por WhatsApp
  • Un intento de crear un sistema operativo no Unix usando Rust.
  • Por ahora ya soporta salida gráfica, asignación dinámica, ejecución concurrente y teclado/mouse.
  • Lo particular es que está diseñado para que todas las apps puedan funcionar como una sola función.
    • La app se ejecuta recibiendo un Context que incluye las funciones del SO, por lo que toda la interacción ocurre a través de Context.
    • Gracias a esto, el sandboxing, la depuración, etc. son muy fáciles, y como la persistencia de memoria también se maneja mediante Context, reiniciar y suspender resulta sencillo.
  • La arquitectura de las apps todavía no está completamente definida, así que siguen existiendo problemas, como que todas las apps pueden ver la memoria de las demás.
  • El almacenamiento persistente, la GPU y el soporte de red, entre otras cosas, todavía están por implementarse.

10 comentarios

 
honglu 2023-08-31

El concepto está sexy. Todo el mundo es Rust... jajajaja

 
botplaysdice 2023-08-31

"...donde las apps pueden ver la memoria de las demás"... :)

 
ahwjdekf 2023-08-31

Sí, eso está muy gracioso.

 
xguru 2023-08-31

VirGL - GPU 3D virtual utilizable dentro de una VM de QEMU

Es compatible con VirGL, así que se puede instalar y probar en QEMU.

 
kuroneko 2023-08-31

¿Un futuro en el que se ejecuten programas de Rust sobre un sistema operativo hecho en Rust...? Todo el mundo es Rust.

 
heycalmdown 2023-08-31

Si en los comentarios hubiera un hilo de HN, estaría bueno que neo lo resumiera automáticamente jajaja, ya no puedo vivir sin neo

 
kuroneko 2023-08-31

A partir de ahora también voy a traer resúmenes de IA. Curiosamente, parece que hace un resumen por cada argumento que hizo cada persona.

  • danhau: plantea dudas sobre si la planificación cooperativa fracasará, como otros sostienen, y le preocupa que las apps ya estén cooperando. Le preocupa que un ataque de denegación de servicio pueda detener fácilmente un sistema así.
  • aseipp: coincide con danhau y dice que la planificación cooperativa puede hacer que errores simples sean fatales para el sistema, por lo que podría ser problemática para ejecutar programas arbitrarios.
  • gnulinux: sugiere que no necesariamente todo está perdido, y dice que podría haber formas de permitir apps cooperativas evitando al mismo tiempo que bucles infinitos detengan el sistema. Por ejemplo, podría haber tiempos de espera o detección de bucles.
  • DSMan195276: sostiene que no es necesariamente todo o nada, porque los programas cooperativos asumen que no serán interrumpidos; dice que incluso reducir el nivel de apropiación implicaría cambiar la forma de escribir programas.
  • getpokedagain: dice que no todos los sistemas operativos necesitan ejecutar apps multiusuario impredecibles, y que en sistemas restringidos como dispositivos embebidos o consolas de videojuegos un modelo cooperativo podría funcionar.
  • Symmetry: dice que las CPU modernas tienen varios hilos, así que si el OS puede volver mientras verifica el uso excesivo de algunos hilos, el modelo de Fomos podría funcionar sin detenerse por completo.
  • cmrdporcupine: menciona que los casos de uso especiales tienen la ventaja de poder usar un modelo que asigna trabajo directamente a núcleos libres, pero que la complejidad de manejar la concurrencia quizá no se simplifique mucho frente a implementar time-slicing.
  • JoeAltmaier: dice que un bucle while(true) en un hilo quizá no afecte a otros hilos, pero muestra que el aumento de batería/temperatura sigue siendo un problema de recursos que hay que gestionar.
  • keyle: está entusiasmado con este proyecto y con el enfoque minimalista, y espera más desarrollo, como un sistema de archivos que cumpla con el requisito tradicional de ejecutar DOOM.
  • mepian: aclara que los métodos de Smalltalk se invocan entre objetos, no como funciones independientes, y explica que algunos OS Lisp tempranos también usaban funciones antes de los sistemas de objetos.
 
xguru 2023-08-31

Por suerte, Neo procesó el mismo artículo jajaja

Fomos: un sistema operativo experimental construido con Rust

 
xguru 2023-08-31

El problema es que yo también estaba viendo ese enlace y resumiéndolo al mismo tiempo, snif.

Nada menos que podrán ver 3 versiones del resumen y compararlas jaja

  • Quería intentar hacer un OS no Unix
  • El Exo-Kernel es interesante, pero en su mayoría sigue siendo teoría, así que esto ayuda a entender ese patrón
  • Funcionalidades
    • salida gráfica, asignación dinámica, todas las apps corren en un bucle asíncrono
    • mouse/teclado Virtio (los drivers también son tareas asíncronas)
    • planificación cooperativa (las apps ceden el control tanto como sea posible)
    • después del arranque no hay cambio de contexto
    • soporte casi completo para Virgl™
  • Puntos únicos
    • firma de la app pub extern "C" fn _start(ctx: &mut Context) -> i32
    • las apps no necesitan la biblioteca estándar, y todas las funciones del OS se les pasan a través de Context
    • en Fomos, una app es simplemente una sola function. Esta es la parte más importante. Los ejecutables en Unix/Windows OS son muy complejos en comparación con una función.
 
roxie 2023-09-04

No hay thumbs down, entonces ¿cómo es que tu karma quedó en negativo?