Author Topic: zadanie OS-Maintenance2-defragmentacia  (Read 1579 times)

sogi

  • Full Member
  • ***
  • Posts: 140
    • View Profile
zadanie OS-Maintenance2-defragmentacia
« on: 04.11.2006, 22:57:37 »
FAT32...mocne zadanie ale horsia je jeho realizacia...kto ma toto zadanie a ma k nemu nieco?lebo nejak neviem pohnut s tou main vecou (teda defragmentaciou) data z fat citam v pohode.... :bananadance:  :nervous:
----------------------------------------------------------------------------------
Why geeks like computers: unzip, strip, touch, finger, grep, mount, fsck, more, yes,fsck,fsck,fsck,umount, sleep.
----------------------------------------------------------------------------------

Cadmus

  • Jr. Member
  • **
  • Posts: 89
    • View Profile
Re: zadanie OS-Maintenance2-defragmentacia
« Reply #1 on: 06.11.2006, 04:18:42 »
Algoritmus je jednoduchy:
1) Nacitas si FAT tabulku do dajakeho pola
2) Premazes celu FAT tabulku nulami (0x00000000)
3) Zoberes prvy prvok pola a zapises na prvu poziciu vo FAT tabulke. V poli na to miesto zapises 0x00000000 (nulu). Akoze prazdne miesto.
4) Najdes v poli polozku, ktora ma nasledovat a zapises ju na druhu poziciu. V poli tam zase zapises nulu.
atd...
5) Ak narazis na poslednu polozku suboru (0xffffffff) (koniec suboru alebo end of clusterchain), tak ju zapises na nasledujucu poziciu a najdes novu prvu polozku. A cele to opakujes kym ti nezostane prazdne pole (same nuly).

To by bola tabulka. Teraz data:
1) Zoberes prvy datovy cluster a vsetko z neho skopirujes z jeho povodnej pozicie na novu (staru poziciu zistis v poli, ktore si pred chvilou nuloval :D. takze ho najprv treba zalohovat do dalsieho pola).
2) Este predtym ako to vsetko skopirujes, tak to, co je na novej pozicii, si dakde zalohujes. Potom tam skopirujes ten cluster.
3) To, co mas zalohovane skopirujes zo starej pozicie na novu...teda tak ako v kroku 1.

No a potom este treba prebehnut vsetky adresare a pomenit v nich polozku first_cluster.

...dufam, ze som to napisal zrozumitelne.  :lb: