Wanneer doet een USB-staaf zijn interne administratie?

Een USB-staaf schijnt, na het schrijven of wissen van informatie, op de achtergrond wat "interne administratie" te doen. Bijvoorbeeld het verplaatsen van informatie naar andere geheugenblokken (zonder dat de gebruiker er iets van merkt), het verwisselen van actieve geheugenblokken en reservegeheugenblokken, enzovoort.

Wanneer worden deze handelingen uitgevoerd?
--  Alleen zolang de USB-staaf nog als schijfletter benaderbaar is?
--  Pas *nadat* je "hardware veilig verwijderen" hebt gedaan maar de USB-staaf nog wel in de computer zit?
--  Allebei (zolang hij maar stroom heeft)?

Toegevoegd na 1 uur:
 
Een voorbeeld van de "interne administratie" die ik bedoel staat op deze site - lees bijvoorbeeld het stukje over Garbage Collection.

http://www.thezonemanager.com/2010/02/flash-memory-basics.html

Het idee is:
--  Een geheugenblok moet eerst fysiek worden gewist voordat het kan worden beschreven.
--  Als op filesysteemniveau iets wordt gewist, wordt het in de USB-staaf alleen *gemarkeerd* als zijnde gewist, maar niet fysiek gewist.
--  Zolang de USB-staaf actief wordt gebruikt, wordt pas fysiek gewist wanneer dat absoluut nodig is. Dat vertraagt wel het schrijven.
--  Als de staaf "idle" is, worden op de achtergrond de geheugenblokken die slechts *gemarkeerd* zijn als gewist, daadwerkelijk *fysiek* gewist. Toekomstige schrijfoperaties gaan daardoor sneller, omdat het wissen al is gebeurd.

De vraag is dus: in welke van de drie genoemde mogelijkheden is de USB-staaf "idle"?

Weet jij het antwoord?

/2500

Het beste antwoord

Deze akties worden alleen gedaan bij het schrijven van data, dus wanneer de USB stick nog een drive letter heeft. Waarom dit zo is ? Flash memory bestaat uit blokken (dit zijn niet de blokken zoals een filesysteem die heeft), en alleen per heel blok kan er data beschreven worden. Dit komt dan weer omdat een blok eerst gewist moet worden (alle bitjes op 1), en dat kan alleen op blokniveau. Daarna kunnen selectief de juiste bitjes op 0 gezet worden. Een schrijfactie (en als je een file delete is dat ook een schrijfactie, de directory informatie wordt bijgewerkt en opnieuw geschreven) bestaat dus uit het wissen van een ongebruikt flash blok, en dan het schrijven van de data van het "oude" blok plus de wijzigingen die aangebracht moesten worden. De adressering van zo'n blok aan de buitenkant van de flash chip verandert niet, dus de interne administratie moet bijgewerkt worden. Er is een tabel die elk "logisch" blok vertaalt naar het eigenlijke "fysieke" blok. Omdat er zo'n tabel bestaat kan de flash chip ook nog slim zijn en zorgen dat elk blok ongeveer even vaak gewist/geschreven wordt om de levensduur van de hele chip te verlengen. Als er ook nog eens meer fysieke blokken zijn dan logische, dan kun je ook bijhouden welke blokken kapot zijn, en dan een nieuw, vers blok inschakelen.

Het indelen van die "geheugenblokken" zoals u die noemt worden aangemaakt bij het formateren. Waar hij wat plaatst gebeurt als u er iets op schrijft. Als u de data wist zijn die enkel onleesbaar gemaakt maar staat die er onzichtbaar nog op, wel is het zo dat die vrijgegeven is om te overschrijven. Hij zal dus onder geen enkele van de 3 mogelijkheden "administratie uitvoeren".

Dat lijkt zo. Voor elk randapparaat heb je een driver die het data verkeer regelt. Meestal gaat dat in een blok van bv 4096 bytes per keer. De driver houdt die 4096 bytes in het geheugen van je PC. Zo'n geheugenblok komt overeen met een blok op je USB staaf. De driver is zo gemaakt dat hij niet eerder leest/schrijft voordat het blok vol is of info uit een ander blok nodig is. Dan kun jij verder zonder op de schrijfactie te wachten. Daarom moet je ook altijd een USB stick via de taakbalk veilig verwijderen zodat gegevens die nog ingeheugen staan "geflushed" worden.

Stel zelf een vraag

Ben je op zoek naar het antwoord die ene vraag die je misschien al tijden achtervolgt?

/100