Skąd dysk twardy wie, gdzie zaczynają się dane? [duplikować]

14

Zawsze zastanawiałem się, jak dysk twardy znajduje pierwszy bit danych.

Gdy dysk twardy włącza się, wszystko, co czyta, musi być okrągłym strumieniem danych, dopóki głowica odczytu nie przesunie się w inne miejsce.

Ale w takim okrągłym strumieniu, skąd dysk wie, gdzie leży pierwszy i ostatni bit, aby mógł przekazywać dane we właściwej kolejności?

uzumaki
źródło
BTW (rzadko wymieniane, ale istotne) Istnieje znak indeksu wskazujący początek (i koniec) ścieżki. Gdy kontroler dysku napotka indeks po raz drugi, oznacza to, że odczytał każdy sektor na ścieżce.
trociny

Odpowiedzi:

2

Odczytuje to z dysku.

Dane na dysku są nie tylko uporządkowane (jak mówi @psusi), ale także zakodowane. Kodowanie zapewnia, że ​​zapisanych danych nie można pomylić z markerami pozycji w nagłówkach sektorów, dzięki czemu strumień kołowy można odczytać aż do znalezienia markera pozycji docelowej.

Jak rozumiem, nowoczesne dyski twarde tego nie robią; odczytują cały krąg do bufora, śledząc, gdzie jest każdy sektor, i używają buforów do wysyłania żądanych danych.

AKTUALIZACJA:

Nośnik magnetyczny jest materiałem, który ma pole magnetyczne o dwóch kluczowych właściwościach: 1) nigdy nie zmienia się samo, oraz 2) urządzenie rejestrujące może zmienić orientację pola w dowolnym punkcie na powierzchni. Podczas odczytu nośnika czujnik wykrywa, gdzie pole jest skierowane w stronę czujnika, a gdzie pole jest skierowane z dala od czujnika. Gdy czujnik porusza się po powierzchni, wykrywa czasy tych przejść biegunowości; pierwsza warstwa dekodowania przekształca te czasy na wartości bitowe . Ze względu na fizycznie konieczne niepewności w tym procesie kodowanie nie może wymagać długich odcinków o tej samej polaryzacji; oznacza to, że musi to być kodowanie o ograniczonej długości (RLL).

Szczegółowe informacje na temat konstrukcji dysków twardych są na ogół tajemnicą handlową, ale istnieją zasadniczo dwa sposoby zapewnienia, że ​​znaczniki sektora nigdy nie pojawią się w treści sektora:

  1. Zaprojektuj RLL, który dopuszcza specjalne wartości, które nigdy nie będą wynikały z kodowania danych treści. Te specjalne wartości mogą być wykorzystane nie tylko do oznaczania granic sektorów, ale również do korekcji błędów lub innych celów wtórnych.

  2. Użyj drugiej warstwy kodowania, która zapewnia, że ​​wartości znaczników pojawiają się tylko przy znacznikach. Jest to trochę jak kodowanie adresów URL, aby umożliwić „ukrywanie” znaków specjalnych w adresach URL, ale z dodatkowym ograniczeniem równoważnym ograniczeniu liczby znaków, które można dodać, więc kończy się to bardziej kodowaniem base64 .

Głowica czytająca porusza się po powierzchni, wykrywając zmiany biegunowości magnetycznej, czasy tych zmian są wykorzystywane do określenia odpowiedniej sekwencji wartości bitów (ewentualnie włączając pewne wyjątkowe wartości, które nie reprezentują przechowywanych danych), a ta sekwencja jest używana do określić, które sektory są odczytywane i zawartość tych sektorów. Po określeniu zawartości sektorów dane mogą być przechowywane w buforze półprzewodnikowym i / lub przechowywane w buforze RAM i / lub odesłane w celu spełnienia żądania.

ShadSterling
źródło
Czy to kodowanie przypomina kodowanie Huffmana? Gdyby ktoś mógł podać jasny przykład tego, jak to działa na poziomie sprzętowym: „Głowa odczytuje okrągły strumień danych, taki jak 010111010010111010… gdzie każde 111 oznacza początek sektora, a następnie…” zaakceptuj odpowiedź.
uzumaki
Dyski twarde muszą kodować dane abstrakcyjne jako właściwości fizyczne nośnika magnetycznego, a wynik musi być łatwy do rozwiązania; Kodowanie Huffmana odwzorowuje jeden strumień danych abstrakcyjnych na (zwykle) krótszy strumień danych abstrakcyjnych (przerywanie adresowalności). Są w większości niezwiązani.
ShadSterling
Moja aktualizacja nie dodała żadnych przykładów, ale jeśli podążysz za linkiem RLL, ma trochę.
ShadSterling
18

Dane nie są zapisywane jako arbitralny strumień zer i jedynek. Jest napisany w sektorach. Każdy sektor ma ładunek danych użytkownika i nagłówek. Nagłówek zawiera kody korekcji błędów, a także specjalne pole synchronizacji, które identyfikuje początek sektora oraz numer sektora, dzięki czemu dysk może wiedzieć, kiedy znalazł początek sektora i który to sektor.

psusi
źródło
3
Niektóre referencje lub linki sprawiłyby, że ta dobra odpowiedź była świetna. : D
cat
1
@cat, przypuszczam, że „Jak działają komputery” lub „Inside the PC” Petera Nortona, jeśli któreś z nich są nadal w druku ... prawdopodobnie kilka nowych wydań od tych na mojej półce z książkami.
psusi
To nie odpowiada na pytanie. Pytanie brzmi: skąd dysk wie, gdzie zaczyna się nagłówek lub pole synchronizacji.
Martin Argerami,
@MartinArgerami - To odpowiada na pytanie, ponieważ koryguje błędne przekonanie OP i wprowadza istotną koncepcję sektorów. Przechodzenie do poziomu odczytu / zapisu domen magnetycznych wydaje się zbyt intensywne dla OP IMO. Jeśli chcesz uzyskać więcej informacji, zobacz superuser.com/questions/427554/…
trociny
1
@ user134593 - Bajty synchronizacji są zawsze po przerwie i są pierwszymi bajtami rekordu. Wskazują jedynie początek zapisu. Dlatego kontroler dysku nigdy nie ma konfliktu lub pomyłki z ładunkiem lub danymi użytkownika. Wydaje ci się, że to trochę strumień (tak jak OP), ale to media magnetyczne, co oznacza, że ​​nie możesz po prostu czytać ani pisać w dowolnym momencie.
trociny
7

Psusi ma rację (dane na dysku mają strukturę , a różne części komputera używają różnych części tej struktury), ale tak naprawdę nie wchodzi w twoje pytanie.

Napęd tak naprawdę niczego nie „wie”. Ma elektronikę niskiego poziomu, która może odczytywać znaczniki na dysku (zwykle zapisywane w fabryce lub przez samą głowicę napędu), odczytywać bloki danych z dysku lub zapisywać bloki danych na dysku, lub powiedzieć, czy określone miejsce na dysku dysk jest uszkodzony lub uszkodzony albo powinien zostać przeniesiony w określone miejsce na dysku. To wszystko, co „wie”. Głowica czytająca nie decyduje się sama przenieść w inne miejsce, coś wyżej w maszynie każe jej ...

quadruplebucky
źródło
2
Ale coś wyżej znajduje się nadal na dysku twardym. (Który dowodzi czymś poza dyskiem twardym, co dowodzi czymś poza komputerem, co dowodzi czymś metafizycznym, ale nie mówimy o żadnej z tych rzeczy)
user253751
0

Oprócz innych odpowiedzi, dyski twarde z pewnością kiedyś (i nadal mogą) mieć jeden talerz („głowica” w kategoriach cylinder / głowica / sektor), który jest zarezerwowany dla danych kalibracyjnych / pozycjonujących, w ogóle nie używanych do przechowywania danych użytkownika .

Mark K Cowan
źródło
3
To nie jest coś o czym słyszałem, czy masz na to referencje?
ShadSterling
Tak, nie .... to nie jest nic.
psusi
Wygląda na to, że masz na myśli powierzchnię serwa / talerz. Ale to przestarzała technologia, której nie widziałem od 14-calowych pakietów dyskowych, które wyprzedzają dyski twarde ST-506 oryginalnego IBM PC-XT. Winchester i nowoczesne dyski używają wbudowanego serwomechanizmu.
trociny
Ach OK, nie słyszałem o tym od dłuższego czasu, chociaż sprowadzam to do nowoczesnych dysków będących czarnymi skrzynkami.
Mark K Cowan
0

Odpowiedź, której szukasz, składa się z dwóch części:

1) Kontroler sprzętowy

2) System plików

Tak jak powiedziałeś, na HDD (w przeciwieństwie do innych technologii, takich jak dyski SSD), rzeczywiste dane są zapisywane na okrągłych metalowych płytkach jako koncentryczne okrągłe pierścienie z wzorzystym polem magnetycznym. Ponad talerzami, które przechowują te dane, znajduje się głowica zapisująca, która porusza się w celu odczytu i zapisu danych, podobnie jak odtwarzacz płyt winylowych. Talerze, po których się porusza, są przymocowane do silnika elektrycznego, który steruje ich obrotem.

Kontroler sprzętowy działa jako interfejs między systemem operacyjnym a dyskiem twardym. Sterownik może odczytać pozycję głowicy zapisującej, a także obrót talerzy i korzysta z tych informacji, aby zdecydować, jak ustawić głowicę i talerze do odczytu i zapisu. Przetwarza żądania odczytu i zapisu z systemu operacyjnego na sygnały sterujące, które poruszają głowicą zapisującą i obracają talerze, a także konwertuje równoległe dane przychodzące z systemu operacyjnego do pojedynczej linii danych szeregowych. Dzieli również tę linię szeregową i decyduje, w jakiej fizycznej lokalizacji lub sektorze umieścić każdy kawałek i zapisuje te informacje w sposób określony przez system plików.

System plików to specyfikacja sposobu i miejsca przechowywania danych. System operacyjny komputera wie, jak interpretować ten system plików i wykorzystuje tę wiedzę, aby odpowiednio komunikować się ze sterownikiem sprzętowym, w tym przypadku rozkładając okrągłe pierścienie danych na użyteczne segmenty zwane sektorami i informując system plików, gdzie te sektory są fizycznie zlokalizowane. System plików nadaje każdemu sektorowi adres, który jest tylko unikalnym numerem, a ten adres jest tłumaczony przez kontroler sprzętowy na określony obrót talerza i pozycję głowicy czytającej, aby rozpocząć odczyt lub zapis.

Aby uzyskać więcej informacji, pomocne są następujące sekcje artykułów w Wikipedii:

Zobacz wprowadzenie i rozdział 3.1 „Zarządzanie przestrzenią” tutaj: https://en.wikipedia.org/wiki/File_system

Patrz sekcja 2.1 „Nagrywanie magnetyczne” tutaj: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording

Matthew Salvatore Viglione
źródło