Lohnt sich 64Bit?

Interessant, Danke.
 
Textquelle: Linuxmagazin dieses Monats bereich Kernelarchitektur.
Webquelle:
[...]
Um PAE und damit das NX-Bit zu aktivieren, muss der Admin bei der Kernelkonfiguration unter »Processor Type and Features« den »High Memory Support« entweder auf »off« oder auf »64 GByte« stellen. Ist das System mit maximal 1 GByte Hauptspeicher bestückt, sollte er zunächst »off« und dann die Option »PAE« aktivieren (Abbildung 8 ). Ist mehr Speicher vorhanden, empfiehlt sich die Auswahl »64 GByte«. Diese Wahl impliziert automatisch PAE und damit die Unterstützung des NX-Bits.
[...]
Reicht das?
aber PAE ist doch nicht x86_64 sondern nur eine Möglichkeit um mit 32Bit mehr RAM verwenden zu können oO
 
PS: Mein Vater meine dazu ma, ich Zitiere: "32 bit is auf nem 64 bit system wie Ferari fahren ohne 6. Gang". Glaub das is aber nen bischen übertrieben.

Vielleicht etwas übertrieben, aber im Prinzip hat er Recht und um so länger ich darüber nachdenke um so passender ist sogar der Vergleich.

Der Ferrari wird für den "normalen" Straßenverkehr auch ohne 6. Gang funktionieren, aber wenn man seine volle Leistung entfalten will braucht man den 6. Gang.
Genauso kannst du auch mit einem 32bit OS auf einem 64bit System alle "normalen" Sachen machen, wenn du aber mal die volle 64bit Power brauchst oder ausnutzen willst, dann solltest halt auch ein 64bit OS haben.

Mal was ganz anderes. Habe gerade zum Spaß mal ein kleines C Programm geschrieben, dass kommt für normale int auf meinem 64bit System genauso wie auf meinem 32bit System bis 2147483647. Es heißt doch immer, dass die Wertebereiche bei C Platformabhängig sind, müsste ich dann auf dem 64bit System nicht weiter kommen?
 
Ich mag jetzt mit Halbwahrheiten um mich werfen aber:

Pointer sind 64Bit in dem Fall 64Bit lang/groß. Andere Datentypen betrifft das nicht. Kannst ja auch auf nem 32Bit System ein 64Bit langer Integer definieren.
 
Also in "C von A bis Z" steht
7.1 Der Datentyp int (Integer)

Der Datentyp int muss, gemäß ANSI C, mindestens eine Größe von zwei Byte aufweisen. Mit diesen zwei Bytes lässt sich ein Zahlenraum von –32768 bis +32767 beschreiben. Mit dem Datentyp int lassen sich nur Ganzzahlen darstellen. Die Abkürzung int steht für Integer.

Hier kommen Sie auch gleich in Berührung mit betriebssystemspezifischen Eigenheiten. Auf 16-Bit-Systemen mag das eben Gesagte zutreffen. Dort ist ein Integer (int) auch wirklich zwei Bytes groß. Manch einer wird aber sagen: 16-Bit-Systeme sind doch schon bald Schnee von gestern und sind eigentlich nur noch für MS-DOS und Windows 3.1 Compiler relevant. Es sollte aber bedacht werden, dass es noch andere Programmierplattformen neben Linux und MS-Windows gibt (besonders sind hier die Embedded Systems und Microcontroller hervorzuheben)!

Linux, Windows (ab Windows 95) und Macintosh sind alles schon Betriebssysteme auf 32-Bit-Basis. 32 Bit entsprechen vier Byte. Somit erstreckt sich der Zahlenraum auf 32-Bit-Systemen von –2147483648 bis +2147483647.

Ein int hat somit laut Standard die natürliche Größe, die von der »Ausführ-Umgebung« vorgeschlagen wird. Das wären dann z.B. auf einer PDP10-Maschine 36 Bit, auf einem Pentium 4 32Bit und auf einem beliebigen 64Bit Prozessor-System eben 64Bit.
[...]
Wenn Sie sichergehen wollen, welchen Wertebereich der Datentyp int auf einem System hat, so kann dies mit folgendem Listing herausgefunden werden:
Code:
/* sizeof_int.c */
#include <stdio.h>
#include <limits.h>   /* INT_MIN und INT_MAX */
int main(void) {
   printf("int Größe : %d Byte\n",sizeof(int));
   printf("Wertebereich von %d bis %d\n",INT_MIN,INT_MAX);
   return 0;
}
 
Ein int hat somit laut Standard die natürliche Größe, die von der »Ausführ-Umgebung« vorgeschlagen wird. Das wären dann z.B. auf einer PDP10-Maschine 36 Bit, auf einem Pentium 4 32Bit und auf einem beliebigen 64Bit Prozessor-System eben 64Bit.

Und genau das würde ich nicht verallgemeinern.

Nach meinem Code:
Code:
#include <stdio.h>
#include <limits.h>   /* INT_MIN und INT_MAX */
# include <SDL/SDL_types.h>
int main(void) {
   printf("%d %d %d\n",sizeof(int),sizeof(int32_t),sizeof(int64_t));
   return 0;
}

Ausgabe:
Code:
[~]$ ./a.out
4 4 8

Auf nem x86_64 System, compiliert mit gcc. Hier wird also als Standard ein 32Bit langer Integer gewählt. Eben deswegen halt ich es für besser, sowas immer gleich richtig zu deklarieren.
 
Danke Mike1, dass entspricht dem was ich noch in Erinnerung hatte. Warum bekomme ich jetzt aber auch auf meinem 64bit System diese Ausgabe:
int Größe : 4 Byte
Wertebereich von -2147483648 bis 2147483647
 
Ausgabe:
Code:
[~]$ ./a.out
4 4 8

Auf nem x86_64 System, compiliert mit gcc.

So sieht es ja auch bei mir aus, die Frage ist jetzt warum?

Wie gesagt, ich erinnere mich auch noch ganz schwach an meine Vorlesung zum Thema Programmiersprachen, da wurde genau das Verhalten (Wertebereich abhängig von Architektur) von C als Nachteil angesprochen, während z.B. Java den Datentypen eine feste Größe vorgibt egal auf welcher Architektur man sich befindet.

Evtl. ist das ja eine Eigenheit des gcc???
 
Nun sofern es eine eigenheit von gcc ist (und ich kenne leider nur gcc, da ich nur hobbymäßig programmiere) könnte ich mir vorstellen, dass es zumindest ne Compiler flag dafür gibt (wobei ich jetzt zu faul bin mich durch die manpage zu graben).
Für mich ist das eben ein Anreiz, Daten, die übertragbar gemacht werden sollen eben mit genauen Größen zu deklarieren. Spart nicht nur RAM.
 
Nun wollte ich wissen ob sich der Umstieg auf 64Bit lohnt?
Gibt es Geschwindigkeitszuwachs?
Irgendwelche Nachteile?
Was sagt ihr dazu?

Server ja,
Desktop nein.

Für 4GB und mehr führt heute kein Weg an 64-Bit mehr vorbei.

16GB RAM mit 32-Bit OS? *schauder*
 
Vielleicht etwas übertrieben, aber im Prinzip hat er Recht und um so länger ich darüber nachdenke um so passender ist sogar der Vergleich.

Der Ferrari wird für den "normalen" Straßenverkehr auch ohne 6. Gang funktionieren, aber wenn man seine volle Leistung entfalten will braucht man den 6. Gang.

AHA. Dann hätt ich gern nen Testarossa.

ich sag mal: pwn3D!!

Denn es kommt auch auf die Übersetzung an. Beim 5-Gang-Getriebe ist nunmal die Übersetzung weiter gestreckt als beim 6-Gang. Normalerweise ist also mehr Gänge zu haben nicht gleichbedeutend mit schneller zu sein, sondern besser in Hinsicht auf Verbrauch..Daher ist der Vergleich eben nicht gut.
Mancher mag ja was von Autos verstehen, aber auf Computertechnologie anwenden lässt sich das deshalb noch lange nicht! :P
 
Für 4GB und mehr führt heute kein Weg an 64-Bit mehr vorbei.

16GB RAM mit 32-Bit OS? *schauder*

Sofern kein einzelner Prozess mehr als 4GB RAM frisst (was im Desktop-Bereich ziemlich selten sein dürfte), reicht auch ein 32bit-System für die Adressierung des RAM aus. Man kann daher problemlos ein 32bit-Linux problemlos mit weitaus mehr als 4GB RAM nutzen. Nur ein einzelner Prozess kann dann halt nicht mehr als 4GB RAM adressieren.
 

Ähnliche Themen

Debian & Windows crypten

AMD 64Bit, weniger Probleme bei Intel x86 Verison?

Gentoo auf Core 2 Duo - Ehrfahrungsbericht

Zurück
Oben