Você está na página 1de 92

FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.
71
Unidade IV

• 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.
72
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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

Elefante Jacaré Gato

Lagarto Cobra Leão Coelho

Cavalo Tartaruga

a. b. c.

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.
73
Unidade IV

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 outras opçõ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>.
74
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.
75
Unidade IV

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.

76
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.
77
Unidade IV

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.
78
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.

79
Unidade IV

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 Gerenciamento Diretório


inicialização Superbloco de espaço livre I-Nodes 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.
80
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

um contêiner de informações, que pode conter arquivos 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
opt lib
sgml include
bin skel
etc X11 X11
home X11
lib asm
/— proc X11R6
bin linux
root g++
tmp include
usr lib
local X11
var gcc-lib
man
share groff
src uucp
tmp bin
doc
adm etc
cache include
cron lib
lib man
local share
log
mail at doc
run cron games
spoll lpd info
mail locale
news man
smail 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.
81
Unidade IV

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.
82
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Diretório raiz
usuario1
propostas
propostaV1
propostaV2
propostaV3
propostaV4
usuario2
usuario3
relatorios

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.

83
Unidade IV

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 de blocos 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.

84
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Blocos de disco livres: 16, 17, 18


42 230 86 1001101101101100
136 162 234 0110110111110111
210 612 897 1010110110110110
97 342 422 0110110110111011
41 214 140 1110111011101111
63 160 223 1101101010001111
21 664 223 0000111011010111
48 216 160 1011101101101111
262 320 126 1100100011101111

310 180 142 0111011101110111


516 482 141 1101111101110111
4 KB de blocos de disco pode Mapa de bit
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.
85
Unidade IV

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.

86
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• 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.
87
Unidade IV

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 de seguranç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.
88
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.
89
Unidade IV

• 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.

90
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.

91
Unidade IV

• 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 Preenchimento

Localização Tamanho Data e Nome


CD# L
do arquivo do arquivo hora do arquivo

Tamanho da entrada de diretório intervalo Uso do sistema

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.
92
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• 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.
93
Unidade IV

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, proporcionando um 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.

94
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• 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


4K

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.

95
Unidade IV

Blocos de 4 KB

KB

Arquivo com 4 KB

a. Tamanho da partição
2 GB

b. Tamanho de cada bloco do FAT-16


4K
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 FAT-12 (MB) FAT-16 (MB) FAT-32 (TB)


bloco (KB)
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.
96
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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:

I‑node: é uma estrutura de dados no sistema de arquivos em um sistema de arquivos tradicional Unix. Ele
23

armazena informações básicas sobre um arquivo regular, diretório, ou outros objetos do sistema de arquivos.
97
Unidade IV

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 componente file.
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

98
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.
99
Unidade IV

• 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
100
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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ída

Os 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

101
Unidade IV

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
se r
ou ne
o

-R 1g

(80 x
co u)

EE o

)
x)

Di 2.0 .0

SI /s

z)
5)

a U CSI)

me m

CI
n
94

n
52
lad

(IE act
56

pe
t

2.3
62 B 2
12

(IE tra

rra inu
2.3

oP
ca
2.1

o S Mi

M m y
13

d
S

e O
OM
c

a
(
mp

S he
80
Ul
S

Ba ltr

nt
od
80

e-
Te

ss -R
8

t
U

e e ap c
EE

M rel ern sh lue tta


C

ire rT
CD

fla et
Fit

i h B A
ea al
2(

W t eW rn
tE
sc

Fir e Lin ri
-1
o

as th Se
rtã

OC

F et it
E
(
Ca

n
S(
-5

So b
iga
SA
LTO

G
ão
dr
Pa

Tabela 3 – Alguns exemplos de dispositivos e suas respectivas taxas de dados

Tipo de dispositivo bytes / segundo


Teclado 10
Mouse 100
Modem 56K 7K
Scanner 400 K
Wireless 802.11g 6,75 M
CD-ROM 52x 7,8 M
Fast Ethernet (802.3u) 12,5 M

102
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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

103
Unidade IV

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.
104
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

8.3.2 E/S mapeada em memória

Os registradores são responsáveis por estabelecer o canal de comunicação entre os controladores


de dispositivos e a unidade central de processamento. O sistema operacional se comunica com os
dispositivos por meio da gravação e da leitura dos registradores. Além dos registradores, atualmente é
comum os dispositivos terem buffers de dados que serão usados pelo sistema operacional para gravar
e escrever.

A comunicação entre a unidade central de processamento e os registradores e buffers pode ser


realizada pelas duas formas descritas abaixo:

• E/S mapeada por porta (port‑mapped I/O): associado a um número de porta de entrada e
saída que pode compreender de 8 a 16 bits. Somente o sistema operacional pode acessar o
espaço de portas E/S (conjunto de portas de E/S). Dessa forma, o programa do usuário não
tem permissão para acessar diretamente o espaço de portas. Esse modelo é demonstrado na
Figura 53a.

• E/S mapeada em memória (memory‑mapped I/O): nesse modelo, todos os registradores são
mapeados em endereços de memória exclusivos. Esse método usa o mesmo endereço de
barramento para endereçar memória e dispositivos de entrada e saída, e as instruções de
CPU para acessar a memória são as mesmas usadas para acessar os dispositivos de E/S.
Para acomodar os dispositivos de E/S, espaços das áreas endereçáveis da CPU devem ser
temporariamente reservados para E/S exclusivamente. Cada dispositivo de entrada e saída
fica escutando o barramento e responderá as suas requisições. Esse modelo é demonstrado
na Figura 53b.

O funcionamento do exemplo de uma CPU querendo ler uma palavra que pode ser tanto da memória
ou de uma porta de entrada se dará da seguinte forma:

1. A CPU emite nas linhas de endereço do barramento o endereço de que precisa.

2. Emite um sinal de READ sobre a linha de controle do barramento.

3. Uma nova linha de sinal é usada para informar se o espaço requerido é memória ou entrada e saída.

4. Nessa etapa, a memória ou 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.

105
Unidade IV

Um espaço de
Dois endereços endereçamento

0xFFFF...
Endereço de
E/S

Memória Espaço de
endereço de
memória

Portas de E/S
0

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>.
106
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.

1. Controlador DMA

Endereço
Contador Controlador de Memória
CPU 4.
Controle Disco principal

Interrompo quando 2. Buffer 3.


concluído
Barramento

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.

107
Unidade IV

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.
108
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• 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 de dados 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:

109
Unidade IV

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>.

110
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.
111
Unidade IV

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.

112
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

Processo do usuário
Espaço
do
usuário

Restante do sistema operacional


Espaço
do
núcleo Driver
Driver da do
impressora disco

Barramento

Controlador Controlador
Hardware da impressora do disco rígido

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.
113
Unidade IV

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 Sistema operacional

Drive do Drive do Drive do Drive do Drive do Drive do


disco teclado mouse disco teclado mouse
a. 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.
114
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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 Camada

1. 2.
Chama E/S; formata E/S; coloca
no spool Processo do usuário

Nomeação, proteção, bloqueio, Software independente de


utilização de buffer e alocação dispositivo

Ajusta os registradores do
dispositivo; verifica status Drivers dos dispositivos

Acorda driver quando a E/S Tratadores de interrupção


está completa

Execura operações de E/S Hardware

1. Requisição de E/S
2. Resposta de E/S

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).
115
Unidade IV

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.
116
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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


constante em 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.
117
Unidade IV

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

RAID 0

A1 A2
A3 A4
A5 A6
A7 A8

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

RAID 1

A1 A1
A2 A2
A3 A3
A4 A4

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.
118
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• 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

RAID 2

A1 A2 A3 A4 Ap1 Ap2 Ap3


B1 B2 B3 B4 Bp1 Bp2 Bp3
C1 C2 C3 C4 Cp1 Cp2 Cp3
D1 D2 D3 D4 Dp1 Dp2 Dp3

Disco 0 Disco 1 Disco 2 Disco 3 Disco 4 Disco 5 Disco 6

Figura 62 – RAID 2

RAID 3

A1 A2 A3 Ap(1-3)
A4 A5 A6 Ap(4-6)
B1 B2 B3 Bp(1-3)
B4 B5 B6 Bp(4-6)

Disco 0 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.
119
Unidade IV

RAID 4

A1 A2 A3 Ap
B1 B2 B3 Bp
C1 C2 C3 Cp
D1 D2 D3 Dp

Disco 0 Disco 1 Disco 2 Disco 3

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

RAID 5

A1 A2 A3 Ap
B1 B2 Bp B3
C1 Cp C2 C3
Dp D1 D2 D3

Disco 0 Disco 1 Disco 2 Disco 3

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.
120
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

RAID 6

A1 A2 A3 Ap Aq
B1 B2 Bp Bq B3
C1 Cp Cq C2 C3
Dp Dq D1 D2 D3
Eq E1 E2 E3 Ep

Disco 0 Disco 1 Disco 2 Disco 3 Disco 4

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

RAID 0 + 1

RAID 1

RAID 0 RAID 0

A1 A2 A1 A2
A3 A4 A3 A4
A5 A6 A5 A6
A7 A8 A7 A8

Disco 0 Disco 1 Disco 2 Disco 3

Figura 67 – RAID 0+1

36
Disponível em: <http://pt.wikipedia.org/wiki/RAID>. Acesso em: 8 jun. 2011.
121
Unidade IV

• 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

RAID 10

RAID 0

RAID 0 RAID 1

A1 A1 A2 A2
A3 A3 A4 A4
A5 A5 A6 A6
A7 A7 A8 A8

Disco 0 Disco 1 Disco 2 Disco 3

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

RAID 0

RAID 5 RAID 5 RAID 5

A1 A2 Ap A3 A4 Ap A5 A6 Ap
B1 Bp B2 B3 Bp B4 B5 Bp B6
Cp C1 C2 Cp C3 C4 Cp C5 C6
D1 D2 Dp D3 D4 Dp D5 D6 Dp
Disk 0 Disk 1 Disk 2 Disk 3 Disk 4 Disk 5 Disk 6 Disk 7 Disk 8
120GB 120GB 120GB 120GB 120GB 120GB 120GB 120GB 120GB

Figura 69 – RAID 50

37
Idem.
38
Disponível em: <http://pt.wikipedia.org/wiki/RAID>. Acesso em: 8 jun. 2011.
122
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

• 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

RAID 0

RAID 0 RAID 0

RAID 1 RAID 1 RAID 1 RAID 1

A1 A1 A2 A2 A3 A3 A4 A4
A5 A5 A6 A6 A7 A7 A8 A8
B1 B1 B2 B2 B3 B3 B4 B4
B5 B5 B6 B6 B7 B7 B8 B8

Disk 0 Disk 1 Disk 2 Disk 3 Disk 4 Disk 5 Disk 6 Disk 7


120GB 120GB 120GB 120GB 120GB 120GB 120GB 120GB

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.
123
Unidade IV

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.

124
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.
125
Unidade IV

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 ser retraí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).

126
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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>.

127
Unidade IV

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,

128
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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

129
Unidade IV

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 Rede (LAN / WAN) Servidor X

Máquina remota Estação do usuário

Figura 78 – Sistema X‑Window cliente e servidor

130
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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 de ví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.

131
Unidade IV

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
132
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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

Placa de vídeo integrado VIAChrome9


HC3 com suporte para monitores de alta
Gráficos 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.
133
Unidade IV

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 de kW 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.
134
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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


= 2,5 kWh
1.000

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.

135
Unidade IV

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
136
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.

137
Unidade IV

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ê cada palavra 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.

138
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

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.

139
Unidade IV

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
140
FUNDAMENTOS DE SISTEMAS OPERACIONAIS

í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.

141
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.
142
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/
143
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.


144
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.


145
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.


146
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.

147
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.
148
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.

149
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.
150
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.

151
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>.

152
153
154
155
156
157
158
159
160
Informações:
www.sepi.unip.br ou 0800 010 9000

Você também pode gostar