duminică, 13 aprilie 2014

Fragmentarea datelor. Defragmentarea

Sursă imagine: WikiMedia Foundation
Atunci când calculatorul începe să se mişte din ce în ce mai greu unul din cele mai întâlnite sfaturi pe care le primim este să defragmentăm hard-disk-ul folosind utilitarul încorporat în Windows sau unul din programele dedicate acestui scop dezvoltate de diverse companii software. Acum cuvântul "defragmentare" e unul urât de tot şi ţin minte când eram mic cât de teamă mi-a fost să apăs butonul de lansare a utilitarului atunci când exploram interfaţa sistemului de operare Windows, speriat că hard-disk-ul îmi va fi făcut bucăţi :)

1. Ce este fragmentarea datelor


Ce este mai exact procesul de fragmentare a datelor? Ei bine, să presupunem că avem o partiţie pe un hard-disk pe care ţinem date structurate în nişte fişiere. Pe acea partiţie avem un fişier denumit listă_cumpărături.txt de 2KB, apoi un fişier proiect_facultate.txt de 4KB şi în final un alt fişier notiţe.txt de încă 2KB. Acestea vor fi stocate în memoria calculatorului într-un format asemănător cu cel din această imagine (fiecare pătrat are 1KB):

Observaţi că fiecare fişier îşi are blocurile de date în ordine, primul ocupând primii 2KB, al doilea următorii 4KB şi al treilea fişier următorii 2KB. Haideţi să ştergem acum fişierul proiect_facultate.txt.

Acum avem doar cele două fişiere de câte 2KB, separate de un spaţiu liber de 4KB unde până acum s-a aflat fişierul proiect_facultate.txt. Să spunem că acum creăm un nou fişier text denumit versuri_melodii.txt care la finalizarea editării ocupă 6KB. Unde ar trebui să punem acest fişier în memorie? Imediat după listă_cumpărături.txt nu ar încăpea, deoarece acolo avem disponibili doar 4KB. Am putea să îl punem după notiţe.txt dar în acest fel avem 4KB irosiţi între aceste două fişiere, iar nimic nu ne garantează că pe viitor vom mai avea fişiere mai mici sau egale cu dimensiunea de 4KB pe care să le punem acolo. Ei bine în acest caz calculatorul va face cam aşa ceva:
Acesta a copiat primii 4KB de memorie între fişierele listă_cumpărături.txt şi notiţe.txt iar restul de 2KB i-a copiat în spaţiul liber imediat următor. În felul acesta am economisit spaţiu dar am cauzat ceea ce se numeşte "fragmentarea datelor", din cauză că fişierul versuri_melodii.txt este acum fragmentat în două bucăţi. Acesta este un caz fericit, dar un fişier poate fi fragmentat în zeci, sute şi poate chiar şi mii de bucăţi. Atunci când fişierul va fi citit de pe hard-disk acesta (care e oarecum asemănător cu un pick-up) va trebui să localizeze şi să mute braţul cu capetele magnetice care citesc datele de pe platane în locurile unde se află fragmentele de fişiere, operaţiune care durează provocând încetinirea funcţionării calculatorului nostru.

Un program care defragmentează datele va ordona datele în aşa fel încât fişierele să prezinte un număr cât mai mic de fragmente sau, în cazul ideal, zero fragmente:

2. Când să defragmentez?

În mod surprinzător, răspunsul la întrebarea asta ar fi: niciodată. De ce? Din fericire pentru noi, utilizatorii, sistemele de fişiere moderne stăpânesc destul de bine problema fragmentării datelor în aşa fel încât aceasta să nu fie prea spinoasă. Pe deasupra, Windows de exemplu e configurat să efectueze automat defragmentări din timp în timp. Sistemele de fişiere din Linux adoptă diferite mecanisme prin care nivelul fragmentării datelor e păstrat la un nivel redus cât să nu afecteze vizibil performanţele sistemului.

Totodată defragmentarea datelor nu este necesară pe mediile de stocare ce folosesc memorii flash, cum ar fi cardurile de memorie, memoriile USB sau SSD-urile. Deşi e discutabil dacă performanţa acestora rămâne la fel sau scade odată cu creşterea nivelului de fragmentare (datorită controllerelor de memorie de proastă calitate), durata timpilor de accesare a datelor rămâne oricum foarte mică datorită lipsei mecanismelor precum cele din hard-disk-uri care necesită timp pentru deplasarea efectivă a capetelor mecanice.


1 comentarii :

Luke spunea...

Nu stiu cum ai ajuns la concluzia asta, deoarece sunt atat de multe programe care sunt specializate pe defragmentare (sunt degeaba?), iar la analiza pe care o face inclusiv utilitarul din Windows, daca nu a fost facuta o defragmetare de multa vreme, zonele rosii (fragmente) predomina, o defragmentare schimband radical situatia.