Baixe o app para aproveitar ainda mais
Prévia do material em texto
71 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Unidade IV 7 SISTEMAS DE ARQUIVOS 7.1 Introdução a sistemas de arquivos Em linhas gerais, no ambiente computacional, espera‑se que dados inseridos na entrada saiam como produto final, informação processada. Essas informações podem ser compreendidas como textos, planilhas, figuras, filmes etc. As informações que podem ocupar de alguns bytes a milhares de milhões de bytes devem ser armazenadas em dispositivos não voláteis, ou seja, não podem ser perdidas com o desligamento do computador e podem ser acessadas por múltiplos processos de forma concorrente. As informações são armazenadas tipicamente em disco e o armazenamento resume‑se em sequências lineares de blocos de tamanho fixo que suportam duas operações: busca do bloco k e escrita no bloco k, surgindo, portanto, o conceito de arquivo. 7.1.1 Arquivos Podemos definir um arquivo como sendo um conjunto de dados armazenados em um dispositivo físico não volátil, com um nome e/ou referência que permita sua localização futura.1 Arquivos podem ter diversos formatos, desde um simples arquivo texto ASCII com alguns poucos bytes, até mesmo vídeos com vários megabytes ou gibabytes em diversos formatos. Um sistema de armazenamento de arquivos pode conter milhões de arquivos que são organizados em estruturas hierárquicas denominadas diretórios. A estrutura e a organização física e lógica dos arquivos e diretórios dentro de um dispositivo de armazenamento são denominadas de sistema de arquivos.2 7.1.2 Atributos Cada arquivo é diferenciado por um conjunto de atributos. Tipicamente, temos alguns atributos mais usados: • Nome: uma sequência de caracteres para identificar de tal forma que um ser humano, ao vê‑lo na tela, consiga identificá‑lo. Exemplo: relatorio.doc. 1 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. 2 Idem. Fabi Realce Fabi Realce Fabi Realce Fabi Realce Fabi Realce Fabi Realce Fabi Realce 72 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 • Data: é muito útil no que tange ao gerenciamento do ambiente. Além de ajudar o usuário a saber quando um arquivo foi criado, pode também controlar a data e a hora do último acesso, da última modificação do conteúdo e até mesmo da última alteração de outro atributo, como o nome do arquivo, por exemplo. • Tipo: indica se o formato do arquivo é áudio, vídeo, imagem, texto ou outro. O sistema de arquivos do Windows e outros usam a extensão, que é parte do nome, para indicar o tipo do arquivo. Exemplo: “.doc” no arquivo com o nome “relatorio.doc” refere‑se a um arquivo de texto (abreviação de document). • Tamanho: esse atributo determina quanto de espaço em bytes (1 byte = 8 bits) ou registros. Exemplo: relatorio.doc 906.085 bytes. • Proprietário: atualmente, com os sistemas em rede e multiusuários, cada arquivo tem um proprietário, que deve estar corretamente identificado – em alguns casos o próprio sistema é o proprietário do arquivo e por isso nenhum usuário deveria alterá‑lo. • Permissões de acesso: determina qual usuário têm acesso ao arquivo e quais permissões são atribuídas a cada usuário (leitura, escrita, remoção etc.). — Um usuário de sistema Unix chamado root, na teoria, deveria ter acesso total ao arquivo, enquanto um usuário ou um processo que só deve consultar um arquivo de registros de log deveria ter acesso só de leitura. • Localização: esse atributo indica o dispositivo físico onde o arquivo se encontra e da posição do arquivo dentro do mesmo. Para o usuário do sistema a localização do arquivo é demonstrada como uma estrutura hierárquica que parte da raiz que é o pai de todos os demais repositórios filhos. 7.1.3 Estrutura de arquivo Os arquivos podem ser estruturados de várias formas. A Figura 40 demonstra três possibilidades comuns, sendo a Figura 40a uma sequência de estrutura de bytes. Para os sistemas operacionais Windows e Unix, a estrutura de um arquivo nada mais é que uma sequência desestruturada de bytes. Isso oferece a máxima flexibilidade, tendo em vista que os programas dos usuários podem pôr qualquer coisa que seja necessária em seus arquivos e ter os nomes que mais forem convenientes.3 Na Figura 40b, é demonstrada uma forma estruturada. Nessa estrutura, o arquivo é uma sequência de registros de tamanho fixo, cada um com alguma estrutura interna. A principal característica dessa 3 Disponível em: <http://www.ufpi.br/subsiteFiles/eml/arquivos/files/SO/SO_Livro.pdf>. Acesso em: 8 jun. 2011. Fabi Realce Fabi Realce Fabi Realce Fabi Realce Fabi Realce 73 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 estrutura é que a operação de leitura retorna um registro e a operação de escrita sobrepõe ou anexa um registro, entretanto, esse modelo não é mais aplicado nos sistemas atuais.4 Na organização demonstrada na Figura 40c, um arquivo é constituído de uma árvore de registros, cada uma contendo um campo‑chave em uma posição fixa no registro. Para que uma chave específica seja buscada de forma mais rápida, a árvore é ordenada pelo campo‑chave. O sistema operacional decide onde colocar novos registros no arquivo. Esse tipo de arquivo é bem diferente dos fluxos de bytes desestruturados que são usados pelo Windows e Unix, porém são ainda muito usados para alguns processamentos de dados comerciais. 1 byte 1 registro a. b. c. Elefante Jacaré Gato Lagarto Cobra Leão Coelho Cavalo Tartaruga Figura 40 – Estrutura de arquivos 7.1.4 Operações Os aplicativos e o sistema operacional armazenam e recuperam dados dos arquivos e por meio de um conjunto de operações fazem uso deles. As operações básicas envolvendo arquivos são: • Criar: a criação de um novo arquivo demanda a alocação de espaço no dispositivo de armazenamento e a definição de seus atributos (nome, localização, proprietário, permissões de acesso etc.). • Ler: permite transferir dados presentes no arquivo para uma área de memória da aplicação e, se necessário, enviar para um dispositivo de saída como monitor, impressora e outros. • Abrir: antes que um aplicativo possa ler ou escrever dados em um arquivo, este deve solicitar ao sistema operacional que o arquivo seja aberto. O sistema irá, primeiro, verificar se o arquivo existe, segundo, se as 4 Idem. Fabi Realce 74 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 permissões associadas permitem acesso ao arquivo, terceiro, localizar seu conteúdo no dispositivo de armazenamento, então criar uma referência para ele na memória. • Escrever: essa operação permite transferir dados da memória do aplicativo para o arquivo armazenado no dispositivo físico; os novos dados podem ser adicionados no final do arquivo ou sobrescrever dados já existentes. • Fechar: ao concluir o uso do arquivo, a aplicação deve informar ao sistema operacional que esse arquivo não é mais necessário, a fim de liberar as estruturas de gerência do arquivo na memória do núcleo. • Mudar atributos: usado para modificar outras características do arquivo, como nome, proprietário, localização, permissões etc. • Remover: elimina o arquivo do dispositivo, descartando seus dados e liberando o espaço ocupado por ele. Além dessas operações básicas, outras operações podem ser definidas, como copiar, mover ou renomear arquivos. Entretanto, essas operações geralmente podem ser construídas usando as operações básicas.5 7.2 Uso de arquivos Os processos podem ler e escrever dados em arquivos de forma não volátil. Uma interface de acesso tipicamente composta por uma representação lógica de cada arquivo contido no dispositivo de armazenamento é necessária para que um processo use um arquivo. Por meio dessa interface, os processos podem, entre outrasopções, localizar arquivos no disco, ler e modificar seu conteúdo. 7.2.1 Abertura de arquivo Conforme demonstrado na sequência a seguir, é necessário que o núcleo do sistema operacional execute algumas operações para que seja possível abrir um arquivo, escrever novos dados ou modificar os existentes: 1. Usando o nome do arquivo e o caminho de acesso, localizar o arquivo no dispositivo físico. 2. Verificar se a aplicação tem permissão para usar o arquivo da forma desejada (leitura e/ou escrita). 5 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Fabi Realce Fabi Realce 75 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 3. Criar uma estrutura na memória do núcleo para representar o arquivo aberto. 4. Para fins de gerência, inserir uma referência a essa estrutura na lista de arquivos abertos mantida pelo sistema. 5. Devolver à aplicação uma referência a essa estrutura para ser usada nos acessos subsequentes ao arquivo recém‑aberto. Assim que estiver concluída a abertura do arquivo, o processo solicitante recebe do núcleo do sistema operacional uma referência para o arquivo recém‑aberto. Assim que o processo tiver terminado de usar um arquivo, ele deve solicitar ao núcleo o seu fechamento, que implica em concluir as operações de escrita eventualmente pendentes e remover da memória do núcleo as estruturas de gerência criadas durante sua abertura. As referências a arquivos abertos usadas pelas aplicações dependem da linguagem de programação utilizada para construí‑las. (...) Cada sistema operacional tem sua própria convenção para a representação de arquivos abertos. Por exemplo, em sistemas Windows, os arquivos abertos por um processo são representados pelo núcleo por referências de arquivos (file handles), que são estruturas de dados criadas pelo núcleo para representar cada arquivo aberto. Por outro lado, em sistemas Unix, os arquivos abertos por um processo são representados por descritores de arquivos (file descriptors). Um descritor de arquivo aberto é um número inteiro não negativo, usado como índice em uma tabela que relaciona os arquivos abertos pelo processo, mantida pelo núcleo. Dessa forma, cabe às bibliotecas e ao suporte de execução de cada linguagem de programação mapear a representação de arquivo aberto fornecida pelo núcleo do sistema operacional subjacente na referência de arquivo aberto usada por aquela linguagem. Esse mapeamento é necessário para garantir que as aplicações que usam arquivos (ou seja, quase todas elas) sejam portáveis entre sistemas operacionais distintos.6 7.2.2 Formas de acesso Assim que o arquivo encontra‑se aberto, a aplicação pode ler os dados contidos nele, modificando ou escrevendo novas linhas. Existem várias formas de se ler ou escrever dados em um arquivo, que dependem da estrutura interna de cada arquivo. Considerando arquivos como uma sequência de bytes, três formas de acesso são usuais: 1. Acesso sequencial. 6 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. Fabi Realce Fabi Realce Fabi Realce 76 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 2. Acesso direto (ou acesso aleatório). 3. Acesso indexado. Acesso sequencial: os dados são lidos e/ou escritos em sequência, do início ao final do arquivo. É definido um ponteiro de acesso para cada arquivo aberto por uma aplicação que inicialmente aponta para a primeira posição do arquivo. A cada leitura ou escrita, esse ponteiro é incrementado e passa a indicar a posição da próxima leitura ou escrita. Quando esse ponteiro atinge o final do arquivo, as leituras não são mais possíveis, entretanto, as novas escritas são. A chegada do ponteiro ao final do arquivo é normalmente sinalizada ao processo por meio de um flag de fim de arquivo (EoF – End‑of‑File). Arquivos sequenciais eram eficientes quando o meio de armazenamento era a fita magnética. Acesso direto (ou aleatório): é possível indicar a posição no arquivo onde cada leitura ou escrita deve acontecer sem a necessidade de um ponteiro. Por isso, caso se conheça previamente a posição de um determinado dado no arquivo, não é preciso percorrê‑lo sequencialmente até encontrá‑lo. Esse tipo de acesso é importante para gerenciadores de bancos de dados e aplicações com a mesma característica, que precisam acessar rapidamente as posições do arquivo correspondentes aos registros desejados em uma operação. “Na prática, a maioria dos sistemas operacionais usa o acesso sequencial como modo básico de operação, mas oferece operações para mudar a posição do ponteiro do arquivo caso necessário, o que permite então o acesso direto a qualquer registro do arquivo.” No Windows e Unix é usada uma operação especial chamada seek que é fornecida para estabelecer a posição atual. Após a operação seek, o arquivo pode ser lido sequencialmente a partir de sua posição atual. Acesso indexado: é um método de acesso mais sofisticado, que tem como princípio o acesso direto, também conhecido como acesso indexado ou acesso por chave. A estrutura interna do arquivo pode ser vista como um conjunto de pares chave/valor que deve possuir uma área de índice onde existam ponteiros para os diversos registros, permitindo que sempre que uma aplicação desejar acessar um registro, então deverá ser especificado uma chave por meio da qual o sistema pesquisará o ponteiro correspondente na área de índice e, portanto, é realizado um acesso direto ao registro desejado. O núcleo do sistema operacional implanta os mecanismos de acesso e indexação do arquivo, o armazenamento e a busca de dados nesse tipo de arquivo é tipicamente muito rápido e em aplicações mais simples dispensa o uso de bancos de dados.7 7 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. Fabi Realce Fabi Realce Fabi Realce 77 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 7.3 Compartilhamentos Em um sistema multitarefas e em redes, frequentemente se tem arquivos sendo acessados por mais de um processo ou por mais de um usuário. O acesso simultâneo a recursos compartilhados pode gerar condições de disputa (race conditions), levando à inconsistência de dados e outros problemas. A possibilidade de escritas e leituras simultâneas tem de ser prevista e tratada com muito planejamento e controle de acesso desses elementos compartilhados.8 7.3.1 Travas em arquivos Por meio de uma ou mais travas (locks) aplicadas aos arquivos abertos, tipicamente os sistemas operacionais oferecem algum mecanismo de sincronização para acesso a arquivos. A sincronização pode ser feita aplicando‑se a trava no arquivo inteiro ou somente em um trecho específico. Isso permitirá que dois ou mais processos possam trabalhar em partes distintas de um arquivo sem necessidade de sincronização entre eles. “As travas oferecidas pelo sistema operacional podem ser obrigatórias (mandatory locks) ou recomendadas (advisory locks)”. • Travas obrigatórias: são impostas pelo núcleo do sistema operacional de forma compulsória, de modo que se um processo obtiver a trava do arquivo, então outros processos que solicitarem acesso ao arquivo serão suspensos até que a respectiva trava seja liberada. • Travas recomendadas: não são impostas pelo núcleo do sistema operacional. Portanto, um processo pode acessar um arquivo mesmo sem ter sua trava e caso sejam usadas travas recomendadas, fica a cargo de o programador implantar em suas aplicações os controles de trava necessários para impedir acessos conflitantes aos arquivos. As travas sobre arquivos também podem ser exclusivas ou compartilhadas. • Trava exclusiva: também chamada trava de escrita, garante acesso exclusivo ao arquivo, portanto,enquanto uma trava exclusiva estiver ativa, nenhum outro processo poderá obter uma trava sobre aquele arquivo. • Trava compartilhada (ou trava de leitura): impede outros processos de criar travas exclusivas sobre o arquivo, mas permite a existência de outras travas compartilhadas. 8 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. Fabi Realce Fabi Realce Fabi Realce Fabi Realce 78 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Em conjunto, as travas exclusivas e compartilhadas implementam um modelo de sincronização leitores/escritores, no qual os leitores acessam arquivos, usando travas compartilhadas e os escritores o fazem, usando travas exclusivas. Geralmente, as travas de arquivos são atribuídas a processos. Dessa forma, um processo só pode possuir um tipo de trava sobre um mesmo arquivo e todas as travas são liberadas quando o processo fecha o arquivo ou finaliza sua execução. No sistema operacional Unix, a manipulação de travas em arquivos é feita por meio das chamadas de sistema flock e fcntl. Esse sistema oferece por default travas recomendadas exclusivas ou compartilhadas sobre arquivos ou trechos de arquivos. Os sistemas Windows oferecem por default travas obrigatórias sobre arquivos, que podem ser exclusivas ou compartilhadas, ou travas recomendadas sobre trechos de arquivos.9 7.3.2 Semântica de trava de acesso Quando um arquivo é usado por um único processo, o funcionamento das operações de leitura e escrita é simples e claro. Dessa forma, quando um dado é escrito no arquivo, ele está prontamente disponível para leitura. No entanto, arquivos podem ser abertos por vários processos simultaneamente e os dados escritos por um processo podem não estar prontamente disponíveis aos demais processos que estão lendo aquele arquivo. Isso ocorre porque as memórias secundárias em disco rígido são lentas em comparação com a memória principal, levando os sistemas operacionais a usar buffers intermediários para acumular os dados que deverão ser escritos/ manipulados, otimizando o acesso aos discos. A forma como os dados escritos por um processo é notada pelos demais processos que também abriram um determinado arquivo é chamada de semântica de compartilhamento. Entre outras semânticas possíveis, as mais usuais são: Semântica Unix: toda modificação em um arquivo é imediatamente visível a todos os processos que mantêm o arquivo aberto, existindo também a possibilidade de vários processos compartilharem o mesmo ponteiro de posicionamento do arquivo. Esse tipo de semântica é comumente aplicada em sistemas de arquivos locais, ou seja, para acesso a arquivos nos dispositivos locais. Semântica de sessão: considera que cada processo usa um arquivo em uma sessão, iniciando com a abertura do arquivo e terminando com o seu 9 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. Fabi Realce Fabi Realce Fabi Realce Fabi Realce 79 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 fechamento. Modificações em um arquivo feitas em uma sessão somente são visíveis na mesma sessão e pelas sessões que iniciarem depois do encerramento da mesma, ou seja, depois que o processo fechar o arquivo. Sessões concorrentes de acesso a um arquivo compartilhado podem ver conteúdos distintos para o mesmo arquivo. Essa semântica é normalmente aplicada a sistemas de arquivos de rede, usados para acesso a arquivos em outros computadores. Semântica imutável: se um arquivo pode ser compartilhado por vários processos, ele é marcado como imutável. Dessa forma, seu conteúdo não pode ser modificado. É a forma mais trivial que garante a consistência do conteúdo do arquivo entre os processos que compartilham seu acesso, portanto, usada em alguns sistemas de arquivos distribuídos.10 7.4 Introdução a diretórios Os diretórios ajudam a controlar e organizar os arquivos. Geralmente, os sistemas de arquivos possuem diretórios ou pastas, que em muitos sistemas também são arquivos.11 Nesta seção, discutiremos os diretórios, suas propriedades, organizações e operações. 7.4.1 Organização de volumes Diversos dispositivos de armazenamento estão disponíveis no mercado, que podem ser discos rígidos, discos óticos, memória flash etc. Um disco rígido pode ser visto basicamente como um grande vetor de blocos de bytes. Esses blocos de dados, também denominados setores, têm tamanho fixo geralmente entre 512 e 4.096 bytes (4 K a 32 K) e são numerados sequencialmente. As operações de leitura e escrita de dados nos discos rígidos são feitas bloco a bloco, por essa razão esses dispositivos são chamados de dispositivos de blocos (block devices). Em um computador no padrão PC, o espaço de armazenamento de cada dispositivo é dividido em uma pequena área inicial de configuração e uma ou mais partições, que podem ser vistas como espaços independentes. A área de configuração é denominada MBR – Master Boot Record, e contém uma tabela de partições com informações sobre o particionamento do dispositivo. Além disso, contém também um pequeno código executável, usado no processo de inicialização do sistema operacional. No início de cada partição geralmente há um bloco reservado, utilizado para a descrição do conteúdo daquela partição 10 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. 11 Disponível em: <http://www.ufpi.br/subsiteFiles/eml/arquivos/files/SO/SO_Livro.pdf>. Acesso em: 8 jun. 2011. Fabi Realce Fabi Realce 80 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 e para armazenar o código de lançamento do sistema operacional, se for uma partição inicializável (bootable partition). Esse bloco reservado é denominado bloco de inicialização ou VBR – Volume Boot Record. O restante dos blocos da partição está disponível para o armazenamento de arquivos. Disco total Tabela de partição Partições do disco MBR Bloco de inicialização Superbloco Gerenciamento de espaço livre I‑Nodes Diretório raiz Arquivos e diretórios Figura 41 – Exemplo de organização para um sistema de arquivos A Figura 41 ilustra a organização básica do espaço de armazenamento em um dispositivo de blocos típico: um disco rígido. Cada partição deve ser formatada, ou seja, estruturada para conter um sistema de arquivos, que pode conter arquivos, diretório, atalhos e outras entradas. Cada dispositivo ou partição devidamente preparada e formatada para receber um sistema de arquivos é designado como um volume.12 7.4.2 Diretórios O sistema organiza logicamente os diversos arquivos contidos em um disco numa estrutura denominada diretórios. O diretório é uma estrutura de dados que contém entradas associadas aos arquivos, na qual cada entrada armazena informações como localização física, nome e demais atributos.13 Embora o sistema operacional possa tratar com facilidade da enorme quantia de arquivos existentes em um sistema de arquivos, essa tarefa está bem distante de ser trivial para os usuários. Identificar e localizar um arquivo específico em meio a milhões de outros arquivos de forma rápida e direta pode ser o mesmo que procurar uma “agulha num palheiro”. Para permitir a organização de arquivos dentro de uma partição, são usados diretórios. Um diretório, também chamado de pasta (folder), representa 12 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. 13 Disponível em: <http://www.scribd.com/doc/5566097/10GERENCIA‑DO‑SISTEMA‑DE‑ARQUIVOS>. Acesso em: 8 jun. 2011. 81 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 um contêiner de informações, que pode conterarquivos ou mesmo outros diretórios. Da mesma forma que os arquivos, diretórios têm nome e atributos, que são usados na localização e acesso aos arquivos neles contidos. Cada espaço de armazenamento possui ao menos um diretório principal, denominado diretório raiz (root directory). Em sistemas de arquivos mais antigos e simples, o diretório raiz de um volume estava definido em seus blocos de inicialização, normalmente reservados para informações de gerência. Todavia, como o número de blocos reservados era pequeno e fixo, o número de entradas no diretório raiz era limitado. Nos sistemas mais recentes, um registro específico dentro dos blocos de inicialização aponta para a posição do diretório raiz dentro do sistema de arquivos, permitindo que este tenha um número muito maior de entradas. O uso de diretórios permite construir uma estrutura hierárquica (em árvore) de armazenamento dentro de um volume, sobre a qual os arquivos são distribuídos. A Figura 42 representa uma parte da árvore de diretórios típica de um sistema Linux, cuja estrutura é definida nas normas Filesystem Hierarchy.14 bin etc home lib proc root tmp usr var opt sgml skel X11 / — X11R6 bin include lib local man share src tmp adm cache cron lib local log mail run spoll at cron lpd mail news smail bin lib include X11 X11 asm linux g++ X11 gcc‑lib groff uucp bin doc etc include lib man share doc games info locale man zoneinfo Figura 42 – Estrutura de diretórios típica de um sistema Linux 14 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. 82 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 7.4.3 Sistema de diretórios em nível único O nível mais simples de uma estrutura de diretórios é chamado de nível único (single‑level directory). Nessa estrutura, existe somente um único diretório contendo todos os arquivos do disco. Esse modelo é bastante limitado, já que não permite que usuários criem arquivos com o mesmo nome, o que ocasionaria um conflito no acesso aos arquivos.15 O primeiro supercomputador da história foi um CDC 6600 e usava um sistema de diretório único. A Figura 43 ilustra esse sistema. Diretório raiz Arquivo 1 Arquivo 2 Arquivo 3 Arquivo 4 Arquivo 5 Figura 43 – Sistema de diretório em nível único contendo cinco arquivos As vantagens desse esquema de diretório em nível único são a simplicidade e a capacidade de localizar os arquivos rapidamente – tendo em vista que todos os arquivos estão no mesmo local e não podemos ter nomes repetidos. 7.4.4 Sistema de diretórios hierárquico O sistema de nível único é bastante limitado demandando uma evolução do modelo, então foi implantada uma estrutura na qual para cada usuário existiria um diretório particular denominado Diretório de Arquivo do Usuário (UDF – User File Directory) conhecido como sistema de diretório em dois níveis. Pela perspectiva do usuário, a organização dos seus arquivos em um único diretório não permite uma organização adequada. A extensão do modelo de dois níveis para um de múltiplos níveis permitiu que os arquivos fossem logicamente melhor organizados. Esse novo modelo, chamado estrutura de diretórios em árvore (tree‑structured directory), é adotado pela maioria dos sistemas.16 Com essa estratégia, os usuários do sistema com permissão adequada podem criar tantos diretórios quanto necessário para agrupar os arquivos de uma maneira natural. Nos servidores em redes, cada usuário geralmente tem o seu diretório raiz para criar a sua própria hierarquia. 15 Disponível em: <http://www.scribd.com/doc/5566097/10GERENCIA‑DO‑SISTEMA‑DE‑ARQUIVOS>. 16 Idem. 83 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 propostaV1 propostaV2 propostaV3 propostaV4 propostas relatorios usuario1 usuario2 usuario3 Diretório raiz Figura 44 – Sistema hierárquico de diretórios A estratégia é mostrada na Figura 44, em que cada diretório, com nomes de usuario1, usuario2 e usuario3 contidos na raiz, pertence a um usuário diferente. O “usuário um” criou um subdiretório para propostas e quatro arquivos de propostas com versões diferentes; o “usuário dois” não criou nada até o momento e o “usuário três” criou um diretório para relatórios, porém não criou nenhum arquivo. A possibilidade de cada usuário criar um número arbitrário de subdiretórios proporciona uma ferramenta poderosa de estruturação dos trabalhos de cada usuário. A grande maioria dos sistemas de arquivos modernos é organizada dessa forma. 7.5 Gerenciamento e otimização de sistemas de arquivos Da mesma forma que qualquer outro componente do sistema, existe um abismo entre colocar um sistema de arquivos para funcionar e fazê‑los funcionar da forma eficaz ou pelo menos mais eficiente possível. Nas seções a seguir, serão detalhadas algumas questões relacionadas ao gerenciamento de discos. 7.5.1 Gerenciamento do espaço em disco Geralmente, os arquivos são armazenados em discos rígidos, fazendo com que os projetistas de sistemas despendam boa parte de suas energias no gerenciamento de espaço em disco. Existem duas estratégias gerais para armazenar um arquivo e n bytes: 1. Alocação de n bytes consecutivos de espaço em disco. 2. Divisão em vários blocos não necessariamente juntos. Na primeira opção, temos um problema que ocorre quando o arquivo cresce, portanto, na maioria dos casos, ele deverá ser movido para outra parte do disco. Com isso, quase a totalidade dos sistemas de arquivos dividem os arquivos em blocos de tamanho fixo e que não necessitam ser adjacentes. 84 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Tamanho do bloco Nessa segunda estratégia, temos uma questão fundamental que é saber qual deverá ser o tamanho de cada bloco. Pelo fato de os discos serem organizados por setores, trilhas e cilindros, temos que ter em mente que a decisão errada pode comprometer muito a capacidade do ambiente. Uma grande unidade de alocação, como um cilindro inteiro, quer dizer que mesmo um arquivo de 1 byte ocupará um cilindro todo, desperdiçando um espaço significativo do disco. Por outro lado, um tamanho muito pequeno de bloco quer dizer que os arquivos ocuparão mais de um bloco e, com isso, demandarão múltiplas buscas e atrasos de rotação para serem lidos, reduzindo significativamente o desempenho do sistema. Monitoração dos blocos livres Após definido o tamanho do bloco, o próximo requerimento é monitorar os blocos livres. São usados três métodos para monitoração dos blocos livres: 1. Lista de blocos livres – representada na Figura 45a – usa‑se uma lista encadeada de blocos com cada bloco contendo tantos blocos livres quanto couberem nele. A abordagem de lista de blocos livres pode ser implantada de várias formas. Na forma mais simples, cada bloco livre contém um ponteiro para o próximo bloco livre do disco. Apesar de simples, essa abordagem é pouco eficiente por exigir um acesso a disco para cada bloco livre requisitado.17 É importante destacar que blocos livres são blocos que não estão em branco. Ficam contidas, nesses blocos livres, informações que o sistema operacional armazena para mapear o espaço livre. Se pegarmos como base que cada bloco possui um tamanho de 1 KB e um ponteiro tem tamanho de 32 bits, então em um bloco livre temos 255 ponteiros para os próximos blocos livres do disco, sendo que uma entrada é reservada ao ponteiro para o bloco seguinte. Essa solução leva em consideração que blocos contíguos são, geralmente, alocados ou liberados simultaneamente. Dessa forma, o disco é determinado como um conjunto de segmentos de blocos livres. Esse conceito define que é possível manter uma tabela com o endereço do primeiro bloco de cada segmento e o número de blocos livres contíguos que se seguem. Essa técnica de gerência de espaço livre é conhecida como tabela deblocos livres. 2. Mapa de bits – representado na Figura 45b – Cada entrada na tabela é associada a um bloco do disco representado por um bit, podendo assumir valor igual a 0 (indicando bloco livre) ou 1 (indicando bloco alocado). O principal problema é o excessivo gasto de memória, já que para cada bloco do disco deve existir uma entrada na tabela.18 17 Disponível em: <http://www.scribd.com/doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>. Acesso em: 8 jun. 2011. 18 Disponível em: <http://www.scribd.com/doc/5566097/10GERENCIA‑DO‑SISTEMA‑DE‑ARQUIVOS>. Acesso em: 8 jun. 2011. 85 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 42 136 210 97 41 63 21 48 262 310 516 230 162 612 342 214 160 664 216 320 180 482 86 234 897 422 140 223 223 160 126 142 141 1001101101101100 0110110111110111 1010110110110110 0110110110111011 1110111011101111 1101101010001111 0000111011010111 1011101101101111 1100100011101111 0111011101110111 1101111101110111 Blocos de disco livres: 16, 17, 18 Mapa de bit4 KB de blocos de disco pode suportar 256 números de blocos de disco a. b. Figura 45a – Lista de blocos livres; Figura 45b – Mapa de bits 7.5.2 Cotas de utilização de disco No intuito de conter o uso exacerbado do espaço dos discos rígidos, os sistemas operacionais multiusuários oferecem um mecanismo para impor cotas de utilização de disco. Essa importante ferramenta permite que os administradores de redes não sejam surpreendidos por falta de disco de forma abrupta. O sistema de cota pode ser implantado para avisar ao administrador quando um threshold19 é atingido abruptamente. Geralmente, quando não há uma política bem definida no que diz respeito ao uso dos recursos computacionais, os usuários podem gravar vários tipos de arquivos que não são necessariamente pertinentes ao trabalho corporativo que deveria estar desenvolvendo. O serviço de cota pode ser configurado para somente avisar o administrador de que um determinado usuário, ou múltiplos, está atingindo ou já ultrapassou a cota estabelecida, entretanto, nesse caso, nenhuma ação automática negando novos consumos será tomada. A outra forma é definindo não somente o aviso, mas também a ação automática de proibição do consumo de espaço em disco superior à cota determinada previamente. Na Figura 46, é demonstrada a tela de configuração de cota no Windows Vista. Observação Note que a configuração estabelecida foi de 1.000 kbytes, porém, dependendo da quantidade total de disco disponível e necessário, poderíamos estar configurando múltiplos mbytes, gbytes, pbytes ou até mesmo ebytes. Acontece da mesma forma para o controle de quando o sistema receberá uma nova entrada de log. 19 Threshold: ponto em que um estímulo é exatamente suficiente para ser percebido ou produzir uma resposta. 86 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Figura 46 – Exemplo da tela de configuração de cota no Windows Vista Funcionamento de cota • Em uma tabela alocada na memória principal estão contidos os atributos de todos os arquivos que estão abertos no sistema. • Toda vez que um usuário abre um arquivo, o atributo de determinado proprietário do arquivo passa a fazer parte dessa tabela de controle dos arquivos abertos versus proprietário. • Qualquer acréscimo no tamanho do arquivo será proporcionalmente decrescido à quantidade restante de cota disponível para o usuário do sistema. • Uma segunda tabela registra as informações de cota para cada usuário que tenha algum arquivo aberto. 87 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 • Sempre que um bloco é adicionado a um arquivo, o número total de blocos é incrementado no controle de cotas do usuário, e os limites flexíveis e estritos são checados. • O limite flexível permite que um usuário exceda o treashold previamente estabelecido, entretanto o usuário só terá essa facilidade durante uma sessão. Por exemplo, se após editar uma apresentação em PowerPoint adicionando várias figuras e textos, o usuário tentar salvá‑la, o limite flexível irá deixar que o usuário grave seu arquivo sem risco de perdê‑lo. Porém, se após fechar os arquivos abertos, o usuário tentar fazer isso novamente, uma mensagem de erro irá aparecer informando que o limite de espaço não permite essa operação. • Os limites estritos nunca são excedidos, ou seja, se o usuário acabou de abrir o gerenciador de arquivos e nota que há 2 mbytes ainda disponíveis e mesmo assim tenta gravar um arquivo de 5 mbytes, então a operação não será aceita. 7.5.3 Cópia de segurança No ambiente computacional, o disco rígido é o ponto mais crítico que merece total suporte e pleno planejamento para que nada de errado aconteça com ele. Numa escala de prioridades ou de preferências, se assim pode‑se dizer, é preferível que todos os componentes de um computador sejam danificados por alguma catástrofe contanto que o disco rígido mantenha‑se íntegro. O fato é que não é o disco o principal protagonista dessa história, e sim os dados contidos nele. Diversos casos de problemas com sistemas são reportados diariamente, ora por desastre natural (chuva, incêndio, enchente, terremotos etc.), ora por descuido com o sistema de aterramento, que, por consequência ocasiona a queima dos equipamentos. Imagine que os dados contidos em um determinado disco rígido são referentes ao banco de dados que servirá de base para bilhetagem dos serviços prestados por uma empresa de telefonia e, abruptamente, algo acontece resultando na danificação total do disco rígido. Ou uma instituição financeira que possui todos os dados de movimentações, valores em conta, agenda de pagamentos e dezenas de outros dados armazenados em um servidor que foi danificado a tal ponto que o disco rígido encontra‑se totalmente inutilizável. Com base nos hipotéticos cenários apresentados anteriormente, é necessário que alguma tecnologia, prática ou até mesmo processo seja implantado, objetivando a guarda dos dados de forma segura em algum outro local que não dentro do servidor em questão. Isso será necessário por dois principais motivadores ou causas dos possíveis problemas previamente apresentados: 1. Recuperação em caso de um desastre (natural ou não). 2. Recuperação quando é feito algum procedimento errado (entende‑se por “procedimento errado” geralmente algo relacionado a erro humano). No primeiro caso, o objetivo é recuperar o ambiente após um desastre natural como enchente, incêndio, terremoto ou outro. 88 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 O segundo caso geralmente acontece devido a erro do usuário, que apaga ou altera o conteúdo de um ou mais arquivos. Há também alguns casos nos quais uma aplicação, geralmente desenvolvida in house,20 com algum tipo de erro no código, de alguma forma altera os arquivos inadequadamente. Portanto, para resolver esses casos, é necessário possuir uma boa política de segurança que seja baseada em normas como a ISO 27001. Devemos ter a disciplina e o entendimento da importância do backup21 no ambiente computacional. O backup é todo e qualquer processo que gere uma cópia de segurança que irá possibilitar futuras restaurações de ambiente em caso de acidente ou não. Conforme normas do Banco Central brasileiro, todas as instituições financeiras, desde corretoras até grandes bancos, devem guardar historicamente os dados de aplicações por anos. Ou seja, se o auditor do Banco Central ou de alguma outra empresa de auditoria for realizar uma análise no ambiente – por exemplo: os auditores que estão alinhados com as exigências do Bacen –, ele pode pedir que seja restaurada uma determinada informação de 12 de agosto de 2005 ou outra data aleatoriamente só para averiguar se o sistema de cópia de segurança (backup) e a restauração da cópia desegurança (restore) estão funcionando adequadamente. Tipicamente, o backup é efetivado em fitas magnéticas. Existem no mercado várias tecnologias de unidades, fitas e softwares de backup que variam entre capacidade de armazenamento, velocidade de transferência dos dados, funcionalidades (como criptografia), entre outros. O mais importante é ter o backup em funcionamento e sempre sendo revisado para garantir que tudo está dentro do planejado. Para mitigar problemas de backup, é implementado para cada servidor, ou para cada aplicação, um processo composto de documentos denominados survey.22 Esse processo coleta informações referentes ao tempo de retenção do backup, a quais arquivos devem fazer parte da tarefa que irá executar a cópia de segurança, a qual periodicidade – se é diária, semanal, mensal ou anual –, se o backup será incremental, full, diferencial, a qual software e parâmetros serão utilizados para fazer o backup, entre outros pontos que irão definir para cada ambiente as características necessárias para que, no futuro, quando um acidente ocorrer, a restauração da informação seja o mais transparente possível. Uma estrutura de backup desse maquinário, pessoas e produtos, pode custar alguns milhões, principalmente para grandes corporações que possuem diversos servidores e, muitas vezes, são descentralizados entre prédios ou até mesmo entre países. Outro ponto crítico é que o backup leva muito tempo e ocupa muito espaço; portanto, operacionalizá‑lo de maneira eficaz é muito importante. Essas considerações destacam alguns pontos importantes: 1. Devemos fazer cópia de segurança somente dos diretórios específicos e de tudo o que está contido neles. Portanto, cópia de binários (programas executáveis que residem em uma parte limitada da árvore do sistema de arquivos) e não devem ser copiadas para fita. 20 In house: termo em inglês para “em casa” – aplicado na área de informática para qualquer produto ou serviço feito na própria empresa e por profissionais próprios ou contratados. 21 Backup: cópia de um arquivo ou conjunto de dados mantidos por questão de segurança contra erros no original ou cópia principal. 22 Survey: estudo de pesquisa do ambiente que formula perguntas a fim de receber informação sobre atitudes, motivos e opiniões. Esses estudos podem ser feitos frente a frente, pelo telefone ou pelo correio eletrônico. 89 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 2. Devemos sempre iniciar o primeiro backup com uma cópia full, que compreende a cópia total e integral dos diretórios e arquivos que fazem parte da tarefa de cópia de segurança (job de backup), porém, posteriormente, devemos intercalar entre full e incremental. Isso porque não faz sentido copiarmos diariamente os arquivos que não foram mudados – deixamos o backup completo (full) para os finais de semana e os incrementais para os diários. Nesse procedimento, durante a semana as janelas para atividades operacionais normalmente são curtas (geralmente menos de 8 horas por noite durante os dias da semana) em comparação com o final de semana (que pode ser de mais de 24 horas, em alguns casos das 18 h da sexta‑feira até 6 h da segunda‑feira). Embora esse processo minimize o tempo de cópia, esse esquema torna a recuperação mais trabalhosa. Isso se deve ao fato de que se o problema acontecer – por exemplo, na quarta‑feira –, então deveremos restaurar o jogo de fitas do último final de semana, pois é esse que contém todos os arquivos, e, posteriormente, restaurar todas as fitas contendo os dados incrementais. Esquemas de cópia incremental mais sofisticado ajudam a facilitar a restauração das cópias de segurança. 3. Como o volume de dados copiados é geralmente muito grande, pode ser necessário comprimir os dados antes de escrevê‑los na fita. Esse processo, na maioria dos casos, irá economizar tempo e dinheiro. Porém, para muitos algoritmos de compressão, se porventura acontecer algum problema, mesmo que pequeno, na fita de backup, pode‑se perder o algoritmo de descompressão, tornando‑se impossível ler um arquivo por completo, uma parte da fita que contém vários arquivos, ou até mesmo a fita por completo. 4. Se durante o processo de backup o sistema de arquivos estiver sendo utilizado para novas cópias, adição de arquivos, alteração e remoção, então poderá acarretar numa cópia inconsistente. 5. A cópia que está sendo feita para a fita deve ser criteriosamente bem manipulada e transportada para lugares seguros. O fato de um administrador de sistema criar uma cópia e deixar a fita sobre sua mesa implica em várias vulnerabilidades com alto índice de ser um incidente de segurança. Entre outros, são destacados os três mais críticos: a) A fita pode ser subtraída por alguém não autorizado e, posteriormente, o dado com alto nível de confidencialidade ser indevidamente publicado ou manipulado. b) A fita fora de caixas de transporte apropriadas para essa finalidade pode sofrer sérios danos causados pela intempérie do local que normalmente não é uma estrutura adequada como a de locais de guarda de fitas. c) A fita pode ser esquecida nesse local, que geralmente é muito próximo fisicamente do servidor onde estão os dados originais, e se por alguma catástrofe, o disco rígido for impactado negativamente, pela proximidade física dos ambientes, é praticamente zero a probabilidade de termos a cópia íntegra para restauração. Tipos de processo para copiar os dados de um disco para fita • Existem duas estratégias para copiar os dados do disco rígido para fita magnética, sendo cópia física ou cópia lógica. 90 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 • A cópia física, também conhecida como dump físico, copia todos os blocos do disco para fita, iniciando no bloco zero e terminando no último bloco. As principais vantagens da cópia física são a simplicidade e a alta taxa de transferência. As desvantagens são a falta de capacidade de saltar diretórios específicos, permitir cópias incrementais e restaurar arquivos individuais. • A cópia lógica, também conhecida como dump lógico, é realizada baseada num diretório ou vários que são especificados. Em uma cópia lógica, a fita contém uma série de diretórios e arquivos meticulosamente identificados, possibilitando, assim, a restauração de um arquivo ou diretório específico. 7.6 Tipos de sistemas de arquivos Existem diversos sistemas de arquivos, tais como FAT, FAT32, NTFS, Ext3, Ext4, JFS, JFFS, JFFS2, LogFS, Reiser4, ReiserFS e XFS, ISO9660 etc. Os sistemas de arquivos são desenvolvidos, muitas vezes, por motivos comerciais, outras, por alinhamento tecnológico com o propósito do hardware ou até mesmo motivados por interoperabilidade entre sistemas. Nesta próxima seção, estudaremos alguns mais relevantes por serem os mais populares. 7.6.1 Sistema de arquivos ISO 9660 O sistema de arquivos ISO 9660 é um padrão internacional e mais usado em tecnologia de CD‑ROMs. A quase totalidade de CD‑ROM no mercado atual é compatível com esse padrão. O objetivo principal do padrão ISO 9660 era tornar possível que todo CD‑ROM fosse legível por todos os computadores, independentemente da ordem em que os bytes são armazenados e qual sistema operacional esteja carregado no hardware. Tecnicamente, uma grande diferença dos discos rígidos para os CD‑ROMs é que estes não possuem cilindros concêntricos, mas sim uma única espiral contínua que contém bits em uma sequência linear. Lembrete Mesmo estruturado em uma espiral contínua, é possível buscar o CD‑ROM transversalmente às espirais. Em uma espiral do CD‑ROM, os bits são agrupados em blocos lógicos de 2.352 bytes. Tirando a parte referente a preâmbulos, correção de erro ou outras finalidades estruturais, a parte que realmente será usada para gravação de dados contém 2.048 bytes, ou seja, 16 kbits. Uma das aplicabilidades desse tipo de mídia é a gravação de música,o que fica mais fácil usarmos o tempo como unidade de medida. Portanto, a posição de um bloco é representada em minutos ou segundos. 91 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Lembrete A conversão direta em um número linear de bloco é de 1 segundo para cada 75 blocos. A estrutura do CD‑ROM segue a sequência descrita abaixo: • 16 blocos iniciais (não é definido pelo padrão); os fabricantes de CD‑ROM podem oferecer um programa de inicialização que permita que o computador seja inicializado pelo CD‑ROM ou outra finalidade definida pelo fabricante. • Em seguida, vem um bloco descritor de volume primário, contendo algumas informações gerais sobre o CD‑ROM, como 32 bytes para o identificador do sistema, 32 bytes para o identificador de volume, 128 bytes para o identificador do editor e 128 bytes para o identificador para o preparador dos dados. Além desses, o descritor de volume primário contém o nome de três arquivos que podem ter uma notificação de direitos autorais, um resumo e informações bibliográficas. O tamanho de blocos lógicos, o número de blocos do CD‑ROM, as datas de criação e de validade do CD‑ROM e a entrada de diretório para o diretório raiz (indicação do bloco inicial) também fazem parte do descritor de volume primário. • O diretório raiz, bem como os demais, é formado por um número variável de entradas, sendo que a última contém um bit que irá marcar como entrada final. • As entradas de diretórios têm tamanho variável e cada uma pode ser formada de dez a doze campos – parte em ASCII e outros numéricos binários. • Os campos binários dos diretórios são codificados duas vezes: uma com os bits menos significativos nos primeiros bytes (little‑endian), que estão nos computadores padrão PC, e outra com os bits mais significativos nos primeiros bytes (big‑endian), sendo estes usados por SPARCS. O formato de uma entrada de diretório ISO 9660 é ilustrado na Figura 47, sendo: • Os dois primeiros bytes para tamanho da entrada de diretório e tamanho do registro de atributos estendidos. • O campo bloco inicial com 8 bytes já é o bloco inicial do arquivo. • A localização de um arquivo é totalmente especificada pelo bloco inicial e pelo tamanho que são os 8 bytes seguintes. • O campo data e hora é composto pelos próximos 7 bytes. • O campo flag seguinte de 1 byte é usado para ocultar a entrada nas listagens. 92 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 • O próximo campo de 2 bytes, denominado intervalo, não é usado na versão mais simples do ISO 9660. • O campo CD# com 4 bytes serve para indicar em qual CD‑ROM um arquivo está localizado. • O campo L de 1 byte mostra o tamanho do arquivo. • O campo nome do arquivo vem em seguida, com a estrutura com o nome base, um ponto, extensão, um ponto e vírgula e um número binário de versão (o nome do arquivo pode ter até oito caracteres, a extensão, até três. Isso se deve à necessidade de compatibilidade, como o MS‑DOS que segue esse padrão). • O campo preenchimento será usado para alinhar os campos numéricos das entradas subsequentes em limites de 2 bytes. • O campo uso do sistema é usado por diferentes sistemas de diferentes maneiras. Tamanho do registro de atributos estendidos flags Uso do sistemaTamanho da entrada de diretório intervalo Localização do arquivo Tamanho do arquivo Data e hora CD# L Nome do arquivo Preenchimento Figura 47 – ISO 9660 – Entrada de diretório Extensão Rock Ridge A extensão denominada Rock Ridge foi elaborada pela comunidade Unix, objetivando a representação de sistemas de arquivos Unix em CD‑ROMs. O campo uso do sistema é usado pelas extensões para viabilizar que qualquer computador leia o Rock Ridge. Se um sistema específico não reconhece a extensão Rock Ridge, então esse ignorará a extensão e reconhecerá um CD‑ROM como padrão básico ISO 9660. As extensões são divididas entre os seguintes campos: • PX – Atributos POIX: padrão Unix para bits de permissão de rwxrwxrwx (r = read, w = write e x = execute – ler, escrever e executar). • PN – Números de dispositivo principal e secundário: para permitir que dispositivos sejam representados em CD‑ROM. • SL – Ligação simbólica: permitindo que o arquivo de um sistema de arquivos refira‑se ao outro arquivo de um sistema de arquivos distinto. 93 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 • NM – Nome alternativo: permite que um segundo nome seja associado ao arquivo. • CL –Localização do filho. • Localização do pai. • Realocação: os dois campos anteriores, em conjunto com este, são usados para evitar o limite de oito diretórios que podem ser aninhados conforme ISO 9660. • TF – Estampa de tempo (timestamp) – contém três estampas: o instante que o arquivo foi criado, o instante que o arquivo foi modificado pela última vez e a estampa com o instante que ocorreu o último acesso. Extensão Joliet Da mesma forma que o sistema Rock Bridge foi projetado para permitir que o sistema de arquivos do Unix fosse copiado para o CD‑ROM, a Microsoft desenvolveu o sistema Joliet para suportar o sistema de arquivos do Windows. Quase que na totalidade os computadores com sistema operacional Windows que possuem CD‑ROM suportam Joliet. As principais extensões oferecidas pelo Joliet são: • Nomes de arquivos mais longos com 64 caracteres. O ISO 9660 pode até oito caracteres, a extensão, até três. • Conjunto de caracteres unicode: importante para locais onde não se usa o alfabeto latino. Exemplo: Japão, China e outros. • Estrutura de diretórios mais profunda que oito níveis: as árvores de diretórios podem ser estruturadas em quantos níveis de profundidade forem necessários. • Nomes de diretórios com extensão: mesmo com essa opção disponível, atualmente não vem sendo usada. 7.6.2 Sistema de arquivo do FAT Os primeiros computadores pessoais da IBM já utilizavam o sistema de arquivos MS‑DOS e por anos foi o mais usado mundialmente. Até o Windows 98 e o ME, a Microsoft manteve o mesmo sistema de arquivos. O Windows 2000, XP e o Vista suportam a esse sistema, porém, ele não é mais padrão nos equipamentos Personal Computer atuais. O sistema de arquivos MS‑DOS possui extensão FAT‑32, que vem sendo usada amplamente em máquinas fotográficas, MP3 e outros. Atualmente, o sistema de arquivos MS‑DOS e suas extensões são mais usados do que em qualquer outra época. O sistema de arquivo usado pela Microsoft atualmente é o NTFS. 94 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 O processo de leitura de um arquivo no sistema de arquivos MS‑DOS é executado conforme sequência descrita a seguir: • Um programa faz uma chamada de sistema open (abrir). • A chamada de sistema open determina o path (caminho) até o diretório de trabalho. • O caminho é procurado, item por item, até que o diretório final seja encontrado e carregado na memória. • O caminho então será buscado para o arquivo a ser aberto. No formato de uma entrada de diretório MS‑DOS, os campos são de acordo com a sequência a seguir: • Nome do arquivo: nomes compostos de 32 bytes. • Atributos: é usado para determinar se um arquivo é somente para leitura, se precisa ser feita cópia de segurança, se é oculto ou se é um arquivo de sistema. • Tempo: é composto por 5 bits para determinar os segundos, 6 bits para os minutos e 5 bits para horas. Para os dias existem três outros campos secundários com 5 bits para dia, 4 bits para mês e 6 bits para ano. • Tamanho: o de 32 bits é usado para armazenar o tamanho do arquivo. Em teoria, os arquivos podem ter até 4 GB, porém, outros fatores limitam o tamanho do arquivo em 2 GB ou menos. • Entrada de diretórios: com o tamanho de 10 bytes, porém não é usado. Existem três versões para o sistema de arquivos FAT: • FAT‑12: usa blocos de 512 bytes, proporcionandoum tamanho máximo de partições de 212 x 512 bytes. Com isso, o tamanho máximo de partições em disco era cerca de 2 MB e o tamanho da tabela FAT na memória era de 4.096 entradas de 2 bytes cada – propício para discos flexíveis. Os discos rígidos demandaram algo mais elaborado, portanto a Microsoft aprimorou o FAT‑12, preservando a estrutura da tabela, porém, permitindo tamanhos de blocos adicionais de 1 KB, 2 KB e 4 KB, permitindo partições de 16 MB. Como o MS‑DOS suportava quatro partições por disco, a nova versão do sistema de arquivos FAT‑12 era compatível com discos de até 64 MB. • FAT‑16: possuía ponteiros de disco de 16 bits e permitiu tamanhos de blocos de 8 KB, 16 KB e 32 KB – a tabela FAT‑16 ocupava constantemente 128 KB da memória principal. A maior partição de disco suportada por um sistema de arquivos FAT‑16 é de 2 GB (64 K com entradas de 32 KB cada). O maior disco é de 8 GB ocupando quatro partições de 2 GB cada. 95 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 • FAT‑32: introduzido a partir da segunda versão do Windows 95 com endereços de disco de 28 bits. Em teoria, esse sistema de arquivos poderia conter 228 x 215 bytes, porém, na prática, era limitado em 2 TB (2.028 GB). Isso se deve ao fato de que internamente o sistema de arquivos FAT‑32 monitora os tamanhos das partições em setores de 512 bytes, com um número de 32 bits, portanto, 29 x 232 é igual a 2 TB. Permite discos de 8 GB com uma única partição. Análise: comparativo entre o FAT‑16 versus o FAT‑32 Demonstraremos, na Figura 48, que para arquivos pequenos o FAT‑16 apresentará um grande desperdício do disco. No exemplo, estamos considerando uma partição de 2 GB (Figura 48a) e arquivo de 4 KB. Como foi detalhado anteriormente, um sistema de arquivo FAT‑16 tem de usar blocos de 32 KB (Figura 48b) para atender uma partição de 2 GB. Portanto, se gravarmos arquivos de 4 KB, cada bloco terá uma taxa de ocupação de somente 13%, ou seja, 87% do bloco será desperdiçado. Blocos de 32 KB KB Arquivo com 4 KB a. Tamanho da partição 2 GB b. Tamanho de cada bloco do FAT‑16 4 K c. Endereços de blocos = 68644 2249326592 / 32768 = 68644 d. Problemas com blocos de 32K ‑ FAT‑16 porém 64 K = 65536, portanto em blocos de 32 K não é possível mapear todo disco de 2 GB Figura 48 – Análise de uma partição FAT‑16 de 2 GB e arquivo de 4 KB Outro ponto importante destacado na Figura 48c e 48d é que a partição de 2 GB que teria 68.644 endereços possíveis, porém com o máximo de 64 K (65.536) de endereços que o FAT‑16 suporta, será parcialmente desperdiçada. Na Figura 49, teremos o mesmo comparativo, porém, agora com FAT‑32 / blocos de 4 KB e manteremos a partição de 2 GB com arquivo de 4 KB. 96 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Blocos de 4 KB KB Arquivo com 4 KB a. Tamanho da partição 2 GB b. Tamanho de cada bloco do FAT‑16 4 K c. Endereços de blocos = 549152 2249326592 / 4096 = 549152 Figura 49 – Análise de uma partição FAT‑32 de 2 GB e arquivo de 4 KB Usando blocos menores, há melhor aproveitamento do disco, conforme demonstrado anteriormente, porém eleva o consumo de memória RAM (memória principal). Com bloco de 4 KB e uma partição de 2 GB, há 512 K blocos, portanto a FAT‑32 deverá ter 512 K entradas na memória que ocupará 2 MB de RAM. A Tabela 1 ilustra as possíveis combinações entre as extensões do MS‑DOS: Tamanho do bloco (KB) FAT‑12 (MB) FAT‑16 (MB) FAT‑32 (TB) 0,5 2 1 4 2 8 128 4 16 256 1 8 512 2 16 1024 2 32 2048 2 Tabela 1 – Tamanho máximo da partição versus diferentes tamanhos de blocos Observação No exemplo apresentado na Figura 48, usamos o tamanho de bloco de 32 KB e FAT‑16 com 2.048 MB = 2 GB. 7.6.3 Sistema de arquivos do ambiente Unix Antes de falarmos do sistema de arquivos Unix, é importante conhecermos sua origem para que possamos entender como um sistema de arquivos pode ter, logo em sua primeira versão, funcionalidades que são primordiais para ambientes multiusuários, por exemplo. 97 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 O Multics (Multics ou Multiplexed Information and Computing Service) foi criado em 1964, fomentado pelo projeto liderado pelo MIT (com Fernando Corbató), e a divisão de produtos para grandes computadores da companhia General Electric e dos Laboratórios Bell de telefonia. O sistema Multics seria implantado na plataforma GE 645 da GE. Uma visão geral da arquitetura desse sistema operacional tinha como ambição estar alinhada com quase todos os computadores existentes, suprindo as necessidades de computadores de grande porte, mesmo os que estariam à frente do seu tempo. Saiba mais Para obter mais informações sobre o Multics, acesse http://www. multicians.org/fjcc1.html (site em inglês). Mesmo não sendo bem‑sucedido, o Multics contribuiu muito para o desenvolvimento da computação, devido as suas ideias inovadoras. Ele foi muito criticado na sua época, contudo a história provou que as críticas negativas não tinham fundamento. O sistema de arquivos do Unix, o mesmo da primeira versão dessa plataforma, já nasceu com suporte a multiusuários, isso porque esse sistema é derivado do Multics. Diferentemente do sistema de arquivos do MS‑DOS, o sistema de arquivos Unix tem os nomes de arquivos de até 14 caracteres. Eles suportam qualquer caractere ASCII, com exceção do NUL, que é usado para preencher os espaços que sobram nos nomes menores do que 14 caracteres, e da barra (/), devido ao fato de que ela é o objeto separador entre os componentes de um caminho. Em outras palavras, a “/” é a demarcação para que o usuário saiba que antes dela é um diretório e depois da barra é o próximo diretório filho. Se a / está sem nenhum antecessor ou sucessor, então o diretório é chamado de diretório raiz. A estrutura de uma entrada de diretório no Unix é bem simples, contendo o campo nome do arquivo formado por 14 bytes e o número do i‑node23 que é formado por 2 bytes. O i‑node possui vários atributos que vão desde a informação do tamanho do arquivo, até os momentos que determinam a criação, o último acesso e a última alteração, o proprietário, o grupo, a informação de proteção e o contador do número de entradas apontando para o i‑node. O apontador para o i‑node tem um contador que será incrementado quando uma nova ligação é feita. Quando a ligação é desfeita, então o contador é decrescido. Ao chegar a zero, o i‑node será subtraído por completo e os blocos de disco são colocados novamente na lista de livres. A localização dos blocos de disco de um arquivo deve ser fornecida pelo sistema quando um arquivo é aberto. Para entendermos como um arquivo é localizado, por exemplo, no caminho /home/user/file. txt, veja as etapas a seguir: 23 I‑node: é uma estrutura de dados no sistema de arquivos em um sistema de arquivos tradicional Unix. Ele armazena informações básicas sobre um arquivo regular, diretório, ou outros objetos do sistema de arquivos. 98 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 1. O sistema do Unix localiza o diretório raiz (que será o ponto de partida e referência). O i‑node do diretório raiz está localizado em um local fixo do disco rígido, porém o próprio diretório raiz (/) pode estar em qualquer endereço de blocos. 2. Assim que o sistema já está posicionado na raiz da estrutura, então busca pelo próximo componente do caminho que é o “home” do diretório raiz. Dessa forma, o sistema irá encontrar o número do i‑node para o “/home”. 3. Nessa etapa, o sistema localiza o diretório /home, e busca nele o próximo componente que é o user. Ao encontrar a entrada user, esse diretório tem o i‑node para /home/user. Uma vez no diretório /home/user, então é possível fazer uma busca no próprio diretório e localizar o componentefile. txt. Assim que a localização for feita até o /home/user/, o i‑node, para esse arquivo ser carregado na memória, será mantido até que o arquivo seja fechado. Todos os diretórios possuem entradas “.” (ponto) e “..” (ponto ponto) que são criadas juntamente no momento da criação do diretório. A entrada “.” (ponto) tem o número do i‑node do diretório atual, e a entrada “..” (ponto ponto), o número do i‑node do diretório pai (diretório que antecede o diretório atual). No diretório raiz, o “..” (ponto ponto) aponta para o “.” (ponto) que por consequência é ele mesmo. Isso se deve ao fato de que o diretório raiz é o nível mais elevado na estrutura e ele não tem um diretório pai antecessor. 7.6.4 Sistema de arquivos do Linux A primeira versão do sistema de arquivos do Linux foi o Minix, porém, como ele seguia estritamente os padrões do Unix, ele também tinha arquivos com limites de nomes de 14 caracteres e seu tamanho máquina de arquivo era de 64 MB. Esse padrão atendia quase que na totalidade as necessidades da época, porém, com o passar do tempo, 64 MB passou a ser “brincadeira de criança”, demandando sistemas de arquivos mais robustos e melhorados. O sistema de arquivos ext (extended file system) apresenta melhorias com relação ao tamanho do nome que passou a suportar até 255 caracteres e arquivos com tamanho de até 2 GB. Por outro lado, a desvantagem do sistema de arquivos ext, comparado com o Minix, era seu desempenho, apresentando lentidão considerável. Principalmente motivado pela necessidade de melhorar a deficiência de velocidade que o ext apresentava, foi desenvolvido o ext2 (second extended file system). Limites teóricos do sistema de arquivos ext32 Tamanho do bloco 1 KB 2 KB 4 KB 8 KB Tamanho máximo do arquivo 16 GB 256 GB 2 TB 2 TB Tamanho máximo do sistema de arquivos 4 TB 8 TB 16 TB 32 TB Tabela 2 – Limites teóricos do sistema de arquivos ext2 99 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Além do sistema de arquivos ext2, o Linux suporta novas versões do ext, como ext3 e ext4. O ext3 (third extended file system) é um sistema de arquivos que suporta o journaling24. Essa funcionalidade permite melhorias na confiabilidade e elimina a necessidade de verificar o sistema de arquivo quando há uma parada do sistema de forma abrupta (por exemplo, quando acontece interrupção de fornecimento elétrico). O ext4 (fourth extended file system) é um sistema de arquivos que também mantém registro de ações (journaling) sendo o sucessor do ext3. Esse sistema de arquivos foi desenvolvido como uma série oposta de complexidade a da que o ext3 tinha. Muitas dessas complexidades foram originalmente desenvolvidas para sistemas de arquivos em grupo (cluster file system) destinado ao sistema de arquivos chamado Lustre. Além dos apresentados acima, existem vários outros suportados pelo Linux, muitos deles com características específicas para determinadas aplicações. Entre uma longa lista, segue abaixo uma breve descrição de alguns dos sistemas de arquivos suportados pelo Linux: • FAT – File Allocation Table (ou Tabela de Alocação de Arquivos). • JFS – Journaling File System, é um sistema de arquivos desenvolvido pela IBM, disponível em licença open source. • XFS – é um sistema de arquivos inicialmente desenvolvido pela Silicon Graphics, Inc. para o seu sistema operacional IRIX. • HPFS – High Performance File System, Sistema de Arquivos de Alta Performance. • Minix – foi um dos primeiros sistemas do tipo Unix baseado no projeto de um micronúcleo. • ReiserFS – criado por Hans Reiser e inicialmente mantido pela empresa The Naming System Venture (Namesys), o ReiserFS foi o primeiro sistema de arquivos com suporte ao journaling incluído no núcleo Linux 2.4+. • Reiser4 – usa árvores balanceadas para tornar o processo de busca de arquivos, informações sobre segurança e outros metadados mais eficiente. • ISO 9660 (sistema de arquivos usado em CD‑ROMs), também com as extensões RRIP (IEEE P1282) e ZISOFS. Alguns sistemas de arquivos com características especiais são: • SWAP – partições SWAP são usadas para suportar a memória principal. 24 Journaling: registros armazenados de toda a comunicação no sistema de arquivos, usados para auxiliar na recuperação de arquivos depois de uma quebra ou falha do sistema. 100 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 • UnionFS – permite que arquivos e diretórios de sistemas de arquivos diferentes sejam transparentemente sobrepostos, formando um único sistema de arquivos. • SquashFS – é um sistema de arquivos somente leitura para Linux que implementa compressão. • Tmpfs – é um sistema de arquivo que não armazena as informações em dispositivos de armazenamento como disco duro, memória flash, CD, DVD etc. Ao invés disso, manipula informações diretamente na memória RAM, assim como o procfs. • Aufs – AnotherUnionFS, serviço de arquivos que implementa uma união para montar sistemas de arquivos Linux. • NFS – Network File System, sistema de compartilhamento de arquivos em rede. 8 GERENCIAMENTO DE ENTRADA E SAÍDA 8.1 Introdução a gerenciamento de entrada e saída Como foi descrito no primeiro capítulo desta série, o gerenciamento de entrada e saída tem como princípio básico a abstração, tornando a interação do programador com a máquina algo muito mais fácil e permitindo que os programas e os hardwares evoluam de forma independente, porém estruturada. O gerenciamento de entrada e saída na visão de dentro do sistema operacional é algo complexo e que exige dos desenvolvedores de sistemas operacionais boa parte do tempo e dos esforços para obter um sistema estável e confiável. E não poderia ser diferente, pois toda a lógica e complexidade de controlar os diversos dispositivos demandam muita ação e dinamismo. Estudaremos, neste capítulo, os fundamentos do hardware de entrada e saída (E/S) e o software de E/S. Com esses conceitos poderemos tratar de dispositivos, como discos, relógios, teclados e vídeos. 8.2 Fundamentação – hardware de entrada e saída (E/S) Diferentemente do ocorrido no início da história da computação, atualmente os elementos de um equipamento são segmentados e especialistas focam suas atenções, estudos e desenvolvimentos para sua área específica. Os recursos de entrada e saída, não diferentemente, estão seguindo a mesma trajetória histórica. Organizações globais, muitas vezes sem fins lucrativos, formadas por contribuintes, como engenheiros, pesquisadores, físicos, matemáticos e até mesmo estudantes da área, vêm tentando, e conseguindo, padronizar tipo de material, níveis de sinalização elétrica, tipo de condutores, mistura de material que irá compor a placa ou o circuito e assim por diante. Todo esse esforço acaba gerando uma sinergia em escala global. Se imaginarmos um engenheiro na China, ou um aqui no Brasil, trabalhando num projeto de software num sistema operacional Linux e um computador padrão PC (personal computer), então a tendência é que, no nível do hardware e controladores de E/S, ambos estejam montando produtos 100% compatíveis. Isso só é possível devido à abstração, caso contrário o engenheiro do Brasil poderia estar interagindo 101 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 com o hardware e demandando procedimentos que poderiam ser muito diferentes daqueles que o engenheiro chinês estaria usando. Neste material, não está englobado como é desenvolvido o hardware, porém estudaremos como o hardware é programado para que tenhamos os resultados esperados de cada dispositivo específico. Nas próximas seções, trataremos, de forma geral, o hardware de computadores típicos. Esse material não visa abordar hardware específico nem entrar em profundidade acerca da visão que um engenheiro de hardware deverá ter do assunto. 8.3 Dispositivos de entrada e saídaOs dispositivos de entrada e saída típicos e os que estaremos dando ênfase são divididos em duas categorias: • Dispositivos de blocos: entre outras características, armazenam informações em blocos de tamanho fixo e endereço próprio. Todas as transferências estão em unidades consecutivas de um ou mais blocos. Para essa categoria, cada bloco pode ser lido ou escrito independentemente de todos os outros. Figura 50 ‑ Dispositivos de blocos • Dispositivos de caractere: nesse caso, há o envio e recebimento de caracteres. Diferentemente da categoria anterior, os dispositivos de caractere não são endereçáveis e não possuem funcionalidades de posicionamento. Figura 51 ‑ Dispositivos de caractere 102 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Alguns dispositivos, como o relógio do computador e o vídeo mapeado em memória, não pertencem a nenhuma dessas duas categorias. Considerando que os modelos de blocos e caracteres são os mais comuns e este material não visa se aprofundar no hardware, então será reservado ao autor cobrir essas duas categorias particularmente. Existem diversos dispositivos de entrada e saída, bem como para cada taxa de dados que vem evoluindo e variando com o passar do tempo. A Tabela 3 mostra o comparativo de alguns dispositivos e suas respectivas taxas de dados. bytes / segundo x tipo 600.000.000 500.000.000 400.000.000 300.000.000 200.000.000 100.000.000 0 Tec lad o Mo use Mo de m 56 K Sc an ne r Wi rel ess 80 2.1 1g CD ‑R OM 52 x Fas t E the rne t (8 02 .3u ) Ca rtã o fl ash co mp act o Fir eW ire (IE EE 13 94 ) Blu e‑R ay (1 2x ) US B 2 .0 Pa drã o S on et OC ‑1 2 ( 62 2.0 8 M it/s Dis co SC SI Ult ra 2 Gig ab it E the rne t (I EE E 8 02 .3z ) LTO ‑5 (L ine ar Tap e‑O pe n 5 ) SA S ( Se ria l A tta ch ed SC SI) Fit a U ltr inu m Ba rra me nto PC I Tabela 3 – Alguns exemplos de dispositivos e suas respectivas taxas de dados Tipo de dispositivo bytes / segundo Teclado 10 Mouse 100 Modem 56K 7 K Scanner 400 K Wireless 802.11g 6,75 M CD‑ROM 52x 7,8 M Fast Ethernet (802.3u) 12,5 M 103 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Cartão flash compacto 40 M FireWire (IEEE 1394) 50 M Blue‑Ray (12x) 54 M USB 2.0 60 M Padrão Sonet OC‑12 (622.08 Mbit/s) 78 M Disco SCSI Ultra 2 80 M Gigabit Ethernet (IEEE 802.3z) 125 M LTO‑5 (Linear Tape‑Open 5) 120 M SAS (Serial Attached SCSI) 300 M Fita Ultrinum 320 M Barramento PCI 528 M Tabela 4 – Detalhamento da tabela 3 8.3.1 Controladores de dispositivos (driver) As unidades de entrada e saída típicas são constituídas por dois componentes: • Componente mecânico: é o dispositivo mais aparente para o usuário final, ou seja, impressora, teclado, mouse e outros. • Componente eletrônico: conhecido como controlador de dispositivo ou adaptador. Esses adaptadores são inseridos em um conector de expansão localizado na placa‑mãe do computador. Os componentes mecânicos e eletrônicos são mostrados em destaque na Figura 52. Figura 52 – Unidade de E/S – componentes mecânicos e eletrônicos 104 Unidade IV Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 Geralmente, os fabricantes de controladores de dispositivos criam as interfaces seguindo um padrão oficial baseados nas organizações ANSI, IEEE, ISO e outras. Com isso, os tipos de conectores, sinalização elétrica, determinações mecânicas e todos os demais itens regidos pelos órgãos padronizadores são seguidos pelos fabricantes. Isso permite que, em paralelo, um fabricante de dispositivos mecânicos como impressora, mouse, e outros possam usar controladoras sem qualquer preocupação de compatibilidade. Saiba mais Para mais informações a respeito dos órgãos responsáveis pelos padrões descritos acima consulte: • ANSI: American National Standards Institute – Instituto Nacional Americano de Padronização (http://www.ansi.org/). • IEEE: Institute of Electrical and Electronics Engineers – Instituto de Engenheiros Eletricistas e Eletrônicos (www.ieee.org/). • ISO: International Organization for Standardization – Organização Internacional de Normalização (www.iso.org/). Os controladores de dispositivos, observados de uma forma mais abstrata e da perspectiva do usuário, são sumarizados como sendo uma nova entrada para comando de um dispositivo ou programa. Formando, assim, uma unidade periférica, cria uma interface permitindo a conexão com o dispositivo desejado. Ao adicionarmos um novo dispositivo a uma interface do computador, este requer um driver25, que, na perspectiva lógica, é um programa que normalmente vem junto com o dispositivo ou como parte inerente do sistema operacional e deve ser instalado ou carregado. Sem esse controlador de dispositivo o programa do usuário não irá conseguir obter os resultados de entrada e saída desejados. Como exemplo, podemos citar o de um usuário que comprou um mouse sem fio e quer instalá‑lo no seu computador. Geralmente, o mouse sem fio usa um adaptador USB que servirá para mandar e receber os sinais desse novo dispositivo para o computador e vice‑versa. Analogicamente, teremos então o mouse como dispositivo mecânico e o adaptador usando padrão USB como dispositivo eletrônico, porém, para que esses dois elementos possam ser vistos e operados pelos programas do usuário, será necessário um driver (que também chamamos de controlador de dispositivo). Esse driver irá estabelecer a conectividade lógica entre o elemento USB e o sistema operacional, e ficará a cargo deste último estabelecer uma interface abstrata para o programa do usuário. 25 Driver: programa ou rotina usada para interfacear e gerenciar um dispositivo de entrada/saída ou outros periféricos. 105 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di ag ra m aç ão : M ár ci o - 04 /0 5/ 20 11 8.3.2 E/S mapeada em memória Os registradores são responsáveis por estabelecer o canal de comunicação entre os controladores de dispositivos e a unidade central de processamento. O sistema operacional se comunica com os dispositivos por meio da gravação e da leitura dos registradores. Além dos registradores, atualmente é comum os dispositivos terem buffers de dados que serão usados pelo sistema operacional para gravar e escrever. A comunicação entre a unidade central de processamento e os registradores e buffers pode ser realizada pelas duas formas descritas abaixo: • E/S mapeada por porta (port‑mapped I/O): associado a um número de porta de entrada e saída que pode compreender de 8 a 16 bits. Somente o sistema operacional pode acessar o espaço de portas E/S (conjunto de portas de E/S). Dessa forma, o programa do usuário não tem permissão para acessar diretamente o espaço de portas. Esse modelo é demonstrado na Figura 53a. • E/S mapeada em memória (memory‑mapped I/O): nesse modelo, todos os registradores são mapeados em endereços de memória exclusivos. Esse método usa o mesmo endereço de barramento para endereçar memória e dispositivos de entrada e saída, e as instruções de CPU para acessar a memória são as mesmas usadas para acessar os dispositivos de E/S. Para acomodar os dispositivos de E/S, espaços das áreas endereçáveis da CPU devem ser temporariamente reservados para E/S exclusivamente. Cada dispositivo de entrada e saída fica escutando o barramento e responderá as suas requisições. Esse modelo é demonstrado na Figura 53b. O funcionamento do exemplo de uma CPU querendo ler uma palavra que pode ser tanto da memória ou de uma porta de entrada se dará da seguinte forma: 1. A CPU emite nas linhas de endereço do barramento o endereço de que precisa. 2. Emite um sinal de READ sobre a linha de controle do barramento. 3. Uma nova linha de sinal é usada para informar se o espaço requerido é memória ou entrada e saída. 4. Nessa etapa, a memória
Compartilhar