TS
Sign In
Knowledge Base
Detailed Notes||16m 8s

Jonathan Blow on Garbage Collection and Why Operating Systems Stopped Evolving

https://www.youtube.com/watch?v=ApmD4IQP-Ac

Gestion de la mémoire et collecte des déchets en programmation système

Points clés

  • Le débat entre gestion manuelle de la mémoire et collecte automatique (garbage collection) n'est pas binaire, mais une question de compromis sur une échelle.
  • La collecte automatique de la mémoire facilite la programmation pour des non-experts ou dans des contextes où la performance ultra-optimale n'est pas critique.
  • Pour les systèmes exigeant des performances très pointues (ex. jeux vidéo à haut FPS), la gestion manuelle est souvent préférable car la collecte automatique engendre des pauses et des saccades difficiles à maîtriser.
  • Il existe un usage légitime de la collecte automatique dans des cas où la simplicité, la sécurité (sandboxing) et l'isolation du code non fiable sont prioritaires, comme dans Roblox ou les environnements avec plugins/extensions.
  • Le modèle actuel d’extensions/reseaux de communication (ex. Language Server Protocol) est souvent lent, complexe, et repose sur des compromis dus à des limitations historiques des systèmes d’exploitation.

Détails importants

  • Les jeux vidéo développés en C# via Unity utilisent souvent la collecte automatique pour sa simplicité, mais cela peut provoquer des problèmes de performance au fur et à mesure de la complexité.
  • La collecte automatique reste appropriée pour des utilisateurs non-professionnels qui souhaitent automatiser des tâches simples sans expertise majeure en programmation.
  • Le sandboxing garanti par une collecte de déchets est difficile à atteindre avec une gestion manuelle.
  • L’isolement des plugins dans un même processus est fragile et souvent problématique à cause des risques de crashs difficiles à gérer.
  • Les approches classiques pour la robustesse des extensions passent par l’isolation en processus séparés, ce qui introduit des coûts en communication et complexité.
  • La communication entre process repose actuellement sur la sérialisation (ex. JSON), source de lenteur et vulnérabilités.
  • Les systèmes d’exploitation modernes sont fondés sur des architectures très anciennes (Windows NT basé sur VMS, Unix datant des années 70) et ont peu évolué sur les fondamentaux de conception.
  • Le paradigme actuel d’OS est considéré comme insuffisant pour gérer proprement des scénarios modernes complexes (ex. plugins non-trustés, sécurité renforcée).
  • L'apparition des containers souligne le retrait partiel des OS traditionnels de leur rôle historique.
  • Le Language Server Protocol illustre des compromis subis par la communauté faute d’alternatives système robustes et performantes.
  • Il manque une plateforme abstraite universelle, proche d’une machine virtuelle opérant de façon sandboxée et contrôlable, indépendante du backend matériel, contrairement à Java bytecode mais plus ouverte.

Conclusions

  • Le débat sur la gestion mémoire doit être envisagé pragmatiquement selon les cas d’usage, sans position dogmatique.
  • La collecte automatique a sa place dans les logiciels où l’accessibilité et la sécurité priment sur une performance absolue.
  • Cependant, pour les systèmes où la performance critique est exigée, la gestion manuelle conserve sa pertinence.
  • Il existe un besoin non satisfait d’infrastructures systèmes plus modernes et adaptées à la sécurisation et isolation du code non fiable.
  • La communauté des systèmes doit renouveler ses efforts pour inventer un modèle d’exécution sandboxée, universelle, efficace et modulaire, capable de supporter les exigences contemporaines en matière de performance et sécurité logicielle.
  • Le statu quo historique des systèmes d’exploitation est insuffisant et freine le progrès, nécessitant des innovations majeures dans ce domaine.
Generated with Tapescript
7f0104f - 03/02/2026