Blog

Implementierungshinweise zum PID Lookup

Bernhard Heinloth

2022-07-07

PID-Thread Lookup

Für IPC muss irgendwie die PID zum Prozess (Thread-Pointer) aufgelöst werden. Es ist in unserem Fall vollkommen in Ordnung, da einfach eine Liste zu verwenden und die durchzulaufen.

Aber Achtung:

Map Systemaufruf (Nachtrag)

In der Aufgabenstellung wird der map-Systemaufruf zusammen mit dem Allokator für den Userspace als Beispiel gezeigt. Der Allokator verwendet intern (versteckt hinter einer Templatevariable) beim ersten Aufruf map(nullptr, ...), lässt sich also vom Kernel eine Adresse geben. Und fordert bei Bedarf dann weiteren Speicher an – braucht aber unbedingt einen zusammenhängenden Speicherbereich (und verwendet deshalb in den folgenden map-Aufrufen auch explizite Adressen).

Das bedeutet unter Umständen, dass ihr, wenn ihr den Allokator so wie in der Vorgabe verwendet, aber auch noch zusätzlich in eurer Anwendung map(nullptr, ...) aufrufen wollt, der Allokator keinen weiteren Speicher mehr rausgeben wird.

Mögliche Workarounds:

Zurück zur Übersicht