psi_2k Geschrieben 9. Januar 2008 Teilen Geschrieben 9. Januar 2008 ich hab in 2 Wochen meine mündliche Abschlussprüfung und bräuchte noch ein paar Antworten die sich in meiner Präsentation ergeben könnten, da ich die Performance unterschiede und Kompatibilität von Windows Server 32bit und 64bit überprüfe... Was der unterschied im groben ist weiß ich auch... würde mir nur gerne schon was zusammenlegen für die Prüfer die das mit Sicherheit fragen werden. Hat da jemand vielleicht eine gute und/oder kurze Antwort für mich? vielen dank schon mal im Voraus! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fruxano85 Geschrieben 9. Januar 2008 Teilen Geschrieben 9. Januar 2008 64bit kann mehr Ressourcen allokieren als 32bit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
psi_2k Geschrieben 9. Januar 2008 Autor Teilen Geschrieben 9. Januar 2008 ja das ist denk ich das bekannteste das 32bit keine Adressierung über 4Gb Ram kann... aber wieso ? Wo sind die grundlegenden unterschiede ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fruxano85 Geschrieben 9. Januar 2008 Teilen Geschrieben 9. Januar 2008 liegt einfach in der technologie, google sollte dir weiterhelfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 9. Januar 2008 Teilen Geschrieben 9. Januar 2008 ja das ist denk ich das bekannteste das 32bit keine Adressierung über 4Gb Ram kann... aber wieso ? Wo sind die grundlegenden unterschiede ? Der Hauptunterschied liegt darin, dass bei einem 64bit Prozessor ein doppelt so großer Adress- und Datenbus existieren (-> 64bit Datenverarbeitung pro Takt und 2^64bit Speicherzellen adressieren). Neben dem Vorteil das bspw. mehr RAM adressiert werden kann, steigt auch gleichzeitig die max. Groeße einer Integer-Variablen bei der Programmierung. Grundlagen lernen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Argbeil Geschrieben 9. Januar 2008 Teilen Geschrieben 9. Januar 2008 Breitere Register, mehr adressierbarer Speicher, dafür größere Pointer. Nachteil ist eine völlige Inkompatibilität zu Win32, du brauchst eigene Treiber und eigene Applikationen. Den zweiten Punkt umgeht Microsoft mit einer Emulationsschicht, die kostet aber Performance. Aktuell macht Win64 nur Sinn wenn du mehr als 4 GB Ram adressieren musst. Wird aber mittelfristig kommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 9. Januar 2008 Teilen Geschrieben 9. Januar 2008 steigt die max. Groeße einer Integer-Variablen bei der Programmierung. Das hab ich bislang anders verstanden. Integer ist und bleibt ein Datentyp der sich aus 4 Byte zusammen setzt (32 Bit). Wenn man Integeroperationen auf einem 64 Bit System macht wird aus dem Integer in der CPU sowas wie ein long (8 Byte Ganzzahl) und sobald das Ding wieder in dem Ram kommt werden natürlich nur noch 4 Byte verwendet. Ist ja schließlich ein Integer. Interessant wirds wenn man von Haus aus Long verwendet. Auf einem 32 Bit System mussten diese Zahlen nämlich mehrmals durch die CPU da sie ja etwas übergewichtig sind und im ganzen nicht durchpassen.Auf 64Bit Systemen geht das auf einmal. Das heißt, man hat hier eine echt signifikante Zeitersparniss (leider wird long nicht oft genutzt da man selten was größeres als integer braucht. Bei Kommazahlen reicht auch meist float anstatt double, warum sollte man Speicher verschwenden wenn es nicht nötig ist). Außerdem kann man an einen 64 Bit Rechner auch 64 Adressleitungen zum Ram legen. Damit kann man dann logischerweise bis zu 2^64 Byte RAM adressieren. Integer wird nicht größer. Aber Long wird Integer ersetzen wenn der RAM billiger wird, da die Rechenzeiten ja gleich sind und Speicher sowieso da ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 10. Januar 2008 Teilen Geschrieben 10. Januar 2008 Hallo, Das hab ich bislang anders verstanden. Integer ist und bleibt ein Datentyp der sich aus 4 Byte zusammen setzt (32 Bit). Klassischerweise beschreibt ein integer die "natürliche" Größe der CPU-Register. Also 32 Bit auf einer 32 Bit CPU und 64 Bit auf einer 64 Bit CPU. Aus Kompatibilitätsgründen kann man dieses Verhalten beim Erstellen/Compilieren von Programmen kontrollieren. D.h. man kann auch auf einem 64 Bit System entweder durch die entsprechenden Datentypen oder Compiler-Switches ein 32 Bit Modell verwenden. Wenn man Integeroperationen auf einem 64 Bit System macht wird aus dem Integer in der CPU sowas wie ein long (8 Byte Ganzzahl) und sobald das Ding wieder in dem Ram kommt werden natürlich nur noch 4 Byte verwendet. Ist ja schließlich ein Integer. Interessant wirds wenn man von Haus aus Long verwendet. Auf einem 32 Bit System mussten diese Zahlen nämlich mehrmals durch die CPU da sie ja etwas übergewichtig sind und im ganzen nicht durchpassen. Nein. In C gilt die Regel, das ein long mindestens so gross wie ein integer sein muss. D.h. es kann sehr wohl sizeof(int)==sizeof(long) gelten. Aus diesem Grund gibt es beispielsweise bei Microsoft ein abstraktes Datenmodell, das für 32 und 64 Bit eigene integer Typen zur Verfügung stellt (d.h. es gibt beispielsweise ein "long32" und ein "long64". Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 10. Januar 2008 Teilen Geschrieben 10. Januar 2008 Für andere Sprachen (wie z.B. Java) muss das aber nicht gelten. Aber nativ (auf Windows und C++ bezogen) hast du dann wohl recht. Und mit Long meinte ich einen 64Bit-Long (in c dann wohl ein abstrakter Datentyp), mit dem eine 32Bit-CPU ja wohl nicht so schnell fertig werden kann, wie eine 64er. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 10. Januar 2008 Teilen Geschrieben 10. Januar 2008 Also 32 Bit auf einer 32 Bit CPU und 64 Bit auf einer 64 Bit CPU. Es gibt 64-Bit-Compiler (C/C++), bei denen ein "int" oder auch ein "long" aus Kompatibilitätsgründen in der Standardeinstellung weiterhin 32-Bit lang sind. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Argbeil Geschrieben 10. Januar 2008 Teilen Geschrieben 10. Januar 2008 Ich würde sagen, ein Integer ist einfach eine Ganzzahl die - in der Regel - so breit wie ein CPU Register ist. Trotzdem muss ein Int aber nicht größer werden weil die Plattform sich ändert. Beispielsweise kannst du seit .net 2.0 auch x64 Code erstellen lassen. Wenn du das C# Schlüsselwort int verwendest, ist das ein Alias für System.Int32. Schaltest du auf x64 Code, wäre es möglich automatisch System.Int64 zu verwenden - das könnte aber zur Folge haben das sich der Code anders verhält (nur weil die die CPU eine andere ist), deshalb wird das bei Java, .NET und anderen 'Managed'-Sprachen nicht gemacht. Wenn du allerdings einen nativen 64 Bit Compiler wie den Intel c++ Compiler für Visual Studio nimmst, ist ein int sehr wohl 64 und ein long plötzlich 128 Bit breit. Diesen Code kannst du dann aber auch natürlich nur auf x64 CPUs unter x64 Betriebssystemen ausführen und dürftest somit keine unerwarteten Überraschungen erleben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 10. Januar 2008 Teilen Geschrieben 10. Januar 2008 Ich würde sagen, ein Integer ist einfach eine Ganzzahl Dem kann man zustimmen. Weiteres ist plattformspezifisch. Für Visual C++ kann man die Größen hier nachlesen: Data Type Ranges Hier ist das Verhalten der 32 und 64 Bit C++ Compiler gleich. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Argbeil Geschrieben 10. Januar 2008 Teilen Geschrieben 10. Januar 2008 Sach ich doch. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 10. Januar 2008 Teilen Geschrieben 10. Januar 2008 Hallo, Es gibt 64-Bit-Compiler (C/C++), bei denen ein "int" oder auch ein "long" aus Kompatibilitätsgründen in der Standardeinstellung weiterhin 32-Bit lang sind. Und genau aus diesem Grund hatte ich geschrieben, dass sich dieses Verhalten in der Regel über Compiler-Switches steuern lässt. Wenn du allerdings einen nativen 64 Bit Compiler wie den Intel c++ Compiler für Visual Studio nimmst, ist ein int sehr wohl 64 und ein long plötzlich 128 Bit breit. Bei welchem 64 Bit Compiler ist ein long denn per Default 128 Bit gross? Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 11. Januar 2008 Teilen Geschrieben 11. Januar 2008 hatte ich geschrieben, dass sich dieses Verhalten in der Regel über Compiler-Switches steuern lässt. Darauf, dass dies geht, würde ich mich nicht verlassen. Ich meine, es geht nicht überall einfach so per Option. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.