AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Äquivalent zu fork() unter Windows?

Äquivalent zu fork() unter Windows?

Ein Thema von Angel4585 · begonnen am 2. Mär 2013 · letzter Beitrag vom 3. Mär 2013
Antwort Antwort
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#1

AW: Äquivalent zu fork() unter Windows?

  Alt 2. Mär 2013, 14:38
Warum braucht man unter Linux ein fork()?
Fork "kopiert" afaik den kompletten Adressraum eines Programmes und erstellt einen neuen Prozess. Das Tolle an Fork ist, das das Kopieren eine "faule" (lazy) Operation ist. Das heißt, Speicherseiten, die keiner der beiden Prozesse nach dem Fork schreibt, teilen sich den physischen Speicher. Das ist eine ziemlich unkompliziert Möglichkeit, am Programmstart geladene Ressourcen im Speicher unter mehreren Prozessen zu teilen.
Andererseits ist der neue Kindprozess eben ein eigenständiger Prozess mit allem was dazu gehört. Die Prozesse können abstürzen ohne den anderen zu beeinflussen.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Äquivalent zu fork() unter Windows?

  Alt 2. Mär 2013, 23:11
Aber wenn fork() eine Technik ist mit der man so viel erreichen kann, warum schmeisst man sie einfach so aus dem System?
Bzw. durch welche Technik wurde sie ersetzt? Reines Threading?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: Äquivalent zu fork() unter Windows?

  Alt 3. Mär 2013, 00:17
Threading ist resourcenschonender und schneller beim Wechseln. fork() wurde afaik vor 40 Jahren erfunden, was nicht per se gegen diese Funktion spricht. Aber eben auch nicht für sie.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Äquivalent zu fork() unter Windows?

  Alt 3. Mär 2013, 00:29
Sie scheint mir schlicht nicht notwendig zu sein. Ich bin bis heute auch prima ohne sie ausgekommen (auch wenn ich mir durchaus Einsätze vorstellen kann). Zudem ist es gut möglich, dass unter Windows dafür einige heftige Verränkungen gebraucht würden, die das OS prinzipbedingt nicht oder nur sehr unperformant/"hacky" her gibt. Gerade das copy-on-write Verhalten kann ich mit im virtuellen Speicher von Windows als echte Aufgabe vorstellen. Wenn es unabdingbar wäre, hätten die Entwickler der Welt MS sicherlich schon dort hin getrieben. Das Thread-Modell scheint hier aber alle Wünsche zu erfüllen, und ist seit der NT-Linie fester und bewährter Bestandteil.
(Man entschuldige meine Ignoranz, aber wenn ich nicht irre wurden Threads in Linux hingegen erst eingeführt, nach dem es Leute in der Windows-Welt als für doch echt ziemlich praktisch befunden hatten. IMHO kannte Linux lange keine Threads in diesem Sinne. Daher würde für mich anders herum ein Schuh draus. Das in Klammern hier basiert jedoch auf Halbwissen.) Dennoch wüsste ich aktuell nicht, was ich mit Forks machen könnte, was ich nicht mindestens ähnlich komfortabel mit Threads (oder eben wirklich multiplen Prozessinstanzen) nicht auch erledigen könnte.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: Äquivalent zu fork() unter Windows?

  Alt 3. Mär 2013, 01:30
Gerade das copy-on-write Verhalten kann ich mit im virtuellen Speicher von Windows als echte Aufgabe vorstellen.
Das wird das geringste Problem sein. Kompliziert ist bei der Verwaltung von virtuellen Speicher eigentlich "nur" die Entscheidung, welche Seiten nun im physischen Speicher bleiben und welche ausgeswapt werden.
Meiner Meinung nach passen Threads und fork als Konzept einfach nicht wirklich zueinander. Und es ist ja nicht nur die Frage, wie mit Threads beim forken umgegangen wird, sondern auch mit anderen Ressourcen (Locks, Handles/Filedescriptoren, usw.).

Ich halte fork (auch heute) für ein interessantes Konzept, insbesondere weil man effizient und ziemlich einfach Speicher mit komplexen Datentypen teilen kann und Trennung in unterschiedliche Addressräume hat. Das Nächste was in diese Richtung gehen würde, wäre Rumgebastel mit Memory Mapped Files.

Aber die meisten Anwendungen sind mit Threads wohl sehr viel besser bedient.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG ( 3. Mär 2013 um 01:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz