Bagaimana hard drive tahu di mana data dimulai? [duplikat]

14

Saya selalu bertanya-tanya bagaimana hard drive menemukan bit data pertama.

Ketika hard drive berputar, apa pun yang dibacanya harus berupa aliran data yang melingkar hingga kepala pembaca bergerak ke posisi yang berbeda.

Tetapi dalam aliran melingkar, bagaimana drive tahu di mana bit pertama dan bit terakhir berada, sehingga dapat meneruskan data dalam urutan yang benar?

uzumaki
sumber
BTW (jarang disebutkan tetapi menonjol) Ada tanda indeks untuk menunjukkan awal (dan akhir) trek. Ketika pengontrol disk menemukan indeks untuk kedua kalinya, maka itu menunjukkan bahwa ia telah membaca setiap sektor di trek.
serbuk gergaji

Jawaban:

2

Bunyinya dari disk.

Data pada disk tidak hanya terstruktur (seperti kata @psusi), tetapi juga disandikan. Pengkodean memastikan bahwa data yang direkam tidak dapat dikacaukan dengan penanda posisi dalam judul sektor, sehingga aliran melingkar dapat dibaca sampai penanda posisi target ditemukan.

Seperti yang saya pahami, hard drive modern tidak cukup melakukannya; mereka membaca seluruh lingkaran menjadi buffer, melacak di mana masing-masing sektor berada, dan menggunakan buffer untuk mengirim kembali data yang diminta.

MEMPERBARUI:

Media magnetik adalah material yang memiliki medan magnet dengan dua sifat utama: 1) tidak pernah berubah sendiri, dan 2) alat perekam dapat mengubah orientasi medan pada titik mana pun di permukaan. Saat membaca media, sensor mendeteksi di mana bidang diorientasikan ke arah sensor dan di mana bidang diorientasikan menjauh dari sensor. Saat sensor bergerak melintasi permukaan, ia mendeteksi timing transisi polaritas ini; lapisan pertama decoding menerjemahkan timing ini ke dalam nilai bit . Karena ketidakpastian yang diperlukan secara fisik dalam proses ini, pengkodean tidak harus memerlukan bentangan panjang dengan polaritas yang sama; yaitu, itu harus berupa Run-length limited coding (RLL).

Khususnya desain hard drive umumnya adalah rahasia dagang, tetapi pada dasarnya ada dua cara untuk memastikan bahwa penanda sektor tidak pernah muncul dalam konten sektor:

  1. Desain RLL yang memungkinkan nilai-nilai khusus yang tidak akan pernah dihasilkan dari penyandian data konten. Nilai-nilai khusus ini dapat digunakan tidak hanya untuk menandai batas-batas sektor tetapi juga untuk koreksi kesalahan atau tujuan sekunder lainnya.

  2. Gunakan pengkodean lapisan kedua yang memastikan nilai marker hanya muncul di marker. Ini sedikit mirip dengan pengodean URL untuk memungkinkan karakter khusus "disembunyikan" dalam URL, tetapi dengan batasan tambahan yang setara dengan membatasi berapa banyak karakter yang dapat ditambahkan, sehingga berakhir lebih seperti pengodean base64 .

Jadi, kepala baca bergerak melintasi permukaan mendeteksi perubahan polaritas magnetik, penentuan waktu dari perubahan tersebut digunakan untuk menentukan urutan nilai bit yang sesuai (mungkin termasuk beberapa nilai luar biasa yang tidak mewakili data yang disimpan), dan urutan tersebut digunakan untuk menentukan sektor mana yang sedang dibaca dan konten dari sektor tersebut. Ketika konten sektor ditentukan, data dapat disimpan dalam buffer solid-state dan / atau disimpan dalam buffer RAM dan / atau dikirim kembali untuk memenuhi permintaan.

ShadSterling
sumber
Apakah pengodean ini seperti pengkodean Huffman? Jika seseorang dapat membuat contoh yang jelas tentang bagaimana ini bekerja pada tingkat perangkat keras seperti: "Kepala membaca aliran data melingkar seperti 010111010010111010 ... di mana setiap 111 menandai awal suatu sektor, dan kemudian ..." Saya kemudian bisa terima jawabannya.
uzumaki
Hard drive harus menyandikan data abstrak sebagai properti fisik media magnetik, dan hasilnya harus mudah dialamatkan; Pengodean Huffman memetakan satu aliran data abstrak ke (biasanya) aliran data abstrak yang lebih pendek (melanggar addressability). Mereka sebagian besar tidak berhubungan.
ShadSterling
Pembaruan saya tidak menambahkan contoh apa pun, tetapi jika Anda mengikuti tautan RLL ada beberapa.
ShadSterling
18

Data tidak ditulis sebagai aliran sembarang dari nol dan nol. Itu ditulis dalam sektor. Setiap sektor memiliki muatan data pengguna, dan header. Header berisi kode koreksi kesalahan, serta bidang sinkronisasi khusus yang mengidentifikasi awal sektor, dan nomor sektor sehingga drive dapat mengetahui kapan ia menemukan awal suatu sektor, dan sektor apa itu.

psusi
sumber
3
Beberapa referensi atau tautan akan membuat jawaban yang bagus ini bagus. : D
cat
1
@ kucing, saya kira "Bagaimana komputer bekerja" atau "Di dalam PC" Peter Norton, jika salah satu dari itu masih dicetak ... mungkin beberapa edisi baru sejak yang ada di rak buku saya.
psusi
Ini tidak menjawab pertanyaan. Pertanyaannya adalah bagaimana drive tahu di mana header atau bidang sinkronisasi dimulai.
Martin Argerami
@MartinArgerami - Ini menjawab pertanyaan karena mengoreksi kesalahpahaman OP, dan memperkenalkan konsep sektor yang menonjol. Mengebor ke tingkat membaca / menulis domain magnetik tampaknya terlalu kuat untuk OP IMO. Jika Anda / dia ingin lebih detail kemudian melihat superuser.com/questions/427554/...
serbuk gergaji
1
@ user134593 - Bytes sinkronisasi selalu setelah jeda, dan merupakan byte pertama dari catatan. Mereka hanya mengindikasikan awal dari catatan. Oleh karena itu pengontrol disk tidak pernah memiliki konflik atau kebingungan dengan data muatan atau pengguna. Anda tampaknya berpikir itu sedikit aliran (seperti halnya OP), tetapi ini adalah media magnetik, yang berarti Anda tidak bisa hanya membaca atau menulis pada titik mana pun yang Anda inginkan.
serbuk gergaji
7

Psusi benar (data pada disk terstruktur , dan berbagai bagian komputer menggunakan bagian berbeda dari struktur itu) tetapi tidak benar-benar memahami pertanyaan Anda.

Drive tidak benar-benar "tahu" apa-apa. Ini memiliki elektronik tingkat rendah yang dapat membaca spidol pada disk (umumnya ditulis di pabrik, atau oleh kepala drive itu sendiri), membaca blok data dari disk, atau menulis blok data ke disk, atau mengetahui jika ada tempat tertentu pada disk. disk rusak atau rusak, atau harus dipindahkan ke lokasi tertentu pada disk. Itu semua "tahu". Kepala membaca tidak memutuskan untuk pindah ke tempat lain dengan sendirinya, sesuatu yang lebih tinggi di mesin memberitahu ...

quadruplebucky
sumber
2
Tetapi sesuatu yang lebih tinggi masih merupakan bagian dari hard drive. (Yang diperintahkan oleh sesuatu di luar hard drive, yang diperintahkan oleh sesuatu di luar komputer, yang diperintahkan oleh sesuatu yang metafisik, tapi kami tidak membicarakan hal-hal itu)
user253751
0

Selain jawaban lain, hard disk tentu dulu (dan mungkin masih) memiliki satu piring ("head" dalam istilah silinder / head / sektor) yang dicadangkan untuk data kalibrasi / posisi, tidak digunakan sama sekali untuk penyimpanan data pengguna .

Mark K Cowan
sumber
3
Ini bukan sesuatu yang pernah saya dengar, apakah Anda punya referensi untuk itu?
ShadSterling
Ya, tidak .... itu bukan apa-apa.
psusi
Anda tampaknya mengacu pada permukaan / plat servo. Tapi itu adalah teknologi usang yang belum saya lihat sejak paket disk 14 ", yang mendahului HDD ST-506 dari IBM PC-XT asli. Winchester dan drive disk modern menggunakan servo tertanam.
serbuk gergaji
Ah OK, saya belum pernah mendengar tentang ini untuk waktu yang lama juga, meskipun saya meletakkannya di disk modern menjadi kotak hitam.
Mark K Cowan
0

Jawaban yang Anda cari memiliki dua bagian:

1) Kontroler perangkat keras

2) Sistem file

Seperti yang Anda katakan, dalam HDD (berbeda dengan teknologi lain seperti SSD), data sebenarnya dituliskan ke pelat logam bulat sebagai cincin melingkar konsentris yang memegang medan magnet berpola. Di atas piringan yang memegang data ini adalah kepala tulis yang bergerak untuk membaca dan menulis data, sangat mirip dengan pemutar kaset vinil. Piring-piring yang bergerak itu melekat pada motor listrik yang mengontrol putarannya.

Pengontrol perangkat keras bertindak sebagai antarmuka antara sistem operasi dan hard drive. Pengontrol dapat membaca posisi kepala tulis serta rotasi piring-piring dan menggunakan informasi ini untuk memutuskan bagaimana menempatkan kepala dan piring-piring untuk membaca dan menulis. Ini menerjemahkan permintaan baca dan tulis dari sistem operasi menjadi sinyal kontrol yang menggerakkan kepala tulis dan memutar piringan, serta mengubah data paralel yang masuk dari sistem operasi menjadi satu baris data serial. Itu juga memecah baris serial ini dan memutuskan lokasi fisik atau sektor apa, untuk menempatkan masing-masing bagian dan mencatat informasi ini dengan cara yang ditentukan oleh sistem file.

Sistem file adalah spesifikasi bagaimana dan di mana menyimpan data. Sistem operasi komputer tahu bagaimana menafsirkan sistem file ini dan menggunakan pengetahuan ini untuk berkomunikasi secara memadai dengan pengontrol perangkat keras, dalam hal ini memecah cincin melingkar data menjadi segmen yang dapat digunakan yang disebut sektor dan memberi tahu sistem file tempat sektor-sektor ini berada secara fisik. Sistem file memberikan setiap sektor sebuah alamat, yang hanya merupakan angka unik, dan alamat ini diterjemahkan oleh pengontrol perangkat keras ke dalam rotasi piringan tertentu dan membaca posisi kepala untuk mulai membaca atau menulis.

Untuk informasi lebih lanjut, bagian berikut dalam artikel Wikipedia ini cukup membantu:

Lihat Pengantar dan bagian 3.1 "Manajemen ruang" di sini: https://en.wikipedia.org/wiki/File_system

Lihat bagian 2.1 "Rekaman Magnetik" di sini: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording

Matthew Salvatore Viglione
sumber