Einzelnen Beitrag anzeigen

Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Windows + Linux Kernel???

  Alt 22. Okt 2014, 07:41
Allerdings stimmt die Verzeichnisstruktur von Windows 8+ schon mal nicht mit der von Linux überein. Dort werden ja Anwendungen in usr installiert. Dises Verzeichnis fehlt schon mal.

Es existiert außerdem das Windows Verzeichnis wie in früheren Versionen und ich habe soeben auch das System32 Verzeichnis gefunden, wo auch die alten Bekennten drin sind wie zb. advapi32.dll. Sieht soweit eher nach reinrassigem Windows aus.
Selbst wenn Windows einen Linuxkernel nutzen würde (was es ja nicht tut), dann müsste die Verzeichnisstruktur nicht identisch sein. Dem Linuxkernel an sich ist es nämlich egal wo was liegt, dass kann jetzt /usr, /users oder /devices/driveC/Program Files sein.

Cygwin emuliert allerdings nichts, sondern stellt eine Unixoide Umgebung für typische Linux-Programme bereit, die aber für Windows kompilliert wurden.
Wine emuliert genauso viel/wenig wie Cygwin. Es mappt "einfach" nur die Systemaufrufe, die unter Windows zum Kernel/System (das meint nicht kernel32.dll!) durchgereicht würden auf entsprechende POSIX APIs. Außerdem steht es ja bereits im Namen: Wine is not an emulator.

Jedenfalls macht der Fakt, das Cygwin für die Ausführung von Linux Programmen auf der Windows Maschine gebaut wurde auchh schon klar, das es da große Unterschiede geben muss, wenn diese Linux-Programme für Windows übersetzt wurden, damit sie mit Cygwin laufen. Ich hatte gedacht, das diese Linux Programme dann auch für Linux überseetzt wurden, nun aber auf Windows laufen sollen. Daher überrascht mich, das solche Programme für Windows übersetzt werden. Trifft das immer zu für Cygwin?
In der POSIX-Welt (bei der Linux nur ein Beispiel ist) trifft sich normalerweise nur Quelltextkompatibilität zwischen den verschiedenen Betriebssystemen (Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, etc.) aber keine Binärkompatibilität. Es ist da ganz normal, dass Programme vom Quellcode weg für das jeweilige Zielbetriebssystem kompiliert werden (egal ob Open Source Programm oder nicht; im einen Fall macht es die bereitstellende Firma im anderen der Nutzer selbst). Selbiges trifft eben auch für Cygwin oder die von mir bevorzugten Services for Unix Applications (SUA) zu, welche von Microsoft bereitgestellt werden (oder zumindest bis 7 wurden; die Situation in 8 hab ich noch nicht ganz durchstiegen).
Im Gegensatz zu Cygwin ist SUA um einiges tiefer und besser in Windows integriert, da es ein sogenanntes NT Subsystem ist, genauso wie das Win32 Subsystem*.

*Zur Erklärung: die Windows API, mit der wir unter Windows programmieren (direkt oder indirekt) ist nicht die eigentliche API des Betriebssystems; stattdessen ist die API, welche durch die NTDLL bereitgestellt wird die API des Kernels. Die gewohnte Windows Umgebung wird durch ein sogenanntes Subsystem bereitgestellt, welches auf dieser API aufsetzt (durch die ganzen typischen DLLs wie kernel32.dll und Co. und den Prozess CSRSS). Das ist ein zentrales Konzept der NT Architektur und wurde zumindest bis Windows 2000 rege genutzt, da es dort auch ein OS/2 Subsystem gab, mit dem es möglich war OS/2 Kommandozeilenprogramme unter Windows auszuführen. Heutzutage ist wenn überhaupt nur noch das POSIX Subsystem aka SUA übrig geblieben.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons

Geändert von JamesTKirk (22. Okt 2014 um 07:41 Uhr) Grund: Tag gefixt
  Mit Zitat antworten Zitat