Escolar Documentos
Profissional Documentos
Cultura Documentos
Secretário técnico
Maria Soledad Simon Pinero
Chefe do Departamento Editorial
FACULDADE DE ENGENHARIA
Dr. Carlos Agustín Escalante Sandoval
Diretor
Eng. Gonzalo López de Haro
Secretário Geral Dr.
Boris Escalante Ramírez
Chefe da Divisão de Engenharia Elétrica
Mtra. María Cuairán Ruidíaz Chefe
da Unidade de Apoio Editorial
Machine Translated by Google
Capítulo 1
Ponto de partida
17
Machine Translated by Google
Uma melhoria natural neste último ponto foi a invenção do carretel: um mecanismo
de entrada/saída que permitia que um computador de propósito específico muito mais
barato e limitado lesse os cartões e os convertesse em fita magnética, um meio muito
necessário. pronto para o computador central carregar quando terminar o trabalho
anterior. Da mesma forma, o computador central salvaria seus resultados em fita para
equipamento especializado ler e imprimir para o usuário solicitante.
A palavra carretel (bobina) foi tomada como um acrônimo reverso para Simultaneous
Operações de Periféricos On-Line, operação simultânea de periféricos online.
ou gravar resultados em mídia externa (mesmo via spools) o limite é imposto pelos
dispositivos, ou seja, opera IO vinculado.
Os sistemas de escalonamento multitarefa ou multiprogramação buscavam maximizar
o tempo de uso efetivo do processador executando vários processos ao mesmo tempo.
mesmo tempo.
O hardware necessário mudou muito. Embora fosse esperado que cada
usuário fosse responsável pelo uso dos recursos, era necessário que a infraestrutura
de proteção de recursos aparecesse: um processo não deve sobrescrever o espaço de
memória de outro (nem o código nem os dados), muito menos
monitorar o espaço. Essa proteção está localizada na Unidade de Manejo da
Memory (MMU), presente em todos os computadores de uso genérico desde o
anos noventa.
Certos dispositivos requerem bloqueio para fornecer acesso exclusivo/exclusivo:
fitas e impressoras, por exemplo, são de acesso estritamente sequencial, e
se dois usuários tentassem usá-los ao mesmo tempo, o resultado para ambos seria
corromperia. Para esses dispositivos, o sistema deve implementar outros spools
e mecanismos de travamento.
A verdadeira revolução veio quando, pouco tempo depois, computadores pessoais com
saída de vídeo (normalmente
por meio de uma televisão) e entrada por um teclado. esses computadores
popularizou a linguagem BASIC, projetada para usuários iniciantes na década de 1960, e
para permitir que os usuários gerenciem seus recursos (drives de fita,
tela posicionável, unidades de disco, impressoras, modem, etc.)
um software de sistema mínimo - novamente, um sistema operacional proto.
Figura 1.2: O Commodore Pet 2001, no mercado desde 1977, um dos primeiros
com intérprete BASIC (imagem da Wikipedia: Commodore PET).
Figura 1.4: Apple Macintosh (1984), popularizou a interface gráfica do usuário (GUI)
(Imagem da Wikipedia: Macintosh).
à tela para manipular como quisesse, mas a uma abstração (a janela) que poderia variar suas
medidas, e que exigia que toda a saída fosse
estritamente por chamadas para bibliotecas de primitivas gráficas que
eles começaram a ser vistos como parte integrante do sistema operacional.
Além disso, os problemas de proteção e separação entre processos simultâneos
começaram a se tornar aparentes: os programadores agora tinham que
programação com a consciência de que compartilhariam recursos, com a limitação
(que não tinham nas máquinas profissionais) de não terem hardware especializado para essa
proteção. Processadores em uso comercial no
oitenta não lidava com anéis ou níveis de execução ou unidade de gerenciamento
memória (MMU), portanto, um programa mal-intencionado ou com falha pode corromper
o funcionamento completo do equipamento. E embora os ambientes mais bem-sucedidos
(Apple MacOS e Microsoft Windows) não implementassem a verdadeira multitarefa, eles o fizeram.
havia desde o início sistemas como o Commodore Amiga ou o Atari ST que
eles fizeram uma verdadeira multitarefa preventiva.
Naturalmente, dado o uso comum de um ambiente Windows, os programas que rodavam
sem exigir o carregamento do sistema operacional falhavam.
lentamente no esquecimento.
Claro que esta definição – reconhecidamente rápida e imperfeita – deixa uma grande
área cinzenta e permite alguma ambiguidade. Por exemplo, as versões mais recentes
de alguns ambientes de usuário (notadamente, a interface primária do Windows 8, ou
os ambientes GNOME e Unity do Linux) buscam unificar a experiência, incorporando
conceitos multitoque aos desktops e aproximando os casos de uso. . Tome, então,
essas diretrizes como meramente indicativas.
Figura 1.6: Psion Organizer, anunciado como o primeiro computador de bolso prático
do mundo em 1984. Na imagem, um aparelho de sua segunda geração (imagem
da Wikipedia: Organizador Psion).
Os itens mencionados nesta seção são feitos para caber no bolso da camisa. No
entanto, os tablets devem ser adicionados a este segmento. A história de seu
desenvolvimento e adoção se assemelha à apresentada aqui para a interface do
smartphone (e até levada ao extremo): é possível encontrar antecedentes desde
1915,1 inúmeras descrições literárias na ficção científica em todo o mundo. do século
XX, e várias implementações funcionais desde o início dos anos 1990. No entanto,
os tablets pareciam destinados há anos a nunca conquistar o mercado, até 2010,
quando a Apple lançou um aparelho com a mesma interface de seu iPhone, mas do
tamanho de um laptop padrão.
Todos os sistemas disponíveis hoje, é claro, são muito mais complexos que o
Psion Organizer, e existem várias famílias de sistemas operacionais de uso comum;
Apenas alguns dos sistemas em uso serão descritos abaixo, de forma muito
grosseira. Nesta seção eles são listados apenas com suas informações gerais, e na
seção seguinte algumas de suas características técnicas são mencionadas.
Android Projetado pela empresa Google, baseia a maior parte de sua operação em
software livre (um kernel Linux, uma máquina virtual Java e muitas das
bibliotecas de sistema comuns aos sistemas Linux), agregando um
1 O registro de patente 1 117 184 dos Estados Unidos (Goldberg 1914) refere-se a uma máquina
para reconhecer os caracteres escritos em uma página.
Machine Translated by Google
Consumo elétrico
Uma das áreas mais visíveis tem sido o desenvolvimento qualitativo durante
últimos anos é a otimização do consumo elétrico do
Cálculo. E embora a importância de economizar eletricidade no
escritórios e data centers, onde o trabalho diário depende cada vez mais da
informática, a importância de popularizar o
laptops. E adicionando alguns padrões particulares a esses
dispositivos, a popularização da computação móvel levou a uma verdadeira
revolução nesse sentido.
A economia de consumo de energia elétrica tem duas vertentes principais: por
um lado, o desenvolvimento de hardware mais eficiente energeticamente,
independentemente da forma como opera e, por outro, a criação de mecanismos através de
dos quais um computador pode detectar mudanças no padrão de
atividade (ou o operador pode indicar uma mudança na resposta esperada),
e reage reduzindo sua demanda (que normalmente é obtida pela redução da
velocidade de determinados componentes do equipamento).
O primeiro esquema de economia de energia amplamente apoiado, tanto por
de hardware de vários fabricantes, bem como de praticamente todos os sistemas
sistemas operacionais amplamente utilizados, foi APM (Advanced Power
Management). Depois de algum tempo, foi substituído por ACPI
(Configuração Avançada e Interface de Energia, Configuração Avançada e Interface
de Energia); a principal diferença entre os dois é que, enquanto sob
APM os diferentes níveis de potência foram implementados no firmware do
computador ou cada um de seus dispositivos, na ACPI a responsabilidade é
no sistema operacional; isso dá muito mais flexibilidade à implementação, ao custo
de mais complexidade para os desenvolvedores.
Mas a diferença real no tópico que esta seção aborda é a frequência das
mudanças de estado: um servidor ou desktop
tem apenas um evento constante (a frequência do processador se ajusta dependendo
da carga, potencialmente até dezenas de vezes por segundo); uma
laptop deve adotar perfis diferentes dependendo se é
conectado à rede elétrica ou operando por bateria, ou se tiver a tampa (tela)
aberto ou fechado. Os usuários de laptop normalmente procuram
trabalhe conectado à rede elétrica o máximo possível, pois é vox
populi que isso irá melhorar a vida útil da sua bateria. E enquanto essas mudanças
ambiente são apresentados (e têm uma complexidade inegável), sua ocorrência é
muito baixa.
Machine Translated by Google
Uma vez que esses equipamentos são projetados para se movimentarem junto
com o usuário, tornando-se um auxiliar ou uma extensão de suas atividades
diariamente, otimizar sua operação para operar via de regra a partir de sua
bateria, não conectado à rede elétrica. Nesse caso, a comparação vale a pena:
um telefone que oferece menos de um dia de funcionamento autônomo seria,
sem dúvida, avaliado como extremamente inconveniente e impraticável, em
Portanto, um laptop é considerado muito eficiente se permitir que o
operação autônoma por seis horas.
A economia de energia que esses padrões de uso permitem não se deve apenas à
hardware cada vez mais eficiente usado por dispositivos móveis, mas
do que a programação de aplicativos em que os desenvolvedores procuram
explicitamente padrões eficientes, sono fácil e minimizando a necessidade de ativar o
hardware.
ambiente em mudança
o jardim murado
Abstração O sistema operacional deve garantir não apenas que forneça as abstrações
necessárias, mas também que nenhum de seus usuários possa contornar essas
abstrações. Por exemplo, o fato de um usuário ter o direito de modificar um arquivo
que está hospedado em uma determinada unidade de
disco, você não deve poder gravar diretamente no disco; seu acesso deve ser
limitado à interface que o sistema lhe oferece.
Obviamente, essas três seções são apresentadas apenas como exemplo; uma
Ao longo do trabalho, vários casos relacionados às diferentes
temas que são abordados.
Naturalmente, qualquer problema relacionado à segurança informática pode ser abordado
(pelo menos) a partir de dois pontos de vista antagônicos: o da proteção, que busca definir e
proteger os aspectos em que
segurança intervém para um determinado problema, e a do ataque, que busca a
fraquezas ou vulnerabilidades em uma determinada implementação de um esquema
que permitem a qualquer um que os conheça violar os limites que o administrador do sistema
procura impor. E, claro, embora o tipo de análise para
esses pontos de vista é muito diferente, entender ambos não é apenas legítimo, mas também
necessário para uma formação profissional completa.
Todas as áreas abordadas neste trabalho possuem aspectos que podem ser
analisados a partir da segurança informática, e mais do que dedicar um capítulo
particular a esta questão, o compromisso é abordar a segurança de forma transversal.
1.8. TREINAMENTO 39
contexto para quaisquer operações realizadas). Além disso, quando a comunicação direta é
tratada como uma passagem de estruturas na memória, o maior acoplamento
permite mais flexibilidade adaptando-se a novos requisitos (por não ter que
modificar não apenas o kernel e os processos especiais, mas também a interface
público entre eles).
Por outro lado, sistemas de microkernel seguem esquemas lógicos mais limpos,
permitem implementações mais elegantes e são mais fáceis de entender por
separado de cada uma de suas peças. Eles podem se auto-reparar mais facilmente,
dado que em caso de falha de um dos componentes (por mais que pareça ser
nível muito baixo), o kernel pode reiniciá-lo ou até substituí-lo.
1.8. Treinamento
1.8.1. Perguntas de autoavaliação
1. Como a multitarefa preemptiva é diferente da cooperativa? Por
todas as opções, leia: “Ao contrário de multitarefa cooperativa, multitarefa
apropriado . . " (Escolha pelo menos uma resposta.)
um teclado.
b) Unidade de fita.
c) Discos.
e) Impressora.
Capítulo 7
sistemas de arquivos
263
Machine Translated by Google
Diretório raiz A estrutura que relaciona cada nome de arquivo a seus números de i-
node. Ele normalmente armazena apenas os arquivos que estão no
primeiro nível hierárquico do sistema, e os diretórios derivados são referenciados
apenas a partir dele.
Metadados Este nome recebe todas as informações sobre um arquivo que não
é o conteúdo do próprio arquivo. Por exemplo, o nome, tamanho ou tipo
do arquivo, seu proprietário, controle de acesso, suas datas de criação,
último acesso e modificação, localização no disco, etc.
1Para uma visão mais rigorosa de como o sistema operacional se relaciona com os discos
e outros mecanismos de armazenamento, consulte o Apêndice C.
Machine Translated by Google
Bitmap de espaço livre A função do bitmap é poder gerenciar o espaço livre no disco.
Lembre-se que o disco é atribuído por
blocos, normalmente 4096 bytes — no bitmap cada bloco é representado por um
bit, para que possa ser encontrado de forma compacta aqui
o espaço ocupado e disponível, bem como o lugar certo para criar
um novo arquivo.
2Isso explica por que, mesmo sem trabalhar ativamente com nenhum arquivo contido em
isso, o simples fato de montar um volume com grande quantidade de dados obriga o sistema a reservar
uma quantidade de memória.
3Por exemplo, os carregadores de inicialização em algumas plataformas exigem a capacidade de ler o volume
onde a imagem do sistema operacional está alojada - o que a obriga a estar em um sistema de
arquivos nativos da plataforma.
Machine Translated by Google
O sistema FAT foi criado no final dos anos setenta, e seu design mostra evidências
claras de ter sido concebido para disquetes. No entanto, por meio de várias extensões
que foram introduzidas ao longo dos anos (algumas com compatibilidade com versões
anteriores,4 outras não), ainda é um dos sistemas mais usados atualmente, embora não
seja mais recomendado como sistema principal por qualquer desktop operacional.
sistema.
Embora o FAT tenha sido mais amplamente utilizado com a família de sistemas
operacionais MS-DOS , ele é um sistema de arquivos nativo para um grande número de
outras plataformas (muitas delas no mercado embarcado), o que se torna óbvio ao
revisar o suporte para atributos estendidos que ele lida.
7.1.3. O volume
A primeira coisa que o sistema operacional precisa saber para montar um volume é
sua estrutura geral: primeiro, que tipo de sistema de arquivos é e depois sua descrição
básica: sua extensão, o tamanho dos blocos lógicos que gerencia, se possui algum
rótulo que descreva sua função para o usuário, etc. Essas informações estão contidas
no bloco de controle de volume, também conhecido como superbloco ou tabela de
arquivos mestre. 5 Depois de ler as informações do superbloco, o sistema operacional
primeiro determina se pode prosseguir — se não souber como trabalhar com o sistema
de arquivos em questão, por exemplo, não poderá apresentar nenhuma informação
útil ao usuário ( e até arriscaria destruí-lo).
volumes brutos
Swap Space Como visto na Seção 5.5.2, o gerenciamento da parte da memória virtual que
está no disco é muito mais eficiente quando feito sem atravessar a abstração do
sistema operacional — ou seja,
quando feito em um volume em bruto. E enquanto o gerenciador de memória
virtual é inegavelmente parte do sistema operacional, em um sistema microkernel
ele pode estar sendo executado como um processo de usuário.
Bancos de dados Os bancos de dados relacionais podem incluir volumes muito grandes.
big data estritamente estruturado. Alguns gerenciadores de banco de dados
bancos de dados, como Oracle, MaxDB ou DB2, recomendam que seus usuários usem
de volumes brutos, para otimizar os acessos ao disco sem ter que
atravessar tantas camadas do sistema operacional.
o diretório raiz
Uma vez que o sistema de arquivos esteja montado (veja 6.3.3), todas as referências
aos arquivos dentro dele devem passar pelo diretório. O diretório raiz está sempre em um
local conhecido no sistema.
arquivos — normalmente no início do volume, nos primeiros setores.6 A
disquete tinha 80 faixas (normalmente chamadas de cilindros quando se fala em
discos rígidos), de modo que ao localizar o diretório na trilha 40, o tempo médio de
movimentação da cabeça para alcançá-lo foi reduzido pela metade. Eu cai
operações para abrir um arquivo têm que passar pelo diretório, isso resultou em uma
melhoria muito significativa.
O diretório é a estrutura que determina o formato que o arquivo deve seguir.
nome de cada um dos arquivos e diretórios: é comum que em um sistema
Nos tempos modernos, um nome de arquivo pode ter até 256 caracteres, incluindo
espaços, caracteres internacionais, etc. Alguns sistemas de arquivos são
diferencia maiúsculas de minúsculas, como é o caso em sistemas Unix nativos (o arquivo
example.txt é diferente de Example.TXT), enquanto outros não são,
como é o caso com NTFS e VFAT (example.txt e Example.TXT são idênticos
antes do sistema operacional).
Todas as versões do FAT seguem um esquema de nomenclatura de arquivos.
claramente arcaico: os nomes dos arquivos podem ter até oito caracteres, com uma
extensão opcional de mais três caracteres, para um total de 11.
Não só o sistema não diferencia maiúsculas de minúsculas, mas todos os
nomes devem ser mantidos em letras maiúsculas, e permite apenas
determinados caracteres não alfanuméricos. Este sistema de arquivos não implementa
a separação entre diretório e i-node, que é a norma hoje, para que cada
uma das entradas no diretório tem exatamente 32 bytes. como é de
esperado em um formato que viveu tanto e atravessou tantas gerações quanto o FAT,
alguns desses campos mudaram substancialmente
Os significados deles. A Figura 7.1 mostra os campos de uma entrada de diretório
sob FAT32.
A extensão VFAT foi adicionada com o lançamento do Windows 95. Essa extensão
permitiu que, embora o nome real de um arquivo ainda estivesse limitado ao formato
apresentado, entradas adicionais pudessem ser adicionadas ao diretório usando o atributo
de rótulo de volume de maneira que um usuário não pôde usar. O sistema MS-DOS deve
ignorar.7
Isso apresenta uma complicação adicional quando se trata do diretório raiz de uma
unidade: embora os diretórios derivados não tenham esse limite, já que o diretório raiz está
localizado em uma seção fixa do disco, ele tem um limite máximo de comprimento: em um
disquete ( que até hoje, devido à sua baixa capacidade, está formatado em FAT12), do
bloco 20 ao 33, ou seja, 14 blocos. Com um tamanho de setor de 512 bytes, o diretório
raiz é 512×14 = 7168 bytes, = 224 entradas no máximo. E embora isso possa não parecer
7 168
isto é 32 muito limitado, ter quatro entradas por arquivo quando, usando VFAT, você
tem um nome médio-longo reduz muito a imagem.
O problema não é tão grave quanto parece: para FAT32, o diretório raiz não está mais
localizado em um espaço reservado, mas como parte do espaço de dados, portanto, é
extensível, se necessário.
Os primeiros sistemas de arquivos destinavam-se a unidades de capacidade muito
baixa; Por muito tempo, as implementações de diretório eram simplesmente listas lineares
dos arquivos que estavam hospedados no volume. Em muitos desses primeiros sistemas,
os diretórios não eram considerados hierárquicos, mas apresentavam um único namespace
plano; À medida que esses sistemas evoluíram para suportar diretórios aninhados, para
compatibilidade com versões anteriores (e para considerações de desempenho discutidas
abaixo), eles continuaram a armazenar apenas o diretório raiz nessa posição privilegiada,
tratando todos os diretórios derivados dele como se fossem diretórios raiz. O disco.
Em um sistema que implementa diretórios como listas lineares, quanto mais arquivos
houver, o tempo que leva para quase qualquer operação aumenta linearmente (já que
você potencialmente precisa ler o diretório inteiro para encontrar um arquivo). E as listas
lineares apresentam um segundo problema: como reagir quando seu espaço alocado é
preenchido.
Como já foi apresentado, o FAT aloca uma quantidade fixa de espaço para o diretório
raiz, mas os subdiretórios podem crescer livremente. Um subdiretório é basicamente uma
entrada com um tipo especial de arquivo – se o décimo segundo byte de uma entrada de
diretório, indicando os atributos do arquivo (veja a Figura 7.1 e a Tabela 7.1), tiver o bit
quatro definido, a região de dados correspondente a esse arquivo será ser interpretado
como um subdiretório.
Figura 7.2: Entradas representando arquivos com (e sem) nomes longos em VFAT.
É claro que o FAT é um sistema legado e que exibe muitas práticas que foram
abandonadas em projetos modernos de sistemas de arquivos. Foi visto que dentro da
entrada do diretório de cada arquivo há praticamente seu i-node completo: as
informações sobre permissões, atributos, datas de criação e muito particularmente, o
ponteiro para o cluster inicial (bytes 26-28, mais os 20 - 22 para FAT32). Isso resulta em
uma das grandes fragilidades do FAT: a tendência à fragmentação.
A família FAT recebe seu nome da tabela de alocação de arquivos, que aparece
antes do diretório, nos primeiros setores do disco.8 Cada byte do FAT representa um
cluster na área de dados; cada entrada no diretório indica, em seu campo correspondente,
qual é o primeiro cluster do arquivo. Agora, à medida que um disco é usado, e os
arquivos crescem e são excluídos, e preenchem os espaços vazios que deixam para
trás, o FAT vai
8Esta tabela é tão importante que, dependendo da versão do FAT, ela é salva em duplicata,
ou mesmo em triplicado.
Machine Translated by Google
alocando espaço à medida que encontra novos clusters livres, sem se importar que seja
espaço contínuo. Os ponteiros para o próximo cluster são marcados no
tabela, cluster por cluster, e o último de cada arquivo recebe o valor especial
(dependendo da versão FAT) 0xFFF, 0xFFFF ou 0xFFFFFFFF.
Agora, se os diretórios são simplesmente arquivos que recebem um
tratamento especial, estes também são suscetíveis à fragmentação. Dentro de
de um sistema Windows 95 ou superior (usando as extensões VFAT), com
diretórios aninhados em quatro ou cinco níveis, conforme estabelecido por sua hierarquia
standard,9 a simples tarefa de passar por eles para encontrar um determinado arquivo
pode ser fortemente penalizado pela fragmentação.
até que um arquivo seja encontrado, ele potencialmente deve ser lido em sua totalidade),
mantê-lo organizado contra qualquer modificação seria muito mais caro, dado que
que todo o diretório teria que ser reescrito ao criar ou excluir um
arquivo dentro dele, e o que é mais importante, mais perigoso, pois
aumentaria o tempo em que os dados do diretório estão em um estado inconsistente,
aumentando a probabilidade de que, diante de uma interrupção repentina
(falha do sistema, corte de energia, desconexão do dispositivo, etc.) ocorre corrupção de
informações, levando à perda de dados. ao armazenar
entradas de diretório não ordenadas, scripts modificando esta revisão
estrutura permanece atômica: um único setor de 512 bytes pode armazenar
16 entradas FAT básicas, 32 bytes cada.10
Classifique as entradas do diretório com seu conteúdo já na memória
e, em geral, adiar modificações no diretório é muito mais conveniente no caso geral. Isso
também é verdade para excluir arquivos
—A seguir , será abordada a estratégia seguida pelo FAT. Deve-se lembrar que
O FAT foi projetado quando o meio de armazenamento primário era o disco.
flexível, dezenas de vezes mais lento que o disco rígido e com muito menos
confiabilidade.
10Embora no caso de VFAT, as diferentes entradas que compõem um único nome de arquivo
Eles podem ser separados em diferentes setores.
11Este tópico será abordado brevemente, na seção 7.2.4, ao falar sobre as tabelas de alocação de
registros.
Machine Translated by Google
Dado o sucesso do Stacker em seus primeiros anos, a Microsoft anunciou como parte
dos recursos da versão 6.0 do MS-DOS (publicado
em 1993) que incluiria o DoubleSpace, uma tecnologia muito semelhante à do Stacker.
A Microsoft incluiu suporte para DoubleSpace em seus sistemas operacionais.
por sete anos, cobrindo as últimas versões do MS-DOS e as do Windows
95, 98 e Millenium, mas como você já viu, compressão de volume total
apresentava inconvenientes significativos.
Para os novos sistemas de arquivos NTFS , a Microsoft decidiu incluir
um recurso diferente, mais seguro e mais modular: manter o sistema
arquivos rodando normalmente, sem compressão, e habilitar a compressão arquivo por
arquivo de forma transparente para o usuário.
Este esquema permite ao administrador do sistema escolher, por arquivos ou
pastas, quais áreas do sistema de arquivos você deseja armazenar compactado; Está
recurso vem como parte de todos os sistemas operacionais Windows
da versão XP, lançada em 2003.
Embora a compactação transparente por arquivo se mostre muito mais
atraente do que o volume completo, não é uma panacéia e é comum encontrar
recomendações para desativá-lo em fóruns online. Em primeiro lugar,
compactar um arquivo significa que uma pequena alteração pode ter um efeito
muito maior: modificar um bloco pode implicar que o tamanho final do
alteração de dados, o que resultaria na reescrita do arquivo a partir desse ponto
em diante; isso poderia ser mitigado pela inserção de espaços para preservar o espaço
Machine Translated by Google
desduplicação
14Por exemplo, usando o algoritmo SHA-256, que fornece uma probabilidade de colisão de
1 em 2256, confiável o suficiente para que a perda de dados seja muito menos provável do que
falha de disco.
15Os recursos básicos do ZFS serão apresentados na seção C.3.2.
Machine Translated by Google
É claro que, por mais simples que possa parecer a leitura de um arquivo, ler ou
modificar um valor dentro de /proc também atravessa uma série de chamadas de
sistema; que a configuração da memória virtual seja disponibilizada através de algo que
parece ser um arquivo (mas não é) é justamente um caso de abstração para uma
interface consistente e conhecida.
Machine Translated by Google
ximo um espaço que, uma vez salvo, só pode ser aberto em modo somente leitura.
Isso explica porque, ao contrário de qualquer outro meio de armazenamento, ao
gravar um CD-ROM é necessário primeiro preparar uma imagem na qual os arquivos
ocupem suas posições finais, e essa imagem deve ser gravada no disco em uma
única operação.
Particularmente por causa desse segundo ponto, o uso de uma tabela de alocação
de arquivos é muito mais comum – e é exatamente assim que o FAT funciona (na
verdade, essa tabela é o que lhe dá o nome). A tabela de alocação é um mapa dos
clusters, representando cada um deles pelo espaço necessário para armazenar um
ponteiro.
A principal vantagem de usar a atribuição vinculada é que a fragmentação interna
desaparece. 16 Não exigindo mais espaço contíguo para ser pré-alocado, cada arquivo
pode aumentar ou diminuir conforme necessário.
Agora, a alocação vinculada não é apenas mais lenta do que a alocação contígua,
mas também introduz mais sobrecarga administrativa: espaço desperdiçado para
16A fragmentação interna refere-se aqui ao conceito apresentado na seção 5.2.1. O fenômeno
geralmente conhecido como fragmentação refere-se à necessidade de compactação; é muito
diferente, e é apresentado neste esquema: cada arquivo é separado em pequenos fragmentos que
podem acabar espalhados por todo o disco, afetando fortemente o desempenho do
sistema.
Machine Translated by Google
Figura 7.4: Atribuição de arquivos vinculados: diretório com ponteiro apenas para o primeiro
cluster.
maior: ao atribuir o i-node, ele é criado ocupando pelo menos um cluster completo. No
caso de um arquivo pequeno, que cabe em um único cluster, isso representa um
desperdício de 100% de espaço (um cluster para o i-node e outro para os dados);17
para arquivos maiores, o overhead relativo diminui, mas ele sempre permanece mais
alto que o da atribuição vinculada.
Um esquema de alocação indexada fornece maior eficiência de cache do que a
alocação vinculada: embora neste caso seja comum manter uma cópia da tabela de
alocação na memória para maior agilidade, com a alocação indexada será suficiente
armazenar em cache apenas as informações importantes, ou seja, , apenas os arquivos
que são usados em um determinado momento. O mapa de alocação para arquivos e
diretórios que não foram usados recentemente não precisará estar na memória.
17Alguns sistemas de arquivos, como Reiser, BTRFS ou UFS, possuem esquemas de alocação
de subcluster. Essas chamadas enfileiram (caudas) para arquivos muito pequenos e podem localizá-
los dentro de seu mesmo i-node ou compartilhando o mesmo cluster com um deslocamento dentro dele.
Essa prática não foi adotada pelos sistemas de arquivos mais usados devido à sua complexidade.
relativo.
18Esse é um limite muito baixo e foi escolhido apenas para ilustrar o ponto atual.
Machine Translated by Google
com quatro clusters, torna-se necessário estender o i-node com uma lista adicional.
A implementação mais comum desse mecanismo é que, dependendo do tamanho
do arquivo, são usados ponteiros com os níveis de indireção necessários.
com o bloco de indireção simples, e obter sua lista de clusters significa dois
acessos adicionais ao disco.
Com o bloco de dupla indireção, arquivos muito maiores podem ser referenciados:
(100 ÿ 3 + 128 + (128 × 128)) × 4 KB = 66 436 KB ÿ 65 MB . para acessar esses
65 MB, é necessário realizar até 131 acessos ao disco. A partir deste ponto, é
importante que o sistema operacional aloque clusters próximos para os
metadados (e, se possível, para os dados), pois a diferença de tempo de acesso
pode ser muito grande.
Cada entrada do FAT mede qual o comprimento correspondente à sua versão (12,
16 ou 32 bits), e armazena ou o próximo cluster do arquivo, ou um dos valores
especiais descritos na Tabela 7.2.
Vale ressaltar que existe um valor especial para indicar que um cluster possui
setores defeituosos. Isso remonta ao momento histórico da criação da família FAT:
com o meio de armazenamento predominante sendo o disquete, os erros na superfície
eram muito mais frequentes do que são hoje.
Tabela 7.2: Valores especiais que podem ser armazenados pelo FAT; qualquer outro valor indica
o endereço do próximo cluster que faz parte do arquivo ao qual o arquivo pertence
registro em questão.
Na seção 7.1.4, ao introduzir o formato de diretório FAT, foi mencionado que os subdiretórios
são na verdade arquivos de um tipo especial: a
tipo de arquivos estruturados (ver seção 6.2.5), gerenciados pelo sistema operacional. A única
coisa que distingue um diretório de um arquivo normal
é que, na entrada que o descreve em seu diretório pai, o décimo segundo byte de
a entrada (que indica os atributos do arquivo, veja a figura 7.1 e a tabela
7.1) tem o bit quatro definido.
Um diretório é armazenado no disco exatamente como qualquer outro arquivo. Se apenas
um cluster for atribuído e o tamanho do cluster for pequeno
2.048
(2 KB), você pode armazenar apenas 64 entradas ( 32 ) e cada cluster adicional fornecerá
mais 64 bilhetes. E como é tratado como se fosse um arquivo normal,
também estará sujeito à fragmentação: à medida que as entradas são adicionadas ao
diretório, ele vai crescer. Quando chegar a hora, serão necessários clusters adicionais. S
Machine Translated by Google
se um diretório acabar espalhado por todo o disco, isso resultará - como qualquer
outro arquivo – mais lento para ler e trabalhar. Sempre que um arquivo é aberto
dentro de um diretório grande, ou sendo percorrido para abrir algum arquivo em
um subdiretório seu, o sistema terá que procurar todos os seus fragmentos
comprimento do disco.
Diante desses dois aspectos, não se pode perder de vista a idade do sistema FAT.
Outros sistemas de arquivos mais recentes resolveram esse problema usando grupos de
alocação: os diretórios do sistema estão espalhados
em todo o volume, e tentativas são feitas para colocar arquivos perto dos diretórios
de onde são encaminhados.19 Isso tem como consequência que os arquivos
que apresentem proximidade temática (que pertençam ao mesmo usuário ou projeto,
ou que por algum motivo estão na mesma parte da hierarquia do sistema)
eles estão localizados no disco próximos uns dos outros (e próximos de seus diretórios). S
Como eles provavelmente serão empregados mais ou menos ao mesmo tempo, isso
reduz as distâncias que os cabeçotes percorrerão. Além disso, ao divulgar
os arquivos, o espaço livre também é melhor distribuído, então o efeito
de alterações de tamanho de arquivo em termos de fragmentação
limita aqueles que fazem parte do mesmo bloco de alocação.
Sistemas de arquivos estruturados seguindo essa lógica de
grupos de alocação não impedem a fragmentação, mas a maioria
suas consequências negativas. Para manter esse esquema funcionando de maneira
confiável, eles exigem disponibilidade de espaço — quando ocorre a saturação, essa
estratégia perde eficácia. Para evitar que isso aconteça, é
muito comum em sistemas Unix que haja uma certa porcentagem (normalmente perto de
5%) do disco disponível apenas para o administrador — em
Se o sistema de arquivos exceder 95%, os usuários não poderão gravar nele, mas o
administrador poderá realizar tarefas de manutenção para
retornar ao alcance operacional.
19É claro que, no caso de arquivos que são links físicos de vários diretórios, você pode
den estar localizado apenas perto de um deles.
Machine Translated by Google
Cadeias perdidas ou órfãs (clusters perdidos) Quando há espaço marcado como ocupado
na tabela de alocação, mas não há entrada de
ao fazer referência a ele, o espaço é efetivamente bloqueado e, do ponto de vista
do usuário, inutilizável; além disso, essas strings podem ser um arquivo que o
usuário ainda precisa.
Este problema era tão prevalente nas versões históricas do Unix que
ainda hoje é muito comum ter um diretório chamado lost+found in
a raiz de todos os sistemas de arquivos, onde fsck (o equivalente em
CHKDSK Unix) criou links para arquivos perdidos devido à corrupção de arquivos.
metadados.
20Não os únicos. Estes e mais são descritos brevemente na página de manual para
dosfsck (ver seção 7.4.3).
Machine Translated by Google
Essas operações são sempre processos intensivos e complexos. Como eles exigem
uma revisão detalhada de todo o volume, geralmente duram de dezenas de minutos a
horas. Além disso, para cumprir sua missão
eles devem ser executados com acesso exclusivo ao volume a ser verificado, o que
normalmente significa colocar todo o sistema em modo de manutenção.
Dado o alto custo de verificação de todo o volume, na década
Na década de 1990, surgiram vários esquemas com o objetivo de evitar a necessidade de
invocar estes programas de verificação: atualizações suaves, sistemas
sistemas de arquivos de log e sistemas de arquivos estruturados em log.
21Ou seja, o sucesso de alguma operação de arquivo não é reportado ao usuário até que seja
Concluído e gravado em disco.
22 Uma tarefa que não requer intervenção manual do operador e é realizada
automaticamente como parte das tarefas de manutenção do sistema.
Machine Translated by Google
Este esquema tem sua origem no campo de bancos de dados distribuídos. Consiste
em separar uma área do volume e dedicá-la a manter um log
(diário) com todas as transações de metadados.23 Uma transação é um conjunto de
operações que devem aparecer como atômicas.
O log geralmente é implementado como uma lista circular encadeada, com
um ponteiro indicando a última operação bem-sucedida.
Periodicamente, ou quando a carga de transferência de dados diminui, o sistema
verifica quais operações estavam pendentes e avança no log,
marcando cada uma das transações à medida que você as faz.
23Existem implementações que também registram os dados no log, mas tanto pelo tamanho
que requer quanto ao efeito na velocidade que significa, são pouco utilizados. Seção 7.3.5
apresenta uma ideia que ele elabora em um blog que armazena dados e metadados.
Machine Translated by Google
7.4. Treinamento
7.4.1. Perguntas de autoavaliação
1. Suponha o seguinte sistema de arquivos baseado em alocação indexada.
Cada cluster tem 4096 bytes de comprimento e o ponteiro para um bloco requer 32 bytes.
bits (4 bytes). Dados os metadados a serem armazenados no i-node
do arquivo, dentro do i-node principal você pode armazenar 24 ponteiros
direto, e está considerando permitir a indireção simples e dupla.
Qual é o tamanho máximo de arquivo que este sistema será capaz de lidar
de arquivos?
Reiser tornou-se popular por volta de 2001, mas seu desenvolvimento parou, e esse
recurso específico só foi adotado por
alguns sistemas de arquivos (UFS2 e BTRFS). Que problemas você encontra com a
abordagem pigtail?
Como esse mecanismo funciona com um pouco mais de detalhes, quão confiável é?
(ou seja, é recomendado para uso já em sistemas de produção?)
resultados eficientes com os dados normalmente encontrados, o que acontece
com o espaço livre informado ao sistema, não há risco de overcommit? Em relação ao
seu modo de operação, o que
diferenças têm a desduplicação online e a desduplicação offline
(desduplicação online, desduplicação offline), como funciona o hash criptográfico?
E, em geral, há momentos em que esse mecanismo é insuficiente,
que alternativas existem?
T. J. Killian (1984). Processos como Arquivos. In: Associação USENIX. Salt Lake City.
URL: http://lucasvr.gobolinux.org/etc/Killian84-
Procfs-USENIX.pdf
Peter Clark (2001). Começando a ver a luz - FAT16, Tabela de alocação de arquivos:
16 bits. URL: http://www.beginningtoseethelight.org/fat16)
Marshall K. McKusick et al. (agosto de 1984). “Um sistema de arquivos rápido para
Unix". In: ACM Trans. Computar. Sistema 2.3, pág. 181-197. ISSN: 0734-2071.
DOI: 10.1145/989.990. URL: http://doi.acm.org/10.1145/
989.990
Jonathan Corbet (2012a). Um ataque DoS baseado em hash no Btrfs. URL: http:
//lwn.net/Articles/529077/,