Como um disco rígido sabe onde os dados começam? [duplicado]


14

Eu sempre estava me perguntando como um disco rígido encontra o primeiro bit de dados.

Quando um disco rígido gira, o que ele lê deve ser um fluxo circular de dados até que o cabeçote de leitura se mova para uma posição diferente.

Mas, em um fluxo tão circular, como a unidade sabe onde estão o primeiro e o último bits, para que possa transmitir os dados na ordem correta?


BTW (raramente mencionado, mas destacado) Há uma marca de índice para indicar o início (e o fim) da faixa. Quando o controlador de disco encontra o índice uma segunda vez, isso indica que ele leu todos os setores da faixa.
sawdust

Respostas:


2

Ele lê do disco.

Os dados no disco não são apenas estruturados (como o @psusi diz), mas também são codificados. A codificação garante que os dados gravados não possam ser confundidos com os marcadores de posição nos títulos do setor, para que o fluxo circular possa ser lido até que o marcador da posição de destino seja encontrado.

Pelo que entendi, os discos rígidos modernos não fazem isso; eles leem o círculo inteiro em um buffer, controlando onde cada setor está e usam os buffers para enviar de volta os dados solicitados.

ATUALIZAR:

A mídia magnética é um material que possui um campo magnético com duas propriedades principais: 1) nunca muda por si só e 2) o dispositivo de gravação pode alterar a orientação do campo em qualquer ponto da superfície. Ao ler a mídia, o sensor detecta onde o campo está orientado em direção ao sensor e onde o campo está orientado para longe do sensor. À medida que o sensor se move pela superfície, ele detecta os tempos dessas transições de polaridade; a primeira camada de decodificação está traduzindo esses tempos em valores de bits . Devido a incertezas fisicamente necessárias nesse processo, a codificação não deve exigir longos trechos da mesma polaridade; isto é, deve ser uma RLL ( Codificação Limitada em Duração ).

As particularidades dos designs dos discos rígidos geralmente são segredos comerciais, mas existem basicamente duas maneiras de garantir que os marcadores do setor nunca apareçam no conteúdo do setor:

  1. Crie uma RLL que permita valores especiais que nunca resultarão da codificação de dados de conteúdo. Esses valores especiais podem ser usados ​​não apenas para marcar limites do setor, mas também para correção de erros ou qualquer outro objetivo secundário.

  2. Use uma segunda camada de codificação que garanta que os valores dos marcadores apareçam apenas nos marcadores. Isso é um pouco como a codificação de URL para permitir que caracteres especiais sejam "ocultos" em URLs, mas com uma restrição adicional equivalente a limitar quantos caracteres podem ser adicionados e, portanto, acaba mais como a codificação base64 .

Portanto, o cabeçote de leitura se move pela superfície, detectando alterações de polaridade magnética, os tempos dessas alterações são usados ​​para determinar a sequência correspondente de valores de bits (possivelmente incluindo alguns valores excepcionais que não representam dados armazenados), e essa sequência é usada para determine quais setores estão sendo lidos e o conteúdo desses setores. Conforme o conteúdo dos setores é determinado, os dados podem ser armazenados em um buffer de estado sólido e / ou armazenados em um buffer de RAM e / ou enviados de volta para atender a uma solicitação.


Essa codificação é semelhante à codificação Huffman? Se alguém pudesse fazer um exemplo claro de como isso funciona em um nível de hardware como este: "O cabeçote lê um fluxo de dados circular como 010111010010111010 ... onde cada 111 marca o início de um setor e então ..." aceite a resposta.
Uzumaki

Os discos rígidos precisam codificar dados abstratos como propriedades físicas da mídia magnética, e o resultado deve ser facilmente endereçável; A codificação de Huffman mapeia um fluxo de dados abstratos para um (geralmente) menor fluxo de dados abstratos (quebra de endereçamento). Eles são principalmente não relacionados.
ShadSterling

Minha atualização não adicionou exemplos, mas se você seguir o link da RLL, ela possui alguns.
ShadSterling

18

Os dados não são gravados como um fluxo arbitrário de uns e zeros. Está escrito em setores. Cada setor tem a carga útil de dados do usuário e um cabeçalho. O cabeçalho contém códigos de correção de erros, bem como um campo de sincronização especial que identifica o início do setor e o número do setor para que a unidade possa saber quando encontrou o início de um setor e qual é o setor.


3
Algumas referências ou links tornariam essa boa resposta ótima. : D
cat

1
@cat, suponho "Como os computadores funcionam" ou "Inside the PC", de Peter Norton, se algum deles ainda estiver impresso ... provavelmente algumas edições novas desde as da minha estante de livros.
psusi

Isso não responde à pergunta. A questão é como a unidade sabe onde o cabeçalho ou o campo de sincronização é iniciado.
Martin Argerami

@MartinArgerami - Isso responde à pergunta porque corrige o equívoco do OP e introduz o conceito saliente dos setores. A busca detalhada no nível de leitura / gravação de domínios magnéticos parece muito intensa para o OP IMO. Se ele / ela quer mais detalhes, em seguida, ver superuser.com/questions/427554/...
serragem

1
@ user134593 - Os bytes de sincronização estão sempre após um intervalo e são os primeiros bytes do registro. Eles meramente indicam o início do registro. Portanto, o controlador de disco nunca apresenta conflito ou confusão com carga útil ou dados do usuário. Você parece achar que é um fluxo de bits (como o OP), mas é uma mídia magnética, o que significa que você não pode simplesmente ler ou escrever no momento que desejar.
sawdust

7

Psusi está correto (os dados no disco estão estruturados e diferentes partes do computador usam diferentes partes dessa estrutura), mas na verdade não atendem à sua pergunta.

A unidade realmente "não sabe" nada. Possui componentes eletrônicos de baixo nível que podem ler marcadores no disco (geralmente gravados na fábrica ou pelo próprio cabeçote da unidade), ler blocos de dados do disco ou gravar blocos de dados no disco, ou dizer se um determinado local no disco está danificado ou danificado ou deve ser movido para um local específico no disco. Isso é tudo o que "sabe". A cabeça de leitura não decide se mover para outro lugar sozinha, algo mais alto na máquina diz para ...


2
Mas algo mais alto ainda faz parte do disco rígido. (Que é comandado por algo fora do disco rígido, que é comandado por algo fora do computador, que é comandado por algo metafísico, mas nós não estamos falando de qualquer uma dessas coisas)
user253751

0

Além das outras respostas, os discos rígidos certamente costumavam ter (e ainda podem ter) um prato ("cabeçote" em termos de cilindro / cabeçote / setor), reservado para dados de calibração / posicionamento, que não é usado para armazenamento de dados do usuário .


3
Isso não é algo que eu ouvi falar, você tem uma referência?
ShadSterling

Sim, não .... isso não é uma coisa.
Psusi

Você parece estar se referindo à superfície servo / prato. . Mas isso é uma tecnologia obsoleta que eu não tenha visto desde 14" packs de disco, que antecedem as ST-506 HDDs do IBM PC-XT originais Winchester e unidades de disco modernas usam um servo incorporado.
serragem

Ah, ok, eu não ouvi isso por um bom tempo também, embora eu devesse dizer que os discos modernos são caixas pretas.
Mark K Cowan

0

A resposta que você está procurando tem duas partes:

1) Um controlador de hardware

2) Um sistema de arquivos

Como você disse, em um HDD (em oposição a outras tecnologias como SSDs), os dados reais são gravados em placas de metal redondas como anéis circulares concêntricos segurando um campo magnético padronizado. Acima das travessas que contêm esses dados, está a cabeça de gravação, que se move para ler e gravar dados, como um toca-discos de vinil. Os pratos sobre os quais ele se move são conectados a um motor elétrico que controla sua rotação.

Um controlador de hardware atua como uma interface entre o sistema operacional e o disco rígido. O controlador pode ler a posição do cabeçote de gravação, bem como a rotação dos pratos e usa essas informações para decidir como posicionar o cabeçote e os pratos para leitura e gravação. Ele converte solicitações de leitura e gravação do sistema operacional em sinais de controle que movem a cabeça de gravação e giram os pratos, além de converter os dados paralelos que chegam do sistema operacional em uma única linha de dados serial. Ele também divide essa linha serial e decide em que local físico ou setor colocar cada peça e registra essas informações da maneira especificada pelo sistema de arquivos.

O sistema de arquivos é uma especificação de como e onde armazenar dados. O sistema operacional do computador sabe como interpretar esse sistema de arquivos e usa esse conhecimento para se comunicar adequadamente com o controlador de hardware, nesse caso, divide os anéis circulares de dados em segmentos utilizáveis ​​chamados setores e informa ao sistema de arquivos onde esses setores estão localizados fisicamente. O sistema de arquivos fornece a cada setor um endereço, que é apenas um número único, e esse endereço é convertido pelo controlador de hardware em uma rotação específica do prato e na posição da cabeça de leitura para começar a ler ou escrever.

Para mais informações, as seguintes seções nestes artigos da Wikipedia são bastante úteis:

Veja Introdução e seção 3.1 "Gerenciamento de espaço" aqui: https://en.wikipedia.org/wiki/File_system

Consulte a seção 2.1 "Gravação magnética" aqui: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.