Also wie gesagt, welche Situation stellst du dir vor das ein Treiber (ein Programm sollte wirklich keinen Zugriff auf Ports haben, sondern nur Treiber) einen Port nicht mehr nutzen möchte?
Ich meine warum sollte Prozess A nen Port anfordern und dann ist es ihm mit einmal egal was mit ihm passiert?
Desweiteren würde ich, aus Sicherheitstechnischen Gründen, nicht den Prozess entscheiden lassen welchen Port er bekommt, sondern würde dem Prozess nur bestimmte Ports geben, von denen du weißt das er sie braucht! Denn ansonsten kann ich mir als Prozess einfach versuchen alle Ports zu holen und dann können keine neuen Treiber mehr gestartet werden!
Wie willst du sicherstellen das ein Treiber nur die Ports nutzt die es auch nutzen darf (ich kenne da nur noch eine Möglichkeit außer der IO-Bitmap des TSS)?
Gut ein Mikrokernel, aber wie "mikro" soll der werden
Ich meine damit, das ich z.B. ne Art "Device Server" machen will, der die ganze Port-/Hardwareverwaltung dann regelt. Die meisten Mikrokernels machen das aber im Kernel.
Da ich die Ports von einem Server verwalten lasse, muss ich auch sowas wie einen Port an einen anderen Prozess abgeben machen. Bei funktioniert das dann so (wenns denn dann mal fertig ist), dass der Kernel am Anfang alle Ports besitzt. Wird der Device Server gestartet bekommt dieser alle Ports.
Wenn der Device Server dann einen Treiber startet gibt er die rechte für die nötigen Ports an den Treiber weiter.
Was ich noch nicht gemacht habe, ist dass die Ports wenn der Treiber beendet wird wieder an den Device Server übergehen, aber das kann man ganz einfach machen, indem die Ports beim Beenden an den Parent gegeben werden.
Also zusammengefasst würde ich die globale Verwaltung welcher Port frei ist und welche nicht im Kernel über eine Bitmap machen. Wie du dann die Ports weitergibts ist eine andere Sache.