O que é “File Packing” feito por um sistema operacional?

3

Estou lendo um livro em Sistemas Operacionais, e estou confuso em uma parte sobre Internal Estrutura do Arquivo . Citando o livro:

Disk systems typically have a well-defined block size determined by the size of a sector. All disk I/O is performed in units of one block (physical record), and all blocks are the same size. It is unlikely that the physical record size will exactly match the length of the desired logical record. Logical records may even vary in length.

Packing a number of logical records into physical blocks is a common solution to this problem. For example, the UNIX operating system defines all files to be simply streams of bytes. Each byte is individually addressable by its offset from the beginning (or end) of the file. In this case, the logical record size is 1 byte. The file system automatically packs and unpacks bytes into physical disk blocks —say, 512 bytes per block— as necessary.

O que significa Empacotar um número de registros lógicos em blocos físicos aqui?

    
por Koray Tugay 25.02.2015 / 21:50

2 respostas

3

É realmente muito simples, mas difícil de explicar. Acho que só precisamos parafrasear o que o autor já disse.

O disco exige que você converse com ele em blocos . Supondo que o tamanho do bloco seja de 512 bytes:

Se você quiser escrever 400 Bytes em disco, você deve adicionar outros 112 bytes para criar 512 bytes. Os 112 Bytes extras podem ser zeros, mas precisam estar lá.

Quando você quiser ler seus 400 Bytes do disco, o disco rígido lhe dará 512 Bytes e é seu trabalho separar os dados reais dos 112 Bytes de preenchimento.

Isso é o que chamamos de Embalagem e Desembalagem . Você pode ficar mais complexo do que o exemplo acima, mas esse é o princípio.

    
por 25.02.2015 / 22:43
1

What is meant by Packing a number of logical records into physical blocks mean here?

Primeiro você tem que entender o que é um <"> registro lógico" .
Pode ser de tamanho variável, como texto em sentenças.
Pode ser um comprimento fixo, como uma estrutura de dados.

O empacotamento determina como organizar os dados na forma desses registros lógicos em contêineres "físicos", ou seja, os blocos de disco.
Para registros compostos de texto, os acessos de leitura e gravação são geralmente sequenciais (ou seja, você começa do início e segue seu caminho até o "fim"). Então, esses registros seriam embalados sem qualquer consideração aos limites do bloco. Para registros compostos de dados (binários), o empacotamento pode ser um problema, especialmente quando os registros de dados serão acessados aleatoriamente (por exemplo, uma consulta ao banco de dados) em vez de seqüencialmente (como uma fita).

De volta aos dias dos cartões perfurados (com 80 caracteres por cartão). Eu vi um programa coxo que armazenou um registro de 80 bytes por setor de 512 bytes para simplificar o mapeamento de registro para setor para acesso aleatório. Para esse tamanho de registro lógico, o número máximo de registros que podem ser compactados (de montado) em um bloco de 512 bytes é seis, com 32 bytes não utilizados por setor. Para um tempo de acesso ideal (aleatório) (e à custa de não minimizar o espaço de armazenamento), um registro lógico não deve abranger os blocos de disco (para que o acesso aleatório possa ser satisfeito lendo ou escrevendo apenas um bloco).

Alguns sistemas operacionais, por ex. * nixes, tendem a esconder a estrutura do bloco físico subjacente ao usar arquivos. Outros SOs podem oferecer sistemas de arquivos que exponham mais as características do hardware, como tipos de arquivos alocados de setores contíguos, setores vinculados ou por uma tabela de setores, e syscalls como readblk () , bem como read () (para um registro). O empacotamento de registros de comprimento fixo para acesso aleatório é mais crucial em tal ambiente.

    
por 25.02.2015 / 23:38