G
Guest
Gast
Hi,
nun definiert die Literatur ja einen Prozess als ein Programm in Ausführung. Verschiedene Prozesse haben verschiedene Adressräume wohingegen Threads den gleichen Adressraum nutzen. Es wird immer argumentiert, dass man einen Geschwindigkeitsvorteil hat, z.B. an Bsp. eines Webservers auf dem dann mehrere Prozesse laufen. Könnte man aber nicht die Aufgaben die Threads lösen auch in der Art lösen das ein Prozess in mehrere Prozesse zerlegt wird, man also statt Threads mehrere Prozesse nutzt? Diese könnte man doch so programmieren, dass sie z.B. über irgendwelche Funktions- bzw. Methodenaufrufe trotzdem auf den Adressraum des anderen Prozesses zugreifen könnten. Nur weil zu Prozessen etwas mehr Arbeit notwendig ist, Register kopieren usw. ist der Geschwindigkeitsverlust doch nicht so gravierend, oder?
Was ist also der wirkliche Vorteil wenn man Threads, wenn man jetzt mal vernachlässigt, dass Prozesse etwas langsamer sind. Wieso kann man also nicht einfach mehrere Prozesse erzeugen um beim Bsp. des Webservers zu bleiben die die Abarbeitung von Anfragen übernehmen? Gut, die Anzahl von Ports ist begrenzt, aber die Prozesse könnten ja alle am selben Port lauschen und ein Wechsel muss bei nur einer CPU bei Threads und Prozessen durchgeführt werden.
Vielleicht habe ich das alles auch falsch verstanden. Würde mich also freuen, wenn jemand die Sache idiotensicher erklären könnte wieso man Threads statt Prozesse bzw. meiner Prozesszerlegung nutzt.
Ich hoffe das war nicht zuviel Text
nun definiert die Literatur ja einen Prozess als ein Programm in Ausführung. Verschiedene Prozesse haben verschiedene Adressräume wohingegen Threads den gleichen Adressraum nutzen. Es wird immer argumentiert, dass man einen Geschwindigkeitsvorteil hat, z.B. an Bsp. eines Webservers auf dem dann mehrere Prozesse laufen. Könnte man aber nicht die Aufgaben die Threads lösen auch in der Art lösen das ein Prozess in mehrere Prozesse zerlegt wird, man also statt Threads mehrere Prozesse nutzt? Diese könnte man doch so programmieren, dass sie z.B. über irgendwelche Funktions- bzw. Methodenaufrufe trotzdem auf den Adressraum des anderen Prozesses zugreifen könnten. Nur weil zu Prozessen etwas mehr Arbeit notwendig ist, Register kopieren usw. ist der Geschwindigkeitsverlust doch nicht so gravierend, oder?
Was ist also der wirkliche Vorteil wenn man Threads, wenn man jetzt mal vernachlässigt, dass Prozesse etwas langsamer sind. Wieso kann man also nicht einfach mehrere Prozesse erzeugen um beim Bsp. des Webservers zu bleiben die die Abarbeitung von Anfragen übernehmen? Gut, die Anzahl von Ports ist begrenzt, aber die Prozesse könnten ja alle am selben Port lauschen und ein Wechsel muss bei nur einer CPU bei Threads und Prozessen durchgeführt werden.
Vielleicht habe ich das alles auch falsch verstanden. Würde mich also freuen, wenn jemand die Sache idiotensicher erklären könnte wieso man Threads statt Prozesse bzw. meiner Prozesszerlegung nutzt.
Ich hoffe das war nicht zuviel Text