Linux 15.001 Themen, 106.681 Beiträge

Linux - Contra Windows

Acader / 15 Antworten / Flachansicht Nickles

Linux ist ein anderes Betriebssystem als Windows.
Beide haben ihre Vor - und Nachteile hinsichtlich der Anwendung.
Mich würde mal interessieren wie man die Geschwindigkeit auf gleicher Hardware optimal miteinander vergleichen kann.
Man kann ja für die jeweiligen Betriebssysteme/Distributionen Benchmark Tests nur mit der entsprechenden Software durchführen und diese ist bei Windows eben anders als für Linux. Also ist der Vergleich unreell.
Welche Möglichkeiten haben wir zu einem reellen Vergleich um die Rechenkraft der jeweiligen Hardware herauszufinden ?

Gruß Acader

bei Antwort benachrichtigen
KarstenW Acader „Linux - Contra Windows“
Optionen

Ein Vergleich zwischen Linux und Windows wird wahrscheinlich nichts.
Du mußt dich mal mit Prozessoren ein wenig beschäftigen. Da ich kein Informatiker bin und nur Grundkenntnisse in C Programmierung habe, kann ich es nur ganz einfach erklären.
Bei Prozessoren wird einmal zwischen RISC Prozessoren und CISC Prozessoren unterschieden. CISC Prozessoren haben eine Befehlsdekodiereinheit eingebaut, mit der erst die Maschinenbefehle, die von einem Programm eingelesen werden, erst noch dekodiert werden müssen, bevor sie vom eigentlichen Prozessor verarbeitet werden. Diese Dekodierung kostet ein wenig Rechenzeit und macht den Prozessor etwas langsamer (oder man erhöht die Taktfrequenz wie bei AMD- und Intelprozessoren)
Bei RISC Prozessoren werden die Befehl direkt verarbeitet. Da gibt es keinen Befehlsdekodierer. Dadurch werden auch bei RISC Prozessoren die Befehle schneller verarbeitet. Ein typischer Vertreter dieser RISC Prozessoren ist der Ultra 3 Sparcprozessor von Sun Microsystems. Diese Sparcprozessoren sind schweineteuer (und kann ich mir leider nicht leisten).
Intel und AMD stellen CISC Prozessoren her, wobei die neueren Prozessoren auch RISC Elemente eingebaut haben.

Wahrscheinlich hast du schon mitbekommen das der Linuxkernel auf sehr vielen unterschiedlichen Prozessorarchitekturen läuft. Das ist nur ein Vorteil des POSIX Standard von Unix. Deshalb kann man schon mal nicht einfach Linux mit Windows XP vergleichen, wenn die Systeme auf unterschiedlichen Prozessorarchitekturen laufen.

Und dann muß man wissen das ein Prozessor einmal durch die Taktfrequnez schneller wird. Und zum Anderen wird ein Prozessor durch neue Maschinenbefehle schneller, die ältere Maschinenbefehle teilweise ersetzen.
Und nun kommt der C-Compiler gcc ins Spiel. Der Compiler gcc hat die Aufgabe den erzeugten Binärcode so zu optimieren , das möglichst die neuen Maschinenbefehle und Instruktionen des neuen Prozessors in die Binärdatei des Programmes geschrieben werden, so das der erzeugte Binärcode schneller läuft.

Man muß also erstmal für einen Vergleich die gleichen Prozessoren verwenden und dann muß das Programm auch noch für die eingebaute CPU vom Compiler optimiert worden sein.
Unter Linux ist das kein Problem (wenn man etwas Erfahrung mit dem Compiler gcc hat) , aber unter Windows ist das leider unmöglich , da Microsoft den Sourcecode von Windows nicht rausrückt.
Windows ist meist für ältere Prozessoren optimiert, so das Windows auf sehr vielen AMD und Intel Maschinen läuft.
Windows nutzt dadurch auch nicht die neuen Maschienbefehle und Instruktionen der neuen Prozessoren aus und verschwendet dadurch Rechenleistung.

Das Hauptproblem was ich bei Windows sehe ist, das Windows einen hybriden Kernel verwendet. Ein hybrider Kernel ist eine Mischung aus einem Microkernel und einem monolitschen Kernel.
Bei Windows laufen eine Menge Treiber außerhalb des Kernelspace im Userspace. Das ist der Speicherbereich wo auch die ganz normalen Programme laufen. Das Problem ist wenn ein Treiber im Userspace läuft er erstmal keinen Zugriff auf die Hardware bekommt. Damit dieser Treiber Zugriff auf die Hardware bekommt , muß der Prozessor vom Protected Mode in den Kernelmode (heißt unter Windows Realmode glaube ich) umgeschaltet werden. Dieses Umschalten kostet etwas Rechenzeit, Overhead genannt. Wenn der Treiber fertig ist , wird der Prozessor wieder in den Protected Mode umgeschaltet. Das kostet wieder etwas Rechenzeit.
Im Gegensatz dazu laufen die Treiber bei Linux immer im Kernelspace( auch die Kernelmodule) . Dadurch bekommen die Treiber auch vollen Zugriff auf die Hardware und die Umschaltung zwischen Protected Mode und Kernel Mode fällt weg.

Linus Torwalds hält überhaupt nichts davon einen Treiber im Userspace laufen zu lassen. Kann ich nicht beurteilen, da ich kein Informatiker bin ;-).
Da der Treiber in den Kernel implementiert werden muß, braucht man auch den Sourcecode des Treibers.
Das Problem ist , das sehr häufig viele Firmen den Programmcode des Treibers nicht rausrücken wollen. Na ja, du kennst ja die Probleme mit den Treibern unter Linux. Es gibt aber Ausnahmen wie NVidia mit seinen NForce Treibern.

Mehr weiß ich nicht.

PS: Wenn du selbst ein Linuxprogramm, den Linuxkernel beispielsweise, für die eingebaute CPU übersetzen willst, dann mußt du eigentlich keine Programmierkenntnisse haben. Das ist alles so gemacht, das auch ein normaler Anwender, welcher in der Lage ist Handbücher und Anleitungen in Englisch zu lesen, das auch machen kann. Für viele Anwender ist wahrscheinlich Englisch ein Problem.



Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen