Vous êtes sur la page 1sur 72

Técnico em Informática

Operação de Computadores e Sistemas Operacionais

Fábio Justo dos Santos

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

São João da Boa Vista - SP


2009
Presidência da República Federativa do Brasil

Ministério da Educação

Secretaria de Educação a Distância

Este Caderno foi elaborado em parceria entre o Instituto Federal de Educação,


Ciência e Tecnologia de São Paulo - Campus São João da Boa Vista e o Sistema
Escola Técnica Aberta do Brasil – e-Tec Brasil.

Equipe de Elaboração Yara Maria Guisso de Andrade Facchini


IFSP
Projeto Gráfico
Coordenação Institucional Eduardo Meneses e Fábio Brumana
Campus São João da Boa Vista
Diagramação
Professor-autor Matheus Félix de Andrade”!
Fábio Justo do Santos
Revisão
Comissão de Acompanhamento e Validação Elizabeth Gouveia da Silva Vanni
Gustavo Aurélio Prieto

Ficha catalográfica
Apresentação e-Tec Brasil

Amigo(a) estudante!

O Ministério da Educação vem desenvolvendo Políticas e Programas para


expansãoda Educação Básica e do Ensino Superior no País. Um dos caminhos
encontradospara que essa expansão se efetive com maior rapidez e eficiên-
cia é a modalidade adistância. No mundo inteiro são milhões os estudantes
que frequentam cursos a distância. Aqui no Brasil, são mais de 300 mil os
matriculados em cursos regulares de Ensino Médio e Superior a distância,
oferecidos por instituições públicas e privadas de ensino.

Em 2005, o MEC implantou o Sistema Universidade Aberta do Brasil (UAB),


hoje, consolidado como o maior programa nacional de formação de profes-
sores, em nível superior.

Para expansão e melhoria da educação profissional e fortalecimento do En-


sino Médio, o MEC está implementando o Programa Escola Técnica Aberta
do Brasil (e-TecBrasil). Espera, assim, oferecer aos jovens das periferias dos
grandes centros urbanose dos municípios do interior do País oportunidades
para maior escolaridade, melhorescondições de inserção no mundo do tra-
balho e, dessa forma, com elevado potencialpara o desenvolvimento produ-
tivo regional.

O e-Tec é resultado de uma parceria entre a Secretaria de Educação Pro-


fissionale Tecnológica (SETEC), a Secretaria de Educação a Distância (SED)
do Ministério daEducação, as universidades e escolas técnicas estaduais e
federais.

O Programa apóia a oferta de cursos técnicos de nível médio por parte das
escolaspúblicas de educação profissional federais, estaduais, municipais e,
por outro lado,a adequação da infra-estrutura de escolas públicas estaduais
e municipais.

Do primeiro Edital do e-Tec Brasil participaram 430 proponentes de ade-


quaçãode escolas e 74 instituições de ensino técnico, as quais propuseram
147 cursos técnicosde nível médio, abrangendo 14 áreas profissionais.
O resultado desse Edital contemplou193 escolas em 20 unidades federa-
tivas. A perspectiva do Programa é que sejam ofertadas10.000 vagas, em
250 polos, até 2010.

Assim, a modalidade de Educação a Distância oferece nova interface para


amais expressiva expansão da rede federal de educação tecnológica dos úl-
timos anos: aconstrução dos novos centros federais (CEFETs), a organização
dos Institutos Federaisde Educação Tecnológica (IFETs) e de seus campi.

O Programa e-Tec Brasil vai sendo desenhado na construção coletiva e par-


ticipaçãoativa nas ações de democratização e expansão da educação profis-
sional no País,valendo-se dos pilares da educação a distância, sustentados
pela formação continuadade professores e pela utilização dos recursos tec-
nológicos disponíveis.

A equipe que coordena o Programa e-Tec Brasil lhe deseja sucesso na sua
formaçãoprofissional e na sua caminhada no curso a distância em que está
matriculado(a).

Brasília, Ministério da Educação – setembro de 2008.


Sumário

Apresentação e-Tec Brasil 3

Sumário 5

Outros - instituição validadora 9

Unidade 1 - Introdução 11
1.1 Sistemas operacionais de computadores de grande porte 13
1.2 Sistemas operacionais de servidores 13
1.3 Sistemas operacionais de computadores pessoais 13
1.4 Sistemas operacionais de computadores de tempo real 14
1.5 Sistemas operacionais embarcados 14
1.6 Outros Conceitos 14
1.7 Considerações Finais 17
Exercícios 18

Unidade 2 - Gerência de Processo 19


2.1 Escalonamento de Processos 20
2.1.1 FIFO 22
2.1.2 Menor Job Primeiro Não Preemptivo 24
2.1.3 Menor Job Primeiro Pre-emptivo 25
2.1.4 Round Robin 26
2.1.5 Maior Prioridade Preemptivo 28
2.2 Considerações Finais 30
Exercícios 30

Unidade 3 - Gerênciamento de Momento 33


3.1 Monoprogramação sem swapping ou paginação 34
3.2 Multiprogramação e utilização da memória 34
3.3 Multiprogramação com partições fixas 36
3.4 Multiprogramação com partições variáveis 37
3.5 Gerência de memória com lista ligadas 38
3.6 Memória Virtual 39
3.6.1 Paginação 40
3.6.1.1 Algoritmo ótimo de substituição de páginas 42
3.6.1.2 Troca de páginas não usadas recentemente (NUR) 42
3.6.1.3 Algoritmo FIFO 43
3.6.1.4 Algoritmo segunda chance 44
3.6.1.5 Algoritmo da pág. usada há mais tempo 44
3.6.2 Segmentação 45
Exercícios 47

Unidade 4 - Sistema de Arquivos 50


4.1 Arquivos 51
4.2 Diretórios 52
4.3 Implementação do sistema de arquivos 54
4.3.1 Alocação Contígua 54
4.3.2 Alocação por lista encadeada 55
4.3.3 Lista encadeada com tabela na memória 56
4.3.4 I-nodes 56
4.4 Considerações Finais 57
Exercícios 58

Unidade 5 - Gerência de Entrada e Saída 60


5.1 Princípios de Hardware 61
5.1.1 Dispositivos de E/S 61
5.1.2 Controladores de dispositivos 62
5.1.3 Acesso direto à memória (DMA) 63
5.2 Princípios de Software 63
5.2.1 Drivers 64
5.2.2 Software de E/S independente dos dispositivos 64
5.3 Discos 66
5.3.1 Hardware de Disco 66
5.3.2 Software de Disco 68
Exercícios 70

Referências 72
Introdução ao Sistema Operacional 7 e-Tec Brasil
Outros - instituição validadora

O Decreto presidencial nº 7.566, de 23 de setembro de 1909, institucionalizou o ensino profis-

sional no Brasil. Em 1910 surgiu a Escola de Aprendizes e Artífices de São Paulo, assemelhando-se a das

criadas em outras capitais de Estado. Ela se destinava inicialmente as camadas mais desfavorecidas, aos

“deserdados da fortuna e menores marginalizados”, ministrando o ensino elementar. Em 1937 passou a

denominar-se Liceu Industrial de São Paulo, oferecendo ensino equivalente ao de primeiro ciclo.

Em 1942 foi promulgada a Lei orgânica do ensino industrial. A nova orientação visava à pre-

paração profissional dos trabalhadores da indústria, dos transportes, das comunicações e da pesca.

Em 1976, procedeu-se à mudança para a nova sede e, em 1978, criaram-se os cursos de ele-

trônica, telecomunicações e processamento de dados. Em 1981, instalam-se os cursos complementares

de mecânica, eletrotécnica e edificações, destinados à clientela, em grande parte integrada ao mercado

de trabalho, mais que necessitava de uma formalização profissional por meio de disciplinas de nível téc-

nico de 2º grau. Estes cursos técnicos tinham a duração de dois anos, prevendo um estágio obrigatório.

No ano de 1987 foi implantada a primeira Unidade de Ensino Descentralizada (UNED) no

Município de Cubatão e, em 1996, ocorreu o início do funcionamento da UNED Sertãozinho. Em 1999,

a Escola Técnica Federal de São Paulo, foi transformada em Centro Federal de Educação Tecnológica de

São Paulo – CEFET, conforme Decreto de 18 de janeiro de 1999. No ano de 2005, foi autorizado o funcio-

namento da UNED Guarulhos. As UNED de São João da Boa Vista e Caraguatatuba foram autorizadas a

funcionar a partir do 1º semestre do ano de 2007, enquanto que as UNED de Bragança e Salto passaram

a funcionar no 2º semestre do ano de 2007.

Em 2008 foram criadas as unidades de São Carlos, São Roque e Campos do Jordão. No mesmo

ano o CEFET-SP se transformou no Instituto Federal de Educação Ciência e Tecnologia pela Lei 11.892

de 29 de Dezembro de 2008, que instituiu a rede federal de educação profissional, científica e tecno-

lógica. De acordo com esta lei os institutos federais (IF) tornaram-se instituições de educação superior,

básica e profissional, pluricurriculares e multicampi, especializados na oferta de educação profissional e

tecnológica nas diferentes modalidades de ensino, com base na conjugação de conhecimentos técnicos

e tecnológicos com as suas práticas pedagógicas.

A expansão do CEFET-SP tem ainda previstas os Campus de Araraquara, Avaré, Barretos, Biri-
gui, Campinas, Catanduva, Itapetininga, Piracicaba, , Presidente Epitácio, Registro, Suzano e Votuporan-

ga.

e-Tec Brasil 8 Técnico em Informática


A Unidade de Ensino Descentralizada de São João da Boa Vista é uma unidade educacional su-

bordinada ao Centro Federal de Educação Tecnológica de São Paulo, autorizada pela Portaria nº 1715 do

Ministro da Educação, publicada no Diário Oficial da União de 20/10/2006. Tem estrutura administrativa

definida pela resolução nº 136/06 de 16/11/2006 do Conselho Diretor do CEFET-SP.

A história do campus se inicia no ano de 1998 quando é formulado o projeto para a criação do

CEPRO em São João da Boa Vista. No ano seguinte o anteprojeto é aprovado pelo Programa de Expansão

da Educação Profissional (PROEP). No mesmo ano se dá o início das obras para construção do prédio em

terreno doado por Paulo Roberto Merlin e Flávio Augusto Canto. Em 2004, o prédio é entregue com

2529m², sendo constituído de onze laboratórios, seis salas de aulas, um auditório com capacidade para

150 lugares, sala de multimídia e demais dependências. As atividades do Centro de Educação Profissional

são iniciadas em 2005. Em 2006 é firmado o convênio entre o CEPRO e CEFET-SP, com apoio da prefei-

tura municipal para a federalização da unidade. Em Janeiro de 2007 o CEFET-SP / UNED SBV iniciou suas
atividades no município.

O IFSP, no município de São João da Boa Vista, veio para atender a necessidade de educar os

jovens são joanenses e da região, a fim de habilitá-los para o ingresso nos setores de indústria e informá-

tica, os quais demandam trabalhadores capacitados para o progresso no desenvolvimento econômico e

para o fortalecimento do pólo educacional na região leste do estado.

Atuação do IFSP na Educação a Distância

No contexto da política de expansão da educação superior no país, implementada pelo

MEC, a EaD coloca-se como uma modalidade importante no seu desenvolvimento. Nesse sentido,

criou-se uma direção para EaD dentro do IF SP.

No âmbito da política de expansão da educação profissionalizante, o Ministério da Educação,


por meio da articulação da Secretaria de Educação a Distância e Secretaria de Educação Profissional e

Tecnológica, lança o Edital 01/2007/SEED/SETEC/MEC, dispondo sobre o Programa Escola Técnica Aberta

do Brasil (e-Tec Brasil).

Tal iniciativa constitui-se uma das ações do Plano de Desenvolvimento da Educação.

Visando oferta de cursos da educação técnica e profissional o IF SP foi selecionado pelo pro-

grama e-Tec Brasil para iniciar suas atividades em 2009.

Tais atividades foram efetivamente implantadas em agosto de 2009 com a criação de dois
cursos técnicos – a saber: técnico em informática para internet e técnico em administração – atingindo 5

municípios do estado de São Paulo (Araraquara, Barretos, Itapevi, Franca e Jaboticabal) e ampliando em

500 a oferta de vagas do Instituto.

Introdução ao Sistema Operacional 9 e-Tec Brasil


UNIDADE 1 - INTRODUÇÃO

Objetivos da aula

- Compreender os conceitos básicos, referentes aos sistemas opera-


cionais

As recentes mudanças na indústria da informática tornaram os


computadores pessoais (PC – Personal Computer), ou desktop, mais ba-
ratos e ao mesmo tempo mais poderosos. Atualmente, é possível encon-
trar no mercado desde computadores pequenos e baratos, até grandes e
poderosos. Independente de seu tamanho, custo e capacidade, todos os
computadores possuem várias características em comum, sendo a principal
delas a necessidade de um sistema operacional para seu correto funciona-
mento. Mas então, o que é um sistema operacional (SO)?

Basicamente um SO tem duas funções principais. A primeira delas


é gerenciar o funcionamento de todo o hardware do computador e, a se-
gunda, é fornecer os recursos lógicos para que os aplicativos possam fun-
cionar corretamente. Desta forma podemos definir um sistema operacional
como:

o software responsável por gerenciar todos os recursos de


hardware e por fornecer a base lógica sobre a qual diversos progra-
mas e aplicativos são executados.

A partir desta definição podemos concluir que, se é o SO quem ge-


rencia todos os recursos de hardware, também é ele quem dá as instruções
ao mesmo, ou seja, o usuário utiliza-se do SO para aproveitar da melhor
maneira seus recursos de hardware. Desta forma, cabe então ao sistema
operacional servir de interface entre os usuários e os recursos de hardware
disponíveis. A Figura 1.1 ilustra este processo.

Shay (1996) utiliza uma analogia bastante interessante para descrever a


função de um SO. Imagine que você tenha a única calculadora disponível

Introdução ao Sistema Operacional 11 e-Tec Brasil


em um determinado reino totalmente isolado do resto da população e que
neste lugar houvesse muitas pessoas querendo usar esta calculadora.

Figura 1: Atuação do sistema operacional como intermediador entre o hardware, os


aplicativos e o usuário

Como você atenderia a necessidade de todos com apenas uma cal-


culadora? Quem usaria a calculadora primeiro? O que você faria se alguém
se apossasse da calculadora por muito tempo? O que faria se alguém in-
sistisse que seus cálculos são secretos e que ninguém poderia ter conhe-
cimento? O que faria se quisessem armazenar seus resultados em algum
lugar? Estas situações são semelhantes às que um SO enfrenta corriquei-
ramente. Desta forma, um sistema operacional é responsável por muitas
coisas, dentre as quais podemos destacar (Shay, 1996):

• Permite que os programas armazenem e obtenham informações;

• Isola (livra) os programas dos detalhes específicos de hardware;

• Controla o fluxo de dados entre os componentes do computador;

• Permite que os programas sejam executados sem a interferência de


outros programas;

• Responde aos erros ou a solicitações do usuário.

e-Tec Brasil 12 Técnico em Informática


Ao contrário do que muitos imaginam, existe uma ampla variedade de
SO. Neste documento estaremos apresentando cinco diferentes tipos de
sistemas operacionais, conforme abordagem apresentada em Tanenbaum
(2003).

1.1 Sistemas operacionais de computado-


res de grande porte

No topo de todos os tipos de sistemas operacionais, estão os SO


para computadores de grande porte. Sua principal diferença para os com-
putadores pessoais, está na capacidade de E/S (Entrada/Saída). Um compu-
tador de grande porte com mil discos e dezenas, centenas ou até milhares
de terabytes de dados não é algo incomum. Estes computadores estão
ressurgindo, principalmente como sofisticados servidores Web.

Os sistemas operacionais para grandes computadores são, sobretu-


do, desenvolvidos para o processamento simultâneo de muitos jobs (tare-
fas/processos), sendo que a maioria precisa de quantidades prodigiosas de
E/S. Um exemplo de sistema operacional de grande porte é o OS/390, um
descendente do OS/360.

1.2 Sistemas operacionais de servidores

Um nível abaixo estão os sistemas operacionais de servidores que


são como grandes computadores pessoais. Estes computadores têm como
característica servir múltiplos usuários de uma só vez em uma rede, permi-
tindo-lhes compartilhar recursos de hardware e software.

Servidores podem fornecer serviços de impressão, serviços de ar-


quivos ou Web. Sistemas operacionais típicos de servidores são Unix, Win-
dows 2003 e Linux.

1.3 Sistemas operacionais de computa-


dores pessoais

Introdução ao Sistema Operacional 13 e-Tec Brasil


Esta categoria de sistemas operacionais certamente é a mais co-
nhecida (ou talvez a única) pela maior parte dos usuários. Basicamente os
sistemas operacionais desta classe têm como objetivo fornecer uma boa
interface para os usuários. Sua aplicação tem foco no uso de processadores
de texto, planilhas e acesso à Internet. Exemplos comuns são: o Windows
XP, Windows Vista e a distribuição Ubuntu do Linux.

1.4 Sistemas operacionais de tempo real

O principal parâmetro de referência para estes sistemas é o tempo.


Em sistemas de controle de processos industriais, computadores de tempo
real devem coletar dados e utilizá-los para controlar as máquinas na linha
de produção. Por exemplo, se um carro está se movendo por uma linha de
montagem, determinadas ações devem ser realizadas em momentos espe-
cíficos. Se um robô soldador adiantar ou atrasar o momento em que deve
efetuar seu serviço (soldar), certamente aquele veículo será perdido. Dois
exemplos de sistemas operacionais de tempo real bastante conhecidos são
o VxWorks e o QNX.

1.5 Sistemas operacionais embarcados

Os sistemas operacionais de computadores de mão são denomina-


dos sistemas operacionais embarcados. Um computador de mão ou PDA
(personal digital assistent) pode se utilizar de um SO embarcado. Entre-
tanto, a ocorrência mais comum deste sistema, está em dispositivos que
muitas vezes nem são considerados computadores, como: aparelhos de TV,
microondas, telefones móveis e ar condicionado. Muitos destes sistemas
apresentam características semelhantes ao de tempo real, mas também
possuem restrições de tamanho, memória e consumo de energia. Exem-
plos comuns destes sistemas são o PalmOS e o Windows CE.

1.6 Outros conceitos

Antes de darmos sequência ao estudo de nosso conteúdo, é essen-

e-Tec Brasil 14 Técnico em Informática


cial que abordemos algumas definições básicas relacionadas ao estudo de
Sistemas Operacionais. Dentre elas podemos destacar os conceitos sobre
processos, multiprocessamento, multiprogramação, interpretador de co-
mandos, chamadas de sistemas e deadlock.

Um processo nada mais é do que um programa em execução.


Cada programa em execução pode ser considerado como uma entidade
ativa, que compete por recursos oferecidos pelo sistema (acesso a discos,
periféricos e CPU) além de interagir com outros processos (entidades ativas
ou programas). Existem três estados possíveis para um processo, dos quais
ele pode estar somente em um por vez. Executando (usando a CPU para
executar as instruções do programa), Bloqueado (aguardando a liberação
de recursos de hardware não disponíveis no momento – além da CPU) ou
Ativo (aguardando apenas a CPU para ser executado – pronto para ser
executado).

Outro conceito importante é o de multiprogramação. Para a


compreensão deste conceito é preciso entender o que é um sistema mo-
noprogramado e um sistema multitarefa. Um sistema monoprogra-
mado tem a capacidade de executar somente um processo por vez, não
suportando a execução de processos concorrentes. Um sistema multitarefa
gerencia vários processos em execução ao mesmo tempo, transparecendo
ao usuário que todos eles são executados simultaneamente. Multiprogra-
mação é um conceito mais amplo do que multitarefa, e denota um sistema
operacional que realiza o gerenciamento total dos recursos de hardwa-
re, como: CPU, memórias, sistemas de arquivos, dentre outros, além de
suportar a execução concorrente de processos. Para exemplificar melhor
o conceito de sistema multiprogramado, a Figura 1.2 representa seu uso
comparado a um sistema monoprogramado.

Figura 2: (a) Sistema monoprogramável; (b) Sistema multiprogramável

Ainda que a boa parte dos computadores possua uma única CPU
que executa instruções uma a uma, certos projetos permitiram que a ve-

Introdução ao Sistema Operacional 15 e-Tec Brasil


locidade de processamento fosse incrementada, tornando possível a exe-
cução de várias instruções ao mesmo tempo. Um computador com múlti-
plos processadores que compartilhem uma memória principal, é chamado
de multiprocessador ou sistemas fortemente acoplados. Desta forma,
o conceito de multiprocessamento está diretamente relacionado ao uso
de dois ou mais processadores em um mesmo sistema. Há outro concei-
to relacionado, denominada multicomputadores ou sistemas fracamente
acoplados. Nestes casos, estes sistemas caracterizam-se por possuir dois
ou mais sistemas computacionais conectados através de linhas de comu-
nicação. Cada sistema funciona de forma independente, possuindo seu
próprio sistema operacional e gerenciando seus próprios recursos, como:
UCP, memória e dispositivos de E/S (Machado & Maia, 2007).

O Shell, ou interpretador de comandos, é um processo res-


ponsável pela interface entre o sistema operacional e o usuário. Esse pro-
cesso lê um dispositivo de entrada à espera de comandos, analisa-os e
passa seus parâmetros ao sistema operacional. Serviços como login e lo-
gout do usuário, execução de programas e manipulação de arquivos são
solicitadas através do interpretador de comandos.

Da mesma forma que o interpretador de comandos é a interface entre o


sistema operacional e o usuário, as chamadas de sistema (system
calls) constituem a interface entre programas aplicativos e o sistema ope-
racional. As chamadas de sistema são funções que podem ser ligadas com
os aplicativos, provendo serviços como leitura do relógio interno, opera-
ções de E/S (Entrada e Saída) e comunicação interprocessos. A Figura 1.3
representa o modo de atuação de uma chamada de sistema dentro de um
sistema operacional.

3
2

Figura 3: Relação entre kernel, chamadas de sistemas, interpretador de comandos e


aplicativos

O núcleo da Figura 1.3, identificada pelo número 1, representa o


kernel do sistema operacional, onde estão os códigos responsáveis por

e-Tec Brasil 16 Técnico em Informática


manipular o hardware da máquina e gerenciar todo o funcionamento da
mesma. Para esconder os comandos de baixo nível existentes no núcleo do
sistema operacional, a camada identificada pelo número 2 representa as
chamadas de sistemas e o interpretador de comandos já explicados ante-
riormente. Por fim, interagindo com a camada 2, estão os aplicativos e os
usuários, respectivamente.

Outro termo relativamente comum nos estudos de sistemas ope-


racionais é o deadlock. Um deadlock é uma ocorrência de sistemas mul-
tiprogramados, onde um ou mais processos aguardam por um evento ou
recurso que jamais irá ocorrer. Um bloqueio perpétuo, ou deadlock, ocorre
em duas situações diferentes. Na primeira delas um processo é colocado
em espera por algo que SO não possui nenhuma previsão de quando o
atendimento desta espera poderá ocorrer. Neste caso, dizemos que ocor-
reu um deadlock de um processo único (one-process deadlock). A segunda
situação culmina em um arranjo circular onde um processo A, que detém
um recurso R1, necessita de um recurso R2 para ser executado. Entretanto,
R2 encontra-se alocado para um processo B, que por sua vez, está aguar-
dando o recurso R1 alocado para o processo A. Como nenhum dos dois
processos se dispõe a liberar o recurso alocado para ele, ocorre então uma
situação de deadlock.

1.7 Considerações finais

Um sistema operacional certamente é o principal software de um


computador. Entretanto, estes sistemas simplesmente atuam como um in-
termediador entre os diversos aplicativos que utilizamos para realizar as
mais variadas tarefas do dia a dia. Ou seja, na verdade pouco, ou quase
nada, utilizamos de um sistema operacional para desenvolver um texto,
criar um desenho ou ouvir uma música. Porém, a compreensão de seu fun-
cionamento é de extrema importância para o bom uso de um computador,
aplicativos e seus recursos hardware e/ou software.

Nos capítulos seguintes serão apresentados os conceitos relativos a


processos, gerência de memória, sistemas de arquivos e gerência de entra-
da e saída.

Introdução ao Sistema Operacional 17 e-Tec Brasil


Exercícios

1. Pesquise sobre outros conceitos de SO além dos apresentados


aqui. Após a leitura, crie uma definição de SO de acordo com o seu
entendimento.

2. Explique resumidamente cada um dos tipos de sistemas ope-


racionais abaixo. Cite ao menos um exemplo de SO para cada um
deles.

a. Sistemas operacionais para computadores de grande porte;

b. Sistemas operacionais de computadores pessoais;

c. Sistemas operacionais embarcados;

d. Sistemas operacionais servidores;

e. Sistemas operacionais de tempo real;

3. Faça uma comparação entre sistemas monoprogramados,


multitarefas e multiprogramados.

4. O que é um deadlock?

5. Pesquise a respeito de DMA (Direct Access Memory). Descreva


seu objetivo, funcionamento e benefícios.

6. Descreva em uma linha “processos”.

7. Qual a relação entre chamadas de sistema e interpretador de


comandos? O que eles possuem em comum?

8. Monte uma apresentação (ou discuta no fórum) a respeito das


características técnicas de um sistema operacional alternativo. Pesqui-
se na Internet sobre estes tipos de sistema e discuta com o professor
através dos fóruns no ambiente virtual sobre qual a melhor opção de
tema para estudo (individual). Procure levantar características como a
aplicação do SO em estudo, plataforma, características de hardware
necessário, tipo de SO, dentre outras.

e-Tec Brasil 18 Técnico em Informática


UNIDADE 2 - GERÊNCIA DE
PROCESSO

Objetivos da aula

- Compreender como o sistema operacional gerencia os processos

- Diferenciar e compreender os diferentes tipos de escalonamento


de processos

O estudo e o desenvolvimento de sistemas operacionais requerem


a compreensão de um conceito fundamental: processo computacional.
Como mencionado no capítulo anterior, um processo nada mais é do que
um programa em execução. Este programa certamente possui um objetivo
definido, requer o uso de determinados recursos e possui uma duração
finita. Dentre as propriedades pertencentes a um processo, duas delas me-
recem destaque. A primeira é o resultado de sua execução, independente
da velocidade com que ela ocorre. A segunda propriedade diz que se um
processo for executado novamente com os mesmos dados, necessariamen-
te ele passará pelo mesmo conjunto de instruções, executados na mesma
sequência e, o resultado fornecido será o mesmo em todas as vezes que
for executado (Tanenbaum, 2003).

Atualmente, todos os computadores modernos são capazes de re-


alizar diversas tarefas em paralelo. Enquanto executa o programa de um
usuário, o mesmo computador é capaz de ler uma unidade de armazena-
mento de dados ou utilizar um periférico qualquer. Normalmente, o que
ocorre internamente é o compartilhamento da CPU por parte dos proces-
sos que a requer, em períodos da ordem de milésimos de segundos, dando
ao usuário a impressão de paralelismo. Isso nos leva à conclusão de que o
tempo total para a execução de um processo é em função da quantidade
de processos competindo pela CPU. Isto implica que o tempo de execução
de um processo varia a cada nova execução, dependendo diretamente da
“carga” da máquina, em razão da concorrência entre os processos pela
CPU. Entretanto, o quando executado com os mesmos dados e instruções,
o resultado da execução será o mesmo independente do tempo requerido

Introdução ao Sistema Operacional 19 e-Tec Brasil


para sua conclusão.

2.1 Escalonamento de processos

Uma das características comuns aos sistemas multiprogramados,


é a existência de mais de um processo ativo (pronto para executar) com-
petindo pelo uso da CPU. Nestes casos deverá ser feita a escolha de qual
processo deverá ser executado primeiro, dentre todos os que estão na fila
(ativos). A parte do sistema que faz a escolha é denominada escalonador,
que utiliza um algoritmo de escalonamento para determinar a sequência
de execução dos processos que competem pela CPU (Tanenbaum, 2003).

Segundo Tanenbaum (1999), com o advento dos sistemas de com-


partilhamento de tempo, com múltiplos usuários, que muitas vezes devem
combinar a execução das tarefas destes usuários com a execução de jobs,
em batch rodando em background, o algoritmo de escalonamento tornou-
se mais complexo. As principais características que um bom algoritmo de
escalonamento deve apresentar são:

• Justiça: garantir que todos os processos do sistema tenham chan-


ces iguais de uso da CPU;

• Eficiência: manter o processador ocupado 100% do tempo;

• Tempo de resposta: minimizar o tempo de resposta para os


usuários de programas interativos;

• Turnaround (tempo de espera): minimizar o tempo que os


usuários batch (de programas não interativos como, por exemplo: compi-
lação e impressão) devem esperar pela saída;

• Throughput (vazão): maximizar o número de jobs processados


e finalizados em uma unidade de tempo (usualmente uma hora).

Embora cada processo seja uma entidade independente, muitas vezes eles
precisam concorrer por recursos e interagir com outros processos. Na Figu-
ra 2.1, extraída de Tanenbaum (2003), são apresentados os três estados de
um processo e suas possíveis interações.

e-Tec Brasil 20 Técnico em Informática


Figura 4: Estados de um processo e suas transições

Conforme descrito em Tanenbaum (2003), quatro mudanças de


estado são possíveis de acordo com a figura acima. A transição 1 ocorre
sempre que um processo descobre que não tem mais condições lógicas de
prosseguir em seu processamento, seja por ter que aguardar algum dado
ou alguma instrução do usuário, ou então por precisar aguardar o resulta-
do de outro processo ou a liberação de um recurso. Em alguns sistemas,
para ir ao estado de bloqueado, é executada uma chamada de sistema blo-
ck, alterando o estado de um processo de executando para bloqueado.

As transições 2 e 3 são causadas pelo escalonador de processos


quando um processo é preemptado, sem que o mesmo tome conhecimen-
to das rotinas responsáveis por esta mudança. A transição 2 ocorre, quan-
do o escalonador decide que o processo corrente já ocupou o processador
por tempo suficiente ou então pelo fato de existir outro processo de maior
prioridade no estado “pronto”, sendo, portanto, o momento de deixar
que outro processo assuma a CPU e vá para o estado “executando”. A
transição 3 ocorre quando um outro processo libera a CPU e dá a oportuni-
dade para que o primeiro da fila seja executado. A função do escalonador
de processos (decidir qual processo vai rodar e por quanto tempo) é impor-
tantíssima, sendo nosso próximo objeto de estudo.

Sempre que um evento externo pelo qual o processo bloqueado es-


tava aguardando ocorrer, esta ação resultará na ocorrência da transição 4.
Como exemplo, a conclusão de uma operação de E/S pode alterar o estado
de um processo de bloqueado para pronto. Se nenhum outro processo
estiver rodando neste momento, a transição 3 é acionada imediatamente,
e o processo que aguardava uma determinada ocorrência será executado.
Caso contrário, ele permanecerá no estado “pronto” até que o processa-
dor fique disponível e o escalonador o escolha para rodar.

Existem duas classes de políticas de escalonamento de processos,


a preemptiva e a não preemptiva. O escalonamento não preemptivo foi o

Introdução ao Sistema Operacional 21 e-Tec Brasil


primeiro tipo de escalonamento implementado nos sistemas multiprogra-
máveis, onde predominava tipicamente o processamento batch. Neste tipo
de escalonamento, quando um processo assume a CPU, nenhum evento
externo irá interrompê-lo até que ele seja concluído, ou seja, ele somente
irá sair do estado de execução quando for concluído ou se houver alguma
instrução do próprio código que ocasione uma mudança para o estado de
espera (Machado & Maia, 2007).

No escalonamento preemptivo, o sistema operacional pode inter-


romper um processo em execução a fim de liberar processamento para ou-
tro processo que se encontra na fila de pronto. Com o uso da preempção é
possível ao sistema priorizar a execução de determinados processos, como
no caso de aplicações de tempo real, onde o fator tempo é crítico (Ma-
chado & Maia, 2007). Outro benefício é a possibilidade de implementar
políticas de escalonamento que compartilhem o processador de maneira
uniforme, aumentando assim o throughput, diminuindo o tempo de espe-
ra e permitindo uma programação concorrente mais justa

Dentre os algoritmos de escalonamento não preemptivos que ire-


mos estudar, serão abordados o First-In-First-Out (FIFO) e o Shortest-Job-
First (SJF), este último também conhecido como Menor Job Primeiro Não
Preemptivo. Os algoritmos preemptivos apresentados neste documento
são o de Menor Job Primeiro Preemptivo, o Round Robin e o de Maior
Prioridade Preemptivo.

2.1.1 FIFO

Também conhecido como First-Come-First-Served (FCFS) o FIFO


talvez seja a estratégia de escalonamento mais simples que exista. Neste
algoritmo os processos são selecionados para execução de acordo com sua
ordem de chegada na fila de processos prontos do sistema. Uma vez que
um processo assuma o controle da CPU, ele irá rodar até ser concluído. Por
esta característica FIFO é considerado um algoritmo de escalonamento não
preemptivo.

Esta política de escalonamento é justa no sentido de que todos os


processos serão executados e na ordem de chegada, mas é injusta no sen-
tido que grandes processos podem fazer pequenos processos esperarem.

e-Tec Brasil 22 Técnico em Informática


Outro problema, é que jobs sem grande importância podem ser executa-
dos antes de jobs de maior importância, fazendo com que estes últimos te-
nham que esperar. Apesar de garantir que, em situações onde não ocorra,
por exemplo, um deadlock, todos os processos/jobs sejam executados, este
algoritmo não apresenta bons resultados no escalonamento de processos
interativos e em sistemas multitarefa/multiprogramado, por não garantir
bons resultados nos tempos de resposta.

Para exemplificar o funcionamento deste algoritmo, suponha que


quatro processos (P1, P2, P3 e P4) tenham sido criados e que cada um pos-
sua, respectivamente, a duração (Burst Time) de 4, 8, 6 e 5 unidades de
tempo (u.t.) cada um. Vamos supor que estes processos chegaram para ser
executados no mesmo instante (zero) e na ordem acima (P1, P2, P3 e P4).
Para representar a execução destes processos podemos construir o gráfico
de Gantt conforme apresentado na Figura 5.

Figura 5: Gráfico de Gantt


Mas quais são as informações mais importantes que podemos ex-
trair deste gráfico? Uma informação importante é o tempo médio de es-
pera apresentado por cada algoritmo. O procedimento para calcular este
valor é simples. Basta saber o quanto cada processo aguardou para ser
executado. A média aritmética destes valores apresentará o Tempo Médio
de Espera do algoritmo analisado para uma determinada situação. A fór-
mula abaixo nos permite calcular o tempo de espera para cada processo Pi
, com i = 1,2,...,n , onde n representa o número total de processos criados
e o processo em análise.

(1)

Introdução ao Sistema Operacional 23 e-Tec Brasil


Onde:

Depois de calculado o TEPi para todos os processos, o Tempo Mé-


dio de Espera (TME) do algoritmo para uma determinada situação é calcu-
lado pela média aritmética, conforme a Equação (2).

(2)

Este parâmetro torna-se um importante valor de referência para


determinar qual o melhor algoritmo em cada uma das situações possíveis.
As Equações (1) e (2) podem ser utilizadas para calcular o tempo médio
de espera em qualquer um dos algoritmos de escalonamento de processos
apresentados neste material.

2.1.2 Menor Job Primeiro Não Preemptivo

A maior parte dos algoritmos analisados neste documento foram


projetados para sistemas interativos. O algoritmo do menor job, primeiro
foi desenvolvido para aplicações não interativas (em batch), onde o tempo
médio de execução de um processo é conhecido com antecedência (Ta-
nenbaum, 1999). Assim, o processo em estado de pronto que precisar do
menor tempo de CPU para ser finalizados, será selecionado para execução.
A Figura 2.3, adaptada de Silberschatz, et. al (1999), apresenta o momento
da chegada (quando entraram no estado de pronto) e a duração de quatro
processos.

e-Tec Brasil 24 Técnico em Informática


Figura 6: Gráfico de Gantt para a execução de quatro processos com o algoritmo SJF
Não Preemptivo

Alguém poderia perguntar. Por que o processo P3é executado de-


pois do P1 , sendo que o algoritmo prioriza o menor job (processo) para
ser executado primeiro? A resposta é simples e, para entender o porquê,
temos que nos atentar à coluna do momento da chegada do processo. Por
se tratar de um algoritmo não preemptivo, após assumir a CPU, o processo
será executado até ser concluído, permanecendo na CPU durante todo seu
tempo de duração. Como o P1 entrou no processador no instante 0 (zero),
ele ficará lá até ser concluído. Se observarmos bem, o processo P3 chega à
fila de pronto somente no instante 4. Assim, como ele chegou à fila no ins-
tante 4, era praticamente impossível atendê-lo antes deste momento. Ao
final, as equações (1) e (2) são aplicadas no cálculo do TME que apresenta
como valor 4,75 u.t. (unidades de tempo) para este algoritmo com estes
processos.

2.1.3 Menor Job Primeiro Preemptivo

Este algoritmo é bastante semelhante ao apresentado no capítulo


2.1.2, entretanto, sempre que houver um processo na fila com tempo de
processamento estimado menor que o restante para o processo em exe-
cução ser concluído, haverá a preempção do processo (troca de contexto).
Considerando a mesma situação apresentada no capítulo anterior, o gráfi-
co de Gantt e o TME dos mesmos processos executados com o algoritmo
do SJF Preemptivo são apresentados na Figura 2.4, adaptada de Silbers-
chatz, et. al (1999).

Introdução ao Sistema Operacional 25 e-Tec Brasil


Este algoritmo certamente apresentará o menor TME em todas as
situações. Como podemos constatar na Figura 2.4, toda vez que um pro-
cesso entrar no estado de Pronto, seu tamanho será comparado com o
que resta do processo em execução. Caso seja menor, como ocorre com os
processos P2 e P3 ,o processo em execução será preemptado e a CPU será
entregue ao processo de menor tamanho.

Figura 7: Gráfico de Gantt para a execução de quatro processos com o algoritmo SJF
Preemptivo
Da mesma forma como ocorre em todos os cálculos do TME inde-
pendente do algoritmo aplicado, as Equações (2) e (3) são utilizadas para
determinar o TME apresentado na Figura 2.4.

2.1.4 Round Robin

Um dos algoritmos mais antigos, simples, justos e amplamente uti-


lizados é o escalonamento Round Robin. Cada processo recebe um interva-
lo de tempo, denominado quantum, durante o qual ele pode executar. Se
o processo ainda estiver executando ao final do quantum, o processador é
dado a outro processo. Caso o processo em execução seja bloqueado ou
concluído antes do final do quantum, a troca de CPU para outro processo
é feita assim que um destes dois eventos ocorrer. O escalonamento Round
Robin é de fácil compreensão. Tudo que o escalonador tem a fazer é man-
ter uma lista dos processos no estado de Pronto. Quando o quantum de

e-Tec Brasil 26 Técnico em Informática


um processo acaba, ele é colocado no final da lista. A Figura 2.5, extraída
de Tanenbaum (1999), ilustram este processo.

Figura 8: Escalonamento Round Robin. (a) A lista de processos prontos. (b) A lista de
processos após o quantum de B haver expirado
O algoritmo Round Robin é semelhante ao um FIFO, com a diferen-
ça de ser preemptivo. Nele os processos não executam até o seu final, mas
sim durante um certo tempo (quantum), um por vez. Assim, executando
sucessivamente em intervalos de tempo determinados pelo quantum, em
algum momento o job acaba por terminar sua execução.

Neste algoritmo, um aspecto que merece atenção especial é a du-


ração (tamanho) do quantum. Mudar de um processo para outro requer
um certo tempo para a administração de tarefas burocráticas, como: salvar
e carregar registradores e mapas de memória, atualizar tabelas e listas do
SO, dentre outras. Suponha que esta troca de processos, denominada tro-
ca de contexto, tenha duração de 5 ms. Suponha também que o quantum
está ajustado em 20 ms. Com esses parâmetros, após fazer 20 ms de tra-
balho útil, a CPU terá que gastar 5 ms com troca de contexto. Assim, 20%
do tempo de CPU será gasto com o overhead administrativo (Tanenbaum,
1999).

Para melhorar a eficiência da CPU, poderíamos ajustar o quantum


para 500 ms. Agora o tempo gasto com a troca de contexto é menor do
que 1% (um por cento). Entretanto, imagine se dez usuários apertassem a
tecla <ENTER> exatamente ao mesmo tempo, cada um deles disparando
processo. Dez processos seriam colocados no estado de pronto e ficariam
na lista de processos aptos a executar. Se a CPU estiver ociosa, o primeiro
começará imediatamente. O segundo processo não começará antes de ½
segundo (500 ms) depois, e assim sucessivamente. O azarado do último
processo será executado somente 5 segundos após o usuário ter pressiona-
do <ENTER>, considerando que todos os outros processos utilizaram todo
o seu quantum. Muitos usuários vão achar que o tempo de resposta de 5
segundos para um simples comando é um tempo demasiadamente grande
(Tanenbaum, 1999).

Introdução ao Sistema Operacional 27 e-Tec Brasil


A partir destas informações, podemos concluir que ajustar um
quantum muito pequeno causam muitas trocas de contexto e diminui a
eficiência da CPU. Por outro lado, ajustá-lo para um valor muito alto, cau-
sa um tempo de resposta inaceitável para pequenas tarefas interativas.
Assim, um valor frequentemente utilizado para quantum está em torno
de 100 ms. Assim como nos gráficos de Gantt mostrados nos algoritmos
anteriores, o tempo necessário para troca de contexto será desconsiderado
no cálculo do TME. A Figura 2.6, adaptada de Silberschatz, et. al (1999),
apresenta o gráfico de Gantt com o escalonamento dos processos apresen-
tados.

Figura 9: Escalonamento Round Robin com quantum de 20 u.t.

A Figura 9 apresenta o gráfico de Gantt com 4 processos de di-


ferentes tamanhos em diferentes instantes de chegada. Como prática de
exercício, faça uma análise dos momentos em que os processos são pre-
emptados e calcule o Tempo Médio de Espera (TME) para a situação aci-
ma.

2.1.5 Maior Prioridade Preemptivo

O algoritmo de escalonamento Round Robin considera que todos


os processos são de igual importância. Entretanto, certas aplicações como
controle de processos industriais, demandam um algoritmo com escalo-
namento de prioridades, onde em determinadas situações de emergência
requerem maior nível de prioridade que outros processos.

e-Tec Brasil 28 Técnico em Informática


Conforme apresentado em Tanenbaum (1999), algumas vezes
pode ser conveniente agrupar processos em classes de prioridades e usar
o escalonamento com prioridade entre as classes e o Round Robin dentre
de cada classe. A Figura 2.7, extraída de Tanenbaum (2003), apresenta um
sistema com quatro classes.

Enquanto houver processos prontos na classe de maior prioridade


(Prioridade 4), estes processos serão executados segundo a política de es-
calonamento Round Robin. Quando a fila dos processos de prioridade 4
estiver vazia, os processos da classe 3 serão executados pelo Round Robin.
Se as filas de classes 4 e 3 estiverem vazias, a escolha recai sobre os proces-
sos da classe 2, e assim por diante.

Figura 10: Algoritmo de escalonamento com quatro classes de prioridades

Um problema comum neste tipo de algoritmo, é que, se as


prioridades não estiverem bem sintonizadas, pode ocorrer dos proces-
sos das classes mais baixas nunca serem executados.

Para ilustrar o funcionamento deste algoritmo, a Figura 11,


adaptada de Silberschatz, et. al (1999), apresenta o gráfico de Gantt
para quatro processos com seus níveis de prioridade.

Introdução ao Sistema Operacional 29 e-Tec Brasil


Os resultados apresentados por este tipo de algoritmo podem
variar de acordo com a prioridade dos processos, o tamanho e seus
momentos de chegada. Desta forma, em determinadas situações, este
algoritmo pode ter um excelente desempenho e, em outras, um de-
sempenho ruim quando o valor de referência para isso for o TME.

Figura 11: Escalonamento com prioridade e Round Robin por fila

2.2 Considerações finais

O objetivo deste capítulo foi mostrar algumas formas de como


pode ser realizado o controle de qual processo assumirá o controle do
processador em determinadas situações. Inúmeras são as alternativas
de algoritmo e suas possíveis combinações, entretanto, certamente a
que apresentará o menor TME é o escalonamento SJF Preemptivo.

Exercícios

1. Suponha uma situação na qual um processo A, de alta priori-


dade, e um processo B de baixa prioridade interagem de forma a levar
A a um loop eterno no uso da CPU. Tal situação persistiria se utilizás-
semos o escalonamento Round Robin em vez do escalonamento com
prioridade? Comente.

e-Tec Brasil 30 Técnico em Informática


2. Pesquise a respeito de Threads. Descreva seu objetivo, funcio-
namento e benefícios.

3. Suponha que você deseja minimizar na média o tempo de es-


pera no seu escalonamento, que política você deveria usar? Qual é a
maior dificuldade em aplicar esta política na prática?

4. Suponha que os seguintes processos chegaram para execução


nos tempos indicados. Cada processo rodará a quantidade de tempo
listada na tabela.

Processo Chegada Tamanho

P1 0 8

P2 1 5

P3 3 1

P4 6 4

Calcule o tempo médio de espera e para os escalonamentos:

a) FCFS;

b) SJF (não preemptivo);

c) SJF (preemptivo);

d) Round Robin (Quantum = 2);

e) Prioridade Preemptivo, sendo 2, 3, 1, 5, respectivamente as


prioridades de P1 a P4;

5. Em um sistema operacional, o escalonador de curto prazo uti-


liza duas filas. A fila “A” contém os processos do pessoal do CPD e
a fila “B” contém os processos dos alunos. O algoritmo entre filas é
fatia de tempo. De cada 13 unidades de tempo de processador, 5 são
fornecidas para os processos da fila “A”, e 8 para os processos da fila
“B”. O tempo de cada fila é dividido entre os processos também por

Introdução ao Sistema Operacional 31 e-Tec Brasil


fatias de tempo (Round Robin), com quantum igual a 2. A tabela a
seguir mostra o conteúdo das duas filas no instante zero.

Considere que está iniciando um ciclo de 13 unidades, e agora a fila


“A” vai receber as suas 5 unidades de tempo. Mostre a sequência de
execução dos processos, com os momentos em que é feita a troca de
contexto e calcule o Tempo Médio de Espera.

Fila Processo Tamanho Chegada

A P1 8 0

A P2 7 1

A P3 5 3

B P4 1 3

B P5 5 7

B P6 2 12

B P7 6 13

B P8 3 25

Obs.: Se terminar a fatia de tempo da fila “X” no meio da fatia de


tempo de um dos processos, o processador passa para a outra fila.
Entretanto, esse processo permanece como primeiro da fila “X”, até
que toda sua fatia de tempo seja consumida.

e-Tec Brasil 32 Técnico em Informática


UNIDADE 3 - GERÊNCIAMENTO
DE MOMENTO

Objetivos da aula

- Compreender como os sistemas operacionais gerenciam a memó-


ria

- Diferenciar e compreender os diferentes tipos de gerenciamento


de memória

A Lei de Parkinson aplicada ao uso e gerência de memória, diz que


o tamanho dos programas utilizados tende a crescer de forma a ocupar
toda a memória disponível para armazená-los. Mesmo atualmente com a
redução de custo e consequente aumento da capacidade da memória prin-
cipal, seu gerenciamento é um dos fatores mais importantes no projeto de
sistemas operacionais.

O módulo do sistema operacional responsável pela gerência da


memória disponível é denominado Gerenciador de Memória. Dentre suas
funções, seu trabalho é controlar quais partes da memória estão em uso e
quais não estão, de forma a alocar memória aos processos quando estes
precisarem. Outra função do gerenciador de memória é ao ser concluído
um processo, liberar a memória que ele estava utilizando, além de tratar
do swapping entre a memória principal e secundária, quando a memória
principal não for grande o bastante para armazenar todos os processos
(Tanenbaum, 1999).

Os sistemas de gerência de memória podem ser divididos em duas


grandes categorias: aqueles que movem os processos entre a memória
principal e os discos realizando operações de swapping, e aqueles que não
movimentam os processos entre tais dispositivos de armazenamento. Os
itens 3.1, 3.2 e 3.3 tratam de uma abordagem mais simples, sem o uso de
swapping. A partir do item 3.4 os sistemas de gerência de memória abor-
dados permitem o uso de swapping de memória. Seguindo a abordagem
apresentada em Tanenbaum (1999), algumas das políticas de gerência de
memória existentes serão apresentadas na sequência.

Introdução ao Sistema Operacional 33 e-Tec Brasil


3.1 Monoprogramação sem swapping ou
paginação

A forma mais fácil de alocação de memória a processos é aquele no


qual só existe um processo na memória em cada instante. Neste esquema
o usuário carrega para a memória principal um processo oriundo de um
disco ou de outro meio de armazenamento. Por sua vez, este processo
assume o controle de todos os recursos da máquina e terá disponível toda
a memória do sistema exclusivamente para si. Entretanto, caso a memória
disponível não seja suficiente, o processo terá sua execução rejeitada.

Quando o sistema é organizado dessa maneira, somente um pro-


cesso pode estar em execução por vez. O usuário entra com um comando
no terminal e o sistema operacional carrega o programa requerido do disco
para a memória e o executa. Quando o processo termina, o sistema opera-
cional reassume a CPU e espera por um novo comando para carregar outro
processo na memória já liberada pelo primeiro. Não há nenhum tipo de
controle que permita ao usuário utilizar recursos como multiprogramação
ou multitarefa.

3.2 Multiprogramação e utilização da me-


mória

Ainda que a monoprogramação tenha sido utilizada em pequenos


computadores, em sistemas computacionais maiores, com múltiplos usu-
ários ou que necessitem apresentar um desempenho melhor, ela é proi-
bitiva. Além de suportar vários processos simultâneos, outra razão para
multiprogramar um computador (também aplicável em sistemas batch) é
o fato de vários processos despenderem uma parcela substancial de seu
tempo para operações de E/S.

Outro fator comum, é que, para um processo em loop de leitura


um bloco de dados de um arquivo em disco, também é comum a realização
de alguma operação sobre o conteúdo dos blocos lidos. Em sistemas mul-
tiprogramados esta ação é perfeitamente possível e implementável. Para
exemplificar seu grau de importância, se for gasto 40ms para ler um bloco
e o processamento deste bloco demandar apenas 10ms, durante 80% do
tempo total que o processo levar para ser concluído a CPU estará ociosa.

e-Tec Brasil 34 Técnico em Informática


Com o uso da multiprogramação é possível incrementar o percen-
tual de utilização da CPU. Colocando a questão de forma bem grosseira, se
tivermos 5 processos carregados na memória e cada um utilizar o proces-
sador apenas 20% de seu tempo (tempo de espera na memória + tempo
de execução), a CPU deverá estar ocupada o tempo todo. Entretanto, este
modelo é muito otimista e irreal, uma vez que assume que nunca dois ou
mais processos estarão esperando por E/S ao mesmo tempo.

Um modelo mais realista procura considerar o uso do processador


de forma probabilística. Suponha que determinado processo gaste uma
fração de seu tempo esperando por E/S. Com n processos na memória
simultaneamente, a probabilidade de todos eles aguardarem por entrada
e saída ao mesmo tempo, caso em que o processador ficará ocioso, é Pn.
Desta forma, um cálculo mais realista do uso aproximado de um processa-
dor pode ser realizado com a Equação (3).

(3)

Onde:

Com base na Equação (3), a Figura 3.1, extraída de Tanenbaum


(2003), apresenta a percentagem de utilização do processador em função
do grau de multiprogramação (quantidade de processos na memória).

Figura 12: Utilização do processador em função do número de processos na memória


principal

Com uma rápida análise na figura, é possível concluir que quando

Introdução ao Sistema Operacional 35 e-Tec Brasil


os processos consomem 80% de seu tempo aguardando por E/S, no míni-
mo 10 processos devem estar ao mesmo tempo na memória para manter o
grau de ociosidade do processador abaixo de 10%. Como prática de exer-
cício, realize uma análise do gráfico de multiprogramação apresentado.

3.3 Multiprogramação com partições fi-


xas

Como você já deve ter percebido, muitas vezes é conveniente man-


ter mais de um processo na memória ao mesmo tempo. Entretanto, para
isso devemos estabelecer uma estratégia de organização da memória. A
forma mais simples consiste em dividir a memória em n partições, possivel-
mente de tamanhos diferentes.

Ao ser inicializado, um processo pode ser colocado em uma fila de


entrada para ocupar a menor partição de tamanho suficiente para arma-
zená-lo. Em razão das partições possuírem tamanho fixo, qualquer espaço
não utilizado dentro de uma partição será perdido. A Figura 3.2, extraída
de Tanenbaum (2003), apresenta as duas maneiras de organizar os proces-
sos dentro desta política de gerenciamento de memória.

Figura 13: (a) Partições fixas de memória com filas de entrada separadas para cada
uma. (b) Partições fixas de memória com uma única fila de entrada

A desvantagem de se organizar os processos que chegam em fi-


las separadas, torna-se aparente quando a fila para a maior partição está

e-Tec Brasil 36 Técnico em Informática


vazia, entretanto, as filas para as partições menores estão cheias, como
no caso das partições 1 e 3 da Figura 3.2 (a). Uma forma alternativa de
organizar a chegada dos processos, é manter uma fila única como na Fi-
gura 3.2 (b). Toda vez que uma partição é liberada, a mesma é alocada ao
primeiro processo da fila que caiba nela. Uma vez que não é viável gastar
uma partição grande com um processo pequeno, uma estratégia mais efi-
caz é procurar em toda fila de entrada o maior job que caiba na partição
liberada. Observe que, embora a última estratégia utilize melhor as parti-
ções da memória, ela também discrimina os processos menores, quando
normalmente é desejável dar a eles melhor tratamento, e não pior.

3.4 Multiprogramação com partições vari-


áveis

Quando falamos em swapping de memória, a prática da multipro-


gramação com partições fixas não chega a ser atrativa devido à perda de
espaço de memória ocasionada pela sobra de espaço ocorrida dentro de
uma partição.

A principal diferença para o algoritmo com partições de tamanho


fixo, é que a quantidade, o tamanho e a localização dos processos, variam
dinamicamente em razão da utilização do sistema. A Figura 3.3, extraída
de Tanenbaum (1999), ilustra seu uso.

Figura
14: A alocação muda conforme os processos são criados e copiados do disco
para a memória e vice-versa. As regiões sombreadas não estão alocadas no momen-
to

Introdução ao Sistema Operacional 37 e-Tec Brasil


Na figura acima, no instante (a) somente o processo A está na me-
mória. Na sequência, os processos B e C são criados ou trazidos para do
disco. No instante (d) o processo A é finalizado ou sofre um swap-out (os
dados saem da memória principal e retornam para o disco). Na sequência,
D vem para a memória e B sai. Por fim, o processo E chega.

Uma das principais questões a serem tratadas neste algoritmo é


como administrar os buracos criados após várias operações de swap-in (os
dados são carregados do disco para a memória principal) e swap-out. Para
tratar este problema um procedimento conhecido como compactação de
memória deverá ser executado, nada mais é do que movimentar todos os
processos para os endereços mais baixos da memória. Apesar de funcional,
esta técnica é bem pouco utilizada pelo fato de requerer muito processa-
mento de CPU para realizar a compactação dos dados.

Outro problema deste método é como gerenciar o crescimento de


um processo. Se um processo for de tamanho fixo, não haverá nenhum
problema com a quantidade de memória alocada a ele. Entretanto, se um
processo aumentar de tamanho e ele tiver outros processos adjacentes a
ele, o próprio processo que está crescendo ou um dos processos adjacentes
a ele deverá ser movido para outro endereço. Em última situação, outro
processo deverá ser removido da memória para liberar o espaço necessá-
rio.

3.5 Gerência de memória com listas liga-


das

Uma maneira bastante eficiente de gerenciar a alocação de me-


mória é mantendo uma lista ligada dos segmentos livres e ocupados na
memória. Entende-se por segmento um processo ou um espaço vazio (bu-
raco) entre dois processos.

Sempre que os processos e os buracos forem mantidos numa lista


ordenada por endereços, vários algoritmos podem ser utilizados na alo-
cação de memória para um processo que precise ser transferido do disco
para a memória principal. Segundo Tanenbaum (1999), quatro são os algo-
ritmos de alocação de espaço em memória.

e-Tec Brasil 38 Técnico em Informática


O algoritmo mais simples First-fit (primeiro buraco), o primeiro
buraco (segmento) livre de tamanho suficiente para carregar o processo
será escolhido para alocá-lo. Caso um segmento de tamanho n aloque um
processo de tamanho m, onde n>m, buraco será quebrado em dois seg-
mentos, sendo que o primeiro será do tamanho do processo e o segundo
será de tamanho n-m, resultando em um novo segmento livre na memória.
Para cada novo processo que precisar ser alocado, o algoritmo iniciará sua
busca a partir do início da lista de segmentos livres.

No algoritmo Best-fit (melhor buraco), o buraco escolhido será o


que resultar na menor sobra de espaço sem utilização. O maior problema
deste algoritmo são os pequenos buracos resultantes de sequentes aloca-
ções de segmentos aos processos, tornando necessário o uso da compac-
tação de memória. Por outro lado, por evitar o uso demasiado dos buracos,
este algoritmo aumenta as chances de um processo grande encontrar um
espaço disponível na memória.

Ao contrário do algoritmo do melhor buraco, o Worst-fit (pior


buraco) busca na memória o segmento que resultará na maior sobra de
espaço sem alocação após a alocação do processo. Apesar de utilizar as
maiores partições, a técnica do pior buraco deixa espaços livres maiores
que permitem a um maior número de processos serem carregados para a
memória (Machado & Maia, 2007).

Um algoritmo semelhante ao do primeiro buraco é o Next-fit


(próximo buraco). A diferença neste algoritmo é que ao ser alocado um
segmento a um processo, a busca pelo segmento a ser utilizado pelo pró-
ximo processo será inicializada a partir do segmento resultante desta alo-
cação ou do próximo segmento, caso o processo ocupe todo o segmento
a ele destinado.

3.6 Memória Virtual

Desde o início da informática, na grande maioria dos sistemas com-


putacionais, o tamanho dos programas tem superado a quantidade de
memória disponível para abrigá-los. Outra situação comum é a necessida-
de de manter vários programas carregados na memória, situação em que
normalmente a quantidade de memória existente acaba sendo inferior a

Introdução ao Sistema Operacional 39 e-Tec Brasil


requerida pela soma dos programas.

Para sanar este problema, em 1961 Fortheringham propôs um método


denominado memória virtual. Este método foi desenvolvido com o objetivo
de particionar os programas e carregar parte deles em memória de disco
através do processo de swapping. Neste sistema, um programa de 4 MB
pode rodar em uma máquina com 1 MB de memória através do uso da
memória virtual, onde o sistema operacional é responsável por selecionar
a parte programa que será carregada na memória principal e também qual
parte ficará em disco.

3.6.1 Paginação

A maioria dos sistemas que utilizam o recurso da memória virtual,


usam a técnica de paginação para implementá-lo. Todos os sistemas com-
putacionais permitem que um programa faça referências a um determina-
do conjunto de endereços. Estes endereços gerados pelos programas são
chamados endereços virtuais e formam o espaço de endereçamento virtual
(Tanenbaum, 2003).

Qualquer referência feita a estes endereços não irá direto ao bar-


ramento de memória. Antes disso, estas referências realizadas pelo pro-
cessador serão encaminhadas à unidade de gerência de memória (MMU
– Manager Memory Unit), que é responsável por mapear os endereços
virtuais em endereços reais, conforme mostrado na Figura 3.4 extraída de
Tanenbaum (2003).

Figura 15: A localização e a função da MMU



A Figura 15, extraída de Tanenbaum (2003), apresenta um exemplo de

e-Tec Brasil 40 Técnico em Informática


como trabalha esse mapeamento. Neste exemplo temos um processador
que gera endereços de 16bits, de 0 à 64K, correspondente ao endereça-
mento virtual do processador. Entretanto, este computador tem apenas
32K de memória física. Embora possamos carregar e executar programas
de até 64K, não podemos mantê-los carregados na memória principal.
Sendo assim, uma cópia completa do programa deve ser mantida em dis-
co, de maneira que pedaços dele possam ser carregados à memória princi-
pal quando necessários.

Figura 16: A relação entre endereços virtuais e endereços físicos da memória é dada
pela tabela de páginas
O espaço de endereçamento virtual é dividido em páginas e suas
unidades correspondentes no espaço de endereçamento físico são deno-
minadas moldura de página. Independente do tamanho das páginas, sua
moldura de página correspondente necessariamente precisa ser de mesmo
tamanho. O exemplo acima, elas são de 4KB, entretanto, em sistemas re-
ais, páginas de 512 bytes à 64 KB têm sido utilizadas (Tanenbaum, 2003).

Ao fazer referência ao endereço virtual 0, a MMU detecta que o


endereço referenciado está na página virtual 0 (de 0 a 4095), que, de acor-
do com o mapeamento, corresponde à moldura de página de número 2.
Desta forma, a MMU transforma o endereço virtual 0 no endereço físico
8192 e, só então, envia à memória através do barramento. Desta forma,
de acordo com a Figura 3.5, a MMU mapeia todos os endereços virtuais
de 0 a 4095 em seus endereços na moldura de página de 8192 a 12287
respectivamente (Tanenbaum, 2003).

Introdução ao Sistema Operacional 41 e-Tec Brasil


Mas o que aconteceria se o software realizasse uma referência a
um endereço que não está mapeado como, por exemplo, 40967, corres-
pondente ao sétimo byte dentro da página virtual 10? Este evento, deno-
minada falta de página (page fault) gera um desvio da CPU para o sistema
operacional que deve definir qual das molduras de páginas deverá ceder
lugar para a página virtual referenciada. Esta operação nada mais é do que
o processo de swap explicado anteriormente. Após a operação do swap,
o mapeamento das páginas deverá ser atualizado. Mas qual moldura de
página deverá sair da memória para ceder lugar ao conteúdo referenciado
pelo processo? Para resolver esta questão, Tanenbaum (1999) apresenta
alguns algoritmos para troca de página.

3.6.1.1 Algoritmo ótimo de substituição


de páginas

Embora classificado como o melhor algoritmo de troca de páginas,


a implementação do algoritmo de substituição de página ótimo não é pos-
sível de ser implementado. A idéia deste algoritmo é simples. Em um dado
momento, antes de uma moldura de página ser substituída, um rótulo
indicando quantas instruções serão executadas até que aquela moldura
seja referenciada novamente será analisado. A moldura de página com o
maior valor, ou seja, dentre as molduras de página carregadas a última a
ser referenciada, indica a moldura a ser substituída.

A grande questão é que não há como saber quando cada página


será referenciada, impossibilitando assim a aplicação prática deste algo-
ritmo. Entretanto, em uma posterior aplicação deste algoritmo, ele pode
ser útil como referência de resultados na comparação do desempenho de
algoritmos utilizados na prática.

3.6.1.2 Troca de página não usada recen-


temente (NUR)
Com o objetivo de permitir que o sistema operacional tenha as in-
formações necessárias para decidir quais páginas estão sendo utilizadas, a
maior parte dos computadores com memória virtual têm dois bits (R e M)

e-Tec Brasil 42 Técnico em Informática


associados a cada página. O bit R, que indica referência, assume valor 1
em qualquer operação de leitura ou escrita na página. O bit M, que indica
modificação no conteúdo da página, sinaliza a necessidade de atualização
do conteúdo da página no momento em que a mesma sofrer uma opera-
ção de swap ou simplesmente for retirada da memória principal.

A partir das informações disponibilizadas pelos bits R e M é pos-


sível o desenvolvimento de um algoritmo de troca de páginas simples e
eficiente. Inicialmente, para identificar quais páginas não tem sido utiliza-
das recentemente, o bit R pode ser zerado a cada interrupção de tempo.
Na ocorrência de falta de página, o sistema operacional substitui a página
da menor classe. A definição da classe a qual uma página pertence é feita
com base nos binários indicados pelos bits R e M, conforme apresentado
na Tabela.

Classes de páginas no algoritmo NUR


Classe Bit R Bit M Descrição

Não-referenciada, não
0 0 0
modificada

Não-referenciada,
1 0 1
modificada

Referenciada, não
2 1 0
modificada

3 1 1 Referenciada, modificada

Apesar da situação apresentada na classe 1 não parecer possível,


uma página pode ser colocada nesta classe quando ela for modificada
e, numa interrupção de tempo, o sistema operacional zerar seu bit de
referência. Caso mais de uma página seja classificada na menor classe, o
algoritmo irá substituir uma página randomicamente.

3.6.1.3 Algoritmo FIFO

Na implementação deste algoritmo, o sistema operacional mantém


uma lista com o momento em que cada página foi carregada. Quando
houver a necessidade de troca de página, a página mais antiga da lista, ou
seja, que foi carregada primeiro, será retirada da memória principal.

Introdução ao Sistema Operacional 43 e-Tec Brasil


3.6.1.4 Algoritmo segunda chance

Para evitar que uma página muito utilizada seja substituída, como
pode ocorrer no algoritmo FIFO, o algoritmo segunda chance implementa
uma modificação que permite-nos avaliar se a página mais antiga ainda
está sendo utilizada. O princípio é o mesmo do FIFO, entretanto, o algorit-
mo também analisa o bit R de cada página. Se a página mais antiga possuir
o bit de referência igual a 0, ela será removida imediatamente. Entretanto,
se seu bit de referência for igual a 1, indicando que ela ainda tem sido
utilizada e, por isso, não deve ser substituída, ela receberá uma “segun-
da chance”. Ao invés de ceder lugar para outra página, ela terá seu bit R
zerado e o algoritmo irá analisar a página mais antiga na sequência. Este
processo se repetirá até que o algoritmo identifique a página mais antiga
e que tenha o bit de referência igual a 0. Se por ventura todas as páginas
tiverem o bit de referência igual a 1, o comportamento deste algoritmo
será o mesmo do FIFO.

3.6.1.5 Algoritmo da página usada há


mais tempo

Com resultados mais próximos do algoritmo de troca de páginas


ótimo, o algoritmo estudo aqui se baseia na observação que as páginas
mais utilizadas nas últimas instruções, provavelmente também serão re-
ferenciadas nas próximas. De forma análoga, páginas que não têm sido
referenciadas nas últimas instruções, provavelmente também não serão re-
ferenciadas nas próximas. Desta forma, este algoritmo sugere que a página
a ser retirada da memória principal seja a que não tem sido utilizada pelo
maior período de tempo.

Apesar de a idéia ser simples, sua execução é bastante onerosa


no que diz respeito ao custo computacional. A grande dificuldade está
na necessidade de atualizar a lista sempre que ocorrer uma referência na
memória, o que envolve um contador que pode ser implementado tanto
em hardware quanto em software. Entretanto, para o objetivo de nossos
estudos, vamos generalizar a proposta deste algoritmo de forma a enten-
dermos que a página a ser substituída será a que tiver com o maior interva-
lo de tempo desde sua última referência até o momento em que a escolha
da página a ser substituída é feita.

e-Tec Brasil 44 Técnico em Informática


3.6.2 Segmentação

A memória virtual apresentada até o momento é unidirecional pelo


fato de seu endereçamento ir de 0 até um limite físico imposto pela quan-
tidade de memória. Embora a paginação permita que um grande espaço
de endereçamento seja implementado em uma quantidade limitada de
memória, processos que manipulam tabelas, pilhas e filas, podem gerar
alguns problemas, pois normalmente estas tabelas devem ser alocadas na
memória de forma contígua, o que não é possível com a paginação pelo
fato das páginas possuírem um tamanho fixo.

Nestas aplicações, um espaçamento endereçável bidimensional


pode ser mais adequado. Esta alternativa é suportada através do conceito
de segmentação, onde posições de memória são identificadas pelo par seg-
mento, deslocamento. Cada segmento tem um espaço de endereçamento
independente dos outros, que tem início no endereço 0 do segmento e vai
até o limite daquele segmento específico. O crescimento de um segmento
não afeta os demais e, geralmente, cada segmento possui um tamanho
diferente do outro. A Figura 3.6, extraída de Tanenbaum (2003), mostra
como cada segmento é organizado.

Na segmentação, o sistema operacional deve manter uma tabela


mapeando os segmentos para os endereços da memória. Uma diferença
importante é que segmentos têm dimensões distintas e, portanto, a in-
formação sobre o comprimento de cada segmento deve ser mantida. Se
por um lado este método permite que o uso de tabelas, pilhas e filas seja
melhor administrado, o fato de se trabalhar com partições de tamanhos
variáveis implica que após um tempo de uso a fragmentação poderá ocor-
rer e, para sanar este problema, mecanismos de compactação também
poderão ser aplicados na técnica de segmentação. A Figura 3.7, extraída
de Tanenbaum (2003), ilustra este processo.

Introdução ao Sistema Operacional 45 e-Tec Brasil


Figura 17: Uma memória segmentada permite que cada segmento altere seu tama-
nho independente das outras tabelas

A fragmentação externa (pertencente aos sistemas segmentados)


apresentada na Figura 3.7, é removida com a compactação da memória.
Vale ressaltar que nos sistemas paginados o tipo de fragmentação que
ocorre é a interna, ou seja, dentro da página. Na fragmentação externa, o
espaço livre é externo ao segmento.

Figura 18: (a)–(d). Desenvolvimento de fragmentação externa. (e) Compactação da


memória e consequente remoção da fragmentação

A tradução de endereços segmentados para endereços físicos ocor-


re de maneira similar à tradução de endereços virtuais. Para exemplificar
o processo de tradução de endereços, vamos nos basear na Figura 3.8,
adaptada de Tanenbaum (2003).

e-Tec Brasil 46 Técnico em Informática


Figura 19: Mapeamento de memória segmentada

Suponha que um processo gere o endereço lógico do byte C2, ou


seja, segmento 00 e deslocamento 00001. A tabela de segmentos informa
que o segmento 00 possui base 01000 e limite 0110. O deslocamento de
00001 é válido, pois é menor que o limite 0110. Somando a base 01000
do segmento 00 com o deslocamento 00001, teremos o endereço físico
01001. Esse é o endereço do byte C2 na memória física.

Os sistemas mais atuais utilizam uma mistura das técnicas de seg-


mentação e paginação para gerência de memória virtual. Caso deseje mais
informações a respeito da gerência de memória virtual, o aluno poderá
consultar (Tanenbaum, 2003).

Exercícios

1. Um computador tem espaço suficiente em sua memória para ar-


mazenar quatro programas. Estes programas esperam por E/S durante a
metade de seu tempo de processamento. Nesta situação, que fração do
tempo do processador é desperdiçada?

2. Usando o modelo da Figura 3.1, podemos prever um acréscimo


do throughput como função do grau de multiprogramação do sistema.

Introdução ao Sistema Operacional 47 e-Tec Brasil


Suponha que um computador tenha 2 MB de memória dos quais o sistema
operacional ocupe 512 KB, ou seja, um quarto da memória total, e que
cada programa também ocupe os mesmos 512 KB. Se todos os programas
esperarem por 60% do tempo por E/S, qual a porcentagem de aumento do
throughput se adicionarmos mais 1 MB de memória. Faça o mesmo cálculo
considerando a opção de adicionarmos 2 MB de memória, fazendo com
que o sistema totalize 4 MB nesta última configuração.

3. Qual a diferença entre endereço físico (real) e endereço virtual?

4. De maneira análoga a discutida na Figura 3.5, uma referência ao


endereço virtual 8192 seria mapeado em qual endereço físico (real)?

5. Explique a diferença entre fragmentação interna e fragmentação


externa. Qual delas ocorre nos sistemas paginados? Qual ocorre em siste-
mas com segmentação pura?

6. Um computador tem quatro molduras de páginas. O momento da


carga, o momento do último acesso e os bits R e M para cada uma das
páginas na memória são mostrados abaixo (os tempos são em intervalos de
interrupções de tempo):

Página Carga Última referência R M

0 230 260 1 0

1 120 272 1 1

2 160 280 1 1

3 126 279 0 0

a. Qual página será substituída pelo algoritmo NUR?

b. Qual página será substituída pelo algoritmo LRU?

c. Qual página será substituída pelo algoritmo FIFO?

d. Qual página será substituída pelo algoritmo da segunda chan-


ce?

e-Tec Brasil 48 Técnico em Informática


Justifique sua resposta para cada uma das alternativas acima

7. Considere um sistema de swapping no qual os seguintes bu-


racos estão na memória, na ordem apresentada: 10K, 4K, 20K, 18K,
7K, 9K, 12K e 15K. Se usarmos o esquema do primeiro buraco, quais
espaços de memória serão alocados a segmentos que sucessivamente
requisitarem:

a) 12K,

b) 10K,

c) 9K.

Repita a questão para os algoritmos do melhor buraco, do pior buraco


e do próximo buraco.

Introdução ao Sistema Operacional 49 e-Tec Brasil


UNIDADE 4 - SISTEMA
DE ARQUIVOS

Objetivos da aula

- Cumpreender como os sistemas operacionais efetuam a gerência


de arquivos.

- Diferenciam os diferentes tipos de sistemas de arquivos.

A parte com que o usuário mais tem contato do SO é o sistema de


arquivos. Programas aplicativos utilizam o sistema de arquivos constante-
mente (através de chamadas de sistema) para criar, ler, gravar e remover
arquivos. Como um acesso a disco demora cerca de vezes mais tempo
que um acesso à memória principal, surge então à necessidade de uma
estrutura de dados e algoritmos que melhore a eficiência dos acessos ao
disco. A usabilidade de um sistema operacional é fortemente determinada
pela interface, estrutura e confiabilidade de seu sistema de arquivos.

Uma das principais tarefas do sistema de arquivos é implementar


em software um recurso não existente em hardware, ou seja, estabelecer
uma maneira lógica de armazenar os dados a partir de recursos físicos
existentes no sistema computacional. Desta forma, segundo Tanenbaum
(2003), para armazenarmos informações por longo prazo, temos três re-
quisitos essenciais: (1) Deve ser possível armazenar uma quantidade muito
grande de informação; (2) A informação deve sobreviver ao término do
processo que a usa; e (3) Múltiplos processos têm de ser capazes de acessar
a informação concorrente. Para atender a todos estes requisitos, a solução
apresentada é a organização das informações em arquivos.

Quando falamos sobre sistemas de arquivos, podemos dividi-los em


dois grupos de estudo. O primeiro deles tem relação com a interface do
usuário, onde tratamos sobre os arquivos e diretórios. O segundo grupo
está relacionado à implementação dos sistemas de arquivos. Neste material
iremos estudar os conceitos básicos dos dois grupos baseando-se na abor-
dagem apresentada em Tanenbaum (2003).

e-Tec Brasil 50 Técnico em Informática


4.1 Arquivos

Arquivo é um mecanismo de abstração que fornece meios de


armazenar dados e informações no disco para que elas possam ser
lidas posteriormente, sendo que estas operações (leitura e gravação)
devem ocorrer de forma transparente ao usuário. Dentro deste con-
texto, possivelmente a característica mais importante ao usuário é a
forma como os arquivos devem ser gerenciados e nomeados.

Não existe uma só regra para definir como deve ser feita a
nomeação dos arquivos, pois cada sistema operacional possui suas ca-
racterísticas particulares. Entretanto, de uma forma geral, comumente
dividimos o nome dos arquivos em duas partes. Um nome seguido de
um ponto e uma extensão para identificar seu tipo. Via de regra, a
extensão do arquivo não costuma exceder 3 caracteres e seu nome,
dependendo do sistema, pode possuir até 255 caracteres. A Tabela
4.1 apresenta alguns tipos comuns de arquivos.

Extensões Comuns de Arquivos


Extensão Significado

arquivo.bak Cópia de segurança (backup)

arquivo.c Código fonte em C

Figura no formato da Compuserve (graphical interchange


arquivo.gif
format)

arquivo.jpg Figura codificada no padrão JPEG

arquivo.mp3 Áudio codificado no formato MPEG

arquivo.mpg Vídeo codificado no formato MPEG

arquivo.exe Arquivo executável

Como mencionado anteriormente, um arquivo normalmente é


identificado através do seu nome e tipo. Além destas características,
os arquivos possuem outros atributos que são mantidos pelo SO. A
lista apresentada abaixo não tem a pretensão de esgotar todas as
possibilidades de atributos, pois esta varia de um SO para outro, en-
tretanto, a relação apresenta os principais atributos existentes:

• Proteção (quem tem acesso ao arquivo e de que maneira);

Introdução ao Sistema Operacional 51 e-Tec Brasil


• Tamanho (quantidade de bytes do arquivo);

• Data e hora do último acesso;

• Data e hora da última alteração;

• Identificação do usuário que criou o arquivo;

• Password (se necessário, senha para acesso ao arquivo);

• Flags de Ocultação, Leitura/Escrita, Sistema, Temporário, entre ou-


tras (0 desativada, 1 ativada).

Independente do SO em questão, um arquivo suporta diversas ope-


rações. As principais operações e suas chamadas de sistema são:

• Criação do arquivo (Create);

• Remoção do arquivo (Delete);

• Leitura do conteúdo (Read);

• Alteração do conteúdo do arquivo (Write/Append);

• Troca do nome do arquivo (Rename);

• Alteração na lista de usuários que podem acessar o arquivo (Set


attributes);.

4.2 Diretórios

Para o controle dos arquivos, em geral um SO utiliza diretórios que


em alguns sistemas, como o Linux, também são tratados como arquivos.

Independente de como o diretório é tratado, a forma mais comum


de organizar os arquivos é através da política de diretórios hierárquicos.
Esta estratégia permite que os usuários agrupem seus arquivos de forma
natural, diferente do que ocorreria em uma política de diretório de nível

e-Tec Brasil 52 Técnico em Informática


único. A Figura 20, adaptada de Tanenbaum (2003), apresenta estas polí-
ticas.

Existem duas formas de especificar o nome de um arquivo. A pri-


meira delas é através do caminho relativo, que traz consigo o conceito de
diretório de trabalho ou diretório corrente (atual), onde um arquivo pode
ser referenciado simplesmente pelo seu nome. A outra forma é através do
caminho absoluto, onde para referenciar um arquivo é preciso especificar
o caminho até ele partindo do diretório raiz. Um exemplo nos dois casos,
seria o caminho caixapostal.bak para caminho relativo ao arquivo
(desde que o diretório atual seja o do arquivo referenciado) e /usr/ast/
caixapostal.bak o cominho absoluto para o mesmo arquivo, onde ele
é referenciado independente do diretório atual que o usuário estiver.

Figura 20: (a) Sistema de diretório de nível único; (b) Sistema de diretórios hierár-
quicos

De forma análoga aos arquivos, as principais operações sobre dire-
tórios são:

• Criar um diretório (Create);

• Ler diretório (Open);

• Excluir diretórios (Delete);

• Renomear diretório (Rename);

Existem outras chamadas de sistema que podem ser realizadas nos diretó-
rios. Independente do SO, essas são algumas das mais comuns. Ocasional-
mente algumas chamadas podem mudar de um SO para outro.

Introdução ao Sistema Operacional 53 e-Tec Brasil


4.3 Implementação do sistema de ar-
quivos

Ao implementar uma gerência de espaço em disco, um pro-


jetista pode optar por duas estratégias. A primeira e mais simples é
alocar o conteúdo de um arquivo de forma sequencial. A segunda
estratégia é dividir o arquivo em blocos separados.

Outra questão importante é definir o tamanho de um cluster.


Um cluster de tamanho grande significa que pequenos arquivos irão
gerar um desperdício de espaço. Por outro lado, clusters de tamanho
pequeno podem comprometer a leitura de arquivos maiores pelo fato
de aumentar o tempo de seek dos arquivos. Normalmente os clusters
variam de um sistema para outro. Entretanto, um tamanho usual está
entre 512 bytes e 4 KB. Alguns dos métodos mais comuns para a im-
plementação de arquivos são apresentados na sequência.

4.3.1 Alocação Contígua

A estratégia mais simples para alocação de arquivo certamen-


te é a de blocos contíguos no disco. Para isso, as únicas informações
necessárias para permitir o acesso ao seu conteúdo são: (1) a posição
inicial do arquivo e (2) o tamanho do arquivo.

Dentre os problemas apresentados nesta estratégia, o crescimento de


um arquivo e a fragmentação ocorrida no disco certamente estão en-
tre os principais. No primeiro caso, ao crescer, um arquivo deverá ser
removido do local onde está alocado. Após algumas ocorrências como
esta, o disco ficará fragmentado, situação que também ocorrerá após
a remoção de alguns arquivos por parte do usuário. A Figura 21, ex-
traída de Tanenbaum (2003), apresenta esta ocorrência.

e-Tec Brasil 54 Técnico em Informática


Figura 21: (a) Alocação contígua; (b) Fragmentação do disco após a remoção de dois
arquivos

Embora pouco aconselhável em sistemas de armazenamento


de arquivos, onde o usuário realiza diversas operações sobre eles, em
CD-ROM esta estratégia é amplamente utilizada e apresenta excelen-
tes resultados. Isso ocorre pelo fato dos arquivos a serem gravados na
mídia serem previamente conhecidos e não sofrerem alterações após
sua gravação.

4.3.2 Alocação por lista encadeada

Nesta estratégia não ocorre fragmentação como na alocação


contínua e a primeira palavra de cada bloco indica o próximo blo-
co do arquivo, como mostrado na Figura 4.3 extraída de Tanenbaum
(2003).

Apesar de evitar a fragmentação, esta estratégia é extrema-


mente lenta, pois para chegar ao último bloco de um arquivo, o siste-
ma operacional terá de fazer leitura de todos os blocos anteriores.

Introdução ao Sistema Operacional 55 e-Tec Brasil


Figura 22: – Arquivos armazenados através de uma lista encadeada de blocos

4.3.3 Lista encadeada com tabela na


memória

A estratégia de lista encadeada com tabela na memória mini-


miza o principal problema da alocação por lista encadeada, carregan-
do para a memória principal a tabela de alocação de arquivos, onde
um acesso aleatório a um determinado conteúdo do arquivo pode ser
feito de forma mais ágil, pelo fato de toda a tabela estar carregada
na memória. A Figura 22, extraída de Tanenbaum (2003), apresenta a
organização dos mesmos arquivos apresentados na Figura 4.3.

A principal desvantagem deste método é a necessidade de


manter toda a FAT (File Allocation Table) carregada na memória. Desta
forma, um HD (Hard Disk) de 20 GB com blocos/clusters de 1 KB, ocu-
paria cerca de 80 MB na memória principal.

4.3.4 I-nodes

Esta estratégia mantém uma tabela de i-nodes (index nodes)


que contém os endereços em disco dos blocos do arquivo. A grande
vantagem deste método é que o i-node será carregado na memória,
somente quando o arquivo indexado por ele estiver aberto.

e-Tec Brasil 56 Técnico em Informática


Figura 23: – Tabela de alocação de arquivos carregada na memória

Ao abrir um arquivo, os primeiros blocos do arquivo são mantidos


no próprio i-node. Caso o i-node o conteúdo do arquivo não caiba dentro
do próprio i-node, ele irá apontará os blocos que compõem o arquivo.
A Figura 4.5, extraída de Tanenbaum (2003), apresenta a estrutura base
de um i-node. Como podemos perceber, além de apontar para os blocos
que compõem um arquivo, um i-node também armazena os atributos do
arquivo. Sistemas GNU/Linux usam desta estratégia para organizar seus
arquivos.

4.4 Considerações finais

A forma como os arquivos são organizados pelo SO, certamente


exerce grande influência em seu desempenho. Cada um dos métodos dis-
cutidos aqui possui seus problemas e vantagens.

Introdução ao Sistema Operacional 57 e-Tec Brasil


Figura 24: – Estrutura básica de um i-node

Independente de como o sistema de arquivos for implementado,


ele deve apresentar uma boa velocidade na leitura e na gravação dos ar-
quivos, além de ser consistente e confiável.

Exercícios

Identifique e descreva o significado de três diferentes tipos de ar-


quivos dos apresentados na Tabela 4.1.

Cite e explique três atributos e três operações possíveis em um ar-


quivo.

Qual a diferença entre caminho relativo e caminho absoluto?

A alocação contígua de espaço em disco leva à fragmentação. Por


quê? Tal fragmentação é interna ou externa? Comente.

Alguns Sistemas Operacionais colocam à disposição de seus usuá-


rios uma chamada rename, para possibilitar a mudança do nome de deter-
minado arquivo. Existe alguma diferença entre usar esta chamada para dar
um novo nome a um arquivo, e simplesmente copiar o arquivo velho em
outro, apagando o original?

e-Tec Brasil 58 Técnico em Informática


A compactação periódica do espaço em disco é vantajosa? Justifi-
que.

Tem sido sugerido que a primeira parte de cada arquivo Unix/Linux


seja mantida no mesmo bloco de disco que seu i-node. Qual a vantagem
deste esquema?

Quando um arquivo é removido, normalmente seus blocos são co-


locados de volta na lista de blocos livres, não sendo apagados do disco.
Você acha que seria uma boa idéia o sistema operacional apagar cada
bloco antes de liberá-lo? Considere tanto o aspecto da segurança quanto
o da performance e explique os efeitos da adoção desta medida em cada
um deles.

Descreva resumidamente os sistemas de arquivos abaixo. Apresen-


te suas vantagens, desvantagens e limitações.

a. Alocação contígua;

b. Alocação por lista encadeada;

c. Lista encadeada com tabela na memória

d. I-nodes

Pesquise a respeito dos sistemas de arquivos FAT-16, FAT-32, ext3


e ext4. Monte um trabalho apresentando as principais características de
cada um, ressaltando suas limitações, vantagens e desvantagens práticas.

Introdução ao Sistema Operacional 59 e-Tec Brasil


UNIDADE 5 - GERÊNCIA
DE ENTRADA E SAÍDA

Objetivos da aula

- Compreender como os sistemas operacionais gerenciam os dispo-


sitivos de entrada e saída.

Uma das tarefas mais complexas de um sistema operacional é a


gerência de entrada e saída. Devido à grande diversidade dos dispositivos
de E/S, para atender esta necessidade o sistema operacional implementa
o que chamamos de subsistema de E/S. Seu código representa uma parte
significativa de todo o SO. Desta forma, são várias as atribuições ao sub-
sistema de E/S. Neste material estudaremos os princípios do hardware e
os princípios do software, além de detalharmos algumas características
inerentes aos discos de armazenamento.

De uma forma geral, o subsistema de entrada e saída é responsável


por desempenhar as funções comuns a todos os tipos de dispositivos. As
particularidades específicas de cada dispositivos fica a cargo dos device dri-
vers (drivers dos dispositivos). Assim, o subsistema de E/S tem com objetivo
fornecer uma interface comum a todos os dispositivos (Machado & Maia,
2007).

Embora seja um conceito simples, vale ressaltar a diferença entre


drive e driver. O primeiro refere-se a um hardware de armazenamento
como, por exemplo, um driver de CD-ROM. Por outro lado, driver refere-se
ao software responsável pelo correto funcionamento de um dispositivo de
E/S ou um periférico qualquer. Sem o driver correto, uma placa de vídeo
poderia não fornecer todos os recursos 3D e quantidade que ela dispõe,
limitando assim o uso de seus recursos mais valiosos.

e-Tec Brasil 60 Técnico em Informática


5.1 Princípios de hardware

Para o sistema operacional não é necessário interpretar o projeto,


a construção e o funcionamento interno de um hardware. Este enfoque é
pertinente aos engenheiros de hardware. O foco de um programador em
relação ao hardware está na interface de comunicação software e hardwa-
re, com atenção especial aos comandos que o hardware aceita, as funções
que realiza e os erros de hardware que podem ser repassados ao software.
Desta forma, esta seção tem como objetivo apresentar uma visão geral do
relacionamento do hardware de E/S com a programação.

5.1.1 Dispositivos de E/S

Segundo Tanenbaum (2003), de uma forma geral, os dispositivos


de E/S podem ser classificados em duas grandes categorias: dispositivos
de blocos e dispositivos de caractere. No primeiro caso, os blocos são de
tamanho fixo e, normalmente, são implementados em tamanhos que va-
riam de 512 bytes a 32768 bytes. Cada bloco possui seu próprio endereço
e, uma característica importante dos blocos é que cada bloco pode ser
acessado independente dos demais. Normalmente estes dispositivos estão
conectados a uma interface paralela. O dispositivo mais comum que faz o
uso de endereçamento por bloco são os discos.

Os dispositivos de caractere enviam e recebem um fluxo de carac-


teres sem considerar qualquer estrutura de blocos. De uma forma geral,
estes dispositivos não são endereçáveis. Exemplos comuns de dispositivos
de caractere são: os mouses, as impressoras e as interfaces de rede (Tanen-
baum, 1999). De uma forma geral, normalmente a interface relacionado
com este tipo de dispositivo é a sequencial.

Alguns dispositivos como os relógios internos não se classificam


nem como dispositivos de blocos e tão pouco como dispositivos de carac-
tere, pelo fato de enviarem e nem receberem fluxo de dados. O que estes
dispositivos fazem é simplesmente gerar uma interrupção de tempo em
tempo.

Introdução ao Sistema Operacional 61 e-Tec Brasil


5.1.2 Controladores de dispositivos

A grande maioria dos dispositivos dos computadores não é conec-


tada diretamente ao barramento; ao invés disso, são conectados aos con-
troladores de dispositivos que, por sua vez, são conectados aos barramen-
tos (Shay, 1996).

Um controlador possui memória e registradores próprios que são


utilizados na execução de instruções enviadas pelo driver do dispositivo
(Machado & Maia, 2007). Estas instruções são responsáveis pelo funciona-
mento correto do dispositivo. Por exemplo: a controladora de uma impres-
sora é responsável por gerenciar todos os movimentos mecânicos envolvi-
dos no processo de impressão, além de definir o quanto de cada tinta tem
que ser utilizado em cada linha da impressão.

Vale ressaltar que um sistema operacional quase sem-


pre se comunica com o controlador do dispositivo e não com o
dispositivo em si. A Figura 5.1 extraída de Tanenbaum (2003),
apresenta a estrutura de comunicação de um computador.

Figura 26: – Modelo de conexão de dispositivos de E/S, controladores, memória e


processador

Além de servir como intermediadora na comunicação entre o dis-


positivo e o sistema operacional, uma controladora também é responsável
por converter um fluxo serial de dados em um bloco de bytes. Por inter-
médio de seus drivers, os registradores de uma controladora recebem ins-
truções oriundas do processador, que serão interpretadas e executadas na
sequência.

e-Tec Brasil 62 Técnico em Informática


5.1.3 Acesso Direto à Memória (DMA)

O acesso direto à memória (direct memory access – DMA) permi-


te a transferência de blocos de caracteres. Ele permite que o controlador
acesse a memória por si mesmo. Com a E/S programada, a CPU tinha de
transferir cada um dos caracteres entre o disco e a memória principal, e o
controlador não podia acessar a memória de forma independente (Shay,
1996).

De uma forma simplificada, uma operação de leitura de disco uti-


lizando DMA pode ser descrita pelos seguintes passos. O processador,
através do device driver, inicializa os registradores do controlador DMA
e, a partir deste ponto, a CPU fica livre para realizar outras atividades. O
controlador DMA por sua vez, solicita ao controlador de disco a transfe-
rência do bloco do disco para o buffer interno. Terminada a transferência,
o controlador de disco verifica a existência de erros e, caso não haja erros,
o controlador DMA acessa a memória principal e transfere o conteúdo ar-
mazenado em buffer. Ao término da transferência, o controlador de DMA
gera uma interrupção avisando o processador que o dado já se encontra
na memória (Machado e Maia, 2007).

5.2 Princípios de software

Um dos principais objetivos do software de E/S de um sistema ope-


racional é prover a independência dos dispositivos. Isso pode ser feito atra-
vés da padronização das rotinas de acesso aos mesmos. Como exemplo, a
rotina utilizada para a leitura dos arquivos armazenados em um CD-ROM,
deve ser a mesma para o acesso aos arquivos armazenados em um disco
rígido (Tanenbaum, 2003).

Outra característica importante relacionada aos princípios de software é a


manipulação de erros. Em geral, os erros devem ser tratados o mais pró-
ximo possível do hardware. Se o controlador encontra um erro, ele deve
tentar corrigi-lo. Se não conseguir, o driver do dispositivo deve tentar fazê-
la. (Tanenbaum, 1999).

Introdução ao Sistema Operacional 63 e-Tec Brasil


5.2.1 Drivers

Como mencionado anteriormente, um driver é o software respon-


sável pelo pleno funcionamento de um dispositivo de hardware. Segundo
Shay (1996), de uma forma geral, um driver possui duas responsabilida-
des principais. A primeira é preparar-se para as operações de E/S, o que
envolve verificar o estado do dispositivo, alocá-lo e iniciar a transferência
dos dados. A segunda responsabilidade é finalizar a operação de E/S, ou
seja, verificar o resultado da operação (terminada ou abortada) e respon-
der adequadamente.

Após a emissão de um comando ou vários comandos, destinados


ao driver, podem ocorrer duas situações. Em muitos casos, o driver deve
aguardar até que o controlador conclua as operações requisitadas. Se estas
operações forem lentas, o driver deve se autobloquear até que as opera-
ções sejam concluídas e uma interrupção seja gerada para desbloqueá-lo.
Em casos onde as operações são rápidas, o driver não precisa ser bloquea-
do (Tanenbaum, 1999).

Como muitas coisas podem sair erradas durante a execução das


instruções, a resposta aos erros pode ser complexa. Desta forma, geral-
mente os drivers também são responsáveis pelo tratamento dos erros. Por
exemplo, se uma impressora estiver sem papel ou desligada, as operações
de escrita não poderão ser executadas. Assim, o driver é responsável por
alertar sobre o erro e esperará que alguém corrija (Shay, 1996).

5.2.2 Software de E/S independente


dos dispositivos

Uma grande parte do software de E/S é independente do dispo-


sitivo em questão. De acordo com Tanenbaum (2003), as funções de E/S
abaixo são tipicamente realizadas pelo software de E/S independente do
dispositivo:

• Interface uniforme para os drivers de dispositivo;

• Fornecimento de um tamanho de bloco independente do dispositi-


vo;

e-Tec Brasil 64 Técnico em Informática


• Bufferização;

• Alocação e liberação de dispositivos dedicados;

• Manipulação de erros;

A interface uniforme tem como objetivo fazer com que todos os


dispositivos e drivers tenham uma interface padrão de comunicação. Isso
evita que o sistema operacional tenha que ser modificado a cada novo
dispositivo que aparece, tornando a forma de comunicação padrão para
todos os dispositivos reconhecidos por ele. A Figura 5.2 extraída de Tanen-
baum (2003), ilustra a representação de uma interface padrão do driver e
de uma interface não padronizada para o driver.

Discos diferentes podem ter tamanhos de setor diferentes também. O


fornecimento de um tamanho de bloco independente do dispositivo tem
como objetivo esconder este fato fornecendo um tamanho de bloco uni-
forme para a camada superior. Isso pode ser feito tratando vários seto-
res como um único bloco lógico. Desta forma, os níveis mais altos tratam
apenas com dispositivos abstratos, usando o mesmo tamanho lógico dos
blocos, independente do tamanho físico do setor.

Figura 27: – (a) Sem interface padrão do driver; (b) com interface padronizada

A utilização do buffer, ou bufferização, é uma zona de memória
onde os dados são temporariamente armazenados enquanto estão sendo
transferidos entre as diversas camadas da comunicação. Um exemplo de
bufferização é o que ocorre em protocolos de comunicação: o usuário
pode desejar transmitir 128 Kbytes de dados, mas a interface de rede é ca-
paz de enviar sequências de 4 Kbytes. Neste caso, a requisição do usuário

Introdução ao Sistema Operacional 65 e-Tec Brasil


é armazenada em buffer e enviada em blocos de 4 Kbytes.

Alguns dispositivos, tais como fitas magnéticas, só podem ser uti-


lizados somente por um processo por vez. Desta forma, cabe ao software
de E/S, independente do dispositivo, examinar as requisições de uso a um
determinado dispositivo e aceitar ou rejeitar os pedidos de alocação do
recurso. Ao final de seu uso, o recurso de alocado deverá ser liberado.

A manipulação de erros também é feita nesta camada. Um erro


típico é causado por um bloco do disco que foi danificado e não pode ser
mais lido ou escrito. Após o driver tentar ler o bloco várias vezes, ele desiste
de realizar a operação e informa ao software independente do dispositivo
a razão do erro, para que o mesmo possa ser tratado. Se ocorrer na leitu-
ra de um arquivo pertencente a um usuário, é suficiente informar o erro
para o mesmo. Entretanto, se o erro ocorreu numa área crítica, o sistema
operacional deve apresentar uma mensagem e terminar a execução (Ta-
nenbaum, 1999).

5.3 Discos

Nesta seção serão apresentadas algumas questões de software e de


hardware relativas aos discos magnéticos.

5.3.1 Hardware de disco

Os discos magnéticos são organizados em cilindros, sendo cada um


deles estruturado em trilhas, que por sua vez, são divididas em setores.

Uma característica muito útil nestes dispositivos é a possibilidade


da controladora fazer seeks (busca por dados) em uma ou mais unidades
ao mesmo tempo. Esta capacidade é conhecida como seeks sobrepostos.
Enquanto a controladora e o software aguardam que o seek em uma uni-
dade se complete, a controladora pode iniciar um seek em outra unida-
de. Algumas controladoras conseguem ler ou escrever em uma unidade
enquanto um seek é realizado em outra. A capacidade de realizar um ou
mais seeks ao mesmo tempo, reduz consideravelmente o tempo médio de

e-Tec Brasil 66 Técnico em Informática


acesso. (Tanenbaum, 1999)

Um conceito relacionado tanto ao hardware quanto ao software


dos discos é o RAID. Basicamente, RAID (Redundant Arrays of Inexpensive
Disk) são técnicas de gerenciamento de discos, que tem como objetivo
otimizar as operações de E/S e implementar redundância e proteção dos
dados.

As técnicas RAID podem ser implementadas diretamente nos con-


troladores de discos ou serem gerenciadas por software, sendo este último
método conhecido como JBOD (Just a Bunch of Disks) (Machado & Maia,
2007). A Figura 5.3, adaptada de Machado & Maia (2007), ilustra a dife-
rença entre as duas formas possíveis de implementação de RAID.

Sistema
operacional
Sistema
operacional
Software
RAID

Controlador Controlador
RAID
Array de discos

Array de discos

Figura 28: – Subsistema de discos

Dentre as técnicas de implementação do RAID/JBOD, duas técnicas


são utilizadas, a RAID 0 e a RAID 1. Há ainda uma terceira técnica, conhe-
cida como RAID 01, que combina o uso das duas anteriores.

O RAID 0, também conhecido como Striping, consiste na imple-


mentação de dois ou mais discos para trabalharem como um. O RAID 0
tem como objetivo distribuir as operações de E/S entre os diversos discos
do array (dispositivo virtual criado para o tratamento de dois ou mais dis-

Introdução ao Sistema Operacional 67 e-Tec Brasil


cos como um só) (Machado & Maia, 2007). O uso do RAID Striping com
dois discos chega a otimizar a velocidade das operações de E/S dos discos
em cerca de 98% (noventa e oito por cento). Com três discos, o ganho de
desempenho chega a 180% (cento e oitenta por cento) (Ferreira, 2005).

O RAID 1, também conhecido como Mirroring, nada mais é do que


replicar todo o conteúdo do disco principal em outro disco. Caso haja uma
falha no disco principal, a redundância implementada pelo RAID 1 garante
que o disco secundário seja utilizado de forma transparente pelo sistema
de arquivos (Machado & Maia, 2007). Ao implementar o RAID 1, todo o
conteúdo gravado no disco principal, automaticamente também será gra-
vado no mirror (disco espelho), de forma a garantir que seu conteúdo seja
fiel ao do disco principal.

Para implementar o RAID 01 surge a necessidade de termos, no mínimo, 4


(quatro) discos, sendo dois para o Striping e dois para o Mirroring.

5.3.2 Software de discos

A seguir serão abordados alguns conceitos relacionados à análise


da performance dos drivers de disco. O tempo para ler ou escrever um blo-
co do disco é determinado por três fatores: o tempo de seek (o tempo que
o braço leva para se mover até o cilindro desejado), a latência rotacional (o
tempo para que o setor procurado se coloque debaixo da cabeça de leitu-
ra), e o tempo de transferência propriamente dito (Tanenbaum, 1999).

Se o driver do disco receber as requisições e for atendê-las execu-


tando com a política FCFS, por exemplo, pouquíssimo poderá ser feito para
melhorar a performance do seek. No entanto, outras estratégias de busca
podem ser implementadas de forma a melhorar o tempo de seek.

Vamos considerar um exemplo extraído de Tanenbaum (2003).


Imagine um disco com 40 cilindros. A primeira requisição a chegar é para
a leitura do cilindro 11. Enquanto se dá o seek para tal cilindro, novos pe-
didos chegam para os cilindros 1, 36, 16, 34, 9 e 12, nessa ordem.

Quando a requisição atual (para leitura do cilindro 11) for con-


cluída, o driver do disco deverá escolher qual requisição será a próxima a

e-Tec Brasil 68 Técnico em Informática


ser tratada. Usando o FCFS, a próxima requisição a ser atendida será a da
leitura do cilindro 1, depois o 36, e assim por diante. Observe que este al-
goritmo requer movimentos do braço por 10, 35, 20, 18, 25 e 3 cilindros,
respectivamente, totalizando 111 cilindros percorridos.

Alternativamente o driver poderá atender sempre a requisição do


posicionamento mais curto primeiro (Shortest Seek First - SSF), de forma
a minimizar o tempo do seek. Utilizando o exemplo anterior, os cilindros
a serem atendidos serão 12, 9, 16, 1, 34 e 36, conforme mostra a Figura
5.4 extraída de Tanenbaum (2003). Seguindo a sequência de leitura de-
terminada pelo algoritmo, o braço será deslocado por 1, 3, 7, 15, 33 e
2 cilindros, num total de 61 cilindros, quase a metade apresentada pelo
algoritmo FCFS.

Figura 29: – Algoritmo de escalonamento de disco “posicionamento mais curto pri-


meiro”

Um problema apresentado por este algoritmo ocorre no caso de


novas requisições irem chegando constantemente. Nesta situação, a ten-
dência do algoritmo é fazer com que o braço fique no meio do disco, aten-
dendo as requisições próximas a ele, fazendo com que as requisições feitas
para as extremidades possam nem ser atendidas. Os objetivos de redução
do tempo médio de resposta e justiça igual para todas as requisições estão
em conflito neste algoritmo (Tanenbaum, 2003).

Uma solução para o problema apresentado é o algoritmo do eleva-


dor. O princípio é o mesmo do SSF, entretanto, o braço procura manter a
mesma direção até que não haja nenhuma requisição pendente nela. Este
algoritmo requer um campo que contenha um indicador para a direção
do “elevador”. Quando este campo apresentar o valor 1 (up) sua direção
deverá ser para cima, e quando apresentar o valor 0 (down) sua direção
deverá ser para baixo (Tanenbaum, 2003). A Figura 5.5, extraída de Tanen-
baum (2003), demonstra sua aplicação no exemplo citado anteriormente.

Introdução ao Sistema Operacional 69 e-Tec Brasil


Figura 30: – Algoritmo do elevador para o escalonamento das requisições do disco

Na Figura 30 estamos supondo que o sinal de direção está sinalizado


como up. Desta forma, após a leitura do cilindro 11 a ordem dos cilindros
servidos seria 12, 16, 34, 36, 9 e 1, que faz com que o braço percorra 1, 4,
18, 2, 27 e 8 cilindros, perfazendo um total de 60. Neste caso o algoritmo
do elevador é ligeiramente melhor que o SSF, apesar dele constantemente
apresentar um desempenho pior que o deste último (Tanenbaum, 2003).

Exercícios

1. Qual a diferença entre drive e driver?

2. Quais as duas grandes categorias de dispositivos de E/S existentes?


Explique-as e dê dois exemplos de dispositivos para cada uma delas.

3. Quais as principais funções de um controlador de dispositivos?

4. O que é e como funciona o DMA? Quais suas vantagens?

5. Explique detalhadamente a função e as responsabilidades de um


driver.

6. Os pedidos para acesso a um disco chegam a seu driver para os ci-


lindros 8, 17, 43, 32, 40, 6 e 33, nesta ordem. O tempo de seek é de 6 ms
por cilindro. Qual o tempo gasto com posicionamento para atender estas
requisições utilizando as políticas de seek abaixo:

a) FCFS

b) Cilindro mais próximo primeiro

e-Tec Brasil 70 Técnico em Informática


c) Algoritmo do elevador (braço inicialmente para cima)

Em todos os casos, o braço está inicialmente no cilindro 22.

7. Explique resumidamente RAID 0, RAID 1 e RAID 01.

8. O uso de RAID 01 elimina a necessidade de backups extras periódi-


cos? Por quê?

9. O que é independência de dispositivo?

Introdução ao Sistema Operacional 71 e-Tec Brasil


Referências

Ferreira, Silvio; “Hardware – Montagem, Configuração e Manutenção de


Micros”. Editora AXCEL, (2005);

Machado, F. B. & Maia, L.P; “Arquitetura de sistemas operacionais”, 4.ed;


LTC (2007);

Shay, W. A; “Sistemas operacionais”; Makron Books (1996);

Silberschatz, A; Galvin, P. & Gagne, G; “Applied Operating System Con-


cepts” 1th. ed; Wiley, (1999);

Tanenbaum, A. S; “Sistemas operacionais modernos”, 2.ed; LTC – Livros


Técnicos e Científicos Editora S.A. (1999);

Tanenbaum, A. S; “Sistemas operacionais modernos”, 2.ed; Person Pren-


tice Hall (2003).

e-Tec Brasil 72 Técnico em Informática

Vous aimerez peut-être aussi