Lin728
13-01-2004, 19:21
Ich beschäftige mich gerade mit der Möglichkeit eine gemeinsame Resource mehreren Programmen zugänglich zu machen, wie z.B. das der X-Server tut.
Ich habe da einen Ansätze gefunden, aber eigentlich gefällt mir diese Möglichkeit nicht, wie die vielen Programme mit der einen "Resource" kommunizieren, weil soviel Overhead entsteht.
Man führt Operationen auf diese Resource durch einen Codierer am einen Ende (die Anwendung) und einen Decodierer am anderen Ende (wenns unidirektional ist halt auf beiden Seiten) aus, wobei es einen Decodierer (in diesem Fall der X-Server) gibt, der praktisch alleine wirklich mit der HW komuniziert.
Die Befehl an sich kann man über viele Weg übermitteln, wie z.B. Shared Memory, Sockets, Pipes, ...
Gefällt mir eigentlich überhaupt nicht, weils so langsam ist.
Gibt es keine Möglichkeit, dass alle di<ese vielen Programme irgendwie über den Programmcode selbst (also ohne Umweg über eine Abtraktionsschicht) auf die HW zugreifen, ohne über einen Codierer/Decodierer laufen zu müssen?
OpenGL kann dies z.B. soweit ich weiß...
Wäre sowas auch im Userspace möglich?
Wie macht dies eigentlich der Kernel. Und wie werden dann Daten zwischen dem Kernel und der User-Schicht transportiert, das kann doch noch alles über syscalls laufen?? (Ist ein syscall auch eine abstraktion im sinne der oben genannten cod./decod.?)
Ich habe da einen Ansätze gefunden, aber eigentlich gefällt mir diese Möglichkeit nicht, wie die vielen Programme mit der einen "Resource" kommunizieren, weil soviel Overhead entsteht.
Man führt Operationen auf diese Resource durch einen Codierer am einen Ende (die Anwendung) und einen Decodierer am anderen Ende (wenns unidirektional ist halt auf beiden Seiten) aus, wobei es einen Decodierer (in diesem Fall der X-Server) gibt, der praktisch alleine wirklich mit der HW komuniziert.
Die Befehl an sich kann man über viele Weg übermitteln, wie z.B. Shared Memory, Sockets, Pipes, ...
Gefällt mir eigentlich überhaupt nicht, weils so langsam ist.
Gibt es keine Möglichkeit, dass alle di<ese vielen Programme irgendwie über den Programmcode selbst (also ohne Umweg über eine Abtraktionsschicht) auf die HW zugreifen, ohne über einen Codierer/Decodierer laufen zu müssen?
OpenGL kann dies z.B. soweit ich weiß...
Wäre sowas auch im Userspace möglich?
Wie macht dies eigentlich der Kernel. Und wie werden dann Daten zwischen dem Kernel und der User-Schicht transportiert, das kann doch noch alles über syscalls laufen?? (Ist ein syscall auch eine abstraktion im sinne der oben genannten cod./decod.?)