Sistemas Operacionais PDF
Sistemas Operacionais PDF
Sistemas Operacionais PDF
autor do original
RICARDO BALIEIRO
1ª edição
SESES
rio de janeiro 2015
Conselho editorial fernando fukuda, simone markenson, jeferson ferreira fagundes
Diagramação fabrico
Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida
por quaisquer meios (eletrônico ou mecânico, incluindo fotocópia e gravação) ou arquivada em
qualquer sistema ou banco de dados sem permissão escrita da Editora. Copyright seses, 2015.
ISBN 978-85-5548-085-0
Prefácio 7
2. Processos 36
Conceito de Processo 36
Estados de um processo 45
Threads 47
Comunicação entre Processos 49
Sincronização entre Processos. 52
3. Gerência de Processador 64
Fundamentos 64
Critérios de Escalonamento 67
Escalonamento primeiro a entrar primeiro a sair
(FIFO – First - IN - First - OUT) 68
Escalonamento por job mais curto primeiro
(SJF – Shortest - Job - First) 71
Escalonamento circular (Round Robin) 72
Escalonamento por Prioridade 77
Escalonamento por Múltiplas filas com realimentação 84
Cálculo estimado de tempo de resposta. 86
4. Gerência de Memória 92
Funções 92
Estruturas de memória 94
Espaço de Endereçamento Físico e Lógico 96
Estratégias de alocação 97
Memória Virtual. 111
Introdução 121
Componentes de hardware de ENTRADA E SAÍDA 122
Componentes de Software de ENTRADA E SAÍDA 126
Sistema de Arquivos 131
Conceitos de Arquivos e Diretórios 132
Métodos alocação 138
Gerência de espaços livres 142
Proteção de acesso 143
Prefácio
Prezados(as) alunos(as)
7
1
Introdução à Sistemas
Operacionais
1 Introdução à Sistemas Operacionais
Para podermos aprofundar em todos os aspectos envolvidos em um sistema ope-
racional, necessitamos criar uma base sólida de conhecimentos básicos que serão
primordiais para a sequência dos próximos capítulos. Diante disto, estudaremos a
evolução e os diversos tipos de sistemas operacionais, como também suas princi-
pais funções e estrutura.
OBJETIVOS
• Conhecer os conceitos fundamentais contidos nos sistemas operacionais.
• Estudar os aspectos que impulsionaram a evolução dos sistemas operacionais.
• Discutir sobre os diversos tipos de sistemas operacionais atuais.
REFLEXÃO
Você se lembra dos sistemas operacionais que utilizou nos últimos anos? Consegue imaginar
um computador sem um sistema operacional? E o seu celular ou tablet, será que possui um
sistema operacional?!
10 • capítulo 1
1.1 Conceitos Fundamentais de Sistemas Operacionais
capítulo 1 • 11
1.1.1 Definição
1.1.2 Objetivo
12 • capítulo 1
Trilha
Setor
Cabeça de
leitura e grav.
Prato
Faces
capítulo 1 • 13
aplicações como também quais e quando as aplicações podem ser executadas.
Podemos citar como recursos:
• Tempo de CPU.
• Espaço em memória.
• Espaço em disco.
• Acesso aos dispositivos de comunicação.
• Bibliotecas de software.
Para que isso fique mais claro, podemos analisar o sistema operacional di-
vidindo-o em quatro componentes: usuários, programas aplicativos, sistema
operacional e o hardware.
Sistema Operacional
Computador
Hardware
14 • capítulo 1
ATENÇÃO
O sistema operacional é considerado por muitas pessoas como sendo um programa que fica
executando o tempo todo no computador, enquanto o restante é considerado como progra-
mas aplicativos (TANENBAUM; WOODHYLL, 1999).
capítulo 1 • 15
Figura 5 – Charles Babbage - Máquina Analítica.
ATENÇÃO
A Máquina Analítica de Charles Babbage não possuía sistema operacional, apenas as se-
quencias de instruções executadas pela Máquina Analítica que era de responsabilidade
daquela considerada a primeira programadora da história, Augusta Ada Byron discípula de
Babbage (SILBERSCHATZ et al., 2004).
16 • capítulo 1
Figura 6 – John Eckert, John Mauchly e o ENIAC
Disponivel em: <https://sites.google.com/site/worldcyber / - Dr. J. Presper
Eckert, Dr. John Mauchly ENIAC of 1946>.
A arquitetura dos modernos computadores que temos nos dias de hoje, co-
nhecida como Arquitetura von Neumann, foi idealizado por um dos consultores
do projeto ENIAC, o professor John von Neumann. Segundo a arquitetura von
Neumann, uma máquina digital (computador) teria os seguintes componentes:
1. Memória: capaz de armazenar em um mesmo espaço dados e instru-
ções dos programas;
2. Unidade de processamento (CPU – Central Processing Unit): responsável
por executar as instruções dos programas armazenados na memória;
3. Unidade de controle (CU – Control Unit): responsável pela interpretação
das instruções de programa, como também, controlar a sequência de
tempo das atividades necessárias para sua execução;
4. Unidade aritmética e lógica (ALU – Arithmetical and Logical Unit): res-
ponsável pela execução das operações aritméticas (somas, subtrações,
etc.) e lógicas (comparações, AND, OR, etc.) contidas nas instruções
dos programas;
5. Registradores: pequenas áreas de memória localizada na CPU para ar-
mazenamento temporário de dados dos programas que estão sendo
executados, resultados de instruções, estado interno da CPU, etc.
6. Dispositivos de entrada e saída: responsável por traduzir os dados in-
seridos pelo usuário no computador (ex.: teclado, cartões perfurados,
fitas ou discos magnéticas etc.) para a memória como também traduzir
da memória para um formato externo (ex.: fitas ou discos magnéticos,
telas de vídeo, etc.)
capítulo 1 • 17
Neste período não havia ainda os conceitos de sistema operacionais, desta
forma, era responsabilidade do usuário operar, programar e efetuar a manu-
tenção do computador durante o período que o equipamento ficava a sua dis-
posição. A programação, composta basicamente por cálculos numéricos, era
feita diretamente nos painéis do computador.
18 • capítulo 1
Várias inovações foram implementadas nos sistemas operacionais, tais como
multiprogramação, multiprocessamento, time-sharing e memória virtual.
A década de 1970 foi marcada com a miniaturização dos componentes
(chips) baseadas nas tecnologias de Integração em Larga Escala (Lage Scale Inte-
gration – LSI) e a Integração em Muito Larga Escala (Very Lage Scale Integration
– VLSI), o surgimento das primeiras redes de computadores, além do desenvol-
vimento de novas linguagens de programação de alto nível.
Na década de 1980 os fabricantes de computadores passam a produzir mi-
crocomputadores utilizando microprocessadores. A IBM então cria a filosofica
de computadores pessoais o que impulsionou a evolução dos sistemas operacio-
nais. Os microcomputadores da época possuíam baixa capacidade de armazena-
mento e as versões iniciais dos sistemas operacionais eram monousuário/mono-
tarefa. Os sistemas operacionais evoluíram para monousuário/multitarefa com a
incorporação de discos rígidos e outros periféricos nos microcomputadores.
Em meados da década de 1980 crescem as redes de computadores pessoais
utilizando sistemas operacionais para rede e sistemas operacionais distribuí-
dos. Os sistemas operacionais para rede permitem que os usuários se conectem
a máquinas remotas e utilizem recursos compartilhados. O usuário tem plena
consciência da existência de vários computadores conectados. Já no sistema
operacional distribuído os usuários não têm consciência onde estão armaze-
nados seus arquivos ou onde estão sendo executados seus programas. Apesar
do sistema operacional distribuído ser composto de múltiplos computadores
conectados, as operações são executadas de tal forma que o usuário tem im-
pressão de estar trabalhando um único computador.
capítulo 1 • 19
Apache entre outros, pudessem ser desenvolvidos e distribuídos sem custos aos
seus usuários. Para Machado e Maia (2007) a década de 2000 aponta para uma
mudança radical no desenvolvimento de computadores frente as exigências cada
vez maiores de equipamentos mais eficientes e com maior poder de processa-
mento. Os sistemas operacionais voltados para as novas arquiteturas de proces-
sadores 64 bits, são dotados de interfaces usuário-máquina que exploram cada
vez mais imagens, sons e linguagens naturais para proporcionar ao usuário uma
interatividade com o computador mais intuitiva, natural e simples.
CONEXÃO
Para entender melhor as diferenças entre Windows e Linux, veja o link: http://www.guiadopc.
com.br/artigos/3394/as-10-principais-diferencas-entre-o-windows-e-o-linux.html. O autor faz
uma comparação entre as 10 principais diferenças entre o Windows e o Linux. Leia e confira!
Tipos de Sistemas
Operacionais
(Monotarefas)
Sistemas
Tipos de Sistemas
Multiprogramáveis
Operacionais
(Multitarefas)
Sistemas com
Múltiplos
Processadores
20 • capítulo 1
1.3.1 Sistema Monoprogramáveis/Monotarefas
Monotarefa
Programa/Tarefa
UCP
Memória E/S
capítulo 1 • 21
1.3.2 Sistema Multiprogramáveis/Multitarefa
Multitarefa
Programa/Tarefa Programa/Tarefa
UCP
Memória E/S
Programa/Tarefa Programa/Tarefa
22 • capítulo 1
A implementação dos sistemas operacionais multiprogramáveis são mais
complexas, mas apresentam uma maior eficiência que os monoprogramáveis e
uma sensível redução de custo em função da possibilidade de compartilhar os
recursos disponíveis de hardware entre diferentes aplicações.
CONEXÃO
Leia um pouco mais sobre Sistemas multiprogramáveis/multitarefa em: <http://prezi.com/
atwpl2cicalv/sistemas-multiprogramaveismultitarefa/>.
Sistemas Batch
Sistemas
Sistemas de Tempo
Monoprogramáveis
Compartilhado
(Monotarefas)
Sistemas de Tempo
Real
capítulo 1 • 23
1.3.3.2 Sistemas operacionais de tempo compartilhado (time-sharing)
Os sistemas operacionais de tempo compartilhado (time-sharing) são sistemas
onde o tempo do processador é dividido em pequenas partes (time-slice) permi-
tindo a cada programa utilizar uma destas partes para a sua execução.
O controle do sistema operacional é feito em um computador central. Os
usuários interagem com o computador central através de comandos digitados
em terminais compostos por teclado, monitor e mouse. Grande parte das atuais
aplicações comerciais é processada em sistemas de tempo compartilhado.
24 • capítulo 1
No desenvolvimento de sistemas operacionais com múltiplos processa-
dores é de vital importância que se conheça a forma de comunicação entre os
processadores, o grau de compartilhamento da memória principal e dos dis-
positivos de entrada e saída. Isto porque, estes fatores definem a classificação dos
sistemas em: Fortemente acoplados e Fracamente acoplados.
Sistemas
com Múltiplos
Processadores
Sistemas Sistemas
Fortemente Fracamente
Acoplados Acoplados
Sistemas Sistemas
Sistemas Sistemas
Operacionais Operacioanis
Simétricos Assimétricos
de Rede Distribuídos
capítulo 1 • 25
Memória
UCP UCP
E/S E/S
Link de Comunicação
UCP UCP
26 • capítulo 1
único sistema centralizado e não em uma rede de computadores. Entre diversas
vantagens oferecidas pelos Sistemas distribuídos destaca-se o balanceamento de
carga, muitas vezes denominado de clusters. O balanceamento de carga permite
que quando um programa é aceito para execução, o sistema escolhe o computa-
dor com menor carga de processamento para executá-lo.
1.4 Interrupções
Programa Sequência
do Usuário de Execução
Desvio para a
rotina de tratamento
da interrupção
Retorno a
sequência normal
de execução
capítulo 1 • 27
Exemplo de um tratamento de interrupção:
• está sendo executado um determinado programa pelo processador;
• um pen-drive é conectado a porta USB;
• a placa de dispositivo de entrada e saída envia uma interrupção para o
processador;
• o processador para a execução do programa e desvia para um tratamento
de interrupção;
• a rotina de tratamento é executada, atualizando as estruturas do sistema
operacional e exibindo uma mensagem ao usuário informando da cone-
xão do pen-drive;
• finalizando a rotina de tratamento da interrupção o processador retorna
à execução do programa interrompido anteriormente.
Monotarefa
28 • capítulo 1
dor. Assim quando um programa solicita uma operação de entrada/saída, que
normalmente são muito lentas comparadas com a velocidade de processamento
de uma instrução, outro programa assume o uso do processador (Figura 18).
O controle do acesso concorrente a diversos recursos é implementado por
mecanismos de proteção do sistema operacional para garantir a integridade
dos programas e do próprio sistema operacional. Assim, podemos visualizar o
sistema operacional como sendo um conjunto de rotinas que são executadas
de forma concorrente e ordenada.
Multitarefa
Os sistemas operacionais são diferentes dos demais programas que são execu-
tados sequencialmente, tendo início, meio e fim. A execução das rotinas está
baseada em eventos relacionados às tarefas internas do sistema operacional e
do hardware. Dessa forma o sistema operacional através de um conjunto de ro-
tinas, oferece serviços aos usuários do sistema, aos programas que estão sendo
executados e a outras rotinas do próprio sistema. O conjunto destas rotinas é
chamado Kernel (cérebro) ou núcleo do sistema.
As principais funções do Kernel são:
• tratamento de interrupções e exceções;
• criação e eliminação de processos e threads;
• sincronização e comunicação entre processos e threads;
• escalonamento e controle dos processos e threads;
• gerência de memória;
• gerência de sistema de arquivos;
• gerência de dispositivos de E/S;
• suporte a redes locais e distribuídas;
• contabilização do uso do sistema;
• auditoria e segurança do sistema.
capítulo 1 • 29
1.6.1 Modos de Acesso
Para que o usuário ou alguma aplicação possa usufruir de algum serviço for-
necido pelo Kernel deve acessá-lo através de um mecanismo conhecido como
System Calls. O System Calls é um intermediário entre as aplicações do usuário
e o sistema operacional. Usuários ou aplicações acessam os serviços do Kernel
chamando uma das suas rotinas através de uma System Call. O serviço é proces-
sado, com bases nos parâmetros definidos na System Call, e retorna à aplicação
os resultados obtidos.
ATIVIDADE
1. De acordo com o material, qual das opções abaixo pode ser classificada como sistema
operacional?
a) Android e MS-Excel.
b) Windows e Internet Explorer.
c) Linux e Windows.
d) Android e MS-Word.
e) Linux e Broffice.
30 • capítulo 1
3. Para que uma aplicação possa utilizar os serviços disponíveis pelo Kernel deve efetuar a
comunicação com o Kernel por meio de:
a) Device Drivers
b) Batch
c) Scripting
d) System Calls
e) Shell
REFLEXÃO
Neste capítulo aprendemos sobre as principais características e funções do sistema ope-
racional, o que nos auxilia a utilizá-lo de forma mais eficiente. Em seguida vimos a evolução
dos sistemas monoprogramáveis para os multiprogramáveis o que nos permitiu estudar as
diversas formas como o computador tem sido controlado ao longo dos anos. Vimos tam-
bém os diversos tipos de sistemas operacionais, como os sistemas de tempo compartilha-
do, tempo real e com múltiplos processadores. Conceitos muito importantes quando há
necessidade de escolher um sistema operacional para uma aplicação específica. Fecha-
mos estudando conceitos como interrupções e concorrências, que são bases para muitos
programas e não somente para o sistema operacional.
LEITURA
Para você avançar mais o seu nível de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste capítulo, consulte as sugestões de links abaixo:
capítulo 1 • 31
REFERÊNCIAS BIBLIOGRÁFICAS
CARL. Emopulse Smile smartwatch available on pre-order. Disponível em: <http://www.ki-
tguru.net/channel/generaltech/carl/emopulse-smile-smartwatch-available-on-pre-order/>.
Acesso em: set. 2014.
DEITEL, H. M.; DEITEL, P. J.; CHOFFNES, D. R. Sistemas Operacionais. 3ª ed. São Paulo,
Editora Prentice-Hall, 2005.
FERREIRA, A. L. Milhares de Imagens - Mude o fundo de tela do seu PC, Tablet ou Smar-
tphone. Disponível em: http://visualdicas.blogspot.com.br/2013/09/milhares-de-imagens-
-mude-o-fundo-de.html. Acesso em: set. 2014.
32 • capítulo 1
TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementação. 2ª
ed Porto Alegre: Bookman, 1999.
NO PRÓXIMO CAPÍTULO
No capítulo seguinte, estudaremos sobre os conceitos relacionados aos processos. Você
aprofundará seus conhecimentos de como é feito o compartilhamento de um espaço de
endereçamento (memória) por vários fluxos de execução. Serão apresentados os principais
conceitos relacionados aos processos.
capítulo 1 • 33
34 • capítulo 1
2
Processos
2 Processos
Como um sistema operacional consegue executar vários programas ao mesmo
tempo?
A resposta para esta pergunta está nos processos. Veremos que os programas
podem ser divididos em vários processos e que estes processos tem a neces-
sidade de compartilhar diversos recursos, tais como processador, memória,
dispositivos de entrada e saída, etc. Vamos neste capítulo estudar o que são os
processos e como o sistema operacional faz o seu gerenciamento.
OBJETIVOS
• Compreender os principais conceitos relacionados aos processos.
• Aprofundar nossos conhecimentos de como é feito o compartilhamento de um espaço
de endereçamento (memória) por vários fluxos de execução.
• Discutir sobre os problemas envolvidos no compartilhamento de recursos entre os pro-
cessos e as soluções encontradas para resolvê-los.
REFLEXÃO
Você se lembra dos sistemas operacionais multiprogramáveis? Caso não se lembre, faça
uma breve consulta e anote os principais conceitos.
36 • capítulo 2
plorer) um processo é associado a ele. Se abrirmos um segundo Internet Explo-
rer, um novo processo será criado, totalmente independente do primeiro. Ou
seja, podemos ter vários processos relacionados a um único programa e geren-
ciados individualmente pelo sistema operacional.
CONEXÃO
Leia um pouco mais sobre processos em: <http://www.guiky.com.br/2009/12/o-que-sao-
-os-processos-do-sistema-operacional.html>. Entenda um pouco mais com este outro ar-
tigo: <http://www.tecmundo.com.br/memoria/3197-o-que-sao-processos-de-um-sistema-
-operacional-e-por-que-e-importante-saber.htm>.
capítulo 2 • 37
ATENÇÃO
O termo Processo foi utilizado pela primeira vez na década de 60 pelos projetistas do sis-
tema MULTICS. Desde esta época, houve um aumento em sua definição, tais como tarefa,
programa em execução, o “espírito animado” de um procedimento, etc. (DEITEL et al., 2005).
2.1.1 Pseudoparalelismo
38 • capítulo 2
2 o sistema operacional decide inicializar o processo “B”, mas antes, todos os
dados dos registradores do processador são salvos no processo “A”. Este ciclo
acontece para todos os processos enquanto estiverem em execução. Este proce-
dimento, efetuado pelo sistema operacional, de troca de processo por outro é
chamado de mudança de contexto.
Processo
Um contador de
programas
A Quatro contadores
de programas
B
A B C D
C
D
A B C D
1 2 3 4 5 6 7
Tempo
Figura 20 – (a) Multiprogramação de quatro programas. (b) Modelo conceitual de quatro pro-
cessos sequenciais independentes. (c) Só um programa está ativo em qualquer dados instante.
Fonte: Tanenbaum e Woodhyll (1999).
capítulo 2 • 39
• Batch (Backgound): são processos que realizam o processamento de da-
dos de entrada produzindo um conjunto de dados de saída sem que haja
a intervenção do usuário. Exemplo: backups, compiladores, programas
de cálculo numérico, etc.
• Daemons: são processos carregados pelo sistema operacional durante
sua inicialização e permanece em execução até que o sistema seja fina-
lizado. Processos Daemons ficam em espera em segundo plano até que
seja requerido algum serviço. Exemplo: gerenciamento de log do siste-
ma, serviços de e-mail, etc.
2.1.3 Contexto
40 • capítulo 2
Contexto de
Software
Espaço de Processo
Endereçamento
Contexto de
Hardware
Processo
Contexto de
Hardware
capítulo 2 • 41
A troca de contexto segue a seguinte sequencia. Ao executar um processo
“A”, o seu contexto de hardware é armazenado nos registradores do processa-
dor. Quando o sistema operacional decide trocar de processo, executar o pro-
cesso “B”, primeiramente salva os dados dos registradores no contexto de har-
dware do processo “A” e em seguida disponibiliza a utilização do processador
para o processo “B”. O contexto de hardware do processo “B” é armazenado nos
registrados do processador. A necessidade de armazenar os registradores no
contexto de hardware quando um processo perde o uso do processador é que
quando este processo voltar a ser executado possa continuar exatamente de
onde foi interrompido.
Sistema Operacional
Processo A Processo B
executando
Salva registradores do
Processo A
Carrega registradores do
Processo B
executando
Salva registradores do
Processo B
Carrega registradores do
Processo A
executando
Figura 23 – Mudança de contexto.
Fonte: Machado e Maia (2007).
42 • capítulo 2
2.1.5 Contexto de software
capítulo 2 • 43
Contexto de
Software
Processo
Espaço de Processo
Endereçamento
44 • capítulo 2
2.2 Estados de um processo
capítulo 2 • 45
2.2.1 Mudança de estado de um processo
De acordo com Silberschatz et al. (2004) há quatro mudanças de estado que po-
dem ocorrer durante o seu ciclo de vida de um processo:
• Novo → Pronto: esta mudança de estado ocorre quando o processo é admiti-
do pelo sistema operacional e termina de ser carregado na memória, aguar-
dando apenas a oportunidade de ser escolhido pelo escalonador para ser
executado.
• Pronto → Em Execução: esta mudança ocorre quando o escalonador esco-
lhe um processo na fila de pronto para ser executado.
• Em Execução → Pronto: esta mudança ocorre quando o tempo de uso do
processador pelo processo chaga ao fim. O processo retorna para a fila de
processos prontos até ser novamente habilitado pelo escalonador para
usar o processador.
• Em Execução → Em Espera: esta mudança ocorre quando o processo aguar-
da um evento ou necessite utilizar algum recurso que não esteja disponível
no momento, por exemplo. Isto faz com que o processo libere o uso do pro-
cessador e fique em estado de espera enquanto aguarda o evento ou a dispo-
nibilidade do recurso.
• Em Espera → Pronto: esta mudança ocorre quando o processo recebe o
evento esperado ou o recurso solicitado fica disponível para uso. Conse-
quentemente o processo volta para a fila de pronto a fim de aguardar ser
processado.
• Em Execução → Terminado: esta mudança ocorre quando o processo finaliza
sua execução ou quando acontece algum erro e o processo precisa ser abortado.
Interrupção
Processo Selecionado
Fim da
carregado pelo
execução
em memória escalonador
Novo Pronto Em Execução Terminado
Ocorrência do Aguardando um
evento ou Em Espera evento ou
dado disponível dado externo
46 • capítulo 2
2.2.2 Classificação de processos
Os processos podem ser classificados de acordo com vários critérios entre eles, em
função de modo como utiliza o processador e os dispositivos de entrada e saída:
• Processo CPU-Bound: são processos que utilizam de modo muito intenso
o processador durante o seu ciclo de vida. A maior parte do tempo os es-
tados destes processos são Pronto ou Em Execução.
• Processo I/O-Bound: este tipo de processo está mais ligado aos disposi-
tivos de entrada/saída do que propriamente ao processador. O estado
deste processo fica Em Espera durante grande parte do seu ciclo de vida
devido aos longos tempos aguardando respostas das solicitações feitas
aos dispositivos de entrada e saída.
2.3 Threads
capítulo 2 • 47
Contexto de
Software
Espaço de Thread 1
Endereçamento
Contexto de
Hardware
Contexto de
Software
48 • capítulo 2
aguardando que um determinado recurso fique disponível, seu estado passa de Em
Execução para Em Espera, liberando o processador para outra thread.
Um exemplo de utilização de threads pode ser dado através da execução de
um vídeo com som em inglês e legendas em português. O programa de visuali-
zação do vídeo pode criar um processo com três linhas de execução (três threa-
ds). Sendo um thread para tratar a exibição da imagem (vídeo) um segundo thre-
ad para tratar o áudio e o terceiro para tratar a legenda. O usuário final visualiza
a imagem, o som e legenda, tudo ao mesmo tempo, mas o processamento de
cada thread é executado individualmente no processador.
CONEXÃO
Entenda como são criadas as threads em linguagem de programação.
<http://www.macoratti.net/14/07/c_gptwf.htm>.
capítulo 2 • 49
navegadores web interagem com usuário através das páginas de Internet ao mes-
mo tempo em que tarefas de comunicação com a rede estão sendo executadas.
Os bancos de dados, essencial nas aplicações atuais, principalmente apli-
cações empresariais como Sistema integrado de gestão empresarial (SIGE ou
ERP – Enterprise Resource Planning) são outro exemplo de aplicações concorren-
tes. Um sistema ERP integra todos os dados e processo de uma organização em
um único sistema e estes dados são armazenados em um banco de dados. Caso
o banco de dados utilizado por um ERP fosse sequencial, atenderia um único
usuário por vez. Logo se um usuário estivesse dando entrada de mercadoria no
estoque, todo o restante da empresa estaria parado, aguardando o término des-
ta tarefa, tornando este tipo de sistema inviável para uma empresa.
Para que os processos concorrentes possam cooperar entre si, é necessário
que haja uma comunicação entre eles para troca e compartilhamento de infor-
mações, além de um sincronismo, efetuado pelos sistemas operacional para
que as atividades sejam executadas sem erros. Diversos mecanismos podem
ser utilizados para efetuar a comunicação entre os processos, como variáveis
compartilhadas na memória principal, quanto à memória é compartilhada en-
tre os processos. Quando a memória não é compartilhada, os processos podem
trocar mensagens para compartilhar as informações entre si.
Para ilustrar o uso de memória compartilhada e a eficiência dos programas
concorrentes em relação aos programas sequenciais, Oliveira et al. (2010) pro-
põem uma pequena tarefa de impressão de arquivo, que deve ser executada por
um programa. O programa deve ler um arquivo do disco rígido, efetuar a forma-
tação adequada para imprimir e por fim, enviar para a impressora.
A figura 30 exibe as três operações feitas utilizando um programa sequen-
cial. Neste caso é utilizado apenas um processo.
Impressora
Arquivo Processo
Física
.
Figura 30 - Acessando arquivo e impressora através de um programa sequencial.
Fonte: Oliveira et al. (2010).
50 • capítulo 2
4. A primeira coisa efetuada pelo processo é enviar um comando de leitura
do arquivo para o disco rígido.
5. Em seguida o processo fica em modo espera até que a leitura seja
finalizada.
6. O arquivo é formatado pelo processo.
7. Envia os dados formatados direto para o buffer da impressora. Como nor-
malmente o buffer é relativamente pequeno são necessárias várias repeti-
ções das quatro etapas até que o arquivo seja totalmente impresso.
Disco
Processo
Impressora
1 2 3 4 1 2 3 4
Esperando
Tempo
Executando
Enviando Dados
Arquivo Processo
Leitor
Variável
Processo Impressora
Impressor Física
capítulo 2 • 51
Através do gráfico, podemos notar a utilização simultânea do disco e da im-
pressora. Dessa forma, o tempo de impressão será bem menor o que torna o
programa concorrente mais eficiente que o programa sequencial.
Disco
Processo
Leitor
Processo
Impressor
Impressora
Esperando
Tempo
Executando
Enviando Dados
52 • capítulo 2
2.5.1 Problemas das condições de corrida e região crítica
capítulo 2 • 53
A solução para o problema de condições de corrida (race conditions) se inicia
pela identificação da parte do programa que gera disputa dos recursos compar-
tilhados e da parte que não gera disputa. A parte que gera disputa é conhecida
como região crítica ou seção crítica e a que não gera disputa e conhecida como
códigos reentrante ou código público.
Uma vez identificado à região crítica, o próximo passo para a solução do pro-
blema é atender os seguintes aspectos:
• Exclusão mútua: garantir que apenas um processo por vez terá acesso à
região crítica.
• Progresso: caso um processo deseja utilizar uma região crítica que não está
em uso, outros processos não podem bloqueá-lo de utilizar a região crítica.
• Espera limitada: caso um processo deseja utilizar uma região crítica, o mes-
mo não deve esperar indefinidamente para a utilização da região crítica.
ATENÇÃO
Uma das tarefas dos programadores é testar o programa que esta sendo criado. Esta tarefa
não é nada fácil quando o programa em teste contém condições de corrida. Esta condição
faz com que a maioria dos testes tenham bons resultados, mas, de tempos em tempos, algo
estranho e inexplicável acontece (TANENBAUM; WOODHYLL, 1999).
54 • capítulo 2
crítica e antes de mudar o valor de busy para 1 (linha 6), ocorreu uma interrupção que
passou o controle para o processo “B”. O processo “B” lê busy igual a 0, entra na
região crítica e altera busy para 1. Ocorre novamente a interrupção voltando a
executar o processo “A”. Neste momento, para o processo “A” o valor de busy
ainda é 0, o que ocasiona também a sua entrada na região crítica.
capítulo 2 • 55
• Limitação: desabilitar a interrupção depende de acesso privilegiado e
processos do usuário pode não ter esta permissão. Em máquinas onde
há vários processadores executando simultaneamente, desabilitar as in-
terrupções não funciona. Isto porque ao desabilitar a interrupção em um
processador, os demais continuaram funcionando. Desabilitando todas
interrupções em todos os processadores, ainda assim os processadores
estariam executando simultaneamente os processos.
2.5.4 Semáforos
56 • capítulo 2
2.5.5 Monitores
capítulo 2 • 57
Processo A Processo B
msg
Espaço de Espaço de
Endereçamento Thread 1 Endereçamento Thread 1
Canal de Comunicação
Contexto de Contexto de
Hardware Hardware
Processo A Processo B
Contexto de Contexto de
Software Software
Espaço de Espaço de
Endereçamento Thread 1 Endereçamento Thread 1
Contexto de Contexto de
Hardware Hardware
58 • capítulo 2
única, assim um processo pode enviar ou receber mensagens de outro
processo utilizando caixas postais diferentes, desde que os processos
compartilhem o uso da mesma caixa.
Processo A Processo B
Contexto de Contexto de
Software Software
Espaço de
Thread 1
Caixa Espaço de
Thread 1
Endereçamento Endereçamento
Postal
Contexto de Contexto de
Hardware Hardware
ATIVIDADE
1. O processo é composto por três partes, entre elas o contexto de hardware. Das opções
abaixo, qual opção que faz parte do contexto de hardware?
f) Endereço de memória
g) Registrador PC
h) PID
i) Privilégio
j) Tempo de processador
2. O processo é composto por três partes, entre elas o contexto de software. Das opções
abaixo, qual opção que faz parte do contexto de software?
a) Registrador SP
b) Registrador PC
c) PID
d) Endereço de memória
e) Registrador de status
3. Por que os processos I/O-Bound ficam no estado “Em Espera” durante grande parte do
seu ciclo de vida?
capítulo 2 • 59
REFLEXÃO
Neste capítulo estudamos como os programas são executados pelo processador através dos
processos. Posteriormente vimos como os processos são estruturados em contexto de har-
dware, software e espaço de endereçamento, permitindo um gerenciamento mais eficiente do
sistema operacional. Em seguida, discutimos as threads, comunicação e sincronização entre
processos, conceitos que nos auxiliam entender melhor a multiprogramação. Sugerimos que
você faça todos os exercícios propostos e pesquise outras fontes para aprofundar seus conhe-
cimentos. Em caso de dúvidas, retorne aos tópicos e faça a releitura com bastante atenção.
LEITURA
Para você avançar mais o seu nível de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste capítulo, consulte as sugestões de links abaixo:
REFERÊNCIAS BIBLIOGRÁFICAS
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3ª ed. São Paulo,
Editora Prentice-Hall, 2005.
60 • capítulo 2
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4ª ed. Porto
Alegre : Editora Bookman, 2010.
NO PRÓXIMO CAPÍTULO
No capítulo seguinte, estudaremos sobre os principais conceitos relacionados ao escalona-
mento de processos. Você observará as diferenças entre os diversos tipos de escalonadores.
Serão apresentados como é feito a avaliação de um escalonador.
capítulo 2 • 61
3
Gerência de
Processador
3 Gerência de Processador
Vimos que os processos têm a necessidade de compartilhar diversos recursos
do sistema, principalmente o processador. Como o sistema operacional ge-
rencia quando dois ou mais processos disputam o uso do processador? Quais
os métodos utilizados para acesso ao processador, suas vantagens e desvanta-
gens? Estas são perguntas que foram sendo solucionadas à medida que os sis-
temas operacionais e o próprio hardware foram evoluindo. A importância dada
à forma como os processos são escalonados, para a utilização do processador,
será um dos principais temas de nossa discussão.
OBJETIVOS
• Estudarmos os principais conceitos relacionados ao escalonamento de processos.
• Observar as diferenças entre os diversos tipos de escalonadores.
• Entender como é feita a avaliação de um escalonador.
REFLEXÃO
Você se lembra dos estados de um processo? Como os processos são classificados em função
de modo como utilizam o processador e os dispositivos de entrada e saída? Seria interessante
você procurar relembrar estes conceitos no capítulo 2, pois irá ajudá-lo a compreender melhor
a função do gerenciamento do processador.
3.1 Fundamentos
64 • capítulo 3
São funções básicas da política de escalonamento:
• Manter o processador ocupado por maior tempo possível.
• Efetuar o balanceamento de uso do processador entre processos.
• Aplicações críticas devem ser executadas prioritariamente.
• Maximizar o throughput (número de processos finalizados em um dado
intervalo de tempo) do sistema.
• Processos interativos devem ter tempos de resposta razoáveis.
Uma vez definido qual processo deve ser executado, o sistema operacional
passa a execução para o módulo conhecido como Dispatcher (despachante). O
módulo Dispatcher é responsável por efetuar a troca de contexto e dar o controle
do processador para o processo selecionado pelo escalonador. Esta operação
de troca de contexto gasta um determinado tempo que é conhecido como latên-
cia do dispatcher, ou seja, o tempo para interromper a execução de um processo
para executar outro.
Estado de
Execução
Esca
lonam
ento
Estado de Estado de
Espera Pronto
Figura 39 – Escalonamento.
Fonte: Machado e Maia (2007)
capítulo 3 • 65
em conta outros aspectos que tão somente o primeiro da fila de pronto para
efetuar a troca. Um dos aspectos considerados pelo escalonador para atender a
troca de um processo em execução por outro, é mudança de estado do processo.
4. O processo é carregado na memória e fica com estado de Pronto.
5. O processo muda de estado Em Execução para Pronto.
6. O processo muda de estado Em Execução para Em Espera.
7. O processo muda de estado Em Espera para Pronto.
8. O processo muda de estado de Em Execução para Terminado.
Interrupção
Processo Selecionado
Fim da
carregado pelo
execução
em memória escalonador
Novo Pronto Em Execução Terminado
Ocorrência do Aguardando um
evento ou Em Espera evento ou
dado disponível dado externo
Tão logo o processo tenha mudado o seu estado, o escalonador pode inter-
romper um processo em execução para dar lugar a outro. Esta tarefa de troca
de processo pelo sistema operacional é conhecida como preempção. Levando em
consideração a preempção, os escalonadores podem ser classificados como:
• Escalonador Não preempetivo: este tipo de escalonador foi um dos primei-
ros a serem utilizados em sistemas multiprogramáveis. Permite que o pro-
cesso seja executado do início ao fim sem ser interrompido até ser finali-
zado. Escalonadores não-preemptivo mantêm o processo em execução até
que seu estado mude para “Em Espera” ou “Terminado”, item 3 e item 5.
• Escalonador Preemptivo: este tipo de escalonador tem a capacidade de
trocar um processo, que poderia continuar executando, por outro. Estão
nesta situação os processos com mudanças de estados citados acima de
1 a 5. Escalonadores preemptivos permitiram que sistemas de tempo
real pudessem dar prioridade na execução de processos críticos.
66 • capítulo 3
ATENÇÃO
Os sistemas operacionais foram criados para executar os programas dos usuários. Nesta ta-
refa são consumidos, indiretamente, valiosos e escassos recursos do sistema. Este consumo
é denominado sobrecarga pelo fato dos recursos não estarem sendo utilizados diretamente
pelas aplicações (DEITEL et al., 2005).
capítulo 3 • 67
• Tempo de Espera: tempo total de espera, para ser executado, de um pro-
cesso na fila de Pronto. As políticas de escalonamento procuram reduzir
ao máximo este tempo.
• Tempo de Turnaround: indica o tempo total de vida de um processo, des-
de sua criação até o momento que é encerrado. No cálculo deste tem-
po estão os tempos gastos com alocação de memória, espera na fila de
pronto, interrupções de entrada e saída. As políticas de escalonamento
procuram reduzir ao máximo este tempo.
• Tempo de resposta: indica o tempo gasto para produzir uma resposta a
uma solicitação de uma aplicação ou sistema. Este tempo está relaciona-
do com a velocidade dos dispositivos de entrada e saídas. As políticas de
escalonamento procuram reduzir ao máximo este tempo.
CONEXÃO
Aprofunde seus conhecimentos sobre escalonamento:
<http://www.oficinadanet.com.br/post/12781-sistemas-operacionais-o-que-e-escalona-
mento-de-processos>.
68 • capítulo 3
Fila dos Processos no Estado de Pronto
Estado de Estado de
Criação UCP Término
Estado de
Espera
2º P2 6 4
3º P1 10 2
capítulo 3 • 69
Tempo na CPU
P3
P2
P1
6 10 12 Tempo
Figura 42 – Escalonamento FIFO.
2º P2 2 4
3º P3 6 6
Tempo na CPU
P3
P2
P1
2 6 12 Tempo
Figura 43 – Escalonamento FIFO.
70 • capítulo 3
3.4 Escalonamento por job mais curto primeiro
(SJF – Shortest - Job - First)
1º P3 6 3º 6
2º P2 4 2º 2
3º P1 2 1º 0
Tempo na CPU
P3
P2
P1
2 6 12 Tempo
Figura 44 – Escalonamento SJF.
capítulo 3 • 71
Para atender a necessidade de preempção, foi criada uma versão do esca-
lonador SJF conhecida como SRTF (Shortest-Remaining-Time-First). Esta versão
permite que o escalonador compare, o tempo restante necessário para que um
processo em execução termine seu processamento, com os tempos estimados
dos processos que estão na fila de pronto. Caso o tempo restante para terminar
o processamento for maior que o tempo estimado de algum processo na fila, o
processo em execução e substituído por um de menor tempo.
Este algoritmo de escalonamento apresenta um problema de ter que prever
quanto tempo de processador um processo vai necessitar para finalizar seu pro-
cessamento, e isso não é conhecido. Em geral, o sistema operacional faz uma
estimativa com base no tempo anterior que o processo utilizou o processador.
A vantagem do escalonador SJF é um menor tempo médio de espera para os
processos a serem executados. Esta redução de tempo médio de espera faz com
que o escalonador SJF seja mais eficiente que o escalonador FIFO. Podemos ci-
tar como desvantagem a possibilidade de ocorrer starvation para processos do
tipo CPU-Bound, que ocupam muito tempo de uso do processador, caso proces-
sos de tempos curtos, como os I/O-Bound forem continuamente adicionados
para a execução.
72 • capítulo 3
Quantum
Surto
O escalonador Round Robin forma uma fila circular de processos com estado
de pronto. Todo processo carregado na memória com o estado de pronto, sempre
entra no final da fila. O escalonador, por sua vez sempre escolhe o primeiro da fila
para ser executado. O processo selecionado recebe um quantum e passa a utilizar
o processador. Ao término do quantum, o processo em execução é interrompido,
pelo sistema operacional, e volta para o fim da fila de pronto. Situação como esta,
tende a acontecer com maior frequência em processos do tipo CPU-Bound.
Quando este mesmo processo tiver acesso novamente ao processador, reto-
mará a execução de onde parou no ciclo anterior. Esta forma de troca de proces-
so levando em consideração um período de tempo é conhecida como preemp-
ção por tempo. A troca de um processo em execução por outro pode acontecer
antes do final de quantum, quando o processo já tenha terminado todo o seu
processamento ou voluntariamente passe para o estado de “Em Espera”.
Estado de Estado de
Criação UCP Término
Preempção por Tempo
Estado de
Espera
capítulo 3 • 73
PROCESSO HORA DE CHEGADA DURAÇÃO
A 0 24
B 2 3
C 1 4
Tabela 4 - Processos
Processos
Diagrama de GANTT
A A A
B B
C C Duração
74 • capítulo 3
haverá troca de contexto, consequentemente não haverá nenhum custo
adicional de tempo administrativo.
g) Se o quantum for definido em 6 unidades de tempo, 120ms, será neces-
sário uma troca de contexto para que o processo possa finalizar o proces-
samento. Logo haverá um custo adicional de 5ms gastos com o tempo
administrativo.
h) Se o quantum for definido em 1 unidade de tempo, 20ms, serão neces-
sários 9 trocas de contexto para que o processo possa finalizar o proces-
samento. Logo haverá um custo adicional de 45ms gastos com o tempo
administrativo.
TEMPO EM TEMPO
QUANTUM Nº TROCA
MS ADMINISTRATIVO
a 12 240 0 0
b 6 120 1 5
c 1 20 9 45
c
1 2 3 4 5 6 7 8 9 10 11 12
Conclui se que, com o tempo definido para ao quantum for muito grande,
este tempo poderá ser maior que qualquer tempo dos processos na fila de pron-
to o que causaria o escalonador circular funcionar como se fosse um escalona-
dor FIFO. Se o quantum for muito pequeno, haverá muitas trocas de contexto, e
assim, haverá grande perda de eficiência do sistema.
capítulo 3 • 75
A troca de contexto não acontece somente quando o quantum é muito pe-
queno, mas também em processos do tipo I/O-Bound. Processos do tipo I/O-
-Bound entram com maior frequência em estado de “Em Espera” pelo fato de
efetuarem constantes acessos aos dispositivos de entrada e saída. Diferenças
de características dos tipos de processos CPU-Bound e I/O-Bound tendem a oca-
sionar um desbalanceamento de uso do processador.
Com o objetivo de balancear o processador, surgiu uma versão aprimorada
do escalonador circular chamado escalonamento circular virtual. O escalona-
mento circular virtual criou uma segunda fila auxiliar de pronto que recebe os
processos que saem do estado de “Em Espera”. O escalonador sempre verifica
esta fila quando há necessidade de troca de contexto. Caso haja processo na
fila auxiliar, este terá prioridade em relação a um processo da fila de pronto. Se
a fila auxiliar estiver vazia, o escalonador utilizará processos da fila de pronto.
Este mecanismo de troca dinâmica da ordem em que os processos são executa-
dos é conhecido como mecanismo adaptativo.
Estado de Estado de
Criação UCP Término
Preempção por Tempo
Fila auxiliar
Estado de
Espera
76 • capítulo 3
Quantum
capítulo 3 • 77
O valor da prioridade é um número que pode variar de sistema para sistema.
Segundo Silberschatz et al. (2004), em alguns sistemas a faixa de prioridades
varia entre 0 a7 e em outros de 0 a 4095. O valor 0 em alguns casos define a prio-
ridade mais baixa e em outros, a mais alta. No exemplo a seguir o valor 0 define
a prioridade mais baixa.
TEMPO DE
PROCESSO PRIORIDADE
PROCESSADOR (u.t)
A 10 2
B 4 1
C 3 3
Processo A
Processo B
Processo C
3 13 17 u.t.
78 • capítulo 3
ridade do processo em execução a cada interrupção de relógio. Desta forma,
a prioridade do processo em execução, em um determinado momento, fi-
cará abaixo da prioridade de um processo na fila de pronto o que causará a
perda do uso do processador. Esta estratégia é denominada preempção por
prioridade. Já para Silberschatz et al. (2004) a estratégia aging consiste em
aumentando gradativo da prioridade dos processos que estão aguardan-
do durante muito tempo na fila de pronto. Quando um processo da fila de
pronto atingir um valor de prioridade maior do que o processo em execução,
o processo em execução será substituído pelo da fila de pronto.
ATENÇÃO
Silberschatz et al. (2004) relata um fato de starvation que ocorreu em 1973 quando o IBM
7094 do M1T foi desligado. Ao desligar o IBM 7094, foi encontrado um processo de baixa
prioridade que aguardava ser executado desde 1967.
Prioridade P1
Estado de
Prioridade P2 UCP Término
Estado de
Criação
Prioridade Pn
Estado de
Espera
capítulo 3 • 79
O escalonador de prioridade pode ser implementado de forma mais sim-
ples no modelo não-preemptivo. No modelo não-preemptivo, se chegar um pro-
cesso na fila de pronto com prioridade maior do que o processo em execução,
não ocasionará a troca de processo. Neste caso, o processo que chegou à fila de
pronto com maior prioridade, será colocado no início da fila. A prioridade de
execução pode ser classificada como:
• Estática: o valor de prioridade é associado ao processo no momento de
sua criação e não é alterado durante o seu ciclo de vida.
• Dinâmica: o valor de prioridade associado ao processo pode variar du-
rante seu ciclo de vida levando em consideração critérios estabelecidos
pelo sistema operacional.
CONEXÃO
Recomendamos a leitura deste artigo para melhor compreensão sobre escalonamento de
processos: <http://www.soffner.com.br/Semana5_SOII.htm>.
80 • capítulo 3
Fila dos Processos no Estado de Pronto
Prioridade P1
Estado de
Prioridade P2 UCP Término
Estado de
Criação
Prioridade Pn
capítulo 3 • 81
3.6.2 Escalonamento por múltiplas filas
Maior
prioridade
Fila de Processos Interativos
UCP
Menor
prioridade
82 • capítulo 3
do seu processamento. Isto pode ser uma desvantagem, pelo fato do sistema
operacional não levar em conta que alguns processos podem alterar suas pro-
priedades no decorrer de sua execução e assim poderem ser agendados em filas
de maior ou menor prioridade.
Para atender as necessidades acima descritas para os processos, cada fila
tem seu próprio algoritmo de escalonamento. Por exemplo, processos do tipo
foreground podem ser agendados em uma fila cujo escalonador seja do tipo es-
calonamento circular, enquanto processos do tipo backgound em fila com al-
goritmo do tipo FIFO. No escalonamento por múltiplas filas, um processo de
uma fila de menor prioridade somente será escalonado se não houver proces-
sos em filas de maior prioridade. Por exemplo, se tivéssemos as filas conforme
a Figura 55, e algum estudante executasse algum programa, o processo deste
programa entraria na fila “Processos de estudantes”. Como as filas acima da de
“Processos de Estudantes” tem prioridade absoluta, o processo somente seria
escalonado se as demais filas estivessem completamente vazias. Uma vez em
execução, o processo do estudante pode sofrer preempção caso um processo
entre em uma das filas de maior prioridade.
Processos do Sistema
Processos Interativos
Processos Batch
Processos de Estudantes
capítulo 3 • 83
os processos do tipo background, com escalonamento do tipo FIFO. As filas por
sua vez, dividem o tempo recebido entre os seus processos.
84 • capítulo 3
chamado de mecanismo adaptativo. Em geral, os mecanismos adaptativos geram
sobrecarga do sistema, mas no caso dos resultados obtidos no escalonador por
Múltiplas filas com realimentação, com estes mecanismos, justificam este au-
mento de sobrecarga (DEITEL et al., 2005).
Fila n (Circular)
Menor
prioridade Maior
fatia
de tempo
Preempção por tempo
Figura 56 – Escalonamento por múltiplas filas com realimentação.
Fonte: Machado e Maia (2007).
O processo ao ser criado, não é associado à fila de pronto e sim direcionado
para o final da fila de maior prioridade. Como cada fila tem uma determinada fa-
tia de tempo, é atribuído ao processo uma parte deste tempo. Ao chegar ao início
da fila, o processo é escalonado e obtém acesso ao processador. Se durante a sua
execução, ocorrer a chegada de um processo em uma fila de maior prioridade, o
processo sofrerá a preempção para dar lugar ao processo de prioridade mais alta.
A preempção por prioridade ou por solicitação a um recurso do sistema faz
com que o processo seja associado para o final da mesma fila que estava anterior-
mente. Caso a preempção do processo for por tempo, ou seja, esgotou o quantum
atribuído a ele, o processo é associado ao final de uma fila de menor prioridade.
Esta estratégia faz com que processos do tipo CPU-Bound entrem na fila de maior
capítulo 3 • 85
prioridade e ganhe rapidamente o uso do processador. Como sua característica é
de utilizar o maior tempo possível o processador, irá gastar seu quantum de tem-
po e será associado a uma fila de menor prioridade. Já os processos I/O-Bound
conseguem ter um melhor tempo de resposta, isto porque este tipo de processo
tem uma grande tendência de sofrer preempção por solicitação a um recurso do
sistema, e com isso, voltar para o final da mesma fila de prioridade de onde saiu,
permanecendo um maior tempo em filas com prioridades mais altas.
P1 7
P2 3
P3 5
P4 4
86 • capítulo 3
Utilizando o escalonador FIFO, temos:
P4
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Tempo de Resposta
Processo P1 → Tr= 7 → Tr= 7ms
Processo P2 → Tr= 7 + 3 → Tr= 10ms
Processo P3 → Tr = 7 + 3 + 5 → Tr= 15ms
Processo P4 → Tr = 7 + 3 + 5 + 4 → Tr= 19ms
P1
P3
P4
P2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Tempo de Resposta
Processo P1 → Tr = 3 + 4 + 5 + 7 → Tr = 19ms
Processo P2 → Tr = 3 → Tr = 3ms
Processo P3 → Tr = 3 + 4 + 5 → Tr= 12ms
Processo P4 → Tr = 3 + 4 → Tr= 7ms
capítulo 3 • 87
Utilizando o escalonador RR, temos:
P4
P3
P2
P1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Tempo de Resposta
Para o cálculo utilizaremos Quantum = 30m.
Processo P1 → Tr= 3 + 3 + 3 + 3 + 3 + 2 + 1 + 1 → Tr= 19ms
Processo P2 → Tr = 3 + 3 → Tr= 6ms
Processo P3 → Tr = 3 + 3 + 3 + 3 + 3 + 2 → Tr= 17ms
Processo P4 → Tr = 3 + 3 + 3 + 3 + 3 + 2 + 1 → Tr= 18ms
ATIVIDADE
1. De acordo com o material, o que é política de escalonamento de um processo?
REFLEXÃO
Neste capítulo estudamos as diversas políticas de escalonamento e suas funções básicas.
Abordamos as características de diversos escalonamentos, tais como o FIFO, SJF, Round
Robin, por prioridades, circular com prioridade, assuntos mais densos e de relativa comple-
xidade. Estudando estas características podemos definir a escolha do tipo de escalonador
para um determinado sistema. Por fim vimos alguns métodos para avaliar os escalonadores.
Todos estes conhecimentos, certamente serão imprescindíveis para sua vida profissional.
88 • capítulo 3
LEITURA
Para você avançar mais o seu nível de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste capítulo, consulte as sugestões de links abaixo:
Capítulo 8 do livro
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3ª ed. São Paulo,
Editora Prentice-Hall, 2005.
REFERÊNCIAS BIBLIOGRÁFICAS
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3ª ed. São Paulo,
Editora Prentice-Hall, 2005.
NO PRÓXIMO CAPÍTULO
No capítulo seguinte, estudaremos as estruturas de memória. Você entenderá as diferenças entre
os espaços de endereçamento físico e lógico. Serão apresentados os diversos modos de aloca-
ção da memória.
capítulo 3 • 89
4
Gerência de
Memória
4 Gerência de Memória
Estudamos que, na multiprogramação, vários processos são mantidos na memória
a fim de que o sistema operacional tenha um grande desempenho. Os programas,
cada vez mais, têm a necessidade de utilizar uma quantidade maior de memória,
sem contar a exigência de memórias com acesso cada vez mais rápido. Este cenário
faz com que o sistema operacional procure efetuar um gerenciamento da memória
o mais eficiente possível, começando por alocar o máximo possível de processos na
memória, controlar os processos dos usuários e ter o cuidado de não ocupar muita
memória. Estes são apenas alguns pontos para começarmos a refletir sobre o ge-
renciamento de memória. Os conceitos que iremos estudar sobre o assunto com
certeza serão de grande importância para a sua formação.
OBJETIVOS
• Expor as estruturas de memória.
• Entender as diferenças entre os espaços de endereçamento físico e lógico.
• Compreender os diversos modos de alocação da memória.
REFLEXÃO
Você se lembra de como os processos são escalonados, certo? Estes conceitos nós estuda-
mos no capítulo 3. A partir deste momento, veremos quais as estratégias que o sistema opera-
cional utiliza para a alocação dos processos na memória.
4.1 Funções
92 • capítulo 4
dade de gerenciar a alocação da memória a fim de que a mesma seja utilizada
da forma mais eficiente possível, para isso o gerenciador de memória deve ten-
tar manter a memória com o máximo de programas (processos) em execução.
Com vários programas em memória, o gerenciador de memória deve ga-
rantir que um programa não acesse áreas destinadas a outro programa, como
também das áreas destinadas ao sistema operacional. Em situações onde os
processos têm a necessidade de trocar dados, o gerenciador de memória ofere-
ce mecanismos protegidos de compartilhamento de dados.
Outro ponto a ser considerado é de que, mesmo com toda à evolução tecno-
lógica, proporcionando às memórias um grande aumentado de sua capacidade
de armazenamento e velocidade de acesso, os programas também evoluíram
na mesma proporção, exigindo que o sistema operacional gerencie a memória
disponível para que um determinado programa não venha a ocupar toda a me-
mória disponível.
Em geral, os programas devem estar armazenados permanentemente no
computador, em um meio não-volátil, ou seja, a memória principal não é ade-
quada para esta tarefa pelo fato de ser do tipo volátil, isto é, se a energia for
desligada, todos os dados se perdem.
Este fato faz com que os discos rígidos, que são não voláteis, de baixo custo e de
grande capacidade, seja o meio utilizado pelo sistema operacional, como sistema
de armazenamento secundário, armazenando os programas e os seus dados.
É muito importante frisar que o processador somente executa instruções
que estão carregadas na memória principal, assim, o gerenciador de memória
tem a função de transferir os programas, que serão executados, do armazena-
mento secundário (discos rígidos) para o armazenamento principal (memória).
Esta transferência do programa da memória secundária para principal deve ser
gerenciada para que não cause perda de desempenho do sistema. Esta perda
de desempenho pode ocorrer se houver uma grande quantidade de acesso à
memória secundária. O tempo de acesso à memória secundária é muito mais
lento se comparado com a memória principal. Dessa forma o sistema opera-
cional deve otimizar a quantidade de operações de entrada e saída da memória
secundária. Pode acontecer, da memória principal estar totalmente ocupada o
que faz com que o sistema operacional utilize um mecanismo conhecido como
swapping. O mecanismo de swapping transfere os processos da memória prin-
cipal, temporariamente para a memória secundária, permitindo que novos
processos sejam carregados na memória principal e executados.
capítulo 4 • 93
Outras funções do gerenciado de memória é controlar os espaços que serão
utilizados pelos programas e os que não serão, alocar espaços para os dados,
conforme os programa solicitem e desalocar quando não mais são necessários.
Nesta unidade estudaremos os componentes de hardware que compõem a me-
mória e os mecanismos de controles utilizados pelo sistema operacional para o
gerenciamento da memória
CONEXÃO
Aprofunde seus conhecimentos sobre gerência de memória.
<http://regulus.pcs.usp.br/~jean/so/AULA%2013%20-%20Ger%EAncia%20de%20
Mem%F3ria.pdf>.
94 • capítulo 4
TAXA DE
MEIO TEMPO DE ACESSO
TRANSFERÊNCIA
Cache L2 1 ns 1 GB/s (1 ns/byte)
memória flash
2 ms 10 MB/s 9100 ns/byte)
(NAND)
velocidade,
registradores custo e
consumo
cache L1 de energia
cache L2
memória RAM
volátil
não-volátil
memória Flash
disco rígido
capacidade
capítulo 4 • 95
Na base pirâmide estão os componentes que armazenam informações
acessadas com menor frequência pelo processador. Isto permite utilizar com-
ponentes de custo mais baixo e alta capacidade de armazenamento. Por outro
lado, são consideradas como memórias mais lentas e não-volateis. No topo da
pirâmide temos os componentes que armazenam informações acessadas com
maior frequência pelo processador. São memórias com custo elevado e baixa
capacidade de armazenamento. No entanto, são memórias extremamente rá-
pidas, apesar de serem voláteis.
96 • capítulo 4
Registrador
de relocação
Endereço Endereço
Lógico 14000 Físico
346 14346 Memória
CPU
MMU
Figura 61 – Tradução de endereço lógico para físico.
Simples
Contígua
Não-contígua Segmentação
(Memória
Virtual) Segmentação com Paginação
capítulo 4 • 97
4.4.1 Alocação contígua simples
ATENÇÃO
Em geral, o sistema operacional é alocado na parte baixa da memória devido a posição do
vetor de interrupções que normalmente ocupa a memória baixa. O vetor de interrupções é uma
tabela que contem os endereços das rotinas de tratamento de interrupção (MAZIERO, 2014).
98 • capítulo 4
Os antigos computadores de grande porte utilizavam a estrutura da figura
62 (a). A abordagem da figura 62 (b) tem sido utilizada em muitos sistemas em-
barcados e estrutura da figura 62 (c) foi utilizada por pequenos sistemas MS-
-DOS que denominava a parte do sistema na ROM de BIOS (Basic Input Output
– Sistema Básico de Entrada e Saída). Nesta forma de alocação, o usuário pode
acessar qualquer endereço de memória, ele tem o controle total sobre a memó-
ria principal. Esta característica permite que um determinado programa possa,
de forma intencional ou não, acessar a área destinada ao sistema operacional
o que poderia causar um colapso do sistema. Para resolver este problema foi
adotado um registrador (figura 63) que tem a função de delimitar as áreas do
sistema operacional e do programa. Caso um programa faça referência a um
endereço de memória, o sistema checa o delimitador para verificar se o ende-
reço não está invadindo uma área ocupada pelo sistema operacional. Se estiver
invadindo, então o sistema operacional termina o programa e envia uma men-
sagem de erro para o usuário sobre a violação de acesso da memória principal.
Memória principal
Sistema Registrador
Operacional
Área para
programa
Com o passar do tempo, a memória física passou a não ser suficiente para con-
ter todo o programa do usuário que eram maiores que a memória principal.
A solução encontrada foi a utilização de uma técnica conhecida como overlay
(sobreposições). Nesta técnica o programa é desenvolvido de forma que pos-
sa ser dividido em partes lógicas independentes de forma a permitir que uma
parte possa ser substituída por outra quando não estiver em uso. Por exemplo,
capítulo 4 • 99
a figura 64 ilustra um programa dividido em quatro partes, de “a” a “d”. A parte
principal do programa (a) deve ficar na memória principal durante todo tempo em
que o programa deve ser executado. Assim é carregado na memória principal logo
acima do sistema operacional. O restante da memória, área de overlay, será a área
comum compartilhada pelas demais partes do programa. Quando a parte princi-
pal (a) efetuar uma chamada a uma das partes, por exemplo, parte (b), este módulo
é carregado na área de overlay. Caso o parte principal chame a parte (c), a parte (b)
será sobreposta à parte (c) na área de overlay. Se a parte principal chamar um
módulo que já esteja carregado, a carga será desconsiderada.
A área de overlay é definida pelo programador utilizando comandos da lin-
guagem de programação utilizada para desenvolver o programa. Entretanto,
uma sobreposição que não for muito bem planejada pode se tornar complexa
e de difícil manutenção. Outro fator importante a ser considerado é com rela-
ção ao desempenho. Para garantir o desempenho do programa, o programador
deve ter o cuidado de evitar trocas constantes entre as partes que ocupam a área
de overlay (memória principal) e a memória secundária.
d
Área de fase de fase de fase de
Overlay iniciali- proces- geração
b zação samento de
Porção mínima resultado
b
do programa do
usuário que deve
permanecer em d
memória até o c
final de execução
a
Sistema
Operacional
0
Figura 64 – Técnica de overlay.
100 • capítulo 4
A partição da memória pode ser de tamanhos iguais ou diferentes. O ta-
manho de cada partição era definido no momento da inicialização do sistema
operacional levando em consideração os programas que seriam executados.
Caso houvesse a necessidade de um particionamento diferente do que tinha
sido configurado, era necessário que o sistema operacional fosse reinicializado
com a nova configuração.
800 k
Participação 4
700 k
Participação 3
400 k
Participação 2
200 k
Participação 1
100 k
SO
0k
Figura 65 – Partição da memória.
capítulo 4 • 101
800 k
B A Participação 4
700 k
Participação 3
400 k
C Participação 2
200 k
F E D Participação 1
100 k
SO
0k
Participação 3
400 k
Participação 2
200 k
D C B A Participação 1
100 k
SO
0k
102 • capítulo 4
Para decidir em qual partição um programa deve ser carregado, o gerencia-
dor de memória utiliza uma tabela conhecida como tabela de alocação de par-
tições. A tabela de alocação de partições permite que o gerenciador verifique
qual partição está livre e qual o seu tamanho. Caso a partição livre seja grande o
suficiente para conter o programa, ele será carregado nesta partição e a tabela
será atualizada para informar que a partição está ocupada.
Memória Principal
Sistema Operacional
1 Programa C
2 Área Livre
capítulo 4 • 103
Memória Principal
Endereço Final
Sistema
Reg Operacional
Reg Participação A
Participação B
Fragmentação interna
Participação C
104 • capítulo 4
A solução encontrada foi permitir que um programa ocupasse o espaço que
for necessário, de acordo com sua necessidade, desde que haja espaço disponí-
vel na memória. Assim, foi substituída a partição de tamanho fixo pela alocação
particionada dinâmica. Inicialmente a memória é organizada de forma a não ter
nenhuma partição. Conforme há a necessidade de carregar um programa, o sis-
tema operacional cria a partição dinamicamente, de acordo com as necessidades
do programa. Consequentemente, eliminou-se a fragmentação interna, mas por
outro lado, aumentou a complexidade da tabela de alocação de partições. A tabe-
la de alocação de partições passou a não ter mais um número fixo de entradas,
agora o número de entradas varia de acordo com o número de partições.
Memória Principal Memória Principal
Sistema Operacional Sistema Operacional
Programa B 4 Kb
Programa C 1 Kb
Programa E 3 Kb
A E C B 15 Kb
2 Kb 3 Kb 1 Kb 4 Kb Programa A 2 Kb
5 Kb
capítulo 4 • 105
Memória principal
Sistema
Operacional
Processo A
Processo C
Processo F
Fragmentação externa
Processo E
4 Kb 4 Kb
8 Kb
Programa C
3 Kb 3 Kb
5 Kb 5 Kb 5 Kb
106 • capítulo 4
Memória Principal Memória Principal
Sistema Operacional Sistema Operacional
Programa C
4 Kb Programa A
Programa C
3 Kb Relocação
Programa A 12 Kb
5 Kb
CONEXÃO
Entenda um pouco mais sobre gerenciamento de memória
<http://www.ricardobarcelar.com.br/aulas/soa/mod2-ger_memoria.pdf>.
capítulo 4 • 107
Memória Principal
Sistema Operacional
Área Livre 1 4 Kb
Programa C
Área Livre 2 5 Kb
PARTIÇÃO TAMANHO LIVRE
1 2 Kb Não
Programa A
2 5 Kb Sim
3 8 Kb Não Área Livre 3 3 Kb
0
(a) Estratégia o primeiro que couber Sistema operacional
a
Coloque o job na primeira lacuna de memória Lacuna de 16 MB
da lista de memórias livres na qual ele couber. b
Lista de memórias livres (mantida em ordem aleatória) Em uso
c
Endereço Lacuna de 14 MB
Tamanho d
de início
Requisição Em uso
a 16MB e
de 13 MB Lacuna de 5 MB
f
e 5MB Em uso
c 14MB g
. Lacuna de 30 MB
g 30MB .
.
h
108 • capítulo 4
O restante que sobra, também será grande podendo ser utilizada para alocar
um programa grande. Por ter que pesquisar em todas as áreas livres, para
encontrar a de maior área livre, sobrecarrega o sistema e tende a deixar pe-
quenas áreas livres sem utilização. Nesta estratégia, a tabela de memórias
livres é ordenada em ordem descendente de tamanho de área livre.
0
(a) Estratégia o pior que couber Sistema operacional
a
Coloque o job na maior lacuna Lacuna de 16 MB
possível na qual ele couber. b
Lista de memórias livres (mantida em ordem descendente Em uso
de tamanho de lacuna) c
Endereço Lacuna de 14 MB
Tamanho d
de início
Requisição Em uso
g 30MB e
de 13 MB Lacuna de 5 MB
f
a 16MB Em uso
c 14MB g
. Lacuna de 30 MB
e 5MB .
.
h
0
(a) Estratégia o que melhor couber Sistema operacional
a
Coloque o job na menor lacuna Lacuna de 16 MB
possível na qual ele couber. b
Lista de memórias livres (mantida em ordem ascendente Em uso
de tamanho de lacuna) c
Endereço Lacuna de 14 MB
Tamanho d
de início
Requisição Em uso
e 5MB e
de 13 MB Lacuna de 5 MB
f
c 14MB Em uso
a 16MB g
. Lacuna de 30 MB
g 30MB .
.
h
110 • capítulo 4
Sistema
Operacional
Swap Out
Processo 1
Espaço do
usuário
Swap In
Processo 2
Figura 79 – Swapping.
capítulo 4 • 111
Devido ao grande crescimento de capacidades das memórias RAM nos úl-
timos anos, que combinadas podem passar dos 16Gbs, não há necessidade de
utilizar em tempo integral a virtualização da memória como era necessário até
alguns anos atrás. Em alguns casos, ainda é necessário a utilização da memória
virtual, mas é importante salientar, como foi feito anteriormente, que esta téc-
nica pode causar perda de desempenho do computador tendo em vista que o
acesso ao disco rígido é mais lento que o acesso à memória principal.
4.5.1 Paginação
112 • capítulo 4
Memória Principal
000 00 X1 Z1 000 00
000 01 X2 Z2 000 01
000 10 X3 Z3 000 10
000 11 X4 Z4 000 11
000 00 Y1 001 00
000 01 Y2 001 01
000 10 Y3 001 10
000 11 Y4 001 11
000 00 Z1 X1 010 00
000 01 Z2 X2 010 01
000 10 Z3 X3 010 10
000 11 Z4 X4 010 11
011 00
Endereço Virtual de Endereço Virtual de 011 01
Y2 Y2 011 10
011 11
001 01 101 01
100 00
100 01
ETP
Tabela de Páginas 100 10
100 11
Pag. Virtual Pag. Real
Y1 101 00
000 010 Y2 101 01
001 101 Y3 101 10
010 000 Y4 101 11
4.5.2 Segmentação
capítulo 4 • 113
Memória Principal
Sistema
Operacional
7KB
10KB Livre 9KB
30KB
14KB
10KB Livre
Requisitos de
espaço do processo
que está chegando
16KB Livre
114 • capítulo 4
Segmento 00 - Código
Memória Lógica Memória Fisica
00000 C1
00001 C2 D1 00000
00010 C3 D2 00001
00011 C4 D3 00010
00100 C5 D4 00011
00101 C6 00100
00101
Segmento 01 - Dados 00110
00111
00000 D1
C1 01000
00001 D2
C2 01001
00010 D3
C3 01010
00011 D4
C4 01011
Segmento 10 - Pilha C5 01100
C6 01101
00000 p1
01110
00001 p2
01111
00010 p3
10000
10001
Tabela de Segmentos 10010
10011
Segmento Base Limite
p1 10100
00 01000 0110
p2 10101
01 00000 0100 p3 10110
10 10100 0011 10111
capítulo 4 • 115
Segmento virtual
Endereço Virtual
Num. Num.
Deslocamento
segmento página
Tabela de segmentos
ETS
End. da tabela de páginas
Tabela de páginas
ETP
Endereço do frame
ATIVIDADE
1. Quais são as formas de alocação de memória pelo sistema operacional?
116 • capítulo 4
REFLEXÃO
Neste capítulo estudamos o gerenciamento da memória, para tanto iniciamos vendo as es-
truturas de memória, espaçamentos de endereçamento físico e lógico. Para melhor entender
como o sistema operacional efetua este gerenciamento, abordamos as diversas formas de
alocação da memória, como a alocação contígua e não-contígua. É importante que, baseado
nos conceitos e arquiteturas apresentadas, você seja capaz de identificar as vantagens e
desvantagens de cada modelo de alocação de memória. Reflita sobre isso e identifique as
diferenças ente cada uma delas.
LEITURA
Para você avançar mais o seu nível de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste capítulo, consulte as sugestões de links abaixo:
Capítulo 4 do livro
TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementação. 2ª
ed Porto Alegre: Bookman, 1999.
REFERÊNCIAS BIBLIOGRÁFICAS
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3ª ed. São Paulo,
Editora Prentice-Hall, 2005.
JOHNSTONE, M. S.; WILSON, P. R. The memory fragmentation problem: solved? ACM SI-
GPLAN Notices, 34(3): 26–36, 1998.
capítulo 4 • 117
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4ª ed. Porto
Alegre : Editora Bookman, 2010.
NO PRÓXIMO CAPÍTULO
No capítulo seguinte, estudaremos os principais componentes de hardware e software de entra-
da e saída. Você entenderá como é feita a comunicação dos dispositivos com o computador. Será
apresentado como o sistema operacional efetua o gerenciamento dos arquivos e diretórios.
118 • capítulo 4
5
Gerência de Entrada
e Saída
5 Gerência de Entrada e Saída
Atualmente podemos conectar, além dos já existentes, uma infinidade de disposi-
tivos em nosso computador, tais como, máquinas fotográficas, filmadoras, tablets,
celulares etc. Efetuar um gerenciamento de todos estes dispositivos é considerado
a função mais complexa do sistema operacional e uma das principais. Outro ponto
é com relação aos sistemas de arquivos. Quantas informações de alta relevância
guardamos em nossos arquivos? Quantos dias de trabalho podem estar armaze-
nados em um simples arquivo? Quais as consequências de perdermos um destes
arquivos? Para responder a este questionamento, estudaremos como o sistema
operacional efetua o gerenciamento dos arquivos de forma a garantir segurança e
integridade dos seus dados.
OBJETIVOS
• Estudar os principais componentes de hardware e software de entrada e saída.
• Entender como é feita a comunicação dos dispositivos com o computador.
• Compreender como o sistema operacional efetua o gerenciamento dos arquivos e diretórios.
REFLEXÃO
Você se lembra de alocação de memória, contígua e paginação? Caso não se lembre,
faça uma breve consulta e anote os principais conceitos.
120 • capítulo 5
5.1 Introdução
capítulo 5 • 121
Processos de Aplicação
data nível de usuário
control nível de núcleo
API Entrada/Saída
data
control
data
control
IRQ
Gerenciador
Device Driver
Interrupção
software control
hardware IRQ data/control
Controlador Controlador Controlador
Interrupção Dispositivo DMA
IRQ
IRQ
data/control
I/O device
IRQ
Gerenciador
Device Driver
Interrupção
control
HARDWARE IRQ data/control
Controlador Controlador Controlador
Interrupção Dispositivo DMA
IRQ
IRQ
data/control
Dispositivos
122 • capítulo 5
5.2.1 Dispositivos de Entrada e Saída
DISPOSITIVO VELOCIDADE
Teclado 10 B/s
Mouse ótico 100 B/s
Interface infravermelho (IrDA-SIR) 14 KB/s
Interface paralela padrão 125 KB/s
Interface de áudio digital S/PDFIF 384 KB/s
Interface de rede Fast Ethernet 11.6 MB/s
Chave ou disco USB 2.0 50 MB/s
Interface de rede Gigabit Ethernet 116 MB/s
Disco rígido SATA 2 300 MB/s
Interface gráfica high-end 4.2 GB/s
capítulo 5 • 123
Para Stallings (2002) os dispositivos podem ser classificados de acordo com
sua finalidade e como interage com o usuário e outros dispositivos. Assim temos:
9. Voltados para a comunicação com o usuário: são dispositivos adequa-
dos para a comunicação com o usuário. Exemplo: teclado, mouse, mo-
nitor, impressora, caixas de som, etc.
10. Voltadosparaacomunicaçãocommáquina:sãodispositivosadequados
para a comunicação com dispositivos eletrônicos. Exemplo: disco rígido,
fita magnética, CD-ROMs, controladores, etc.
11. Voltadosparaacomunicaçãocomdispositivosremotos:sãodisposi-
tivos adequados para a comunicação remota. Exemplo: placa de rede,
modem, etc.
124 • capítulo 5
vos e o sistema operacional. Normalmente o controlador em um computador
é uma placa de circuito impresso inserida em um determinado slot da placa
mãe. De modo geral, o controlador pode ser entendido como um processador,
que possui alguns registradores, dedicados a gerenciar as complexas funções
necessárias para o acesso aos periféricos de entrada e saída. Cada dispositivo
necessita de um controlador diferente, isto porque o controlador tem que co-
nhecer como o dispositivo funciona para poder efetuar o seu controle.
O controle é feito através de diversas funções como escrever dados, ler da-
dos, executar comandos, ler status, etc. Para tanto, a comunicação entre a UCP
e o controlador é feita através de um conjunto de registradores: registrador de
dado, registrador de status e registrador de comando.
Memória
UCP Principal
Figura 86 – Controladores.
Fonte: Machado e Maia (2007).
capítulo 5 • 125
A utilização do DMA permite, entre outras coisas, que seja liberada a UCP durante o ope-
ração de busca de dados nos dispositivos de blocos. Sem o DMA a UCP teria que exe-
cutar loops para a transferência do bloco para a memória principal. A UPC apenas inicia
a operação de Entrada e saída informando o endereço inicial na memória e a quantidade
de bytes a ser transferido. Desta forma, várias controladoras possuem suporte a DMA,
principalmente as controladoras de dispositivos de bloco (SILBERSCHATZ et al., 2004).
CONEXÃO
Aprofunde seus conhecimentos sobre Gerência de Entrada e Saída:
<http://www.devmedia.com.br/como-funcionam-os-dispositivos-de-entrada-e-sai-
da/28275>.
126 • capítulo 5
Processos de Aplicação
data nível de usuário
control nível de núcleo
API Entrada/Saída
data
control
data
control
IRQ
Gerenciador
Device Driver
Interrupção
SOFTWARE control
hardware IRQ data/control
Controlador Controlador Controlador
Interrupção Dispositivo DMA
IRQ
IRQ
data/control
Dispositivos
5.3.1 Drivers
capítulo 5 • 127
Outro fator a ser considerado com relação aos drivers é o alto grau de de-
pendência do sistema operacional e o restante do kernel do sistema em que
será instalado. A implementação dos drivers, leva em consideração o sistema
operacional, para que as corretas instruções de acesso ao dispositivo estejam
presentes no driver.
O alto grau de dependência entre os driver e o restante do kernel do sistema
fazia com que em sistemas mais antigos, ao ser instalado um novo driver, o kernel
tinha que ser recompilado e em seguida, reinicializado o sistema. Com a moder-
nização dos sistemas operacionais, não há mais a necessidade de reinicializar
o sistema após uma instalação, pois os drivers são carregados dinamicamente.
Processo
Subsistema de E/S
128 • capítulo 5
terminado hardware está com mau funcionamento, o sistema operacional si-
nalizado no gerenciador de dispositivo. Verificando esta sinalização, é possível
efetuar as devidas correções.
capítulo 5 • 129
saída, como também permitir uma maior flexibilidade do sistema. Isto é feito
através da abstração de uma camada para outra, ou seja, uma camada de baixo
nível oferece rotinas simples de comunicação com sua camada superior. Dessa
forma, a camada superior não necessita conhecer toda a complexidade da cama-
da inferior para efetuar a comunicação. As camadas mais próximas dos disposi-
tivos, normalmente são as que têm a tarefa de tratar os erros destes dispositivos.
Esta estratégia permite uma maior padronização e diminuição do núme-
ro de rotinas de acesso aos periféricos de entrada e saída. Assim o subsistema
de E/S oferece um conjunto de rotinas, chamadas de rotinas de entrada/saída,
pelo qual o usuário consegue acessar os dispositivos, independentes de ter que
conhecer toda sua complexidade. Dessa forma, o subsistema de E/S é conside-
rado independente de dispositivo.
Consequentemente, ao instalar um novo dispositivo no computador, não
há necessidade de alterar as rotinas dos programas do usuário.
130 • capítulo 5
Tempo
Processo
Processo A
Bloqueado
Chamada Retorno
Chamada Sincrona
Tempo
Processo A
Chamada Retorno
Processo B
Chamada Assincrona
capítulo 5 • 131
Estas características permitem que o usuário possa, através dos sistemas de
arquivo, estruturar os arquivos da melhor forma para que possam ser utiliza-
dos em cada aplicação. O sistema de arquivos deve prover mecanismos em que
os arquivos possam ser compartilhados entre usuários de uma forma segura e
controlada. O sistema de arquivo deve garantir a independência do dispositivo,
ou seja, o usuário pode efetuar operações com os arquivos através de nomes
simbólicos. Nomes simbólicos são nomes lógicos de fácil interpretação do usu-
ário, por exemplo, MeuDiretório:MeuArquivo.txt. Caso fosse necessário utilizar
nomes de dispositivos físicos para operações com arquivos, teria que especi-
ficar o lugar do dispositivo onde o arquivo deveria ser acessado, por exemplo,
disco 2, blocos 782-791. Além disso, os usuários devem poder criar, modificar,
eliminar arquivos e que o sistema de arquivo ofereça uma interface amigável e
consistente a realização de todas as tarefas citadas anteriormente. Deitel et al.
(2005) destaca ainda a importância do sistema de arquivo fornecer mecanismo
que facilitem a criação de cópias de segurança e recuperação que permitam ao
usuário a recuperar quaisquer dados danificados ou perdidos.
CONEXÃO
Leia mais sobre Sistema de Arquivos em:
<http://pt.kioskea.net/contents/612-o-sistema-de-arquivos>.
132 • capítulo 5
Tanto a gravação quanto a leitura deve ser feita de forma que o usuário não te-
nha que conhecer os detalhes de como o disco rígido trabalha realmente. Isto é
feito através de uma visão lógica uniforme fornecida pelo sistema operacional
para o armazenamento de informações.
Quando um arquivo é criado por um programa, ele recebe um nome, com-
posto por uma cadeia de caracteres. Através do nome o arquivo pode ser acessa-
do pelo programa que o criou ou por outros programas. Tanenbaum e Woodhyll
(1999) afirma que dependendo do sistema operacional há regras diferentes
para os nomes dos arquivos, mas todos os sistemas operacionais aceitam como
nomes válidos de arquivos, sequências de caracteres com oito letras. Sistemas
mais modernos permitem até 255 caracteres para nomes de arquivos. Outro
ponto a ser observado é com relação a nomes escritos com letras maiúsculas e no-
mes escritos com letras minúsculas. No sistema Windows, por exemplo, o arquivo
com nome SISTEMA_OPERACIONAL.DOCX é a mesma coisa que sistema_operacio-
nal.docx e Sistema_Operacional.DocX. Já para o UNIX, os nomes de arquivos SISTE-
MA_OPERACIONAL.DOCX, sistema_operacional.docx e Sistema_Operacional.DocX
são arquivos distintos. Em geral, os sistemas operacionais permitem nomes de ar-
quivos com duas ou mais partes separadas por um ponto. A parte após o ponto
é chamada de extensão. A extensão tem como finalidade informar algo sobre
o arquivo ou uma convenção definida para ele. Por exemplo, um arquivo com
o nome noticia.txt, a extensão .txt, tem como convecção indicar que o arqui-
vo provavelmente contém um texto. A tabela a seguir exibe algumas extensões
mais comuns para arquivos.
EXTENSÃO SIGNIFICADO
file.back Arquivo de cópia de segurança
capítulo 5 • 133
EXTENSÃO SIGNIFICADO
Documento do Word Wide Web em linguagem de marcação de
file.jpg
hipertexto (hypertex markup language – HTML)
134 • capítulo 5
A figura abaixo exibe as telas, no Windows 7, com os principais atributos de
um arquivo. Estas telas podem ser acessadas clicando com o botão direito do
mouse sobre um arquivo e escolhendo a opção “Propriedade”.
capítulo 5 • 135
• Renomear: permite que um arquivo seja renomeado.
• Listar: permite exibir ou imprimir o conteúdo de um arquivo.
• Fechar: impedir que novas referências sejam feitas a um arquivo até que
o mesmo seja reaberto.
• Destruir: elimina o arquivo do armazenamento secundário.
Deitel et al. (2005) descreve as operações que podem ser feitas para a mani-
pulação do conjunto de dados contidos em um arquivo. Estas operações são:
• Ler: a memória de um processo recebe uma cópia dos dados contidos em
um arquivo.
• Escrever: os dados contidos na memória de um processo são copiados
para um arquivo.
• Atualizar: permite alterar os dados contidos em um arquivo.
• Inserir: permite inserir dados em um arquivo.
• Apagar: permite remover dados de um arquivo.
136 • capítulo 5
1 Byte 1 Registro
capítulo 5 • 137
lógica surgiu a abordagem mostrada na figura 93 (c). Esta estrutura é conhecida
como diretório estrutudados em árvore. Nesta estrutura os usuários podem criar
quantos diretórios forem necessários permitindo que possam agrupar seus ar-
quivos de forma lógica.
Diretório-raiz Diretório-raiz
Diretório
Diretório-raiz A B C de usuário A B C
A A B C A A B C C C A B B B C C
Arquivos
B C C
Subdiretórios
de usuário C C C C
Figura 93 – Três projetos de sistemas de arquivos. (a)Diretório de nível único (ou plana).
(b) Diretório em dois níveis. (c) Diretório em árvore.
Fonte: Tanenbaum e Woodhyll (1999).
Segundo Deitel et al. (2005), um diretório é um arquivo onde são armazenados os no-
mes e as localizações referentes a outros arquivos.
138 • capítulo 5
5.6.1 Alocação Contígua
00
Tabela de diretório 01
nome bytes blocos início 02
foto1.jpg 10417 3 7 03
04
relat.pdf 28211 7 13
05
instruc.txt 6214 2 20 06
sinfonia.mp3 19116 5 5 07
08
blocos lógicos com 4096 bytes 09
10
11
12
13
14
15
bloco em uso
16
bloco livre 17
18
19
20
21
22
23
24
25
26
27
28
29
capítulo 5 • 139
5.6.2 Alocação Encadeada
A alocação encadeada permite que os blocos sejam alocados de forma não con-
tígua. Os blocos de um arquivo podem estar armazenados em locais diferentes
no disco rígido. O diretório contém um ponteiro para o primeiro bloco do ar-
quivo, este bloco, por sua vez, aponta para o próximo, e assim sucessivamente
o método de alocação encadeada resolve boa parte dos problemas encontra-
dos na alocação contígua. O problema neste tipo de alocação, está no fato dos
blocos dos arquivos estarem espalhados pelo disco rígido, há um aumento no
tempo de acesso destes arquivos.
00
Tabela de diretório 01
nome bytes blocos início 02
foto1.jpg 10417 3 7 03
04
relat.pdf 28211 7 13 05
instruc.txt 6214 2 20 06
sinfonia.mp3 6214 5 5 07
08
blocos lógicos com 4096 bytes 09
10
11
12
13
14
15
bloco em uso 16
bloco livre 17
18
19
20
21
22
23
24
25
26
27
28
29
140 • capítulo 5
5.6.3 Alocação indexada
meta-dados
13
16
bloco em uso 17
19
bloco livre 22
ponteiros
10
de dados
12
null
null
null
capítulo 5 • 141
5.7 Gerência de espaços livres
Início
(a) Mapa de bits (b) Lista encadeada (c) Tabela de blocos livres
142 • capítulo 5
5.8 Proteção de acesso
ATIVIDADE
1. De acordo com o material, qual é a forma que o sistema operacional acessa os disposi-
tivos de entrada e saída?
REFLEXÃO
Neste capítulo estudamos os principais componentes de hardware e software de entrada e
saída. Vimos como o sistema operacional tem a difícil tarefa de gerenciar a complexidade dos
diversos tipos de dispositivos de entrada e saída que podem variar em função, velocidade, etc.
capítulo 5 • 143
Fomos além, e compreendemos como são feitas as comunicações entre estes dispositivos e o
sistema operacional, através das controladoras, drives, etc. Por fim estudamos os principais as-
pectos envolvidos no gerenciamento de arquivos e diretórios. A compreensão das dificuldades
do sistema de gerenciamento de dispositivos de entrada e saída como também do sistema de
gerenciamento de arquivos é de grande relevância para um melhor entendimento das soluções
providas para um sistema operacional.
Não pare os seus estudos, mantenha-se sempre lendo e pesquisando sobre os diversos
temas relacionados aos sistemas operacionais. Esperamos que todos estes conhecimentos
adquiridos sejam um diferencial em sua vida profissional. Desejamos a você um grande su-
cesso!
LEITURA
Para você avançar mais o seu nível de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste capítulo, consulte as sugestões de links abaixo:
Capítulos 11 e 12 do livro
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacio-
nais. 6ª ed. Rio de Janeiro: LTC - Livros Técnicos Editora S.A., 2004.
REFERÊNCIAS BIBLIOGRÁFICAS
CARPINELLI, J.D. Computer Systems Organization and Architecture. Boston, MA: Addison-
-Wsley, 2001.
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3ª ed. São Paulo,
Editora Prentice-Hall, 2005.
144 • capítulo 5
MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponível em:
<http://dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-livro.pdf>. Acesso em: set.
2014.
EXERCÍCIO RESOLVIDO
Capítulo 1
1. De acordo com o material, qual das opções abaixo pode ser classificada como sistema
operacional?
a) Android e MS-Excel.
b) Windows e Internet Explorer.
c) Linux e Windows.
d) Android e MS-Word.
e) Linux e Broffice.
Dos programas acima citados, os que são considerados sistemas operacionais são: An-
droid, Windows e Linux. Assim, a opção correta é a C.
capítulo 5 • 145
3. Para que uma aplicação possa utilizar os serviços disponíveis pelo Kernel deve efetuar a
comunicação com o Kernel por meio de:
a) Device Drivers
b) Batch
c) Scripting
d) System Calls
e) Shell
A resposta certa é a D. O System Calls é um intermediário entre as aplicações do usuário
e o Kernel.
Capítulo 2
1. O processo é composto por três partes, entre elas o contexto de hardware. Das opções
abaixo, qual opção que faz parte do contexto de hardware?
a) Endereço de memória
b) Registrador PC
c) PID
d) Privilégio
e) Tempo de processador
A resposta correta é a B. Das opções acima, apenas o Registrador PC faz parte do
contexto de hardware.
2. O processo é composto por três partes, entre elas o contexto de software. Das opções
abaixo, qual opção que faz parte do contexto de software?
a) Registrador SP
b) Registrador PC
c) PID
d) Endereço de memória
e) Registrador de status
A resposta correta é a C. Das opções acima, apenas o PID faz parte do contexto de
software.
3. Por que os processos I/O-Bound ficam no estado “Em Espera” durante grande parte do
146 • capítulo 5
seu ciclo de vida
Porque os processos I/O-Bound estão mais ligados aos dispositivos de entrada e saída,
cujo acesso são mais lentos que outros componentes do sistema
Capítulo 3
Capítulo 4
capítulo 5 • 147
Capítulo 5
1. De acordo com o material, qual é a forma que o sistema operacional acessa os disposi-
tivos de entrada e saída?
O sistema operacional não acessa diretamente os dispositivos de entrada e saída. O
acesso aos diapositivos é feito através de uma controladora.
148 • capítulo 5