Care este avantajul utilizării unui factor de 1024 în loc de 1000 pentru unitățile de dimensiune a discului? (Inginerie software, Istoric, Convenții)

Joe Z. a intrebat.

Atunci când se ia în considerare spațiul pe disc al unui mediu de stocare, în mod normal, computerul sau sistemul de operare îl va reprezenta în termeni de puteri de 1024 – un kilobiți este de 1.024 octeți, un megabyte este de 1.048.576 octeți, un gigabyte este de 1.073.741.824 octeți și așa mai departe.

Dar nu văd niciun motiv practic pentru care a fost adoptată această convenție. De obicei, atunci când dimensiunea discului este reprezentată în kilo-, mega- sau giga-octeți, aceasta trebuie convertită mai întâi în zecimal. În locurile în care contează de fapt un număr de octeți de o putere de doi (cum ar fi dimensiunea blocului într-un sistem de fișiere), dimensiunea este oricum exprimată în octeți (de exemplu, 4096 octeți).

A fost doar o mică noutate estetică pe care producătorii de calculatoare au decis să o adopte, dar pe care vânzătorii de medii de stocare au decis să nu o ia în considerare? Ori de câte ori cumpărați un hard disk, în zilele noastre există întotdeauna o clauză de renunțare care spune „Un gigabyte înseamnă un miliard de octeți”. S-ar părea că utilizarea definiției binare a „gigabyte” ar umfla în mod artificial numărul de octeți al unui dispozitiv, ceea ce ar face ca producătorii de unități de stocare să fie nevoiți să includă 1,1 terabyte într-o unitate pentru ca aceasta să apară ca „1 TB” sau să includă pur și simplu 1 terabyte și să apară ca „931 GB” (iar cei mai mulți dintre ei procedează în acest din urmă caz).

Unele persoane au decis să utilizeze unități precum „KiB” sau „MiB” în locul „KB” și „MB” pentru a face distincția între cele două. Dar există oare vreun merit al prefixelor binare?

Probabil că există un pic de istorie veche pe care nu o cunosc pe acest subiect, iar dacă există, aștept pe cineva care să mi-o explice.

(Îmi cer scuze dacă acest lucru este în locul greșit. Am considerat că o întrebare despre cele mai bune practici ar putea aparține aici, dar am încredere că va fi migrat în locul potrivit dacă este incorect).

Comentarii

  • Nu trebuie să existe neapărat un avantaj. Unii ingineri și programatori de calculatoare au acest fel de obicei profesional de a alege numere cu putere de 2 chiar și atunci când nu există niciun motiv pentru asta. –  > Por hamstergene.
  • În unele colțuri de nivel scăzut, unitățile binare sunt utile (de exemplu, dimensiunea sectorului de disc, paginile RAM etc.). Dar pentru valorile de nivel înalt adresate utilizatorilor finali, cum ar fi dimensiunile discurilor sau ale fișierelor, există puține motive pentru a folosi prefixe binare. –  > Por CodesInChaos.
  • Este vorba de marketing. Este mai ușor să vinzi „1 TB” în loc de „931 GB”. Am o amintire neclară a unei încercări de a vinde în funcție de dimensiunile de bază 2 cu ani în urmă, dar nu a prins niciodată. –  > Por Juha Untinen.
  • A se vedea Spațiu pe disc anunțat vs. spațiu real pe disc pe SO. –  > Por CodeCaster.
5 răspunsuri
Andyz Smith

Motivul este pentru că în orice sistem de fișiere organizat care este plasat pe unitatea trebuie să fie capabil să identifice în mod unic fiecare loc de pe unitate. și aceste adrese sunt stocate în format binar, deoarece, ei bine, folosim computere binare, nu spunem, computere analogice. Deci, pentru a reprezenta cât mai compact toate adresele de pe un disc, este nevoie de un anumit număr minim de biți. iar directoarele de fișiere sunt practic un spațiu pierdut, un spațiu de supraîncărcare, așa că de ce să nu le facem cât mai mici posibil. Astfel, producătorii își orientează discurile fizice ale unităților de discuri către anumite puteri de doi, deoarece mai mult spațiu decât atât ar fi irosit, cu excepția cazului în care ar modifica lungimea adreselor de directoare.

Este un fel de comoditate și optimizare pentru a obține cel mai mare spațiu adresabil și utilizabil între cele două considerente ale adresării și dimensiunea plăcii fizice.

Nu uitați că există un tabel care ocupă aproape 2% din disc, iar tot ceea ce face acest tabel este să arate unde începe fiecare fișier pe disc, care este numele fișierului etc., astfel încât acest tabel poate fi micșorat prin utilizarea inteligentă a numărului de biți utilizați pentru adresa fiecărui fișier.

Dacă faceți adresa tabelului cu doi biți mai lungă, dar faceți ca placa de discuri să fie de două ori mai mare, risipiți cea mai mare parte a celui de-al doilea bit pe care l-ați adăugat, așa că de ce să nu orientați producția fizică a plăcii de disc astfel încât să se potrivească cu biții de care dispuneți pentru a crea adresele.

și bineînțeles, oamenii au vrut o modalitate de a înțelege magnitudinea acestor numere în lumea noastră digitală („Powers of Ten fingers”). astfel, cel mai apropiat este , 1000.

în acest moment, toată chestiunea este destul de discutabilă, deoarece capacitățile unităților sunt atât de mari încât nu ne mai facem griji atât de mult cu privire la costurile de adresare, dar la un moment dat a fost important.

Ganesh Somani

Nu există niciun avantaj sau dezavantaj în utilizarea a 1024 în loc de 1000 pentru unitățile de dimensiune a discului. 8 biți fac 1 octet și același lucru se întâmplă și cu toate celelalte unități de spațiu informatic.

După cum spuneți corect, KiB și KB ar trebui folosite în mod corespunzător pentru a le distinge corect.

Comentarii

  • Nu prea înțeleg ce înseamnă KiB ce ar trebui să spună prefixul? K este pentru Kilo spre deosebire de Ki care este pentru? –  > Por Rotem.
  • @Rotem: „Kibi”. Există un întreg set de standarde standardizate prefixe binare –  > Por Phoshi.
Bobson

În conformitate cu Wikipedia:

Până la mijlocul anilor 1960, adresarea binară devenise arhitectura standard în majoritatea proiectelor de calculatoare, iar dimensiunile memoriei principale erau de obicei puteri de doi. Aceasta este cea mai naturală configurație a memoriei, deoarece toate combinațiile de linii de adresă ale acestora corespund unei adrese valide, permițând o agregare ușoară într-un bloc mai mare de memorie cu adrese contigue.

Documentația primelor sisteme de calculatoare specifica dimensiunea memoriei cu un număr exact, cum ar fi 4096, 8192 sau 16384 de cuvinte de stocare. Toate acestea sunt puteri de doi și, în plus, sunt multipli mici de 210 sau 1024. Pe măsură ce capacitățile de stocare au crescut, au fost dezvoltate mai multe metode diferite de prescurtare a acestor cantități.

Industria unităților de disc a urmat un model diferit. Practica industrială, documentată mai detaliat la Cronologie a prefixelor binare și care continuă și astăzi, este de a specifica hard disk-urile folosind prefixe și simboluri SI în interpretarea lor SI sau „zecimală”. Spre deosebire de memoria principală a calculatorului cu adresare binară, nu există nimic într-o unitate de disc care să o influențeze să aibă o capacitate totală ușor de exprimat folosind o putere de 1024.

Dacă urmăriți cronologia din link, veți vedea că, înainte ca memoria RAM să ajungă să fie măsurată în puteri de doi, inginerii foloseau prefixele SI în utilizarea lor standard (putere de zece). Aceasta este utilizarea pe care producătorii de hard disk-uri au continuat-o. Măsurătorile RAM s-au schimbat pentru comoditate, deși au fost aparent standardizate în acest fel de Apple pe primele Mac-uri.

Așadar, există un motiv întemeiat pentru ca memoria RAM să fie măsurată în puteri de doi, dar pentru a face acest lucru folosesc greșit prefixele SI. Hard disk-urile folosesc corect prefixele, chiar dacă acest lucru creează o oarecare confuzie.

AProgramator

Unitatea de bază în disc nu este octetul, ci sectorul, iar ultima dată când am verificat, dimensiunile sectoarelor erau o putere de doi în termeni de octeți. Dacă la nivelul inferior are sens să se folosească o putere de doi, este logic să se continue să se folosească prefixe legate de puterea de doi. (Din experiența mea, nu este ceea ce se întâmplă, furnizorii de discuri folosesc unități mixte ciudate care au mai puțin sens decât puterea a două sau puterea a zece unu).

utilizator108496

10000000000b = 2^10 = 1024

Bănuiala mea este că au vrut ceva aliniat la o putere de 2 și cel mai apropiat lucru pe care îl puteau obține de ceva care începe cu 1 și se termină cu zero (fără a depăși limitele tehnologice de la acea vreme) este 1024. Probabil că mă înșel, deoarece nu m-am documentat în acest sens, dar este doar presupunerea mea.