sollte ich die Funktion
GetMessage
oder lieber
ReceiveMessage
nennen?
GetMessage
oder lieber
ReceiveMessage
nennen?
09. November 2026, 18:28
Der Kernel arbeit auf seinem eigenen Speicher, die Daten werden vom Kernel umkopiert.Sollte man spätestens ab einer bestimmten Nachrichtengröße nicht mehr machen, denn das wird saulahm. Solange es nur ein paar Bytes Steuerdaten sind, okay, aber für Nutzdaten empfiehlt sich dann irgendein anderen Weg (SHM oder so).
1. Kernel fordert speicher für die Antwort an.
2. Antwort wird verschickt
3. antwort wird vom kernel space in den user space kopiert
4. kernel space wird wieder freigegeben.
und was soll langsam sein? das umkopieren? Kommt auf den Prozessor und die speicherbandbreite an. Stimmt man muss die daten nicht umbedingt durch den prozessor nageln. aber das muss man ja nicht. wozu gibt es dma der das für einen erledigen kann?Das ist langsam. DMA kommt eben nicht in Frage weil die Speicher-Speicher-transfere für heutige Verhältnisse zum einen langsam und zum anderen nicht unterstützt sind.
Sicher ist nicht kopieren schneller als kopieren.Aber das hier ist der entscheidende Punkt, wenn es um mehr als deine beispielhaften 8 Byte geht. Ja, es macht die Sache schlicht und einfach langsam, wenn man mehr kopiert als unbedingt nötig.
nur ist es z.B. aus sicherheits sicht gewollt, user speicher im kernel speicher sichtbar zu haben? bzw direckt darauf zu arbeiten?Der Kernel kriegt sowieso alles kaputt, wenn er nur will. Ob man jetzt das Userspaceprogramm oder Kernelstrukturen durch einen Overflow zerschießt ist doch egal, am Ende steht der Absturz. Am besten vermeidet man den Overflow einfach ganz.

nur hat der kernel auch immer alle speicherseiten der user tasks mit eingeblendet?Wenn du nicht bei jedem Syscall einen Kontextwechsel haben willst, ja, zumindest die des aktuellen Tasks.
kleinfieh macht auch mist sicher. nur ist es hinterher würlich spürbar?Ja, ziemlich sicher.
nur hat der kernel auch immer alle speicherseiten der user tasks mit eingeblendet?Bei einem x64 Kernel würde ich den ganzen physikalischen RAM mappen, dann kannst du locker mal ein bisschen in den PageDirs/Tables rumstochern ohne gleich den Cache zu trashen.
Und von was für systemen reden wir? 80486 oder aktuelle PC Systeme?Ich würde das ehrlich gesagt unabhängig davon sehen, da Speicher bei jedem Desktop-PC der Flaschenhals ist, afaik.
wie gross ist der Speicherdurchsatz so eines systems, (10MB/s oder 3GB/s) und wie gross ist die Datenmenge die ich kopieren will.
( 1kb 100kb oder 10MB ) und was sind hinterher ein paar µs?
kleinfieh macht auch mist sicher. nur ist es hinterher würlich spürbar?Bei einem Microkernel sicherlich. Sind ja nicht nur ein oder zwei Programme, die alle Äonen mal IPC verwenden, sondern alle Treiber/Programme für sogut wie alles.
Aber du findest meine Fragen 0xd00f.Verallgemeinerungen sind im Allgemeinen falsch.