Linux- und Windows-Kernel [geschlossen]


9

Ich arbeite unter Linux und ein Freund unter Windows 7.

Ich war erstaunt über die Geschwindigkeit, mit der NetBeans, Eclipse, pgAdmin und andere Programme unter Linux sehr viel schneller öffnen als unter Windows.

Was ist der Hauptunterschied zwischen Linux- und Windows-Kernel, der diesen Zeitlastunterschied verursacht?

Beide Maschinen haben genau die gleiche Hardwarekonfiguration.


1
Komischerweise ist meine Erfahrung genau das Gegenteil: Auf allen meinen PCs werden Programme unter Windows in der Regel viel schneller geladen als unter Linux (insbesondere unter Windows 7, bei dem erraten wird, welche Programme Sie aufgrund der früheren Verwendung öffnen, und sie vorab in den Speicher laden ) . Vielleicht ist sein Windows-Computer voller Bloatware? Ist das Unternehmen nur Windows-Antiviren? Haben Sie versucht , unter Linux auf der gleichen Maschine (andernfalls Festplatten Ladezeiten beeinflussen drastisch) .
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft danke für deinen Kommentar. Wie ich auf der Frage sagte, haben beide Maschinen die gleiche Hardwarekonfiguration, beide kamen mit Windows 7, aber ich bin ein Linux-Benutzer und nein, sein Windows ist nicht aufgebläht
Gerep

1
@ BlueRaja-DannyPflughoeft Ich fand es interessant, dass ein Antivirenprogramm für Windows nach dem Einstellen viel langsamer wird. In der Tat ist keine Bloatware erforderlich. Installieren Sie einfach ein Antivirenprogramm. Die GNU / Linux braucht (zumindest noch) keine , und diese kleine Sache hat auch viel mehr Leistung gebracht.
Hi-Angel

Antworten:


8

Dies ist nur meine Vermutung, aber ich denke, wenn Sie für ein Unternehmen arbeiten, in dem, sobald alles kompiliert (in Binärdaten konvertiert, die Computer ausführen können), niemand mehr den Quellcode sehen kann, sind Sie in der Regel viel fauler. da es keine Rolle spielt , solange es funktioniert .
Linux ist Open Source, sodass jeder den Quellcode sehen kann, wenn er dies möchte. Wenn Sie faul sind und einen wirklich beschissenen Code schreiben, der das System oder etwas Ähnliches wirklich verlangsamt, dann hat Ihr Ruf, wie jeder gerade gesehen hat. Entwickler und Benutzer gleichermaßen. Ich denke, das ist einer der Gründe, warum Open-Souyce-Entwickler weniger faul sind.

Es ist auch eine Tatsache, dass der Kern des Windows-Kernels nie mit der Absicht geschrieben wurde, das zu werden, was er heute ist (auch nicht Linux, aber sie haben sich bemüht, die alten Bits zu optimieren), und Entwickler haben einfach immer hinzugefügt und hinzugefügt obendrein, bis der Code so kryptisch war, dass niemand mehr etwas daraus machen konnte. Zwei Eigenschaften von unordentlichem Code sind, dass es häufig viel Redundanz gibt und dass Sie die Verknüpfungen zwischen zwei Codeteilen nicht mehr so ​​leicht erkennen können, sodass Sie nicht einmal versuchen können, mit der Optimierung zu beginnen. Nur ein Beispiel (kein kryptisches);

for (int i = 0; i < 20; i++)
{
    if (x == y)
    {
        if (z <= u)
        {
            goto banana;
        }
    }
}

Das obige Beispiel könnte viel effizienter durchgeführt werden.

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}

1
Ich glaube, im Bereich der Programmierer besteht derzeit Konsens darüber, dass die faule und / oder schlampige Codierung in den Compilern gut optimiert ist. Compiler können jedoch nicht anders, als aufzublähen und Vermächtnis zu hinterlassen, das möglicherweise vorhanden ist - und mit Ihrer Absicht zusammenhängt.
Chris K

4
Diese

@ BlueRaja-DannyPflughoeft Ich weiß, aber ich brauchte ein einfaches Beispiel, um es zu erklären.
RobinJ

5

Ein weiteres großes Problem, das noch nicht erwähnt wurde, ist, dass Linux bessere Dateisysteme hat. Die Leistung von NTFS mit kleinen Dateien ist nicht so gut - ext3 ist besser und ext4 ist viel, viel besser. Es gibt einige interessante Spekulationen darüber, warum in einer anderen Frage .

Wenn Sie ein Programm öffnen, lädt ein erheblicher Teil der Startzeit eine Reihe winziger Dateien von der Festplatte. Daher ist es sehr wichtig, ein Dateisystem zu haben, das dies schnell erledigt.


4

Dies ist nur meine Meinung, aber ich denke, es gibt verschiedene Gründe dafür, dass GNU / Linux-Systeme schneller als Windows sind und nicht alle mit dem Kernel zusammenhängen:

  • Offensichtlich gibt es den Grund, der von RobinJ erklärt wurde. Es ist ziemlich offensichtlich, dass der Code bei Open Source-Software tendenziell effizienter geschrieben wird
  • Linux verwendet sehr optimierte Komponenten, zum Beispiel verwendet es einen sehr optimierten Scheduler, der dazu neigt, die CPU-Auslastung zu maximieren.
  • Linux-Systeme leiden weniger unter Speicherfragmentierung
  • Linux-Systeme nutzen den Hauptspeicher besser und nutzen den Cache normalerweise massiv. Windows-Systeme nutzen den virtuellen Speicher eher massiv
  • Der Linux-Kernel wird ständig aktualisiert und nutzlose Teile werden normalerweise entfernt, obwohl Linus Torvalds sagte, dass der Linux-Kernel "riesig und aufgebläht" wird. Im Gegensatz dazu werden Updates des NT-Kernels normalerweise auf den vorhandenen aufgebaut.

3

Ich glaube, der Kernel allein ist nicht die Antwort. Windows 7 war das erste Mal, dass Windows so schnell reagierte, dass ich es für akzeptabel halte.

Ich glaube, dass ein größerer Teil des Geschwindigkeitsunterschieds mit @ RobinJs Gedanken zur Softwareentwicklung zusammenhängt. Alles * in Windows basiert auf dem MSDN über ein Microsoft-Framework oder ein anderes. Dies hängt tatsächlich damit zusammen, wie Big Business Microsoft liebt. Bei Microsoft geht es darum, verschiedenen Programmen / Suiten / Technologien dabei zu helfen, miteinander zu kommunizieren.

Weiter ... um es den Entwicklern zu erleichtern, das Wesentliche zu behandeln (und das Rad nicht neu zu erfinden). Microsoft ermöglicht es Herstellern, vorkompilierte Bibliotheken wie Microsoft Visual C ++ 2008 Redistributable zu bündeln und / oder zu benötigen. Oder .Net4.0, MSSQL 2005, ad nauseum. Es gibt Pakete im Wert von etwa zehn Jahren, die Entwickler verwenden und darauf aufbauen können. Endbenutzer müssen sie auf ihren Windows-Computern installieren, um die neue Software verwenden zu können.

Damit das Programm Zyzzyx geladen und ausgeführt werden kann, müssen eine oder mehrere umverteilbare MSDN-Bibliotheken vorhanden sein und ausgeführt werden. Diese Bibliotheken bestimmen, wie Programme mit dem Betriebssystem interagieren.

Um es auf den Punkt zu bringen, ich würde sagen, dass die absichtliche Kompatibilität von Windows über Jahrzehnte von Software es aufgebläht und gelegentlich langsamer macht als ein vergleichbares Linux-System. Beachten Sie auch, dass ich visuelle Software für Windows entwickelt habe, aber keine für Linux ... nicht GTK, Qt, Py, irgendetwas, also sind meine Annahmen, dass Linux weniger aufgebläht ist, genau das.

bearbeitet, um hinzuzufügen: Außerdem wird die FOSS-Software ständig verbessert, sodass sich GTK im Laufe der Zeit verbessert, anstatt dass sich GTK-2005 und GTK-2008 auf demselben Computer befinden, während Microsoft dies ständig tut.

* - ok, es gibt Ausnahmen, da bin ich mir sicher.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.