TIFF Dateien Speichern? Laden größer 9000x6000 Pixel?

Anfängerfragen zum Programmieren mit PureBasic.
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

... 2^16 Byte ...
Es sind nicht Byte sondern Bit...

EDIT:
Korrktur:
Hab mich da vertan, es stimmen Byte!

Und es ist Physikalisch nicht möglich in einem Schritt mehr als 32Bit über 32 Leitungen zu schicken, also kann ich mir nur vorstellen dass dann hinten noch was drangeschoben wird, was die Leistung stark senken würde...

Danke KG für die Aufklärung!
Zuletzt geändert von Andreas_S am 16.07.2008 18:57, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Also mit Treibern oder anderen Tricks mehr Arbeitsspeicher bis zu 16 MB glaube ich, sogar möglich gewesen sind.

wie ich sagte:
> das ist der Grund, warum Rechner dieser Generation nur 1MB speicher direkt ansprechen konnten,
> höherer Speicher konnte nur mithilfe des Treibers HIMEM
> als Peripheriegerät angesprochen werden.


> Na ja, Wiki ist schon auch blöd:
wieso? da steht genau das, was ich versucht habe dir zu verklickern.


> Adressleitung 36 Bit. Moderne Rechner haben 40 Bit und mehr.
ja schick, also kann die MOTHER theoretisch mehr RAM adressieren.
das bedeutet nicht, dass ein prozess es kann, weil ein Pointer eben 32bit hat.


[MODERATOR OFF] <= das bedeutet, ich schreibe jetzt als normaler User.

ich finde es äußerst nervig, wie du daherkommst.

hälst es anscheinend nicht für nötig, mehr als drei sätze von
einem gegenüber zu lesen, aber schreibst selber Romane.

laberst hier großspurig rum, ohne zuzuhören, oder informationen zu verarbeiten.

...und dann kommst du in letzter Zeit mit Programmierfragen an,
die mich fragen lassen, wieviel ahnung du überhaupt von irgendwas hast.

aber vorher monatelang den leuten aufn zeiger gehen mit
deiner KI zur Mustererkennung und was weiß ich nicht alles.

DU GEHTS MIR AUFN KEKS! MACH DE KOPP ZU!

...uff.. das musste mal raus ... jetzt gehts mir etwas besser.

[MODERATOR ON]

so, zurück zum Alltag.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

@Kaeru Gaman

Weißte, ich hatte vorhin auch schon einen Beitrag formuliert,
den dann aber nochmal gelöscht, weil er zu aggressiv war.
Ich habe heute Geburtstag und das Kaffeeklatschtreffen steht vor der Tür.
Ich möchte mich mit euch nicht streiten.

Ich finde es auch bescheuert, dass aus einem Anfängerbeitrag ein Laberthema wurde.

Ich weiß nicht, was du mit deinen 32Bit Pointern hast.
Ich werde da auch nicht weiter mit dir diskutieren.

Ich könnte dir jetzt sagen, dass ich es am besten wissen muss, auch ohne Internet und irgendwelche Beweise. Aber wozu. Es endet ja in einem Streit, wenn alle auf ihrer Meinung beharren.

Ich muss nicht sagen, dass ich mein Diplom in Informatik mache.
Und dass ich vor gut zwei Wochen meine Klausuren zu diesem Thema und hardware naherprogrammierung geschrieben habe. Muss ich nicht sagen.

Ist mir auch egal, ob eure Prozessoren nur ihre 4 GB haben.
Für mich hat es sich erledigt. In ein paar Jahren steht das Thema eh nicht mehr.

Genauso wie damals alle behauptet haben, dass DOS nur 2 GB Partitionen ansprechen kann. Auch Quatsch. Denn es gibt ja nicht nur das DOS von Microsoft. Aber anderes Thema, was bestimmt auch nur wieder Ärger hervorruft.

Und zu dem Rest, wo mich ja alle so wunderbar unterstützt haben, kann ich nur sagen, dass ich meine Videoerkennungssoftware genau aus dem Grund hier nicht veröffentlichen werde. Und langsam weiß ich auch nicht, ob ich meinen Compiler als Freeware anbiete oder ihr mich alle einfach nur mal gern haben könnt.

Ich gehe jetzt baden. :roll:
Kinder an die Macht http://scratch.mit.edu/
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Ähm... nur jetzt so zwischen durch... hast du irgendetwas dass Beweist das ein 32 Bit System über 4 GB nutzen kann?
Wenn du mehr willst dann verwendest du einfach ein 64 Bit System.

Ich versteh nicht wie man etwas anzweifeln kann das physikalischen halt hat. :roll:
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Ich verstehe auch nicht warum du dich so aufregst.

Ich habe dir eine offizielle Quelle (MSDN) genannt wo alles schon erklärt wird . Physikalischer Speicher, virtueller Adressraum und "Physical Memory Extension" für mehr als 4GB Speicher unter 32 Bit Systemen. Liest du dir das durch, so sollte dir klar sein, das es erstens fundierte Fakten sind und keine sich wiedersprechenden Wikipedia-Artikel, zweitens sollte klar sein das du mit PB solange es keine 64Bit Version gibt nie mehr als 4GB Speicher ansprechen kannst. Da der virtuelle Adressraum in jedem Fall auf 4GB begrenzt ist, unter Windows max 3GB, wieviel der 4GB unter Linux zur Verfügung stehen weis ich nicht, da ich mich mit Linux nicht auskenne. Allerdings nutzt Linux auch das "Flat Memory Model" von daher max 4GB bei 32Bit System.

Also es ging doch eigentlich darum das du dich beschwert hast, das du nicht mehr Speicher nutzen kannst. Dann sag ich jetzt mal ganz frech: Mach dich über "Physical Memory Extension" schlau und schreib ne Lib die es ermöglicht mehr als 4GB zu nutzen, indem der virtuelle Adressraum von mehreren Prozessen genutzt wird. Das ist die einzige Möglichkeit die es gibt in PB mehr als 4GB zu nutzen auch unter 64Bit, da PB nur 32Bit Code kompiliert, der im 32Bit Kompatiblitäsmodus der CPU läuft.

Aber das weist du ja alles bereits.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Ich weiß nicht, ob ich darauf jetzt noch was antworten soll ...

Wenn ich 2^16 Byte schreibe, dann meine ich auch 2^16 Byte /:->

8 Bit sind ein Byte

Ein Byte ist der kleinste addressierbare Bereich.
Um einen Bereich zu definieren, benötigt man eine Speicheradresse.

Kaeru möchte diese gern mit einem 32Bit-Pointer ansprechen.
Damit kann er maximal 2^32 Byte Speicher ansprechen.
Das entspricht den 4 GB.

Wenn ich aber keine 32Bit Pointer nehme. Sondern mir ein DDR RAM anschaue, dann werde ich feststellen, dass diese zum Beispiel bei einer 20 Bit Adressleitung ... Rechenbeispiel:

In einer Matrix angesprochen werden. Mit erst den X-Werten, dann den Y-Werden der Matrix wie bei einem zweidimensionalen Array.

Über diese Adressleitung kommen erst die X-Werte, anschließend die Y-Werte.

Ich habe also einen maximalen adressiebaren Bereich von.

2^20 = 1048576 Werte für X
2^20 = 1048576 Werte für Y

1048576 * 1048576 in der Matrix = 1099511627776
bzw.

2^20 * 2^20 = 2^40

Da wir pro Zelle der Matrix ein Byte Speicher ansprechen wollen.
Also mal Byte. (bzw. 8 Bit)

2^40 Byte Speicher ~ 1 TByte

Der Prozessor bezieht seine eigentlichen Daten ja sowieso aus seinem Cache, der wensentlich geringer ist. Dieser Cache wird mit Daten aus dem Speicher gefüllt.

Die Aufgabe des Betriebssystem besteht nun darin, den Speicher zu verwalten. Das geschieht mit Pages, Speicherseiten.
Da nicht der gesamte mögliche Speicher auch wirklich physisch vorhanden sein muss. Zum Beispiel bei verwendeten 512 MB, aber nur 256 RAM. Dann sorgt das Betriebssystem dafür, dass die Festplatte als zusätzlicher "Arbeitspeicher" benutzt werden kann.

:freak:
Kinder an die Macht http://scratch.mit.edu/
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Andreas_S hat geschrieben:
... 2^16 Byte ...
Es sind nicht Byte sondern Bit...

EDIT:
Korrktur:
Hab mich da vertan, es stimmen Byte!

Und es ist Physikalisch nicht möglich in einem Schritt mehr als 32Bit über 32 Leitungen zu schicken, also kann ich mir nur vorstellen dass dann hinten noch was drangeschoben wird, was die Leistung stark senken würde...

Danke KG für die Aufklärung!
@ last post
geht doch! wenn du das gleich am anfang hin schreibst, wird auch keiner anzweifeln was du sagst...

Das heißt der DDR RAM wird 2D adressiert. Allein desswegen hat sichs schon gelohnt dich aufzuregen xD (nur eine Ausrede, wusste das einfach nicht)...

Danke für die Erklärung!
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Xaby hat geschrieben: Kaeru möchte diese gern mit einem 32Bit-Pointer ansprechen.
Damit kann er maximal 2^32 Byte Speicher ansprechen.
Das entspricht den 4 GB.

Wenn ich aber keine 32Bit Pointer nehme. Sondern mir ein DDR RAM anschaue, dann werde ich feststellen, dass diese zum Beispiel bei einer 20 Bit Adressleitung ... Rechenbeispiel:
Du vermischst da 2 vollkommen unterschiedliche Dinge. Du kannst den RAM nicht so ansprechen wie er physikalisch aufgebaut ist. Das macht der Memory Controller. Die CPU adressiert den Speicher liniar, das heisst mit Pointer. Ansonsten kannst du mir gerne mal einen Codeschnipsel zeigen, in Assembler, indem du 2 dimensional einen DDR-RAM adressierst.

Mir macht es den anschein das du dir zuviel technischen Kram anschaust und dir dann dazu ausdenkt wie man das nutzen könnte. Das ist aber nunmal nicht immer richtig. Speicher wird von der CPU liniar (1 dimensional) adressiert.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

http://www.ubuntu-forum.de/artikel/1311 ... a-ram.html

2^32 Byte pro Task sind sicherlich richtig. Es gibt aber die Möglichkeit, die gesammten 2^36 Byte eines modernen Prozessors auch auf einem 32 Bit Betriebssystem zu nutzen.

Weshalb ich vorher geschrieben hatte, dass Wiki auch etwas blöde ist, ist ganz einfach. Ein Wiki-Artikel steht im Widerspruch zu einem anderen. Was bei einer "einheitlichen" Wissensquelle mit Verlinkungen nicht sein sollte.

Die 4 GByte RAM als Maximum werden in vielen Foren angesprochen und als ultimative Grenze angepriesen.

Nehmen wir einmal an, dass diese Grenze wirklich existiert.
Wieso sollte die 4 GByte Grenze seit dem 80386 32 Bit bis zu einem Pentium 4, nicht aufgehoben worden sein?

Die Entwicklung vom 4Bitter, zum 8Bitter zum 16Bitter zum 32Bitter war so schnell und jedes mal zog die Adressierung nach, weil man ja mehr Speicher ansprechen können musste.

Auch die 32 Bit Prozessoren haben sich weiter entwickelt. Die ersten konnte auch noch keine 4 GByte ansprechen. Aber irgendwann hat man festgestellt, vor allem im Serverbereich, dass bald wieder eine Grenze erreicht wird. Nämlich die 4GByte Grenze.

Deshalb wurden die Prozessoren abermals erweitert. Und zwar auf einen 36 Bit Adressbereich. Alle Errungenschaften im Serverbereich nehmen irgendwann Einzug in den Mainframe bzw. Consumerbereich.

Nun frage ich euch, aus welchem Grund sollten die 32 Bit Rechner über fast 15 Jahre (1989 bis 2004) die 32 Bit Rechner und vor allem Windows XP von 2001 bis 2008 diese kommende Grenze gedultet haben, ohne etwas dagegen zu unternehmen? Windows Vista wird auch noch in 32 Bit ausgeliefert. Es gibt aber "fast" nur noch Rechner mit 4 GByte RAM zu kaufen.

Hier wird der maximale adressierbare Speicher ab 1997 einfach nicht mehr angegeben. Die Fakten sind also verschwommen.
http://www.computerwissen-online.de/?pa ... &content=7
Kinder an die Macht http://scratch.mit.edu/
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Ganz einfach... wofür brauchst du mehr als 4 GB Speicher pro Prozess?
Antworten