Euh, il semble y avoir beaucoup de justification "c'est mieux comme ça".
Je pense que les gens pourraient bénéficier de la lecture de "Showstopper"; le livre sur le développement de Windows NT.
La raison pour laquelle les services s'exécutent en tant que DLL dans un processus sous Windows NT était qu'ils étaient trop lents en tant que processus séparés.
Si vous vous salissez, vous constaterez que la stratégie de chargement de la bibliothèque est le problème.
Sur les Unices (en général), les segments de code des bibliothèques partagées (DLL) sont en fait partagés.
Windows NT charge une copie de la DLL par processus, car il manipule le segment de code de la bibliothèque (et le segment de code exécutable) après le chargement. (Lui dit où sont vos données?)
Cela se traduit par des segments de code dans les bibliothèques qui ne sont pas réutilisables.
Ainsi, le processus NT créé est en fait assez coûteux. Et du côté négatif, cela ne permet pas à la DLL d'économiser de la mémoire, mais une chance de problèmes de dépendance inter-applications.
Parfois, il est payant en ingénierie de prendre du recul et de dire: "maintenant, si nous devions concevoir cela vraiment nul, à quoi cela ressemblerait-il?"
J'ai travaillé avec un système embarqué qui était assez capricieux une fois, et un jour je l'ai regardé et j'ai réalisé qu'il s'agissait d'un magnétron à cavité, avec l'électronique dans la cavité micro-ondes. Nous l'avons rendu beaucoup plus stable (et moins comme un micro-ondes) par la suite.