Autor Thema: Arbeitsspeicher  (Gelesen 9584 mal)

bscreator

  • Gast
Gespeichert
« am: 21. April 2004, 20:27 »
Hi Leute,

wie kann man im REAL-Mode die Größe des verfügbaren und des gesamten Arbeitsspeichers ermitteln ?
(ich verwende den NASM-Assembler, falls es da Unterschiede gibt...)

Tschüss und Danke

mastermesh

  • Beiträge: 341
    • Profil anzeigen
    • http://www.kostenloser-laptop.de/
Gespeichert
« Antwort #1 am: 22. April 2004, 09:41 »
Hi,

das is leider nicht so ganz einfach. Theorethisch geht das über BIOS-Interrupts (?) die zeigen aber nicht die korrekte Größe an (16 Bit-Beschränkung). Schon eher funktioniert dies mit dem direkten Austesten vom Speicher (Bytes schreiben/lesen), aber auch das ist nicht so ohne, weil es Speicherbereiche gibt, in die du nix reinschreiben darfst.

Genau Speicherbestimmung ist IMHO sehr kompliziert.

bscreator

  • Gast
Gespeichert
« Antwort #2 am: 22. April 2004, 11:36 »
Hi mastermesh,
erstmal Danke für Deine Antwort.
Bist Du der Meinung, dass man die korrekte Größe nur im Protected Mode ermitteln kann?
Ist es im PM auch so ein Dilemma den Speicher zu ermitteln ?

Die echte Frage:
Wie kann eigentlich die Taktzahl des Computers ermitteln ?

Ich hab´ da im LowLevel-Coding-Abschnitt ebenfalls Einen gefunden, der so eine Frage gestellt hat. Die Antwort des Anderen jedenfalls war für mich wie ein Buch mit sieben Siegeln.
Soviel ich weiss, ist, dass man die Zeit ermitteln muss, die zwischen dem Aufrufen zweier Interrupts vergeht.
Nur, wie ermittle ich diese Zeit und welche weiteren, mathematischen Operationen muss ich dann noch ausführen ?

Danke, Grüße an Dich und alle Anderen, die mir helfen wollen

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #3 am: 22. April 2004, 13:44 »
Also du zähls die Takte, die zwischen Zwei Interrupts, die von IRQ 0 alsgelöst werden. Dieser wird 18,2 mal ausgelöst. Dann musst du Die Takte mit 18,2 Multiplizieren und du erhälts die Hz-Zahl (Die Frequenz, mit der dein PC Taktet!)

JensFZ

  • Beiträge: 96
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 26. April 2004, 00:14 »
Hiho

Um auf deine Speicher Frage nochmal zurück zu kommen.
Ich habe diesen Netten kleinen Artikel gefunden http://www.mega-tokyo.com/osfaq2/index.php/How%20do%20I%20determine%20the%20amount%20of%20RAM%3F
 

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #5 am: 26. April 2004, 13:04 »
im real-mode ist der speicher doch immer 65535 + 1048560 = 1114095 Bytes groß, weil man nicht weiter Adressieren kann, oder?
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #6 am: 26. April 2004, 14:17 »
Naja wenn man die A20 noch zu schaltet hat man auch im RM mehr;). Ich glaube aber es ging viel mehr darum zu ermitteln wie viel physikalischer Speicher in den Rechner eingebaut ist. Aber ansonsten ist im RM der verfügbare immer gleich(im allgemeinen, du tricks gilt das natürlich wieder nicht, man kann alles umgehn;))
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #7 am: 26. April 2004, 16:59 »
was ist das mit dem A20?
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 26. April 2004, 17:20 »
Hat glaub ich was mit der Breite des Adress-Busses zu tun
<- Verhasst, Verdammt, Vergöttert

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #9 am: 26. April 2004, 18:17 »
Also der 8086 hat ja im Realmode nen 20-BIT Bus, wenn man jetzt auf dem 8086 ne Adresse auf den Bus legt die größer ist als 20-BIT findet ein Warp arround statt sprich die Adresse beginnt wieder bei 0. So ab dem 80286 ist der Bus ja größer als 20-BIT hier findet im RealMode kein Warp-Arround statt, weil dann einfach das 21. BIT des AdressBus zusätzlich benutzt wird. Da sich der 80286 im RealMode genauso verhalten soll wie der 8086 wird einfach wenn die 20 BIT Grenze durchbrochen wird, das 21 BIT als BIT 20 geschaltet so gibts wieder den Warp-Arround. Das hat es mit A20 auf sich.

Hoffe das war ungefähr richtig.
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 26. April 2004, 20:57 »
Aaaah, jaaaa. Dann war ich ja doch nicht so weit weg.
<- Verhasst, Verdammt, Vergöttert

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 26. April 2004, 22:24 »
Ergänzung zu A20...:

Lobmann's Erklärung ist völlig korrekt und sagt alles was man wissen muss (jedenfalls beim IMB-PC)... nur... warum es dieses A20-Gate beim IBM-PC gibt ist noch viel interessanter..::

Jeder weiß ja das die heutigen Rechner immernoch weitgehend kompatibel zum IBM PC-AT von vor 5 milliarden Jahren sind. ;)  Das ist auch gut so, denn sonst hätte wohl der PC kaum so einen "Siegeszug" vollbracht.
Aber IBM hatte mal eine Phase in ihrer Entwicklung des PC wo sie diese Kompatibilität auf eine kurriose Spitze getrieben haben....-> das A20-Gate.

Ich kann es nicht besser formulieren als so, wie ich es vor ein par Wochen bei heisse.de gelesen hab, deshalb hier ein Zitat:
............................
Der IBM-PC hatte nur einen Adreßraum von 1 MByte (Adreßbits A0...A19). Wegen seiner Segmentierung konnte man logisch jedoch 64 KByte mehr adressieren, genauer gesagt bis zu FFFFh:FFFFh= 10FFFFh. Statt bei solchen Adressen ordentlich mit einem Fehler (Adreßüberlauf) abzubrechen, fing der Prozessor einfach wieder klaglos bei 0 an (ein sogenannter Umlauf oder Wrap around). Das wäre nicht weiter schlimm gewesen, hätten nicht `pfiffige´ Microsoft-Programmierer dieses Feature in einer so gut wie nie gebrauchten DOS-Funktion (INT 30h) mißbraucht.

Als dann die IBM-Entwickler den IBM-AT schufen, meinten sie, auf den Microsoft-Irrweg Rücksicht nehmen zu müssen. Der 286-Prozessor des AT verwaltete nunmehr 16 MByte, ein Umlauf an der 1-MByte-Grenze fand demnach nicht statt. Um ihn nachträglich zu simulieren, bauten die IBM-Entwickler eine Schaltung ein, die die A20-Leitung fest auf Null fixieren konnte - das A20-Gate war geboren.
............................

Daraus folgt: Wir haben dieses A20-Gate dem damaligen "Kompatibilitäts-Wahn" zu MS-DOS zu verdanken.
:)
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #12 am: 26. April 2004, 23:31 »
Hehe den Artikel hatte ich auch gelesen. Ich hatte es aber nicht mehr so genau im Kopf und war auch viel zu faul das extra nochmal hier abzutippen.

Genrell muss man sich eigentlich nur merken das man das A20 Gate einschalten sollte :)

Ach ja. Der "Schalter" für das A20 Gate ist im Keyboard Controller. Das kam daher, weil dieser noch ein paar Funktionen frei hatte und man nicht extra nen Chip einbauen wollte nur um das Blöde Gate einzuschalten *G*.
----------------------
Redakteur bei LowLevel

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #13 am: 27. April 2004, 14:11 »
Naja ich hab das Ding bisher nie eingeschaltet und trotzdem funzt eigentlich alles:S im RM sowie PM
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 27. April 2004, 18:45 »
Nunja,... wenn Prozessor-Features durch Fehler von Microsoft entstehen dann erklärt das warum die Computer sich so rasant entwickeln.

Aber jetzt mal im ernst. Ich habe mir diese PMode-Tutorials von os-dever.net runtergeladen und der Quellcode ist ja auf ganz simple aber ist das nur ein Fehler bei meinem Download oder gibt's da wirklich keine Theorie dabei?

 

Einloggen