ici où je travaille, je participe à une série de conférences sur les optimiseurs de la requête de base de données. Bien que l'orateur introduit des bases de données, il a fait un commentaire très perspicace sur un noyau ayant essentiellement d'administrer des tables de processus, des indications pour ouvrir des fichiers, des inodes, etc., et c'est donc fondamentalement un moteur de base de données compatible POSIX. Clairement, après avoir lu le Bach il y a longtemps, quand j'étais jeune et plus inexpérimenté, je n'ai jamais eu d'analyser la chose de ce point de vue, mais c'est fondamentalement vrai. P>
Comme vous pouvez l'imaginer, ce n'est pas facile pour google ... Donc, je vous demande: je me demandais si un gars fou a conçu un (espérons-le, juste pour le plaisir, userspace strong> amusant) -Le noyau à l'autre au sommet de MySQL ... p>
Modifier strong>: veuillez noter. Je ne parle pas d'un noyau avec un système de fichiers de base de données. Je parle d'un noyau ayant tout l'état de la bague 0 manipulée par MySQL. p>
4 Réponses :
Je ne sais pas si cela a été fait, mais si oui, je ne voudrais pas l'utiliser. Indépendamment de la rapidité avec laquelle c'était, je ne peux pas croire que ce serait aussi rapide qu'un ensemble de structures de données hautement réglées et kernal. Je penserais que vous commenceriez à lancer des fonctionnalités le plus rapidement possible à partir d'une DB à usage général pour obtenir des performances et de vous retrouver probablement de quelque chose de plus lent qu'une structure de données intégrée à cet effet. P>
Il serait clairement lent, mais il aurait beaucoup de propriétés agréables: 1) Vous pouvez avoir des engagements atomiques, une redondance, une isolation, un verrouillage gratuitement. 2) Vous pouvez exécuter le noyau pour utiliser un espace de données assis sur une machine distante. Clairement, ce n'est pas pertinent sur le plan productif, mais comme une aide pédagogique, ce serait cool.
Je pouvais le voir comme un exercice intéressant pour écrire un VM basé sur le processus qui fonctionne sur un système d'exploitation réel qui utilise une DB pour ses structures de données du noyau. C'est probablement marginalement plus facile pour une personne déjà familiarisée avec SQL que de concevoir les structures de données, les mécanismes de verrouillage, etc. à un niveau très bas - d'autre part, il n'est pas très réaliste non plus comme une mission de cours OS.
Pourquoi pas réaliste? Ok, il est clair que ce n'est pas un "véritable noyau", mais si vous savez comment fonctionne une base de données, il devrait être plus facile d'expliquer comment un noyau fonctionne en termes de terminologie et d'action relationnelle relationnelle.
Précisément parce qu'il supprime la complexité de la gestion des structures de données du noyau. Imo c'est la moitié de la bataille.
@Stefano: Les noyaux OS ne sont pas des applications ordinaires. La performance est beaucoup plus importante et ils n'ont pas besoin d'être produits de grande variété, ce qui n'est pas aussi important de rationaliser le développement. Par conséquent, obtenir des fonctionnalités "gratuitement" (comme dans "Utilisation de solutions générales hors tension sacrifiant beaucoup d'efficacité") est beaucoup moins importante. Je ne sais pas à quel point ce serait une bonne aide d'enseignement, car lorsque vous résumez tout cela hors du noyau, vous retirez beaucoup de choses importantes.
Beos a été basé sur la base de données, n'est-ce pas? P>
Dans l'autre sens, le plan 9 fait partie du système de fichiers. P>
Cela ne fonctionnerait pas - par définition MySQL dépend du noyau afin de fonctionner (c'est un processus, et pour fonctionner, il nécessite une accès des systèmes de fichiers), et nous sommes donc laissés dans l'impossible "qui vient d'abord" situation. P>
Vous pouvez dire la même chose pour le mode utilisateur-linux :)
Je ne vois pas pourquoi cette réponse a été votée. Si vous avez l'intention de stocker toutes les données du système d'exploitation dans une base de données relationnelle, le moteur de base de données devrait être mis en œuvre et contiendrait la majeure partie des besoins d'un système d'exploitation afin que vous puissiez commencer à déplacer ce code de placer A à placer B. Le moteur de base de données ne peut pas exister dans un aspirateur.
Je m'attendrais à ce que le point de tout cours de système d'exploitation soit pour enseigner aux étudiants des interfaces logicielles / matériels, une concurrence inhérente à la gestion du matériel, de diverses techniques de synchronisation, de gestion de la mémoire physique et virtuelle, etc. et ainsi une conception appropriée des données de noyau appropriées structures. Il y a aussi une richesse de l'histoire et du code open source pour passer en revue. P>
Qu'est-ce que vous décrivez est un jouet. Il serait peut-être amusant de dessiner sur une planche et de discuter, mais cela vous prend beaucoup plus loin de la machine matérielle actuelle en introduisant une abstraction grasse. Étant donné que la plupart des étudiants CS ont de nos jours une idée très vague sur le matériel et les internaux du système d'exploitation, je ne voudrais pas engager personne qui l'avait pour un cours OS :) P>
J'ai entendu parler des plans (j'aimerais que je sois toujours des liens, je dois maintenant google maintenant) pour les systèmes de fichiers sauvegardés de la base de données, qui vous permettraient de vous soumettre à des fichiers sur tout le système pour toutes sortes de métadonnées. J'imagine que les systèmes de système d'exploitation moderne et des systèmes de fichiers font cela dans une certaine mesure, mais je ne sais pas combien.
C'est le célèbre système de fichiers orienté objet de Supermegaultranew Windows qui se trouve dans les travaux de Microsoft depuis Windows 1.0 :)
Il y a déjà une technologie qui fait la recherche de systèmes de fichiers, sur OSX, elle s'appelle Spotlight et fonctionne merveilleusement, de manière transparente et en arrière-plan
merveilleusement, oui .. Ça va. De manière transparente, oui, jusqu'à ce que MDS et MDWorker décident d'indexer, réduisant votre machine à un crawl et à votre disque dur en flammes. Je devais l'éteindre :)
Question fantastique! Je me demandais la même chose, après avoir appris que les moteurs de base de données font clairement beaucoup de travail similaires à la manière dont un système d'exploitation gère ses ressources.
Ne pas sonner la glib mais ce n'est-ce pas plutôt trivial? Il me semble que presque toute application logicielle peut être considérée comme un moteur de base de données.
@PER: oui et non. Toute application qui manipule l'accès aux ressources est, en quelque sorte, un moteur de base de données. Techniquement, même une matrice en mémoire est une base de données (très moche) et, en général, nous ne l'appelons pas de cette façon. Le point de l'orateur (et celui que j'ai aimé) n'était pas sur le noyau étant une base de données, mais être une base de données avec B> une interface compatible POSIX. La grande majorité des bases de données est relative et utilisez SQL, mais BDB ou un TripleLestore ou une OODB vous permettent d'utiliser différentes interfaces d'accès. Un noyau n'est qu'un autre style: une interface POSIX.
Avec cette vue, quelle est l'attrait de la réimplanter au sommet de MySQL? Si vous avez déjà une base de données (haute performance) avec une interface POSIX (le système d'exploitation réel), réimplanter cette interface sur un autre modèle de base de données semble être en train de nuire à l'attractivité du POSIX-AS- Modèle dbapi. Je suis tout à utiliser pour utiliser un modèle de base de données comme un cadre de résolution de problèmes et que, à ce titre, je suppose que vous pouvez constater de nouvelles façons de structurer des applications au-dessus d'une couche de portabilité POSIX avec cette vue, la question me semble-t-elle un peu inversée.
@PER: S'amuser de faire quelque chose d'inutile mais inhabituel? J'ai supposé que c'était clair de ma question.
C'était bien clair. Cependant, j'ai supposé qu'une partie de la raison de la question était de discuter de la raison pour laquelle / quoi / comment / comment il serait utile / intéressant / utile. Faire quelque chose d'idiot pour prouver qu'un point est tout bon, j'essaie simplement de comprendre ce que le point serait. Je ne vais certainement pas vous empêcher de le faire :)