Як жесткий диск знає, звідки починаються дані? [дублікат]


14

Мені завжди було цікаво, як жорсткий диск знаходить перший біт даних.

Коли жорсткий диск обертається, все, що він читає, повинен бути круговим потоком даних, поки голівка для читання не переміститься в інше положення.

Але в такому круговому потоці, як накопичувач знає, де лежить перший і останній біт, щоб він міг передавати дані в потрібному порядку?


BTW (рідко згадується, але помітно) Існує індексна позначка, яка вказує на початок (і кінець) доріжки. Коли дисковий контролер вдруге стикається з індексом, то це вказує на те, що він прочитав кожен сектор треку.
тирса

Відповіді:


2

Він читає його з диска.

Дані на диску не тільки структуровані (як говорить @psusi), але й закодовані. Кодування гарантує, що записані дані не можуть бути переплутані для маркерів позицій у заголовках сектору, тому круговий потік можна читати, поки не буде знайдено цільовий маркер положення.

Наскільки я розумію, сучасні жорсткі диски не дуже роблять цього; вони читають весь коло в буфер, відслідковуючи, де знаходиться кожен сектор, і використовують буфери для повернення запитуваних даних.

ОНОВЛЕННЯ:

Магнітний носій - це матеріал, який має магнітне поле з двома ключовими властивостями: 1) він ніколи не змінюється самостійно, і 2) записуючий пристрій може змінювати орієнтацію поля в будь-якій точці поверхні. Під час читання носія датчик визначає, де поле орієнтоване на датчик і де поле орієнтоване подалі від датчика. Коли датчик рухається по поверхні, він виявляє моменти цих переходів полярності; перший шар декодування переводить ці таймінги в бітові значення . Через фізично необхідні невизначеності в цьому процесі кодування не повинно вимагати довгих розтяжок однакової полярності; тобто це повинно бути обмежене кодування довжиною виконання (RLL).

Деталі конструкцій жорсткого диска, як правило, є комерційною таємницею, але по суті є два способи гарантувати, що галузеві маркери ніколи не з’являються у секторі.

  1. Створіть RLL, який дозволяє отримати спеціальні значення, які ніколи не будуть результатом кодування даних вмісту. Ці спеціальні значення можуть використовуватися не тільки для маркування меж сектора, але і для виправлення помилок або будь-якого іншого вторинного призначення.

  2. Використовуйте другий шар кодування, який забезпечує, що значення маркерів відображаються лише у маркерах. Це трохи схоже на кодування URL-адрес, щоб дозволити "приховати" спеціальні символи в URL-адресах, але з додатковим обмеженням, еквівалентним обмеженню кількості символів, що може бути додано, тож воно закінчується як кодування base64 .

Отже, зчитувана голівка рухається по поверхні, виявляючи зміни магнітної полярності, час цих змін використовується для визначення відповідної послідовності бітових значень (можливо, включаючи деякі виняткові значення, які не представляють збережені дані), і ця послідовність використовується для визначити, які сектори читаються та вміст цих секторів. Коли визначається вміст секторів, дані можуть зберігатися в твердотільному буфері та / або зберігатися в буфері ОЗУ та / або відправлятися назад для виконання запиту.


Це кодування, як кодування Хаффмана? Якби хтось міг зробити наочний приклад того, як це працює на апаратному рівні так: "Голова зчитує круговий потік даних, як 010111010010111010 ... де кожні 111 знаменують початок сектору, а потім ..." Я міг би тоді прийміть відповідь.
узумакі

Жорсткі диски повинні кодувати абстрактні дані як фізичні властивості магнітного носія, і результат повинен бути легко адресованим; Хаффман кодування відображає один потік абстрактних даних у (зазвичай) коротший потік абстрактних даних (порушуючи адресність). Вони в основному не пов'язані між собою.
ShadSterling

Моє оновлення не додало жодних прикладів, але якщо ви переходите за посиланням RLL, воно має кілька.
ShadSterling

18

Дані не записуються як довільний потік одиниць і нулів. Це написано секторами. Кожен сектор має корисне навантаження даних користувачів та заголовок. Заголовок містить коди для виправлення помилок, а також спеціальне поле синхронізації, яке ідентифікує початок сектора, та номер сектору, щоб накопичувач міг знати, коли він знайшов початок сектору та який саме сектор.


3
Деякі посилання або посилання зробили б цю хорошу відповідь чудовою. : D
кіт

1
@cat, я гадаю, "Як працюють комп'ютери" або "Всередині ПК" Пітера Нортона, якщо будь-яке з них все ще друкується ... напевно, кілька нових видань з моїх книжкових полиць.
psusi

Це не відповідає на запитання. Питання в тому, як накопичувач знає, з чого починається заголовок або поле синхронізації.
Мартін Арджерамі

@MartinArgerami - Це відповідає на питання, оскільки воно виправляє помилкове уявлення ОП та вводить чітке поняття секторів. Зниження до рівня читання / запису магнітних доменів здається занадто інтенсивним для ОП ІМО. Якщо ви хочете більше деталей, перегляньте superuser.com/questions/427554/…
тирсу

1
@ user134593 - Байти синхронізації завжди після проміжку і є першими байтами запису. Вони просто вказують на початок запису. Отже, дисковий контролер ніколи не має конфлікту чи плутанини з корисним навантаженням або даними користувачів. Ви, здається, думаєте, що це трохи потік (як і ОП), але це магнітний носій, а це означає, що ви не можете просто читати чи писати в будь-яку точку.
тирса

7

Psusi правильний (дані на диску структуровані , і різні частини комп'ютера використовують різні частини цієї структури), але насправді не виникає у вашому питанні.

Привід насправді нічого не знає. У ній є електроніка низького рівня, яка може читати маркери на диску (як правило, написані на заводі, або самою головкою накопичувача), читати блоки даних з диска, або записувати блоки даних на диск, або розповідати, чи є певне місце на диску диск поганий або пошкоджений або він повинен переміститися до певного місця на диску. Ось про все це "знає". Голова для читання не вирішує самостійно пересуватись кудись інше, щось вище в машині підказує це ...


2
Але щось вище все ще є частиною жорсткого диска. (Що командує чимось поза жорстким диском, яким командує щось поза комп'ютером, яким командує щось метафізичне, але ми не говоримо про жодне з цих речей)
user253751

0

На додаток до інших відповідей, жорсткі диски, які звичайно використовуються для (і все ще можуть) мати одну платівку ("головка" в циліндрі / голівці / секторі), яка зарезервована для калібрування / позиціонування даних, взагалі не використовується для зберігання даних користувачів. .


3
Це я не те, що я чув, чи маєте ви посилання на це?
ShadSterling

Так, ні .... це не річ.
psusi

Ви начебто маєте на увазі поверхню сервоприводу / тарілки. Але це застаріла технологія, яку я не бачив з 14-дюймових пакетів дисків, які передували жорстким дискам ST-506 оригінальних IBM PC-XT. Вінчестер та сучасні дисководи використовують вбудований сервопривід.
тирса

Ну гаразд, я про це теж не чув уже давно, хоча я перекладав це на сучасні диски, які є чорними скриньками.
Марк К Коуан

0

Відповідь, яку ви шукаєте, має дві частини:

1) апаратний контролер

2) Файлова система

Як ви сказали, на жорсткому диску (на відміну від інших технологій, таких як SSD) фактичні дані записуються на круглі металеві пластини у вигляді концентричних кругових кілець, що містять візерункове магнітне поле. Над табличками, на яких зберігаються ці дані, розташована головка запису, яка рухається навколо для читання та запису даних, дуже схожа на програвач вінілових звукозаписів. Пластини, по яких вона рухається, прикріплені до електричного двигуна, який керує їх обертанням.

Апаратний контролер діє як інтерфейс між операційною системою та жорстким диском. Контролер може читати положення головки запису, а також обертання пластин і використовує цю інформацію, щоб вирішити, як розташувати голову та пластини для читання та запису. Він переводить запити читання і запису з операційної системи в керуючі сигнали, які переміщують головку запису і обертають платівки, а також перетворюють паралельні дані, що надходять з операційної системи, в єдиний послідовний рядок даних. Він також розбиває цю послідовну лінію та вирішує, у якому фізичному місці чи секторі розмістити кожен фрагмент та записати цю інформацію у спосіб, визначений файловою системою.

Файлова система - це специфікація того, як і де зберігати дані. Операційна система комп’ютера знає, як інтерпретувати цю файлову систему і використовує ці знання для адекватного спілкування з апаратним контролером, в цьому випадку розбиває кругові кільця даних на корисні сегменти, що називаються секторами, і повідомляє файловій системі, де ці сектори розташовані фізично. Файлова система надає кожному сектору адресу, яка є просто унікальним номером, і ця адреса переводиться апаратним контролером у певний обертання тарілки і зчитують положення голови, щоб почати читати чи писати.

Для отримання додаткової інформації корисні наступні розділи в цих статтях у Вікіпедії:

Див. Вступ та розділ 3.1 "Управління космосом" тут: https://en.wikipedia.org/wiki/File_system

Дивіться розділ 2.1 "Магнітна запис" тут: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.