Threads / Prozesse

unforgiven

Well-Known Member
hallo zusammen!

ich hab da mal eine wissens-frage.
schon öfters hab ich die begriffe "threads" und "prozesse" gehört/gelesen. aber wirklich begriffen was es ist, bzw. was der unterschied ist hab ich ned kapiert.
also prozesse sind ja eifach die laufenden applikationen (kann man ja mit top/ps aux ausgeben), oder sehe ich da was krumm?

hoffe hab da nicht ne zu dumme frage gestellt, aber es hat mich einfach mal wunder genommen! :)

thx schon im voraus an alle die sich bemühen!
cya soon

u4giv
 
Hallo,
____________________
Thread:

Programme bestehen aus mehreren Anweisungen die der Prozessor liest und ausführt.
Die sequenzielle Durchführung der Anweisung wird Prozess genannt.Ein Prozess besteht aus mindestens einem Thread und kann mehrere Threads erzeugen.Ein Thread ist demzufolge ein in sich geschlossener,elementarer Steuerfluss innerhalb eines Prozesses.
___________________
Das erklärt auch denn Unterschied zw. Prozess
und Thread.

Prozesse selbst sind (ohne jetzt theoretisch zu werden)
Programme die in denn Speicher
geladen werden um div. Aufgaben zu erledigen.
(Wusstest du aber eh schon)

Als Bsp. dafür wäre z.b. init (mit der ProzessID 1)
Dieser wird gleich als erster beim starten eines Unix-Systems
in den Speicher geladen.


Die shell die auf deine Eingabe wartet ist ein weiterer Prozess.Gibst du einen Befehl ein wird ein Prozess
gestartet der die Fähigkeit besitzt
die du erwartest, also z.b. ls,cp
und auch ps.Das alles sind Prozesse.
(Sollte ein Prozess nicht in der Lage seine Aufgabe alleine zu erledigen hat er die Möglichkeit
weitere Prozesse die dann seine "Kinder" sind aufzurufen)

Möchtest du mehr wissen?
Wenn ja, das Handbuch zu freeBSD enthält einen kurzen Abschnitt über Prozesse der durchaus lesenswert
ist.
Google hilft auch aber denn Tip kennst du sicher schon.

MfG nap
__________________________________________________
Man kann keinen Eierkuchen backen ohne ein paar Eier zu zerschlagen.
 
<Sesamstrassenmusik on>
Wer?, Wie?, Was?,...Wieso?, Weshalb?, Warum?
...wer nicht fragt bleibt dumm
</Sesamstrassenmusik off>

....ist ne S?chmaschine bei euch kostenpflichtig?
....hast du bei Squid in deinem $ecure Home.net versehentlich alle WebCrawler auf die Blacklist gesetzt?
....warum haben Joghurtbecher keine Gräten?

*interessiert gugg*
 
Mal sehen ob ich das noch zusammenbekomme:

Bei manchen Anwendungen werden keine neuen Prozesse gestartet, sondern nur unabhängige Codefragmente, sog. threads. Dies laufen im gleichen Prozeßkontext, wie beispielsweise Prozeduren eines Programmes (man nehme einen Texteditor der es erlaubt zu schreiben, aber gleichzeitig eine Fehlerkorrektur vornimmt). Dies sind dann auch sog. Coroutinen.
Ähmmm....
Verwendet man threads, so ist es damit möglich innerhalb eines Prozesses weitere Prozesssysteme (Leichtgewichtprozesse) zu schaffen.
Einfach Formen übergeben sich dabei dabei selbst und explizit die Kontrolle (coroutining konzept).
Ähhmmm, und nun verliessen sie mich...hehe

Naja, schon bisschen her als ich das mal auswendig gelernt hatte ;)

Ne, mir fällt noch was ein:

ne, doch nicht. Ich bekomms nicht mehr zusammen...Mist
 
ey madcode,

statt so dumme sprüche zu labern könntest du ja auch etwas konstruktives beitragen! :D
naja, ich nehms dir ned übel! ;)

danke an die beiden anderen für den versuch das etwas zu erklären!

thx&cya
u4giv
 
Original geschrieben von unforgiven
ey madcode,
statt so dumme sprüche zu labern könntest du ja auch etwas konstruktives beitragen! :D
naja, ich nehms dir ned übel! ;)
Habt euch wieder lieb Jungs, ok?

unforgiven versucht das nächste Mal Google zu konsultieren und madcode hält sich das nächste Mal einfach zurück anstatt einen Kommentar wie oben abzugeben, in Ordnung?

;)

Gruß
 
auch interessant:
auf einer linux box mal "ps ax | grep mysqld" eingeben. gezeigt werden dir threads, als ob sie eigene prozesse (childprozesse) waeren.
das gleiche unter bsd, zeigt einen einzelnen prozess (threads werden hier nicht angezeigt).

ps. such mal unter google nach "POSIX threads". da wirst du eine menge ergebnise erhalten, von denen einige auch fuer nicht-programmierer verstaendlich sein sollten.
 
vielen dank! :)

(genau aus dem grund hab ich hier gepostet, da man oft in den foren bessere tipps erhält als auf irgendwelchen kryptischen pages!)

also nochma,
thx!!

u4giv
 
Hallo zusammen,

wenn dir das Thema 50 Fragezeichen wert ist, kannst du dir ein gutes Buch kaufen:
Andrew S. Tanenbaum - Moderne Betriebssysteme
ISBN 3-8273-7019-1
Da ist ein ganzes Kapitel nur Prozessen und Threads gewidmet, weswegen ich jetzt auch nichts zitiere :D
Eine durchschnittliche Uni-Bibliothek sollte das auch verfügbar haben.

Gruß,
K
 
Original geschrieben von kith
auch interessant:
auf einer linux box mal "ps ax | grep mysqld" eingeben. gezeigt werden dir threads, als ob sie eigene prozesse (childprozesse) waeren.
das gleiche unter bsd, zeigt einen einzelnen prozess (threads werden hier nicht angezeigt).

Das liegt an den unterschiedlichen Threadingmodellen die hier verwendet werden. Bei Linux eine 1:1 Architektur, bei FreeBSD (noch) eine reine Userlandarchitektur (N:1). Der Kernel weiss bei FreeBSD gar nichts von Threads. Doch das wird sich aendern. Das ist das Ziel des KSE Projekts. Hier wird versucht mit einer ziemlich komplexen Architektur die Nachteile die die beiden anderen Modelle zu vermeiden und die Vorteile zu nutzen.

http://www.aims.com.au/chris/kse/docbook/

Jeff Roberson und Jonathan Mini arbeiten uebrigens auch an einer 1:1 Architektur. Man wird in Zukunft unter FreeBSD wohl die Wahl zwischen allen moeglichen Modellen haben.

NetBSD hat in current bereits eine N:M Implementierung.

http://web.mit.edu/nathanw/www/usenix/freenix-sa/freenix-sa.html
 
Zurück
Oben