Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Wie eine Resource mehreren Programmen verfügbar machen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Wie eine Resource mehreren Programmen verfügbar machen?

    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.?)
    Geändert von Lin728 (19-08-2017 um 21:59 Uhr)

  2. #2
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Probier doch dcop oder besser d-bus.
    Das sind kommunikationsprotokolle, mit denen programme komunizieren können. Also sowas wie IPC. Wobei dcop is von KDE (braucht X11 und Qt) und d-bus (von freedesktop.org) is ne art von Weiterentwicklung, die desktop unabhängig ist (KEINE Abhängigkeiten, hat aber Glib und Qt APIS, wenn man die will).
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.09.2001
    Beiträge
    1.182

    Öhm....

    .................
    Geändert von Lin728 (19-08-2017 um 22:00 Uhr)

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Re: Wie eine Resource mehreren Programmen verfügbar machen?

    Original geschrieben von ceisserer
    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 hat praktisch überall im Leben einen Kompromiss zwischen Overhead und Teilen.
    Eine Demokratie hat gegenüber eine Dikatur auch enormen Overhead, trotzdem fahren wir ganz gut damit.
    Das Prinzip eines Mulitprozess OS ist ja auch Overhead, würde nur ein Task laufen, müsste man nicht Kontextswitchen, Register sichern, etc.


    Gefällt mir eigentlich überhaupt nicht, weils so langsam ist.
    Langsam ist relativ
    Die meisten lokalen IPC Mechanismen sind für ihre jeweiligen Anwendungen schnell genug.


    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?
    Du könntest zB pro Befehl einen Kaommunikationskanal benutzen, dann ist am anderen Ende klar, welcher Befehl ausgeführt werden muss.
    zB je ein Sharedmemory Segment, dann sind nur mehr die Daten da und die müssen ja nicht umkodiert werden.

    Im Normallfall ist dieser Resourcenoverhead nicht sinnvoll, selbst die Prozessoren benutzen kodierte Befehle.


    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??
    Der Syscall triggert einen Funktionsaufruf um Kernel, der ja Zugriff auf den User Adressraum hat und sich dort die Daten holen kann.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •