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óriaou o dispositivo de E/S irá responder ao comando de leitura (read). Além dos dois métodos descritos acima, existe também o E/S por processos dedicados (dedicated I/O processors), porém não será debatido neste material por se tratar de um método bem específico para um determinado ambiente menos popular. 106 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 Dois endereços Um espaço de endereçamento 0xFFFF... 0 Memória Portas de E/S Endereço de E/S Espaço de endereço de memória a. b. Figura 53 – a. Espaços de memória e E/S independentes b. E/S mapeado na memória 8.3.3 Acesso direto à memória (DMA) Com base na premissa de que o hardware possui controlador de DMA, muitas vezes o sistema operacional poderá usar o acesso direto à memória (Direct Memory Access – DMA) com o objetivo de melhorar a performance do ambiente. Em alguns casos, o controlador de DMA está integrado ao controlador do dispositivo, contudo isso demanda um controlador de DMA para cada controlador de dispositivo. Geralmente, um único controlador de DMA está contido na placa‑mãe, controlando a transferência de vários dispositivos, mesmo que simultaneamente. O controlador de DMA tem acesso ao barramento e contém vários registradores que podem ser lidos e escritos pela CPU, conforme descrito abaixo: • Registrador de endereçamento de memória. • Registrador contador de bytes. • Registrador de controle (diferentemente dos dois anteriores, que são somente um para cada tarefa, esse pode ser composto por um ou mais registradores). Esse registrador especifica a porta de entrada e saída em uso, se a transferência é uma escrita ou leitura no dispositivo de entrada e saída, unidade em byte ou palavras por vez e o número de bytes a ser transmitido. Saiba mais Mais detalhes a respeito dos fundamentos do DMA em várias plataformas de PC podem ser obtidos em: <http://cires.colorado.edu/jimenez‑group/ QAMSResources/Docs/DMAFundamentals.pdf>. 107 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 A Figura 54 ilustra a operação de transferência utilizando o controlador DMA. Podemos observar que nesse modo a CPU irá interagir com a controladora de DMA e esta irá, por meio do barramento, comunicar‑se com a controladora de dispositivo. Controlador DMA Interrompo quando concluído Barramento CPU Controlador de Disco Memória principal 2. 4. 1. 3.Buffer Endereço Contador Controle Figura 54 – Transferência por DMA Legenda da figura 1. CPU programa o controlador de DMA. 2. DMA solicita transferência para a memória. 3. Dados transferidos. 4. Confirmação. A complexidade dos controladores de DMA pode variar. Há controladores mais simples que tratam uma transferência por vez e os mais sofisticados que podem ser programados para lidar simultaneamente com múltiplas transferências. Controladores capazes de tratar múltiplos canais possuem internamente vários conjuntos de registradores. Cada transferência usa um controlador de dispositivo distinto. Um algoritmo de alternância, com prioridade ou não, é necessário para o controlador de DMA decidir qual dispositivo será o próximo a ser atendido. Os barramentos podem operar no modo palavra e no modo bloco e alguns controladores de DMA podem operar em ambos os modos. O controlador de DMA por meio do modelo modo direto (fly by mode) pode dizer para o controlador de dispositivo transferir dados diretamente à memória RAM (memória principal). O modo direto pode operar pelo roubo de ciclo ou surto. • Roubo de ciclo (cycle stealing): a operação se dá por meio do controlador que solicita a transferência de uma palavra e a transfere em seguida. Nesse modo, a CPU ou o controlador de DMA estará usando o barramento a cada ciclo de barramento. • Surto (burst mode): o controlador de DMA solicita ao dispositivo para obter o barramento, em seguida, desfere uma rajada de transferências e, por fim, libera o barramento. A vantagem desse modo é que em uma única aquisição ao barramento várias palavras podem ser transferidas. 108 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 Por outro lado, a desvantagem é que o tempo de bloqueio do barramento durante o surto de transferência pode ser grande o suficiente para fazer com que a CPU e outros dispositivos fiquem esperando por muito tempo. Como opção ao modelo descrito anteriormente, existe a possibilidade de alguns controladores de DMA estabelecerem que o controlador do dispositivo envie a palavra para o controlador de DMA, e uma segunda aquisição do barramento escreverá a palavra para o destino necessário. Mesmo usando um ciclo de barramento adicional, esse método permite a flexibilidade da cópia entre dispositivos ou de memória para memória. Mesmo antes de a controladora atuar em um dos modelos descritos até agora, é necessário que os discos rígidos carreguem dados em seus buffers internos antes que o DMA inicialize. Podemos destacar duas razões para isso ocorrer: 1. Conferência da soma de verificação (checksum), também conhecida como código de correção de erro (error‑correcting code – ECC), antes de iniciar a transferência. Com essa funcionalidade, se algum erro for encontrado, é sinalizado e nenhuma transferência se realiza. 2. Assim que já se tem a confirmação da soma de verificação positiva, é iniciada a transferência e a taxa de chegada dos bits do disco à sua controladora é mantida de forma constante, mesmo que o controlador do dispositivo esteja pronto para recebimento ou não. No modelo em que não há o controlador de DMA, o controlador do dispositivo (nesse caso, do disco rígido) tentaria escrever os dados diretamente na memória, acessando o barramento para cada palavra a ser transferida. Se outros dispositivos estivessem usando o barramento, isso obrigaria o controlador de disco a esperar. 8.4 Software de E/S Existem alguns pontos importantes para alinharmos quando estamos tratando de software de entrada e saída, os quais estão destacados a seguir: • O software de entrada e saída deve estar suportado pelo conceito de independência do hardware. Isso parte do pressuposto que deveria ser possível que os programas pudessem acessar os dispositivos de E/S sem a necessidade específica de conhecer o dispositivo. Então, um programa que tem no seu conjunto de funcionalidades a possibilidade de ler um arquivo de entrada deveria, de forma transparente e sem ter que mudar o programa, poder ler tanto um disco rígido, CD e DVD, quanto um USB. • Um outro ponto é que os programas de E/S deveriam estar alheios ao tratamento de erros, ficando a cargo dos níveis mais próximos ao hardware esse tratamento, ou seja, o controlador deveria resolver o problema e, se não conseguisse, então o driver do dispositivo deveria tratar disso. • Ainda primordial é o tipo de transferência síncrona ou assíncrona. Na transferência síncrona o modo é de bloqueio e na assíncrona é orientada a interrupção. 109 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 • A utilização de buffers para armazenamento temporário envolve frequentes e elevadas operações de cópia, gerando um impacto considerável no desempenho da entrada e saída. • O último ponto que devemos nos atentar com a mesma importância dos apresentados anteriormente é o de dispositivos dedicados versus compartilhados. Pode parecer contraditório, porém, nos dias atuais, os dispositivos não compartilhados (dedicados) podem apresentar grandes problemas, bem como impasses. Se imaginarmos dois processos necessitando acessar a mesma fita magnética, mas com dados em endereços distintos, certamente um dos processos ficará esperando por um tempo muito grande. 8.4.1 E/S programada O método mais simples de entrada e saída é ter a CPU fazendo todo o tratamento. E/S programada é o método de transferência dedados entre a unidade central de processamento e os periféricos como um NIC (Network Interface Card) ou um dispositivo de armazenamento ATA, por exemplo. Em geral, entrada e saída programada acontece quando o programa que está rodando na CPU usa instruções que acessam o endereço de entrada e saída para realizar transferência de dados de um ou para um dispositivo de entrada e saída. Isso vai na contramão das transferências em modo DMA que estudamos na seção anterior. Um exemplo de um dispositivo no computador padrão PC que usa a E/S programada é a interface ATA (Advanced Technology Attachment). Entretanto, essa interface pode operar em um dos modos DMA. Outros dispositivos também usam a E/S programada, tais como: 1. Portas seriais. 2. Portas paralelas (quando não estão em modo ECP – Extended Capability Port). 3. Portas PS/2 que eram usadas para teclado e mouse. 4. Portas MIDI (Musical Instrument Digital Interface). 5. Portas de joystick. 6. Relógio interno. 7. NICs (Network Interface Card) antigas. Apesar de ser simples, a entrada e saída programada tem uma desvantagem que é o fato de segurar a CPU o tempo todo até que a E/S seja realizada. A espera ociosa é ineficiente em sistemas complexos. Exemplificando a E/S programada, podemos imaginar um processo que quer imprimir na impressora: 110 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 programa primeiro monta a cadeia de caracteres em um buffer. 2. Um processo que resista à impressora por meio de uma chamada de sistema. 3. Assim que o processo já obteve o acesso à impressora ele então efetuará uma chamada de sistema para imprimir a cadeia de caracteres. 4. Tipicamente, o sistema operacional copia o buffer para um vetor “x” no espaço do núcleo. 5. O sistema operacional verifica se a impressora está disponível. 6. Assim que confirmado que a impressora está disponível, o sistema operacional copia o primeiro caractere para o registrador de dados da impressora (caso a impressora não esteja disponível, o sistema operacional ficará esperando). 7. Dependendo da impressora, nesse exato momento já estará sendo impresso o primeiro caractere ou, em outros casos, a impressora irá armazenar linhas ou até mesmo páginas antes de iniciar a impressão. 8. Assim que esse primeiro ciclo está pronto, o sistema operacional faz novamente uma nova verificação para então enviar outro caractere. 9. O laço será repetido até que a impressão termine, retornando o controle ao processo que originou a chamada. 8.4.2 E/S usando interrupção Nesse caso, a impressora, ao invés de armazenar caracteres, imprime‑os sequencialmente conforme ordem de chegada. Se essa impressora pode imprimir 100 caracteres por segundo, então cada caractere será impresso em 10 milissegundos (1.000 milissegundos = 1 segundo, ou seja, 1.000/100 = 10). Portanto, durante os intervalos de 10 milissegundos necessários para que a impressora emita a permissão para a CPU transmitir o próximo caractere, a CPU ficará liberada para executar algum outro processo que aperfeiçoará seu desempenho. O modo que permite à CPU executar outro processo enquanto espera o término do antecessor é usando a interrupção. Saiba mais Para mais informações a respeito de E/S usando interrupção consulte: <http://www.ibm1130.net/functional/IOInterrupts.html>. 111 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.4.3 E/S usando DMA O acesso direto à memória consegue melhorar a velocidade do sistema. Isso porque no modo de E/S visto anteriormente cada caractere está demandando uma interrupção, que, por consequência, demanda CPU para controlar essa dinâmica. Usar o controlador de memória para alimentar os caracteres da impressora fornece a grande vantagem de, ao invés de ser gerada uma interrupção por caractere, gerar uma interrupção por buffer impresso. Porém, como a velocidade do DMA é consideravelmente menor que a da CPU, em sistemas com pouco uso de CPU é melhor e mais rápido manter a E/S programada ou por interrupção. 8.5 Camadas de software de E/S Conforme ilustrado na Figura 55, tipicamente os softwares de E/S possuem quatro camadas e estão logo acima do hardware. Cada camada do software de entrada e saída tem função específica e interface com as camadas vizinhas. Software de E/S no nível do usuário Software do sistema operacional independente do dispositivo Drives do dispositivo Tratadores de interrupção Hardware Figura 55 – Camadas do software de E/S Como cada sistema operacional possui características próprias do software de entrada e saída, é uma generalidade para estudos acadêmicos sem entrar nos detalhes específicos de cada plataforma física e lógica. 8.5.1 Tradutores de interrupção As interrupções são desagradáveis, porém, como não podem ser evitadas, o sistema operacional deve escondê‑las. Dessa forma, apenas uma pequena parte do sistema operacional saberá da sua existência. A melhor maneira de ocultar a maioria das interrupções é usar um driver que inicie a operação de entrada e saída e que bloqueie até a tarefa a ser finalizada. Quando isso acontecer, a rotina de interrupção faz as suas tarefas, depois desbloqueia e liberta o driver que iniciou e a chamou. 112 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 seguir, veja os passos a serem realizados pelo sistema operacional quando ocorre interrupção no ambiente genérico padrão PC: 1. Salvar registros que ainda não tenham sido guardados pelo hardware de interrupção. 2. Estabelecer o contexto para a rotina de atendimento de interrupções. 3. Preparar uma pilha (stack) para rotina de tratamento de interrupção. 4. Confirmar (ack) o controlador de interrupção e ativar interrupção. 5. Copiar registros de onde foram salvos para a tabela de processos. 6. Executar rotina de tratamento de interrupção, extraindo informações dos registradores do controlador do dispositivo que está interrompido. 7. Escolher qual o novo processo que irá ser executado. O algoritmo de alternância pode ser necessário. 8. Preparar contexto da MMU para executar próximo processo. 9. Carregar registros do novo processo. 10. Iniciar a execução do novo processo. 11. Processamento de interrupção é dispendioso e complexo, por isso a necessidade de ser evitado. 8.5.2 Drivers dos dispositivos Os drives dos dispositivos diferem entre a pluralidade de componentes disponíveis e a forma de tratamento que se deve dar a cada um. Por exemplo, o driver do mouse endereçará informações de movimento e acionamento dos botões, a ponto de o driver de um disco rígido ser capaz de tratar assuntos relacionados a setores, trilhas, cilindros, cabeçotes, movimento do braço, controladores do motor e demais semânticas para o funcionamento adequado desse dispositivo. • Driver do dispositivo: são os códigos específicos que cada dispositivo necessita e são normalmente desenvolvidos pelos fabricantes dos dispositivos. Devido à diversidade de sistemas operacionais, pode acontecer do fabricante não ter desenvolvido um driver de dispositivo para a versão do sistema operacional que está sendo executado em uma determinada máquina. Por esse motivo, normalmente, quando um novo sistema operacional é lançado, pode haver problemas para o usuário encontrar um driver para seu dispositivo legado. A Figura 56 ilustra o controlador de dispositivos e os drivers. 113 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 Barramento Processo do usuário Restante do sistema operacional Espaço do usuário Espaço do núcleo Driver da impressora Driver do disco Controlador da impressora Controlador do disco rígidoHardware Dispositivo Figura 56 – Camadas do software de E/S Os drivers de dispositivos estão classificados em poucas categorias. Entre elas as mais comuns são: •Dispositivo de bloco. • Dispositivos de caractere. Os sistemas operacionais possuem uma interface padrão para os drivers de bloco e outra para driver de caractere. Essas interfaces permitem que os dispositivos sejam manipulados pelo sistema operacional. Em alguns ambientes o sistema operacional pode ser um único programa binário que contém intricados os driver necessários. Quando é preciso a instalação de um novo dispositivo, então deve‑se recompilar o núcleo do sistema operacional com o novo driver, construindo um novo binário. Esse modelo, no início do Linux, causou grande impacto para os leigos usuários desse sistema, exatamente pela obrigatoriedade do usuário ter de procurar o driver necessário para seu dispositivo e, posteriormente, compilar o núcleo do sistema – ação que para muitos ainda é uma missão impossível. Com a enorme diversidade de dispositivos de E/S e a demanda por trocas e atualizações constantes, o modelo apresentado anteriormente não é mais adequado. Os sistemas operacionais para computadores pessoais passaram para um modelo, no qual os drivers podem ser dinamicamente carregados no sistema durante a execução. 114 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 8.5.3 Software de E/S independente de dispositivo O software de dispositivos possui geralmente duas partes, sendo a primeira inerente ao dispositivo e outra parte que é independente. Os softwares independentes de dispositivos executam funções de entrada e saída comuns para todos os dispositivos, fornecendo uma interface uniforme para o software no nível do usuário.26 As funções descritas a seguir, em geral, são feitas no software independente de dispositivo. • Interface normalizada com driver de dispositivos. • Providenciar um tamanho de bloco independente de dispositivo. • Buffering. • Processamento e reporte de erros. • Alocação e liberação de dispositivos dedicados. A construção de uma interface uniforme permite ao sistema que todos os dispositivos de entrada e saída e drivers pareçam similares. Na Figura 57a, é ilustrada uma colocação simbólica, na qual os drivers de cada dispositivo apresentam uma interface diferente para o sistema operacional. Tendo em vista que as funções do núcleo do sistema operacional, requeridas pelo driver, também diferem de um driver para o outro, a resultante é um grande esforço de programação. Na Figura 57b, são simbolizados os drivers com a mesma interface e, se um novo driver estiver em conformidade com essa interface, isso irá tornar muito mais fácil conectar um novo dispositivo. Dessa forma, fica muito mais previsível para os programadores de driver saberem quais funções eles devem fornecer, bem como quais funções eles poderão chamar do núcleo. Sistema operacional Drive do disco Drive do teclado Drive do mouse a. Sistema operacional Drive do disco Drive do teclado Drive do mouse b. Figura 57 – a. Sem interface padrão para o driver. b. Com uma interface padrão para o driver 26 Disponível em: <http://www.ufpi.br/subsiteFiles/eml/arquivos/files/SO/SO_Livro.pdf>. Acesso em: 8 jun. 2011. 115 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.5.4 Software de E/S do espaço do usuário Nesse cenário, em camadas de software de E/S, somente uma pequena parte é constituída de bibliotecas atreladas aos programas do usuário e de programas que executam fora do núcleo do sistema operacional. Além dos softwares de E/S no nível do usuário constituído de rotinas de biblioteca, outra categoria é o sistema de spooling. Um processo especial, chamado daemon, e um diretório especial no sistema, chamado de diretório de spool, são criados para tratar as novas entradas. Em um caso de uma impressora que está sendo acessada por um processo durante 20 minutos, mas nenhuma impressão está sendo realizada por ele, isso significaria que mais nenhum outro processo poderia ter usado a impressora, tendo em vista que ela estava ocupada. Entretanto, com o spooling, o processo gera um arquivo a ser impresso e o coloca no diretório de spool, ficando como responsabilidade do processo especial daemon a exclusiva permissão para usar o arquivo especial da impressora e imprimir os arquivos no diretório. Com isso, é eliminada a possibilidade de outro processo tomar para si o recurso e mantê‑lo ocupado mesmo sem necessidade. O spool também é usado em outros casos, tal como a transferência de arquivos pela rede, em que o processo de transmissão de arquivo usa um spool de rede e, posteriormente, o daemon respectivo de rede irá retirar o arquivo do diretório de spool e transmiti‑lo. A Figura 58 demonstra, de forma geral, o sistema de E/S, ilustrando todas as camadas e as principais funções de cada uma delas. Funções de E/S Chama E/S; formata E/S; coloca no spool Nomeação, proteção, bloqueio, utilização de buffer e alocação Ajusta os registradores do dispositivo; verifica status Acorda driver quando a E/S está completa Execura operações de E/S Camada Processo do usuário Software independente de dispositivo Drivers dos dispositivos Tratadores de interrupção Hardware 1. Requisição de E/S 2. Resposta de E/S 1. 2. Figura 58 – Sistema de E/S: camadas e principais funções 8.6 Hardware de E/S Para todos os tipos de plataformas de computadores, necessitamos de algum tipo de dispositivo para informar entradas e receber resultados, constituindo o que chamamos genericamente de dispositivos de Entrada e Saída (E/S). 116 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 Com base no sentido do fluxo de dados entre o computador e o dispositivo, denominamos esses dispositivos como periféricos de entrada, periféricos de saída, ou ainda, periféricos de entrada e saída. Um periférico é qualquer dispositivo conectado a um computador, possibilitando sua interação com o mundo externo. Um componente de hardware denominado interface permite que os periféricos sejam conectados ao computador. Portanto, os periféricos não estão conectados diretamente aos barramentos do computador. Dessa forma, as interfaces constituem um elemento primordial para que a transferência de dados entre periférico e processador, ou entre periférico e memória, ocorra. Outro componente de hardware denominado controlador integra as interfaces. Um controlador corresponde a um processador/chip projetado para realizar uma função específica, como controlar um disco rígido.27 Os hardwares de E/S tem como principais componentes os chips, as ligações elétricas e os componentes físicos. Os dispositivos de E/S estão divididos em três classes: • Dispositivo de bloco: armazena informação em blocos de tamanho fixo, com endereço (exemplo: disco). • Dispositivo de caractere: envia ou recebe fluxo de caracteres sem considerar qualquer estrutura de blocos (exemplo: impressoras, interface de rede, mouse). • Outros dispositivos: relógio. 8.6.1 Discos rígidos Os discos rígidos são dispositivos de armazenamento destinados a grandes quantidades de dados. Atualmente, qualquer computador pessoal vem com algo em torno de 500 GB, a ponto de a unidade de medida dos primeiros computadores ser na casa das dezenas ou centenas de bytes. Fisicamente, um disco rígido é composto por dois grandes blocos. 27 Disponível em: <http://professor.rodrigoscama.com.br/textos/SO_EntradaeSaida.pdf>. Acesso em: 8 jun. 2011. 117 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 Figura 59 – Discos metálicos e estrutura mecânica de um disco rígido 1. Conjunto de discos metálicos: é superposto e disposto em alturas diferentes suportado por um eixo central. As duas superfícies de cada disco são recobertas por uma cobertura magnética, possibilitando a gravação dos dados. No momento de acesso ao disco, essa estrutura é mantida em uma rotação constanteem torno de 7.200 rpm. 2. Estrutura mecânica: suporta um conjunto de cabeçotes, sendo um para cada superfície de disco. É capaz de realizar movimentos de vaivém, possibilitando que os cabeçotes possam ser deslocados do centro até a borda do disco e vice‑versa. Do ponto de vista da organização lógica, cada superfície de um disco é dividida em circunferências concêntricas denominadas trilhas. Cada trilha é subdividida radialmente em unidades chamadas blocos lógicos. Tipicamente, todos os blocos têm o mesmo tamanho, variando entre 512 e 4.096 bytes. O bloco constitui‑se na menor unidade de leitura e gravação possível em um disco.28 RAID (Redundant Array of Independent Disks) A RAID é uma estrutura que se propõe a solucionar problemas associados com o armazenamento de grandes quantidades de dados. Ela é associada sempre à cópia de segurança. O princípio fundamental de uma estrutura RAID é combinar vários discos rígidos físicos em uma estrutura lógica de discos de forma a aumentar a confiabilidade e o desempenho do ambiente. 28 Disponível em: <http://professor.rodrigoscama.com.br/textos/SO_EntradaeSaida.pdf>. Acesso em: 8 jun. 2011. 118 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 conjunto de discos (array) independentes (independent) em RAID armazena informações de forma redundante (redundant), viabilizando a recuperação de dados em caso de falha física de um dos discos.29 A estrutura de RAID é dividida em níveis, sendo: • RAID 0: nesse nível, os dados escritos são divididos entre os diferentes discos físicos que compõem o disco RAID sem considerar nenhum mecanismo para o controle ou correção de erros. Denominamos de stripping o método de escrever (e depois acessar) os dados em paralelo em diferentes discos.30 A1 A3 A5 A7 A2 A4 A6 A8 RAID 0 Disco 0 Disco 1 Figura 60 – RAID 0 • RAID 1: esse nível é conhecido como espelhamento (mirroring). Aqui, um dado é escrito simultaneamente em um disco primário e em um disco secundário de cópia.31 A1 A2 A3 A4 A1 A2 A3 A4 RAID 1 Disco 0 Disco 1 Figura 61 – RAID 1 29 Disponível em: <http://professor.rodrigoscama.com.br/textos/SO_EntradaeSaida.pdf>. Acesso em: 8 jun. 2011. 30 Idem. 31 Idem. 119 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 • RAID 2/3/4: os dados são armazenados em diferentes discos, utilizando‑se stripping. No RAID 2, são armazenadas informações ECC (Error Correcting Code), que são as informações de controle de erros, no lugar da paridade. No RAID 3, um único bit de paridade é computado para cada palavra de dados e escrito em um drive de paridade. O RAID 4, assim como outros RAIDs, cuja característica é utilizarem paridade, usa um processo de recuperação de dados mais abrangente que arrays espelhados, como RAID 1. Esse nível também é útil para criar discos virtuais de grande dimensão, pois consegue somar o espaço total oferecido por todos os discos, exceto o disco de paridade. O desempenho oferecido é razoável nas operações de leitura, pois podem ser utilizados todos os discos simultaneamente.32 Em caso de falha em um dos discos, a informação contida nos demais discos, mais a informação da paridade, são suficientes para a reconstrução dos dados armazenados no disco que apresentou problemas. A diferença entre os níveis 2, 3 e 4 está na forma pela qual a paridade é calculada: paridade a bit no RAID 2, paridade a byte no RAID 3 e paridade de bloco no RAID 4.33 Disco 0 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 A4 B4 C4 D4 Ap1 Bp1 Cp1 Dp1 Ap2 Bp2 Cp2 Dp2 Ap3 Bp3 Cp3 Dp3 Disco 1 Disco 2 Disco 3 Disco 4 Disco 5 Disco 6 RAID 2 Figura 62 – RAID 2 Disco 0 A1 A4 B1 B4 A2 A5 B2 B5 A3 A6 B3 B6 Ap(1‑3) Ap(4‑6) Bp(1‑3) Bp(4‑6) RAID 3 Disco 1 Disco 2 Disco 3 Figura 63 – RAID 3 32 Disponível em: <http://pt.wikipedia.org/wiki/RAID>. Acesso em: 8 jun. 2011. 33 Disponível em: <http://professor.rodrigoscama.com.br/textos/SO_EntradaeSaida.pdf>. Acesso em: 8 jun. 2011. 120 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 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 Ap Bp Cp Dp Disco 0 Disco 1 Disco 2 Disco 3 RAID 4 Figura 64 – RAID 4 • RAID 5: esse nível é similar ao nível de RAID 3, ou seja, os dados são divididos entre os diferentes discos e, para cada strip, é calculada a paridade. A diferença reside no fato de que essa informação de paridade não é mais concentrada em um único disco, mas sim distribuída entre os diferentes discos.34 A1 B1 C1 Dp A2 B2 Cp D1 A3 Bp C2 D2 Ap B3 C3 D3 Disco 0 Disco 1 Disco 2 Disco 3 RAID 5 Figura 65 – RAID 5 • RAID 6: é um padrão relativamente novo, suportado por apenas algumas controladoras de disco. É semelhante ao RAID 5, porém usa o dobro de bits de paridade, garantindo a integridade dos dados caso até dois dos discos rígidos falhem ao mesmo tempo. Ao usar oito discos rígidos de 36 GB cada um em RAID 6, teremos 216 GB de dados e 72 GB de paridade.35 34 Disponível em: <http://professor.rodrigoscama.com.br/textos/SO_EntradaeSaida.pdf>. Acesso em: 8 jun. 2011. 35 Disponível em: <http://pt.wikipedia.org/wiki/RAID>. Acesso em: 8 jun. 2011. 121 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 A1 B1 C1 Dp Eq A2 B2 Cp Dq E1 A3 Bp Cq D1 E2 Ap Bq C2 D2 E3 Aq B3 C3 D3 Ep Disco 0 Disco 1 Disco 2 Disco 3 Disco 4 RAID 6 Figura 66 – RAID 6 • RAID 0+1: é uma combinação dos níveis 0 (striping) e 1 (mirroring), na qual os dados são divididos entre os discos para melhorar o rendimento e também utilizar outros discos para duplicação de dados. Dessa forma, é possível utilizar o bom rendimento do nível 0 com a redundância do nível 1. No entanto, é necessário, pelo menos, quatro discos para montar um RAID 0+1. Sua arquitetura faz do RAID 0+1 o mais rápido e seguro, porém o mais caro. No RAID 0+1, se um dos discos apresentar falha, o sistema vira um RAID 0. Se os dois discos que possuem a sequência A1, A3 e A5 falharem ao mesmo tempo, haverá perda de dados. Se apenas uma das controladoras falhar, o sistema continua funcionando, mas nessa situação o ambiente estará sem tolerância à falha e sem o ganho de velocidade.36 A1 A3 A5 A7 A2 A4 A6 A8 RAID 0 Disco 0 Disco 1 A1 A3 A5 A7 A2 A4 A6 A8 RAID 0 Disco 2 Disco 3 RAID 1 RAID 0 + 1 Figura 67 – RAID 0+1 36 Disponível em: <http://pt.wikipedia.org/wiki/RAID>. Acesso em: 8 jun. 2011. 122 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 • RAID 1+0 ou 10: exige ao menos quatro discos rígidos. Cada par será espelhado para garantir redundância e, para melhorar o desempenho, os pares serão distribuídos. Nesse cenário, até metade dos discos pode falhar simultaneamente, desde que não falhem os dois discos de um espelho qualquer. Isso porque são usados discos de lotes diferentes de cada “lado” do espelho. É o nível recomendado para bases de dados por ser o mais seguro e com melhor desempenho.37 A1 A3 A5 A7 A1 A3 A5 A7 RAID 0 Disco 0 Disco 1 A2 A4 A6 A8 A2 A4 A6 A8 RAID 1 Disco 2 Disco 3 RAID 0 RAID 10 Figura 68 – RAID 1+0 • RAID 50: É um arranjo híbrido que usa as técnicas de RAID com paridade em conjunção com a segmentação de dados. Um arranjo RAID‑50 é essencialmente um arranjo com as informações segmentadas por meio de dois ou mais arranjos.38 A1 B1 Cp D1 A2 Bp C1 D2 Ap B2 C2 Dp A3 B3 Cp D3 A4 Bp C3 D4 Ap B4 C4 Dp A5 B5 Cp D5 A6 Bp C5 D6 Ap B6 C6 Dp Disk 0 120GB Disk 1 120GB Disk 2 120GB Disk 3 120GB Disk 4 120GB Disk 5 120GB Disk 6 120GB Disk 7 120GB Disk 8 120GB RAID 0 RAID 5 RAID 5 RAID 5 Figura 69 – RAID 50 37 Idem. 38 Disponível em: <http://pt.wikipedia.org/wiki/RAID>. Acesso em: 8 jun. 2011. 123 FUNDAMENTOS DE SISTEMAS OPERACIONAIS Re vi sã o: S ilv an a - Di agra m aç ão : M ár ci o - 04 /0 5/ 20 11 • RAID 100: é composto do RAID 10+0. Normalmente, ele é implementado utilizando uma combinação de software e hardware, ou seja, implanta‑se o RAID 0 via software sobre o RAID 10 via hardware.39 A1 A5 B1 B5 Disk 0 120GB Disk 1 120GB Disk 2 120GB Disk 3 120GB Disk 4 120GB Disk 5 120GB Disk 6 120GB Disk 7 120GB A1 A5 B1 B5 A2 A6 B2 B6 A2 A6 B2 B6 A3 A7 B3 B7 A4 A8 B4 B8 A3 A7 B3 B7 A4 A8 B4 B8 RAID 1 RAID 1 RAID 1 RAID 1 RAID 0RAID 0 RAID 0 Figura 70 – RAID 100 O controle requerido para implantação de uma configuração RAID pode ser realizado por software ou hardware. Se a implantação for por hardware, a capacidade de stripping, o cálculo de paridade e da escrita simultânea em discos são providos pela própria controladora de disco, portanto, não é necessária nenhuma intervenção especial do sistema operacional. Em um RAID implantado por software, as informações devem ser fornecidas pelo próprio sistema operacional. Dessa forma, os dados a serem escritos são divididos pelo sistema operacional da máquina e as diferentes fatias de dados são enviadas aos discos um por um.40 8.7 Relógio Os temporizadores (timers – relógios) são extremamente necessários por algumas razões, porém, em sistemas operacionais, o mais relevante é: • Manter o funcionamento de segundos, minutos, horas, data e ano, mesmo que o computador esteja desligado. Com isso, quando o equipamento estiver ligado e em funcionamento, é o relógio que irá fornecer o tempo real e atual para o ambiente. Portanto, o sistema pode calcular quanto tempo um processo já está na CPU e, de ciclos em ciclos, quanto irá alternar entre os demais processos. 39 Idem. 40 Disponível em: <http://professor.rodrigoscama.com.br/textos/SO_EntradaeSaida.pdf>. Acesso em: 8 jun. 2011. 124 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 Apesar do temporizador não ser um dispositivo de bloco nem um dispositivo de caractere, o software desse componente pode tomar a forma de um driver de dispositivo. 8.7.1 Hardware do relógio – visão geral Os computadores típicos e atuais utilizam um relógio interno que não é parecido com os nossos relógios de pulso ou de mesa. Os relógios dos computadores são formados por três componentes: • Oscilador de cristal. • Controlador. • Registrador de apoio. Devido ao processo extremamente preciso da seleção, corte e montagem sob pressão de um fragmento de cristal de quartzo, é possível obter um sinal cíclico de alta precisão medido em centenas de megahertz. Somando a capacidade da eletrônica, podem ser obtidas frequências de 1.000 MHz ou superiores. O sinal gerado pelo circuito eletrônico descrito anteriormente servirá como referência de sincronização para os vários elementos do computador que necessitem desse tipo de interação. O sinal gerado alimenta um controlador que irá realizar uma contagem regressiva até zero. Quando o controlador chega à contagem igual a zero, este, por sua vez, irá gerar uma interrupção na CPU. A bateria que vem juntamente com a placa‑mãe (bother board) é necessária para manter o relógio funcionando até quando o computador está desligado ou mesmo desconectado da tomada. Observação Essa bateria é fácil de ser identificada na placa‑mãe. Ela tem o tamanho aproximado de uma moeda de R$ 0,05 e próximo a ela há um jumper para reset caso necessário. Se o relógio não estiver presente no sistema, então será solicitado ao usuário informar a data e a hora no momento do processo de inicialização da máquina. Para sistemas em rede, existe outra forma que é o uso de um computador remoto de sincronismo de data e hora. Com isso, todos os equipamentos na rede estarão no mesmo tempo ou, em outras palavras, estarão sincronizados. 125 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 Figura 71 – Bateria instalada na placa‑mãe 8.7.2 Software do relógio – visão geral O software do relógio usará o dado de saída fornecido pelo hardware do relógio, que é responsável por gerar os pulsos em intervalos extremamente precisos e, preferencialmente, em repetições infinitas. Então é preciso fornecer as seguintes entregas: 1. Manter o dia e a hora: a cada tique do relógio haverá um incremento do contador. 2. Evitar processo executando por tempo maior que o devido: quando um processo é iniciado, o escalonador inicia o contador com o valor do tempo (quantum) do processo em tiques de relógio. Em cada interrupção, o driver do relógio decresce um no contador. Assim que o contador atinge o valor zero, então é chamado o escalonamento para selecionar outro processo. 3. Contabilizar o uso da CPU. Geralmente é usado um segundo temporizador, diferente do relógio principal do sistema, sempre que um processo é inicializado. Quando o processo é interrompido, o temporizador pode ser lido para saber por quanto tempo o processo esteve em execução. 4. Tratar a chamada de sistema alarm feita pelos processos do usuário, ou seja, quando um determinado processo necessita de que o sistema operacional lhe dê um aviso após certo intervalo. 5. Fornecer temporizadores watch‑dog. Um exemplo prático do uso do watch‑dog é quando uma unidade de disco flexível está sendo chamada para uso. No instante zero, o motor da unidade encontra‑se parado. Somente após o motor estabelecer a rotação adequada é que a cabeça de leitura estará pronta para iniciar a procura, bem como o programa do usuário poderá executar sua tarefa. Portanto, é o watch‑dog que dará ao sistema a referência de tempo necessária para que o motor já esteja na rotação adequada para não danificar as partes. 126 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 6. Perfil de execução, realizar monitoramentos e coletar estatísticas. Essa função permite que o programa do usuário tenha condições de receber do sistema um histograma do contador de programa, podendo assim relatar onde está sendo gasto o tempo. 8.7.3 Temporizador por software – visão geral Geralmente, os computadores possuem um segundo relógio programável, podendo ser ajustado para refletir interrupções na taxa que o programa necessitar. Interrupções e polling são as duas maneiras típicas de gerenciar entrada e saída. As interrupções possuem bom tempo de resposta, ou seja, baixa latência, porém, quando em conjunto com as CPUs modernas, esse método causa sobrecarga devido à necessidade de chaveamentos de contexto. O polling é a alternativa para o gerenciamento de E/S por interrupção. Ele permite que a aplicação realize o processo diretamente, verificando a ocorrência do evento esperado em intervalos de tempo. Porém, se o evento ocorrer imediatamente após a verificação, então haverá atraso por fazer a aplicação esperar até o próximo polling. 8.8 Teclado, mouse e monitor – visão geral Nos computadores pessoais, os dispositivos, como teclado, mouse e monitor, são praticamente indispensáveis. Mesmo os equipamentos portáteis, quando não munidos de mouse, possuem a opção do touch screen ou algum outro método que faz a função similar à do mouse. Para os servidores de rede, nem sempre são disponibilizados teclados, mouse e monitor. Isso acontece até por uma questão de economia, de espaço ou até mesmo por segurança. Em muitas empresas de outsourcing o data center é praticamente uma sala apagada, ou seja, somente máquinas instaladas nos racks. Muitas vezes, em outro prédio que pode estar a quilômetros de distância, fica a equipe técnica que suporta ou executa as atividades nos servidores. Normalmente, quando acontece um problema mais específico, o operador do data center, que fica no próprio local onde estão os servidores, vai até o equipamento danificado com um console ou então faz uso do teclado, mouse e monitor. Em alguns casos, é instalado juntamente com os servidores um conjunto com teclado, mouse e monitor embutido que pode serretraído e guardado de forma a não ocupar um espaço considerável. Esse dispositivo possui cabos e entradas para atender vários servidores, necessitando apenas selecionar por chave qual servidor quer obter controle e acesso. Figura 72 – Kit teclado, mouse e monitor para rack padrão 19” (1U) fechado (esquerda), aberto (direita). 127 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.8.1 Software do teclado Entre os dispositivos disponíveis para os usuários que servirão de entrada temos o teclado que possui um circuito impresso e um conjunto de teclas sendo conectado ao computador por meio de uma porta serial ou USB. Toda vez que é pressionado ou liberado, uma interrupção é imediatamente gerada. Figura 73 – Circuito do teclado O código de varredura é o número composto por 7 bits e que irá compor uma identificação distinta para cada tecla, sendo necessário para o driver controlador o oitavo bit para definir se a tecla encontra‑se pressionada (igual a zero) ou solta (igual a um). Quando uma tecla é pressionada, o código da tecla é colocado no registrador de E/S. O driver é capaz de determinar se a tecla é minúscula, maiúscula, precedida de CRTL, ALT ou CTRL‑ALT. Figura 74 – Código de varredura – teclado com 106 teclas Os teclados são definidos conforme norma ISO9995. Saiba mais Para saber mais a respeito, consulte: <http://www‑01.ibm.com/software/globalization/topics/keyboards/iso.jsp>. 128 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 Conforme padrão POSIX, existem dois modos para driver de teclado: não canônico e canônico. O “não canônico” é baseado em caractere ou sequência de caractere. Isso implica que, se durante a digitação o usuário errar e tentar usar a tecla backspace (retrocesso), na realidade, o resultado será a palavra ou caractere errado. O modo “canônico” é com base em linha, ou seja, o driver trata toda a edição interna da linha e entrega somente as linhas corrigidas para os programas do usuário. 8.8.2 Software do mouse Os modelos de mouse mais antigos possuem internamente dois dispositivos mecânicos com pequenos orifícios. Conforme Figura 75, é fixado em um dos lados de cada roda um emissor de luz e do outro lado, o receptor. Conforme movimentação do mouse, a esfera de borracha irá por consequência girar as rodas perfuradas e, com base nos movimentos e passagem de luz por cada orifício, serão determinadas as coordenadas para os eixos “X” e “Y”. eixo “X” eixo “Y” Figura 75 – Estrutura interna do mouse Os mouses ópticos modernos possuem um processador de imagens que, continuamente, tira fotos de baixa resolução da superfície e as compara em busca de alteração. Quando é detectada a movimentação do mouse, com o botão sendo pressionado ou liberado, uma informação é enviada para o computador. As informações são compostas por três itens: 1. Deslocamento do eixo “X”. 2. Deslocamento do eixo “Y”. 3. Informação dos botões. O menor deslocamento de espaço detectado por um mouse é normalmente de 0,1 mm e faz uma varredura de 40 vezes por segundo. Alguns programas diferem o comando que é esperado pelo usuário, 129 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 quando é pressionado o botão duas vezes seguidas e rapidamente. Vale destacar que com base nos parâmetros de espaço e tempo informados previamente, a sensibilidade para detectar o “double click” fica a cargo do ajuste a ser configurado no programa. 8.8.3 Software de saída Se comparado com o software de entrada, o software de saída é mais simples, entretanto existem particularidades e variâncias que necessitam de nossa atenção. Nesta seção, daremos ênfase ao software de interface gráfica, tendo em vista que, para os usuários, o principal dispositivo de saída é o monitor do computador. Em 1984, o MIT (Massachusetts Institute of Technology) desenvolveu o projeto Athena, resultando no sistema X‑Window, também conhecido como “X”. Ele é um protocolo de rede que tem como objetivo conectar diversos terminais a um servidor central, provendo base para GUI (Graphical User Interface). O “X” é composto por dois componentes principais: o software client e o software host que podem funcionar em máquinas distintas, ou, nos casos mais atuais, nas máquinas com o sistema operacional Linux, ambos no mesmo equipamento. Saiba mais Para saber mais a respeito do “X” consulte: <http://www.linfo.org/ x.html>. Na Figura 76 é demonstrado o ambiente Gnome (GNU Network Object Model Environment) e na Figura 77 o ambiente KDE (K Desktop Environment) que são dois dos ambientes gráficos disponíveis em sistemas Linux e ambos são executados sobre o ambiente X‑Window. Figura 76 – Ambiente gráfico Gnome 130 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 Saiba mais Para saber mais a respeito do Gnome consulte o site: http://www.gnome.org/ Figura 77 – Ambiente gráfico KDE Saiba mais Para saber mais a respeito do KDE consulte o site: http://www.kde.org/ O servidor X é o software responsável por coletar a entrada no teclado e o mouse então escrever a saída na tela e controlar a janela ativa. Os clientes X são os programas em funcionamento, podendo estar localmente na mesma máquina ou remotamente por meio de uma rede. Em outras palavras, o servidor X fica localizado na máquina do usuário a qual tem por função principal exibir bits na tela do terminal. É demonstrado na Figura 78 o modelo de quando o servidor e o cliente X estão em máquinas distintas e conectadas por uma rede. Cliente X Servidor XRede (LAN / WAN) Máquina remota Estação do usuário Figura 78 – Sistema X‑Window cliente e servidor 131 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 Observação No caso de uma única máquina com o sistema operacional Linux e com o ambiente gráfico Gnome ou KDE, o cliente é simplesmente um programa que utiliza a biblioteca X e se comunica com o servidor X que está na mesma máquina. Essa comunicação é feita internamente por meio do protocolo TCP/ IP, da mesma forma que na comunição por rede demonstrada na Figura 78. Em geral, os computadores pessoais possuem uma interface gráfica do usuário (GUI – Graphical User Interface) que tem quatro elementos essenciais (WIMP): 1. Windows: janelas, áreas retangulares para executar problemas. 2. Icons: ícones, pequenos símbolos que possuem alguma ação associada assim que executados. 3. Menus: são listas de ações agrupadas. 4. Pointing: apontador pode ser um mouse ou outro dispositivo com a finalidade de mover um cursor na tela. O software de GUI é implementado no Windows como parte inerente do sistema operacional ou por meio de códigos no nível do usuário, como é feito nos sistemas Unix. Geralmente, a entrada de dados para as interfaces gráficas são via teclado e mouse e a saída pelo hardware de adaptador gráfico. Os adaptadores gráficos possuem uma memória chamada de RAM de vídeo e têm a finalidade de armazenar as imagens exibidas na tela. Tipicamente, os adaptadores gráficos de alta resolução possuem processadores de 32 ou 64 bits e até 4 GB de memória RAM de vídeo. A memória de vídeo pode ser usada para armazenar outro tipo de dado além das imagens, como é o caso do Z‑buffer, que gerencia coordenação em gráficos 3‑D, texturas, vertex buffer e a compilação de programas de sombreamento. Os adaptadores gráficos suportam dimensões distintas de tela. Entre os tamanhos mais comuns encontrados, temos 1.024 x 768, 1.280 x 960, 1.600 x 1.200 e 1.920 x 1.200. Exceto o 1.920 x 1.200, os demais estão na formatação 4:3, conforme padrão NTSC e PAL, e fornecem pixels quadrados. O tamanho 1.920 x 1.200 está alinhado com as telas widescreen. Se usada a melhor resolução, somente para conter a imagem, uma placa devídeo colorida com 24 bits por pixel necessita de 6,5 MB de memória RAM. Sendo a tela completamente restaurada 75 vezes por segundo, a RAM de vídeo deve entregar dados continuamente em uma frequência de 489 MB/s. Para saber mais a respeito dos softwares de saída para as GUIs é indicado estudo usando livros dedicados ao tema, por exemplo: Petzold, 1999. 132 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 Um programa para Windows, diferentemente do ambiente Unix, em geral, cria uma ou mais janelas com um objeto‑classe para cada janela. Cada programa possui uma fila de mensagens e um conjunto de procedimentos tratadores. O comportamento do programa é dirigido pelos eventos que são originados por mouse e teclado e são processados pelos procedimentos tratadores. O GDI (Graphics Device Interface – Dispositivo de Interface Gráfica), é um dos três subsistemas principais do Microsoft Windows. É um padrão desse sistema operacional para representar objetos gráficos e transmiti‑los para dispositivos de saída. O GDI é responsável por tarefas como desenhar linhas, curvas e fontes, providenciando todo um API (Application Programming Interface – Interface de Programação de Aplicações) específico para a execução dessas operações. Uma coleção de chamadas de rotinas GDI pode ser concentrada em um arquivo, denominado meta‑arquivo, capaz de descrever um desenho completo. Não são todas as imagens manipuladas que podem ser geradas a partir de gráficos vetoriais. As fotografias e os vídeos são exemplos de imagens que não usam gráficos vetoriais. Imagem vetorial é um tipo de imagem gerada a partir de descrições geométricas de formas, diferente das imagens chamadas de mapa de bits (bitmaps), que são geradas a partir de pontos minúsculos diferenciados por suas cores. Uma imagem vetorial tipicamente é composta por elipses, curvas, polígonos, texto, entre outros elementos, ou seja, utilizam‑se vetores matemáticos para sua descrição. Em um trecho de desenho sólido, monocromático, um programa vetorial apenas repete o padrão, não tendo que armazenar dados para cada pixel. Nas versões mais antigas dos sistemas operacionais da Microsoft, cada caractere era representado por mapas de bits. Uma vez que podem ser necessários todos os caracteres de todos os tipos de fontes e em tamanhos variados, seria necessário um enorme número de mapas de bits para termos todas as combinações possíveis, o que o tornava um sistema totalmente inadequado para textos. Os esboços de caracteres ou fontes TrueTypes são definidos por uma sequência de pontos ao redor de seu perímetro, portanto todos os pontos são relativos à origem de coordenada (0,0) o que permite escalar os caracteres de maneira crescente ou decrescente multiplicando cada coordenada pelo mesmo fator de escala. 8.9 Thin clients – clientes magros Os clientes magros são máquinas com capacidade limitada, com pouco software instalado localmente e se comunicando com um computador central por meio do protocolo de rede. Os conceitos antagônicos de centralização ou descentralização são assuntos que vêm sendo discutidos por décadas. Nos primórdios da computação, o modelo centralizado era muito utilizado. Posteriormente, o modelo descentralizado passou a tomar corpo e força e ultimamente há uma tendência expressiva para a volta do modelo antigo. Essa volta, em termos conceituais, é exatamente o modelo idealizado no início da história da computação, porém, devido ao fato de termos a internet como a nova variável no cenário atual, esse 133 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 modelo centralizado é, na prática, uma versão muito mais complexa e com possibilidades muito mais amplas que anteriormente. No início da computação, os servidores, denominados computadores de grande porte, possuíam para a época muitos bytes de memória, bytes de disco e IPIs (Instructions per Second – Instruções por Segundo), capacidade de processamento e os denominados terminais burros (basicamente dispositivos de entrada e saída e uma placa de rede). Com o passar dos anos, vimos as estações de trabalho ficarem cada vez mais poderosas, com milhões de bytes de espaço em disco, milhões de bytes em memória e processadores que dariam depressão aos primeiros “supercomputadores”. Atualmente, com a internet, notamos usuários que não estão mais dispostos a perderem tempo, adicionarem riscos de perda de arquivos e armazenarem e‑mails no disco duro localmente. Hoje é trivial usarmos os provedores desse serviço na hora que desejamos, de forma remota, de onde estivermos e por meio de qualquer dispositivo com navegador, acessar a internet. Essa filosofia vem se expandindo e não irá demorar para estarmos trabalhando da mesma forma com os nossos arquivos de texto, apresentações, planilhas, vídeos, sons e outros. Com essa nova onda tendencial, apareceu o thinc, desenvolvido pelos pesquisadores da Universidade de Columbia. O thinc tem por princípio tirar todos os programas do equipamento do usuário e usá‑lo somente como tela, com toda a computação sendo realizada pelo servidor. O protocolo entre o cliente thinc e o servidor simplesmente informa à tela como atualizar a RAM de vídeo. Sistema operacional instalado Microsoft® Windows® Embedded CE 6.0 R2 Browser supported Memória padrão SDRAM DDR2 de 512 MB Memória flash 128 MB Gráficos Placa de vídeo integrado VIAChrome9 HC3 com suporte para monitores de alta resolução até 1920 x 1440 ou até 32 bits de profundidade de cor (64 MB de memória de vídeo) Figura 79 – Thin clients – Informação geral 8.10 Gerenciamento de energia Atualmente, a humanidade consome 30% a mais dos recursos naturais do que a capacidade de renovação da Terra. Se não houver mudança nos padrões de consumo e produção, em menos de 50 anos já serão necessários mais de dois planetas Terra para suprir nossas necessidades de água, energia e alimentos. 134 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 Todo consumo causa impacto (positivo ou negativo) na economia, nas relações sociais, na natureza e em cada indivíduo. Ao ter consciência desses impactos, o consumidor pode buscar maximizar os impactos positivos e minimizar os negativos para construir um mundo melhor. Consumo consciente é um consumo com consciência de seu impacto e voltado à sustentabilidade da vida no planeta. (...) Segundo o professor Luiz Pinguelli Rosa, da pós‑graduação e pesquisa de engenharia da UFRJ (Universidade Federal do Rio de Janeiro), as emissões de gases de efeito estufa mundiais (aqueles que contribuem para o aquecimento global) cresceram 80%, entre 1970 e 2004, e representavam, em 2004, 77% das emissões causadas por atividades humanas. Nesse período, o maior crescimento das emissões ficou com o setor de energia, que aumentou 145%. Apesar disso, segundo a Agência Internacional de Energia (IEA), levando em consideração o ritmo atual, o consumo energético do mundo aumentará em 50% até 2030. Por isso, uma das principais preocupações do consumidor consciente deve ser a redução no gasto de energia. Além das questões ambientais, também existem as questões sociais. Quanto mais energia gastamos, mais energia terá de ser produzida. A capacidade do Brasil de fornecer eletricidade já está no seu limite, e novas usinas terão de ser construídas para atender à demanda.41 Conforme Eletrobras (www.eletrobras.com), no setor elétrico a capacidade nominal instalada em 2008 (milhões de kW) era de 103 milhões de kW distribuídos em: • Térmicas (25%). • Hidráulicas (73%). • Outros (0,2%). • Energia elétrica disponível em 2008: 541 bilhões de kWh. • Consumo nacional de energia elétrica em 2008: 418 bilhões de kWh. • Número de consumidores: 63,5 milhões. É estimado que, em 2030, o Brasil deverá estar com a capacidade nominal instalada de 216,6 milhões de kW (156 milhões dekW de hidroelétricas, 39,8 milhões de kW térmicos, destes, 21,0 milhões a gás 41 Disponível em: <http://www.hp.com/latam/br/consumoconsciente/energia.html>. Acesso em: 8 jun. 2011. 135 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 natural, 6 milhões a carvão, 7,35 milhões a combustível nuclear, e 5,5 milhões de outros, e, ainda, 30,8 milhões de energia alternativa – PCHs, biomassa e eólica). Em dezembro de 2010, no Brasil, existiam cerca de 74 milhões de computadores pessoais. Agora, imaginando um cenário hipotético, considere que esses computadores consumam algo estimado em 500 Watts e fiquem ligados por 5 horas por dia (média). Para calcular o valor de kWh devemos aplicar a fórmula: potência real x tempo de uso 1.000 Portanto, cada computador teria o consumo diário de: 500 Watts x 5 horas 1.000 = 2,5 kWh E cada computador teria o consumo mensal de: 2,5 kWh x 30 = 75 kWh Usando a tarifa (valor do kWh) de outubro de 2010, aplicada pela AESEletropaulo, teríamos para cada computador o equivalente (sem aplicar os tributos – PIS/PASEP e COFINS) a: 75 kWh x 0,29651 = R$ 22,24 Agora, calcule o valor em reais para os 74 milhões de computadores existentes hoje e terá a ordem de grandeza em kWh e financeira que representam os computadores ligados. Vale destacar que, na realidade, muitos desses computadores ficam mais que 5 horas ligados e possuem consumo maior que 500 Watts por hora. Isso devido às diversas necessidades dos usuários e placas e dispositivos conectados, sem contar que monitores antigos possuem consumo mais elevado que os novos modelos de monitores com tecnologia LED. Para o tema relacionado com consumo de energia, o sistema operacional pode contribuir desligando as partes do computador que não estejam em uso. Os aplicativos também podem contribuir usando menos energia. As baterias são divididas em duas categorias, não recarregáveis e carregáveis. Inicialmente, as baterias recarregáveis eram feitas de níquel cádmio (NiCd). Em seguida, vieram as baterias híbridas de metal níquel (NiMH), sendo mais resistentes e menos poluentes quando descartadas. Atualmente, as baterias mais modernas são as de íon lítio, permitindo que sejam recarregadas mesmo antes de sua descarga total. 136 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 Os fabricantes de computadores portáteis, principalmente notebooks que demandam mais da bateria, precisam projetar componentes que possibilitem diversas possibilidades de estado: • Ligado: quando o dispositivo está em uso. • Dormindo: quando o dispositivo não estiver em uso por um período curto de tempo. • Hibernando: quando o dispositivo não estiver em uso por um longo período de tempo. • Desligado: quando o dispositivo não for mais usado por um período indeterminado – nesse estado não há consumo de energia. O sistema operacional está pronto para gerenciar as transições dos estados quando os equipamentos possuem essas funcionalidades: ligado, dormindo, hibernando e desligado. Se compararmos isoladamente, o monitor é o dispositivo que mais consome energia em um computador. Portanto, ajustarmos o sistema operacional para desligar o monitor num intervalo de tempo justo de acordo com cada necessidade de cada usuário, ou aplicabilidade, é uma forma de contribuirmos para a economia de energia. Ao retornar à atividade, basta o usuário movimentar o mouse ou pressionar qualquer tecla. Outra técnica de melhoramento foi proposta por Flinn e Satyanarayanan (2004). Eles sugeriram que o monitor consistisse em zonas que pudessem ser ligadas ou desligadas independentemente. Essa proposta deixaria a área que não faz parte da janela em uso escura, com isso, dependendo do tamanho da área que não estivesse em uso, iria gerar uma economia substancial de energia. Em segundo lugar na nossa lista de maiores consumidores de energia em um computador padrão PC típico, está o disco rígido, devido a sua parte mecânica composta de cilindros e motores, nos quais devem manter o disco em uma rotação que pode chegar a 15.000 rpm. Principalmente em notebooks, é bastante aplicada para economia de energia a técnica de colocar o disco para hibernar quando ele fica sem uso por alguns minutos. Outras técnicas, como a existência de memória cache suficiente para retardar o acionamento do disco que está hibernando ou mensagens avisando aos programas que o disco está em hibernação, retardando o acesso ao disco para as ações de menor relevância, também são mecanismos para economia de energia. Também existem mecanismos para controle da CPU. O sistema operacional pode controlar a CPU para dormir e com isso reduz o consumo de energia desse componente para quase zero. Essa técnica pode ser aplicada pelo sistema operacional toda vez que não houver necessidade de uso ou quando a CPU estiver aguardando pelo dispositivo de E/S. Para se aprofundar no assunto, quem tiver interesse pode pesquisar outros itens relacionados a controle de energia associado à memória, dispositivos de comunicação sem fio, controle dos ventiladores internos que resfriam as CPUs, entre outros. As aplicações também podem contribuir para diminuir o consumo de energia. Em linhas gerais, podemos imaginar que uma figura com a extensão bmp normalmente é bem maior que uma figura 137 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 no formato jpeg ou gif e, portanto, se na hora que o desenvolvedor estiver preparando sua aplicação, ele resolver optar pela figura mais “leve”, isso irá economizar tempo e espaço de uso de recursos e, por consequência, reduzirá o consumo de energia. Reduzir a qualidade do vídeo, usar um codec de voz com menos amostragens e outras diversas técnicas podem ajudar nesse processo. Resumo O sistema de arquivos é um exemplo claro de abstração no mundo da computação. Pela visão do usuário, o sistema de arquivos é um conjunto de arquivos de sistema, documentos e figuras, todos dispostos em pastas de acordo com a necessidade do sistema e do usuário. Os usuários leigos no assunto não imaginam que os sistemas de arquivos possuem características intrínsecas de acordo com suas necessidades e plataformas. Há até usuários que tentam ler um arquivo que não é compatível entre sistemas de arquivos e mesmo assim dizem que existem problemas na máquina ou até mesmo que o arquivo está corrompido. Os arquivos possuem características que permitem que sejam lidos e escritos (alterados); os diretórios podem ser criados e excluídos e também podem armazenar outros subdiretórios e arquivos “dentro deles”. Arquivos contíguos, lista encadeada, tabelas de alocação de arquivos e i‑nodes são possíveis formas de descobrir como o sistema operacional aloca a memória e monitorar qual bloco vai para qual arquivo. As estruturas de diretórios podem ser diferentes entre os sistemas. Os atributos podem ficar nos diretórios ou em outro lugar, como no i‑node. O espaço em disco pode ser gerenciado por listas de espaços livres ou mapas de bits. Os sistemas mais modernos possuem mecanismos para melhorar a confiabilidade. Isso só é possível com técnicas de cópia incrementais e de programa que possa reparar sistemas de arquivos danificados. Técnicas como a inclusão de cache de bloco, a leitura antecipada e a disposição de blocos relacionados próximos uns dos outros melhoram a performance do sistema de arquivos. Diversos sistemas de arquivos foram comentados ao longo do material, porém é somente uma pequena parte das opções existentes no mercado. Entretanto, são os sistemas de arquivos que estão na quase totalidade dos computadores no mundo. 138 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 sistema de entrada e saída (E/S) pode ser implantado de três maneiras: 1. E/S programada: a CPU escreve ou lê cadapalavra ou byte, então espera em um laço estreito até que seja obtido ou haja possibilidade de enviar o próximo dado. 2. E/S por interrupção: a CPU escreve ou lê cada palavra ou byte, então segue para outra tarefa até que ocorra uma interrupção informando a conclusão da E/S. 3. E/S por DMA: um chip separado da CPU gerencia a transferência de um bloco de dados. Somente quando o bloco for totalmente transferido, então haverá uma interrupção. Os quatro níveis de uma estrutura de E/S são: 1. Rotinas dos serviços de interrupção. 2. Drivers dos dispositivos. 3. Software de E/S independente de dispositivo. 4. Software de E/S do espaço do usuário. Existem vários tipo de mídias, incluindo as magnéticas, ópticas e as tecnologias de RAID. Estudamos os relógios com o objetivo do entendimento a respeito do controle do tempo real, da definição exata do tempo de execução dos processos, do tratamento de temporizadores e para fins de contabilidade. Os terminais são estruturados com base em caracteres pontos, como as questões referentes aos caracteres especiais. Baseado na necessidade de controle que cada programa pode exigir são possíveis duas formas de entrada: 1. Entrada em modo natural. 2. Entrada em modo preparado. Atualmente, quase que a totalidade dos computadores usam GUIs como saída. Os programas para as interfaces gráficas do usuário são baseados em eventos que são enviados para serem processados praticamente de imediato. 139 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 Em muitos sistemas em que é necessário pouco ou praticamente nada de “inteligência e capacidade de processamento” nas pontas, os equipamentos denominados “clientes magros” possuem vantagens quando comparados com os PC tradicionais. Entre outras, o preço por unidade e a simplicidade dos dispositivos. Para os equipamentos portáteis que estão a cada dia conquistando mais o mercado de computadores, a bateria ainda é um ponto crucial. Os programas podem contribuir para otimizar tarefas, de tal forma que deem preferência à longevidade da carga da bateria, porém sacrificando algo. Esse mecanismo permite que os usuários que estejam em um local desprovido de fonte de energia externa para recarga da bateria, ou sem bateria extra, tenham pelo menos mais alguns minutos de carga para continuar sua atividade. Saiba mais <http://www.inf.ufes.br/~zegonc/material/Sistemas%20Operacionais/ Exercicios/Solucoes%20de%20Exercicios_Autores_V%203.2.pdf> Exercícios Questão 1. A técnica RAID (Redundant Arrays of Inexpensive Disk) é usada em gerenciamento de discos para otimizar as operações de E/S e implementar redundância e proteção de dados. (Processo Seletivo Público Edital Petrobras / PSP – RH – 1/2005. <pciconcursos.com.br/provas/Petrobras/2>. Analista de Sistemas Júnior – Suporte de Infraestrutura. Acesso em 21 de abril de 2011). A técnica RAID 5 consiste em: A) Distribuir os dados entre os discos do array, implementando redundância baseada em paridade. B) Distribuir o espelhamento ou mirroring de todo o conteúdo do disco principal, em um ou mais discos denominados espelhos ou secundários. C) Distribuir as operações de E/S entre os discos físicos, porém um dos discos é dedicado (parity disk), usado para a recuperação dos dados em casos de falha. D) Implementar disk stripping, que distribui as operações de E/S entre os diversos discos físicos contidos no array, sem redundância. 140 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) Armazenar informação ECC (Error Correcting Code), que é a informação de controle de erros, no lugar da paridade. Resposta correta: alternativa A. Análise das alternativas A) Alternativa correta. Justificativa: no modelo RAID 5, os dados são divididos entre os diferentes discos e, para cada strip, é calculada a paridade. A informação de paridade não é concentrada em um único disco, mas sim distribuída entre os diferentes discos. B) Alternativa incorreta. Justificativa: a característica de espelhamento acontece na junção dos modelos RAID 0 e 1. C) Alternativa incorreta. Justificativa: o modelo RAID 5 não utiliza um disco dedicado para recuperação. D) Alternativa incorreta. Justificativa: no modelo RAID 5 existe redundância baseada em paridade. E) Alternativa incorreta. Justificativa: no RAID 2, são armazenadas informações ECC (Error Correcting Code), que são as informações de controle de erros, no lugar da paridade. Questão 2. (Adaptado de ENADE 2005) O método de alocação de espaço de disco utilizado para armazenamento de informações em um sistema de arquivos determina o desempenho desse sistema. Com relação a esse assunto, julgue os itens seguintes. I. A alocação contígua é um método adequado para sistemas em que inserções e remoções de arquivos são frequentes. II. 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. III. 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 141 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 índice onde existam ponteiros para os diversos registros. Assinale a opção correta. A) Apenas um item está correto. B) Apenas os itens I e II estão corretos. C) Apenas os itens I e III estão corretos. D) Apenas os itens II e III estão corretos. E) Os itens I, II e III estão corretos. Resolução desta questão na Plataforma. 142 FIGURAS E ILUSTRAÇÕES Figuras Figura 1 Figura elaborada pelo autor. Figura 2 Figura elaborada pelo autor. Figura 3 Figura elaborada pelo autor. Figura 4 CHARLES BABBAGE. Dimensões: 400×309 pixels. Tamanho: 38,36KB (39.280 bytes). Formato: Imagem JPEG. Disponível em: <http://www.ntut.edu.tw/~tjhsieh/cs2007f/CharlesBabbage.jpg>. Acesso em: 18 abr. 2011. Figura 5 [ABC.jpg]. Dimensões: 363×430 pixels (redimensionada para 140×166 pixels). Tamanho: 72,42KB (74.153 bytes). Formato: Imagem JPEG. Disponível em: < http://1.bp.blogspot.com/_j8YnT36f3Y4/ SuW9VdxgTPI/AAAAAAAACyw/BtGKMjxeuE0/s1600/ABC.jpg>. Acesso em: 18 abr. 2011. Figura 6 COMUNICACIONES: COMPUTADORA Z3: Dimensões: 320×253 pixels (redimensionada para 317×207 pixels). Tamanho: 28,1KB (28.771 bytes). Formato: Imagem JPEG. Disponível em: <http://3.bp.blogspot. com/_1T1E0LG2Kvg/S8tCDa9wxhI/AAAAAAAAAA4/B00mJp2dRcw/s320/Z3.jpg>. Acesso em: 18 abr. 2011. Figura 7 1937‑1949. Dimensões: 389×311 pixels (redimensionada para 253×231 pixels). Tamanho: 12,2KB (12.488 bytes). Formato: Imagem JPEG. Disponível em: < http://helmutsy.homestead.com/files/ computacion/Historia/Colossus2.jpg>. Acesso em: 18 abr. 2011. Figura 8 ARQUITETURA DE COMPUTADORES: MARK I (1944) – AIKEN. Dimensões: 320×214 pixels. Tamanho: 23,32KB (23.880 bytes). Formato: Imagem JPEG. Disponível em: <http://1.bp.blogspot.com/_ V0D‑4RXAphU/ScAWnZlZGvI/AAAAAAAAADo/bfqfTI44fIo/s320/Mark+I.gif>. Acesso em: 18 abr. 2011. 143 Figura 9 NOTÍCIAS › PRIMEIRO COMPUTADOR DO MUNDO FAZ 65 ANOS › FACULDADE IDEZ. Dimensões: 1.500×900 pixels. Tamanho: 32,83KB (33.618 bytes). Formato: Imagem JPEG. Disponível em: <http:// www.faculdadeidez.com.br/site/imgs/bg_body.jpg>. Acesso em: 18 abr. 2011. Figura 10 TANENBAUM, A. S. Operacionais modernos. 3ª Edição. Prentice Hall Brasil, 2010. Figura 11 IBM1401.JPG. Dimensões: 444×188 pixels (redimensionada para 188×106 pixels). Tamanho: 9,67KB (9.906 bytes). Formato: Imagem JPEG. Disponível em: <http://www‑03.ibm.com/systems/resources/ servers_eserver_zseries_zvse_images_history_ibm1401.jpg>.Acesso em: 18 abr. 2011. Figura 12 LELIO ARQUITETURA DE COMPUTADORES: MARÇO 2009. Dimensões: 320×245 pixels. Tamanho: 23,98KB (24.553 bytes). Formato: Imagem JPEG. Disponível em: < http://3.bp.blogspot.com/_9pY6Q1XHkmY/ SbKNhLgSiII/AAAAAAAAABc/bKRkjN9TQzs/s320/7094.jpg>. Acesso em: 18 abr. 2011. Figura 13 PDP‑1. Dimensões: 300×234 pixels (redimensionada para 170×128 pixels). Tamanho: 7,51KB (7.691 bytes). Formato: Imagem JPEG. Disponível em: <http://www.gameclassification.com/files/machines/ PDP‑1.jpg>. Acesso em: 18 abr. 2011. Figura 14 Figura elaborada pelo autor. Figura 15 Figura elaborada pelo autor. Figura 16 Figura elaborada pelo autor. Figura 17 LEI DE MOORE – WIKIPÉDIA, A ENCICLOPÉDIA LIVRE. Dimensões: 350×245 pixels. Tamanho: 35,08KB (35.923 bytes). Formato: Imagem PNG. Disponível em: < http://upload.wikimedia.org/wikipedia/ 144 commons/thumb/e/e6/Lei_de_moore_2006.svg.png/350px‑Lei_de_moore_2006.svg.png>. Acesso em: 18 abr. 2011. Figura 18 DUAL CORE, PROCESSADOR DUAL CORE. Dimensões: 400×300 pixels. Tamanho: 24,06KB (24.637 bytes). Formato: Imagem JPEG. Disponível em: <http://www.coders4fun.com/wp‑content/ uploads/2007/09/dual‑core.jpg>. Acesso em: 18 abr. 2011. Figura 19 Figura elaborada pelo autor. Figura 20 Figura adaptada pelo autor de DUAL CORE, PROCESSADOR DUAL CORE. Dimensões: 400×300 pixels. Tamanho: 24,06KB (24.637 bytes). Formato: Imagem JPEG. Disponível em: <http://www.coders4fun. com/wp‑content/uploads/2007/09/dual‑core.jpg>. Acesso em: 18 abr. 2011. Figura 21 TIPOS DE MEMÓRIA RAM. Computer Desktop Encyclopedia, 2007. Figura 22 LINUX: MEMÓRIAS. Dimensões: 329×261 pixels. Tamanho: 13,79KB (14.126 bytes). Formato: Imagem JPEG. Disponível em: < http://img.vivaolinux.com.br/imagens/artigos/comunidade/rom.png>. Acesso em: 18 abr. 2011. Figura 23 CLEAR_CMOS.jpg. Dimensões: 425×319 pixels. Tamanho: 70,6KB (72.295 bytes). Formato: Imagem JPEG. Disponível em: <http://www.paules‑pc‑forum.de/infothek/artikel/hardware/bios/CMOS_Clear/ CLEAR_CMOS.jpg>. Acesso em: 18 abr. 2011. Figura 24 SEAGATE DISCO RÍGIDO BARRACUDA 7XT –2 TB –7200 RPM –64 MB –SATA 6 (ST32000641AS). Dimensões: 600×532 pixels (redimensionada para 298×264 pixels). Tamanho: 35,22KB (36.068 bytes). Formato: Imagem JPEG. Disponível em: <http://pan.fotovista.com/dev/9/3/04025939/l_04025939. jpg>. Acesso em: 18 abr. 2011. Figura 25 Figura adaptada pelo autor. 145 Figura 26 Figura elaborada pelo autor. Figura 27 IBM Figura 28 IBM Figura 29 SÍMBOLO USB. Dimensões: 320x320 pixels. Tamanho: 15,77 KB (16.144 bites). Formato: Imagem PNG. Disponível em: <http://culturareino.blogspot.com/2010/11/seita‑evangelica‑declara‑o‑usb.html Figura 30 Figura elaborada pelo autor. Figura 31 Figura elaborada pelo autor. Figura 32 Figura elaborada pelo autor. Figura 33 Figura elaborada pelo autor. Figura 34 Figura elaborada pelo autor. Figura 35 Figura elaborada pelo autor. Figura 36 Figura elaborada pelo autor. 146 Figura 37 Figura elaborada pelo autor. Figura 38 Figura elaborada pelo autor. Figura 39 Figura elaborada pelo autor. Figura 40 Figura elaborada pelo autor. Figura 41 Figura elaborada pelo autor. Figura 42 MAZIERO, C. A. Sistemas operacionais VI –Gerência de arquivos. Disponível em: <http://pt.scribd.com/ doc/12385571/Sistemas‑Operacionais‑Gerencia‑de‑Arquivos>, p. 21. Acesso em: 18 abr. 2011. Figura 43 Figura elaborada pelo autor. Figura 44 Figura elaborada pelo autor. Figura 45a e 45b Figura adaptada de TANENBAUM, A. S. Operacionais modernos. 3ª Edição. São Paulo: Prentice Hall Brasil, 2010. Figura 46 Tela de configuração de cota no Windows Vista. Figura 47 Figura elaborada pelo autor. 147 Figura 48 Figura elaborada pelo autor. Figura 49 Figura elaborada pelo autor. Figura 50 Figura elaborada pelo autor. Figura 51 Figura elaborada pelo autor. Figura 52 Figura elaborada pelo autor. Figura 53 Figura elaborada pelo autor. Figura 54 Figura elaborada pelo autor. Figura 55 Figura elaborada pelo autor. Figura 56 Figura elaborada pelo autor. Figura 57 Figura elaborada pelo autor. Figura 58 Figura elaborada pelo autor. 148 Figura 59 Figura elaborada pelo autor. Figura 60 RAID 0. Dimensões: 325×500 pixels (redimensionada para 65×100 pixels). Tamanho: 20,56KB (21.055 bytes). Formato: Imagem PNG. Disponível em: <http://www.hirensbootcd.org/images/RAID_0.png>. Acesso em: 18 abr. 2011. Figura 61 RAID 1. Dimensões: 325×500 pixels (redimensionada para 65×100 pixels). Tamanho: 18,18KB (18.613 bytes). Formato: Imagem PNG. Disponível em: <http://www.hirensbootcd.org/images/RAID_1.png>. Acesso em: 18 abr. 2011. Figura 62 RAID 2. Dimensões: 800×400 pixels (redimensionada para 120×60 pixels). Tamanho: 67,68KB (69.309 bytes). Formato: Imagem PNG. Disponível em: < http://www.hirensbootcd.org/images/RAID_2.png>. Acesso em: 18 abr. 2011. Figura 63 RAID 3. Dimensões: 675×500 pixels (redimensionada para 135×100 pixels). Tamanho: 26,08KB (26.704 bytes). Formato: Imagem PNG. Disponível em: <http://www.hirensbootcd.org/images/RAID_3.png>. Acesso em: 18 abr. 2011. Figura 64 RAID 4. Dimensões: 675×500 pixels (redimensionada para 95×70 pixels). Tamanho: 29,88KB (30.596 bytes). Formato: Imagem PNG. Disponível em: < http://www.hirensbootcd.org/images/RAID_4.png>. Acesso em: 18 abr. 2011. Figura 65 RAID 5. Dimensões: 675×500 pixels (redimensionada para 135×100 pixels). Tamanho: 26,21KB (26.837 bytes). Formato: Imagem PNG. Disponível em: < http://www.hirensbootcd.org/images/RAID_5.png>. Acesso em: 18 abr. 2011. Figura 66 RAID 6. Dimensões: 800×471 pixels (redimensionada para 136×80 pixels). Tamanho: 65,13KB (66.697 bytes). Formato: Imagem PNG. Disponível em: < http://www.hirensbootcd.org/images/RAID_6.png>. Acesso em: 18 abr. 2011. 149 Figura 67 RAID – WIKIPÉDIA, A ENCICLOPÉDIA LIVRE. Dimensões: 200×214 pixels. Tamanho: 20,33KB (20.816 bytes). Formato: Imagem PNG. Disponível em: <http://upload.wikimedia.org/wikipedia/commons/ thumb/d/d1/RAID_01.png/200px‑RAID_01.png>. Acesso em: 18 abr. 2011. Figura 68 LINUX RAID 10 IN ACTION. Dimensões: 500×536 pixels. Tamanho: 54,36KB (55.660 bytes). Formato: Imagem PNG. Disponível em: <http://files.cyberciti.biz/uploads/tips/2008/10/raid‑10‑diagram.png>. Acesso em: 18 abr. 2011. Figura 69 PARTITIONING A RAID VOLUME. Dimensões: 1.706×579 pixels (redimensionada para 800×272 pixels). Tamanho: 236,96KB (242.644 bytes). Formato: Imagem PNG. Disponível em: <http://upload.wikimedia. org/wikipedia/commons/9/9d/RAID_50.png>. Acesso em: 18 abr. 2011. Figura 70 RAID_100. Dimensões: 300×136 pixels. Tamanho: 28,8KB (29.494 bytes). Formato: Imagem PNG. Disponível em: <http://infodaiworld.files.wordpress.com/2010/04/raid_100.png?w=300&h=136>. Acesso em: 18 abr. 2011. Figura 71 Figura elaborada pelo autor. Figura 72 KIT TECLADO, MOUSE E MONITOR PARA RACK PADRÃO 19” (1U). Disponível em: http://www.fujitsu. com/global/. Figura 73 Figura adaptada pelo autor. Figura 74 TECLADO COM 106 TECLAS. Disponível em: <http://publib.boulder.ibm.com/infocenter/aix/ v6r1/index.jsp?topic=/com.ibm.aix.keyboardtechref/doc/kybdtech/Key.htm>. Acesso em: 18 abr. 2011. 150 Figura 75 ESTRUTURA INTERNA DO MOUSE. Dimensões: 351×305 pixels. Tamanho: 41,38KB (42.375 bytes). Formato: Imagem PNG. Disponível em: <http://wwwbargalho.blogspot.com/2008/01/placa‑me‑tambm ‑denominada‑mainboard‑ou.html> (com adaptações). Acesso em: 3 mai. 2011. Figura 76 AMBIENTE GRÁFICO GNOME. Disponível em: <www.gnome.org>. Figura 77 AMBIENTE GRÁFICO KDE. Disponível em: <www.kde.org>. Figura 78 Figura elaborada pelo autor. Figura 79 THIN CLIENTS. Disponível em: <www.hp.com.br> – Thin Clients HP t5540. Tabelas Tabela 1 Tabela elaborada pelo autor. Tabela 2 Tabela elaborada pelo autor. REFERÊNCIAS Textuais ALMEIDA, M. Sistema operacional I. 1. ed. São Paulo: Brasport, 1999. CARISSIMI, A.; TOSCANI, S.; OLIVEIRA, R. S. de. Sistemas operacionais. 4. ed. Porto Alegre: Bookman Companhia Editora, 2010. DEITEL, H.M. e DEITEL, P. J. Operating systems. 3. ed. New York: Prentice Hall, 2003. LEVINE, D.; ELMASRI, R.; CARRICK, A. G. Operating systems a spiral approach. 1. ed. Nova Deli: McGraw‑Hill Professional, 2009. 151 TANENBAUM, A. S. Operacionais modernos. 3. ed. São Paulo: Prentice Hall Brasil, 2010. Exercícios Unidade I Questão 2 INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA (INEP). Exame Nacional de Desempenho dos Estudantes (ENADE) 2005: Computação. Questão 11. Disponível em: <http://download.inep.gov.br/download/enade/2005/provas/COMPUTACAO.pdf>. Acesso em: 19 mai. 2011. Unidade II Questão 1 INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA (INEP). Exame Nacional de Desempenho dos Estudantes (ENADE) 2008: Computação. Questão 19. Disponível em: <http://download.inep.gov.br/download/Enade2008_RNP/COMPUTACAO.pdf>. Acesso em: 19 mai. 2011. Questão 2 INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA (INEP). Exame Nacional de Desempenho dos Estudantes (ENADE) 2008: Computação. Questão 11. Disponível em: <http://download.inep.gov.br/download/Enade2008_RNP/COMPUTACAO.pdf>. Acesso em: 19 mai. 2011. Unidade IV Questão 1 PROCESSO SELETIVO PÚBLICO EDITAL PETROBRÁS / PSP – RH – 1/2005. Analista de Sistemas Júnior – Suporte de Infraestrutura. Questão 67. Disponível em: <http://www.pciconcursos.com.br/ provas/2005/7>. Acesso em: 21 abr. 2011. Questão 2 INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA (INEP). Exame Nacional de Desempenho dos Estudantes (ENADE) 2005: Computação. Questão 52. Disponível em: <http://download.inep.gov.br/download/enade/2005/provas/COMPUTACAO.pdf>. Acesso em: 19 mai. 2011. 152 Sites <http://support.amd.com/us/Processor_TechDocs/24592.pdf>. <http://developer.amd.com/documentation/guides/pages/default.aspx>. <http://developer.intel.com/technology/hyperthread/>. <http://developer.intel.com/products/processor/manuals/index.htm>. <http://developer.intel.com/technology/multi‑core/index.htm>. <http://www.kingston.com/Brasil/branded/server_memory.asp>. <http://www.museudocomputador.com.br/1940dc_1950dc.php>. <http://marketshare.hitslink.com/operating‑system‑market‑share.aspx?qprid=8>. <http://www.intel.com/support/processors/>. <http://www.intel.com/pressroom/kits/quickrefyr.htm>. <http://www3.intel.com/cd/software/products/asmo‑na/eng/index.htm>. <ftp://ftp.dca.fee.unicamp.br/pub/docs/ea876/so‑caps12.pdf>. <http://www.training.com.br/lpmaia/multithread.pdf>. <http://www.di.ufpb.br/raimundo/Hierarquia/Hierarquia>. <http://www.gta.ufrj.br/grad/01_1/barramento>. <http://www.las.ic.unicamp.br/edmar/PUC/2006/SO/SO‑Aula2.pdf>. <http://www.facom.ufu.br/~faina/BCC_Crs/INF09‑1S2009/Prjt_SO1/semaphor.html>. <http://www.deinf.ufma.br/~fssilva/graduacao/so/aulas/monitores.pdf>. <http://www.slideshare.net/audineisilva1/gerenciamento‑de‑memoria>. <homepages.dcc.ufmg.br/~scampos/cursos/so/aulas/aula12_4.ps>. <http://www.inf.ufes.br/~zegonc/material/Sistemas%20Operacionais/Exercicios/Solucoes%20de%20Ex ercicios_Autores_V%203.2.pdf>. 153 154 155 156 157 158 159 160 Informações: www.sepi.unip.br ou 0800 010 9000