mboost-dp1

Indhold af RAM, ved power-off?


Gå til bund
Gravatar #1 - BurningShadow
5. maj 2011 15:44
I gamle dage forsvandt data jo, når man afbrød forsyningen til RAM, men det er da ikke tilfældet i dag, vel? Nu forsvinder data først, ved power-on, eller tager jeg fejl? Hvis jeg ikke tager fejl, hvordan forgår det så, er der et reset ben på en RAM kreds, eller hvad?
Gravatar #2 - fjols
5. maj 2011 15:47
Hvorfor mener du det er blevet ændret?
Så vidt jeg ved så forsvinder data lige så snart strømmen forsvinder. Det er vel også derfor alt data bliver gemt i en fil ved hypernation eller hvad de nu kalder det.
Gravatar #3 - BurningShadow
5. maj 2011 16:01
#2

Det er lige netop det der ikke giver mening. Jeg er sikker på at jeg har læst et eller andet sted at data først ryger ved power-on, men så er der jo ingen logisk grund til at fastholde denne antikke metode til dvale. Det burde kunne lade sig gøre at starte maskinen uden at resette RAM, og dermed have instant-on/off.
Gravatar #4 - kasperd
5. maj 2011 16:16
Indholdet af RAM degenererer hurtigt når strømmen bliver afbrudt. Jeg ved ikke præcist hvor lang tid det tager, men der går vist ikke ret mange sekunder før de første data begynder at forsvinde.

Derfor er en computer nødt til at bruge lidt strøm når man har suspenderet til RAM.

Men, der kan gå lang tid før alle data er helt væk. Jo koldere RAM er, des længere tid går der. Med det rette udstyr kan man køle den ned og flytte den over i en anden maskine og aflæse indholdet.

Dog vil indholdet efter længere tid forsvinde næsten helt. Jeg tror ikke du finder noget nævneværdigt i en RAM chip, der har været uden strøm i et døgn.

Når computeren tændes sendes der et reset signal ud til diverse komponenter, men jeg tror ikke det gælder for RAM kredsene. Deres indhold bliver vist først nulstillet når CPUen går i gang med at afvikle BIOS koden. Den første del af BIOS koden er tricky fordi den skal kunne køre uden RAM.

Det er ikke nødvendigt for BIOS at nulstille alle områder af RAM. Kun de mest centrale områder skal initialiseres. På en PC er de første 6KB af RAM vigtige og skal initialiseres. Mere avancerede features så som ACPI, emulering af legacy devices ud fra USB devices etc. kan kræve at mere initialiseres. Resten kan overlades til operativsystemet.

Før i tiden ville BIOS først nulstille de mest centrale dele af RAM. Når den så havde fået grafikkortet op at køre ville den gå over resten, mens man kunne se på skærmen hvad der foregik.
Gravatar #5 - Alrekr
5. maj 2011 16:20
I dag fungerer RAM ved at en lille kondensator (meget lille batteri) oplades (når bit = 1) eller aflades (når bit = 0). Disse kondensatorer mister hele tiden lidt spænding. Efter en bestemt tid vil der ikke være nok spænding tilbage til at undgå brown-out, og de digitale kredsløb vil ikke kunne se forskel på 1 og 0. Du har altså ganske få sekunder efter power-off, hvorefter data mistes.
Gravatar #6 - BurningShadow
5. maj 2011 16:52
Takker, så blev jeg lidt klogere :-)
Gravatar #7 - Slettet Bruger [3886918028]
5. maj 2011 17:16
Gravatar #8 - stekkurms
5. maj 2011 22:21
kasperd (4) skrev:
På en PC er de første 6KB af RAM vigtige og skal initialiseres.
Er det ikke kun 1.5KB? Så vidt jeg husker kopierer MBR sig selv til 0000:0600, så der kan vel ikke ligge noget vigtigt fra den adresse og fremefter.
Gravatar #9 - kasperd
6. maj 2011 07:27
stekkurms (8) skrev:
Så vidt jeg husker kopierer MBR sig selv til 0000:0600
Du har ret. Jeg lavede en fejl da jeg regnede det om fra hexadecimal. Jeg fandt en komplet gennemgang af MBR koden på denne adresse: http://mirror.href.com/thestarman/asm/mbr/STDMBR.h...

Jeg fandt linket på http://en.wikipedia.org/wiki/Master_boot_record. Wikipedia skriver også at BIOS kun bruger de første 1281 bytes [citation needed]. Hvis det er korrekt er der 255 bytes fri imellem slutningen af hvad BIOS bruger og den første byte som MBR rører ved.

De første 1024 bytes af dette er interrupt vektor tabellen. De næste 257 bytes er det primære BIOS data område.

MBR kunne måske nok tillade sig at lade sådan en mængde RAM være ubrugt. Men når først OS blev indlæst var det vigtigt at vide præcist hvor meget BIOS brugte. Den gang denne kode blev skrevet kunne man ikke tillade sig at frådse sådan med RAM og uden videre lade 255 bytes gå til spilde.

Jeg kom i øvrigt i tanke om at BIOS også kunne bruge noget RAM i toppen af de 640KB. Under opstart udfylder BIOS et to bytes felt i det primære BIOS data område med størrelsen af basis hukommelsen. Denne værdi er højest 640, men jeg har set en 286 maskine der udfyldte det med 639 for at BIOS selv kunne bruge den sidste KB og på den måde have adgang til mere RAM. Jeg har også set en virus der talte værdien ned med én for at den kunne bruge 1KB RAM til sig selv.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login