Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Frage zu Threads und fork()

  1. #1
    lin
    Gast

    Frage zu Threads und fork()

    Hi,

    ich muß folgende Frage beantworten:

    Falls ein Prozess mit mehren Threads ein fork ausführt, kann es zu einem Problem kommen, wenn das Kind von allen Threads des Elternprozesses eine Kopie erhält.
    Angenommen einer der original Threads hatte auf eine Tastatureingabe gewartet.
    Dann warten jetzt zwei Threads auf die Tastatureingabe, einer in jedem Prozess.
    Kann das Problem auch in Prozessen auftreten, die nur aus einem einzigen Thread bestehen?
    Begründen Sie Ihre Aussage.

    Währe folgende Antwort korrekt im Sinne der Aufgabe, oder gäbe es noch mehr
    dazu zu sagen:

    Das Problem tritt bei Prozessen, die nur aus einem einzigen Thread bestehen nicht auf, da dieser eine Thread zum Zeitpunkt des fork – Aufrufes nicht gleichzeitig auf eine Tastatureingabe (blockierend) warten kann.

    MfG (-:

  2. #2
    Moderat0r Avatar von geronet
    Registriert seit
    May 2001
    Ort
    Grainau
    Beiträge
    6.099
    Seitwann bekommt der neue Thread (Prozess) alle anderen Kinder-threads mitgeschenkt wenn man forkt? Wär ja schmarrn, so könnte man nie drei Threads erzeugen.

    Grüsse, Stefan
    Nur Puffin verleiht dir die Kraft und Ausdauer die du brauchst!

  3. #3
    :) Hijacker Avatar von peschmae
    Registriert seit
    Mar 2002
    Ort
    Bern
    Beiträge
    2.681
    Ju, Threads unter Linux sind nämlich nur eine spezielle Art Prozesse (mit ein bisschen weniger Overhead

    MfG Peschmä
    Debian Sid User

  4. #4
    lin
    Gast

    Threads und Linux

    Hi!

    In Linux werden Threads nachgebildet indem statt dem fork() der clone() - Funktions-
    aufruf verwendet wird. Dadurch können sich Prozesse den gleichen Adressbereich,
    geöffnete Dateien usw. gemeinsam teilen, eine Eigenschaft die normalerweise
    Threads ein und desselben Prozesses besitzen. Dabei handelt es sich um eine
    Notlösung, um eben diese Eigenschaft von Threads nachzubilden. Ab
    Linuxkernelversion 2.6 werden Threads nun direkt vom Kernel unterstützt. Threads
    sind immer Bestandteil eines Prozesses. Es sind zwar eigenständige Prozesse in
    Linux, aber die Eigenschaften von Threads werden nachgebildet und darauf kommt es an.
    Aber das nur nebenbei.
    Worum es in der Aufgabe geht, ist die Tatsache, wenn ein Prozess dupliziert wird,
    dann erbt der Kindsprozess alle Eigenschaften des Vaterprozesses, so auch die
    Threads. Wartet einer der Threads z.B. auf eine Tastatureingabe und ist dadurch
    blockiert, wird dies auch der Thread des Kindsprozesses sein. Beinhaltet der Prozess
    nur einen Thread, wird meine Antwort schon richtig sein. Ich dachte halt nur, dass
    evtl. noch jemand etwas mehr dazu beitragen könnte. Schließlich kann man auch
    noch in verschiedene Implementierungen unterscheiden und zwar in User-Level- und
    Kernel-Level-Threads und meinetwegen auch noch die Lösung für Linux bis Kernel
    2.6. Obwohl letzteres ohne weitere Bedeutung ist, da es eine Nachbildung ist, mit
    entspr. Nachteilen, z.B. hinsichtlich Prozesshierarchie und gemeinsame Nutzung der
    Signale usw. Es soll aber auch Leute geben, die gewisse Vorteile in dieser Lösung
    sehen (-;
    Die Frage bezieht sich auch eher allgemein auf Unix - Betriebssysteme.
    Ich persönlich nutze lieber FreeBSD als Linux, es sagt mir von der Administration usw.
    eher zu.
    MfG

Lesezeichen

Berechtigungen

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