NerdyKernel — Änderungen 4187 → 4195

Zeile 8: Zeile 8:
 
| Binaerformat = [[ELF]]
 
| Binaerformat = [[ELF]]
 
| Sprache = [[C]] & [[Assembler]]
 
| Sprache = [[C]] & [[Assembler]]
−
| IPC= Noch nicht näher geplant
+
| IPC= Message-Passing, Message-Queues, RPC
 
| Plattform = i386
 
| Plattform = i386
 
| Homepage = In Planung
 
| Homepage = In Planung
Zeile 40: Zeile 40:
 
er seine Informationen noch einmal schicken soll.
 
er seine Informationen noch einmal schicken soll.
 
Es sei denn, die Informationen befinden sich noch in einer Liste o. ä., die abgearbeitet wird.
 
Es sei denn, die Informationen befinden sich noch in einer Liste o. ä., die abgearbeitet wird.
 +
 +
== Modulkommunikation ==
 +
Ein Modul registriert sich im Kernel als Modul an gibt eine Beschreibung ab (meistens den Namen der Hardware die es verwaltet).
 +
Außerdem muss das Modul einen Speicherbereich angeben den es für Broadcasts vorsieht.
 +
Ein Modul kann beliebig viele Methoden registrieren; es muss nur eine Beschreibung und die Anzahl an Parametern angeben.
 +
Wenn es Rückgabewerte gibt, geschieht das über das normale Message-Passing des Kernels.
 +
Es kann außerdem entschieden werden, ob der Prozess eine Benachrichtigung erhalten möchte, dass sein Auftrag erfolgreich umgesetzt wurde.
 +
Das funktioniert aber nur, wenn das Modul solch eine Möglichkeit bietet.
 +
Dadurch ist es möglich, dass die Softwareentwickler zwischen synchroner und asynchroner Kommunikation entscheiden können-
 +
 +
== Interprozesskommunikation ==
 +
Es wird mehrere Möglichkeiten der Kommunikation geben.
 +
Zum einen gibt es Shared-Memory, Message-Passing und dann noch Message-Queues.
 +
Beim Shared-Memory, müssen sich die kooperierenden Prozesse selbst um die Synchronisation kümmern.
 +
Beim Message-Passing bekommt der Emfänger ein Signal, dass eine Nachricht für ihn bereit liegt.
 +
Diese kann er sich dann in seinen Speicher laden.
 +
Bei den Message-Queues geschieht es auch nur über Methoden.
 +
Jede Nachricht wird in einen Puffer in den Kernel geladen.
 +
Wenn der Sender eine größere Nachricht sendet, dann wird das über mehrere Puffer zwischengelagert.
 +
Außerdem werden diese großen Nachrichten nur nach und nach in den Kernel geladen.
 +
Dadurch muss der Prozess länger warten, aber der Kernel bleibt vom Speicheraufwand her gering.
  
 
== OS-Statistiken ==
 
== OS-Statistiken ==
Zeile 53: Zeile 74:
 
*** Entwicklung zum Multitasking
 
*** Entwicklung zum Multitasking
 
*** Entwicklung des Shared-Memory-Handlers
 
*** Entwicklung des Shared-Memory-Handlers
−
*** Planung der IPC/RPC
+
*** Entwicklung der Module-RPC
 +
*** Planung des Messagepassings
 +
*** Planung der Messagequeues
  
 
== Features ==
 
== Features ==