Você está na página 1de 148

SISTEMAS OPERACIONAIS

autor do original

RICARDO BALIEIRO

1 edio
SESES
rio de janeiro 2015

Conselho editorial fernando fukuda, simone markenson, jeferson ferreira fagundes


Autor do original ricardo balieiro
Projeto editorial roberto paes
Coordenao de produo rodrigo azevedo de oliveira
Projeto grfico paulo vitor bastos
Diagramao fabrico
Reviso lingustica aderbal torres bezerra
Imagem de capa nome do autor shutterstock

Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida
por quaisquer meios (eletrnico ou mecnico, incluindo fotocpia e gravao) ou arquivada em
qualquer sistema ou banco de dados sem permisso escrita da Editora. Copyright seses, 2015.

Dados Internacionais de Catalogao na Publicao (cip)


B186s

Balieiro, Ricardo

Sistemas operacionais / Ricardo Balieiro.

Rio de Janeiro : SESES, 2015.

144 p. : il.

ISBN 978-85-5548-085-0

1.

Sistemas multiprogramveis. 2. Gerenciamento do processador.

3. Gerenciamento de memria. 4. Gerenciamento de dispositivos de entrada


e sada.I. SESES. II. Estcio.
CDD 005.43

Diretoria de Ensino Fbrica de Conhecimento


Rua do Bispo, 83, bloco F, Campus Joo Ucha
Rio Comprido Rio de Janeiro rj cep 20261-063

Sumrio
Prefcio 7

1. Introduo Sistemas Operacionais

10

Conceitos Fundamentais de Sistemas Operacionais


11
Evoluo Histrica dos Sistemas Operacionais
15
Classificao de Sistemas Operacionais
20
Interrupes 27
Conceitos de concorrncia
28
Estruturas dos Sistemas Operacionais.
29

2. Processos 36
Conceito de Processo
36
Estados de um processo
45
Threads 47
Comunicao entre Processos
49
Sincronizao entre Processos.
52

3. Gerncia de Processador

64

Fundamentos 64
Critrios 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)
Escalonamento circular (Round Robin)
Escalonamento por Prioridade
Escalonamento por Mltiplas filas com realimentao
Clculo estimado de tempo de resposta.

4. Gerncia de Memria
Funes
Estruturas de memria
Espao de Endereamento Fsico e Lgico
Estratgias de alocao
Memria Virtual.

5. Gerncia de Entrada e Sada

71
72
77
84
86

92
92
94
96
97
111

120

Introduo 121
Componentes de hardware de ENTRADA E SADA
122
Componentes de Software de ENTRADA E SADA
126
Sistema de Arquivos
131
Conceitos de Arquivos e Diretrios
132
Mtodos alocao
138
Gerncia de espaos livres
142
Proteo de acesso
143

Prefcio
Prezados(as) alunos(as)
No podemos imaginar hoje o mundo sem o computador. Da mesma forma,
no podemos imaginar o computador sem o sistema operacional. Ligamos o
computador e o sistema operacional entra em cena, permitindo que acessemos
nossos programas e arquivos para os mais variados fins, para o trabalho, a diverso, se relacionar atravs das redes sociais, internet, etc. Os sistemas operacionais nos oferecem uma maneira fcil de efetuarmos nossas tarefas atravs de
suas interfaces grficas e atraentes. Mas nem sempre foi assim. Houve um tempo em que os computadores eram configurados atravs do prprio hardware.
importante que tenhamos uma viso detalhada dos mecanismos envolvidos em um sistema operacional moderno para que possamos utiliz-lo melhor
e de forma mais eficiente. Conhecer sua evoluo como tambm todos os problemas enfrentados e solues adotadas, permite que possamos avanar mais
na criao de novos sistemas sem ser barrados pelos problemas j conhecidos.
Aprender sobre sistemas operacionais ajuda-nos a entendermos como so
gerenciados os nossos arquivos, diretrios, processador, memria, perifricos
etc., e assim, conseguirmos um maior desempenho do sistema. Estudar como
os sistemas operacionais controlam e buscam as informaes to rapidamente,
como controla acesso, sincronizao entre diversos processos em execuo,
permite que tenhamos slidos conceitos, que podemos utilizar em diversas reas de desenvolvimento e gerenciamento de sistemas.
Diante de todos os aspectos acima descritos, acreditamos que com o estudo
atencioso do material aqui presente, voc com certeza ser um profissional em
destaque no mercado de trabalho!
Bons estudos e sucesso!

1
Introduo Sistemas
Operacionais

1 Introduo Sistemas Operacionais


Para podermos aprofundar em todos os aspectos envolvidos em um sistema operacional, necessitamos criar uma base slida de conhecimentos bsicos que sero
primordiais para a sequncia dos prximos captulos. Diante disto, estudaremos a
evoluo e os diversos tipos de sistemas operacionais, como tambm suas principais funes e estrutura.

OBJETIVOS
Conhecer os conceitos fundamentais contidos nos sistemas operacionais.
Estudar os aspectos que impulsionaram a evoluo dos sistemas operacionais.
Discutir sobre os diversos tipos de sistemas operacionais atuais.

REFLEXO
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

captulo 1

1.1 Conceitos Fundamentais de Sistemas Operacionais


A tecnologia tem avanado muito rapidamente em todas as reas do conhecimento e novos equipamentos so lanados a todo o momento para os mais variados fins. Exemplo disso, alm dos computadores, so os tablets, smartphone,
smartwatch, vdeo games, TVs e a nossa porta os google-glass.
Independente do tipo de equipamento, formato ou tamanho, todos tm um
ponto em comum, necessitam de um sistema operacional para funcionarem.

Figura 1 Sistemas operacionais em diversos equipamentos.

Disponivel em : <www.extremetech.com>

Figura 2 Smartwatch e Google-Glass.

captulo 1

11

1.1.1 Definio
Segundo Silberschatz et al. (2004), um sistema operacional um programa que
efetua o gerenciamento dos componentes fsicos do computador (hardware),
como tambm uma base para os programas aplicativos. Alm disso, atua como
intermedirio entre o usurio e o hardware do computador.
Existem muitos tipos de sistemas operacionais, cujo aspecto varia de acordo o tipo de funes e hardware ao qual ser utilizado. Se observarmos os tablets, smartphone, smartwatch teremos um sistema operacional projetado para
facilitar a interface do usurio com os programas a serem executados. Nos
desktops (computadores pessoais) esta otimizao so voltadas para aplicaes
comerciais, jogos, etc. Em ambientes coorporativos, onde a utilizao de computadores de grande porte so mais requisitados, os sistemas operacionais tm
um projeto mais voltado para a otimizao de hardware. Na indstria, cujos
equipamentos necessitam de alta preciso e confiabilidade, utilizam-se sistemas operacionais em tempo real que permitem a resposta a um evento ser feito
em um espao de tempo determinado.
1.1.2 Objetivo
A funo do sistema operacional permitir uma interface homem mquina
mais amigvel com o usurio, isto porque encapsula as complexas rotinas de
acesso a recursos de hardware, tais como, interface de programao e gerenciamento de recursos.
Tarefas simples como salvar um pequeno texto, sem o sistema operacional
seria algo que demandaria um grande esforo e extensos conhecimentos da arquitetura interna do computador. Esta pequena tarefa necessitaria as seguintes etapas simplificadas:
1. Localizar os dados do arquivo na memria.
1. Obter o nome do arquivo e local de gravao.
2. Validar os dados do item 2.
3. Posicionar o cabeote de leitura e gravao no cilindro correto.
4. Posicionar o cabeote de leitura e gravao na trilha correta.
5. Posicionar o cabeote de leitura e gravao no setor correto.
6. Salvar o arquivo.

12

captulo 1

Trilha
Setor

Cabea de
leitura e grav.

Prato
Faces

Figura 3 Disco Rgido.

Cilindro

De acordo com Tanenbaum e Woodhyll (1999) e Silberschatz et al.


(2004), os sistemas operacionais podem ser conceituados de duas formas:
topdown e bottom-up.
No modo topdown (de-cima-a-baixo) que o modo de viso do usurio, o
sistema operacional um software que permite a interao entre o hardware e
os programas aplicativos. Assim para o usurio, o sistema operacional fornece:
Acesso ao sistema.
Possibilidade de criar e gerenciar arquivos e diretrios.
Ambiente para execuo de programas.
Acesso aos dispositivos de entrada e sada.
Acesso ao contedo de arquivos.
Deteco de erros.
J no modo bottom-up (de-baixo-a-cima), considerado um gerenciador
de recursos. Isto porque controla a utilizao dos recursos de hardware pelas

captulo 1

13

aplicaes como tambm quais e quando as aplicaes podem ser executadas.


Podemos citar como recursos:
Tempo de CPU.
Espao em memria.
Espao em disco.
Acesso aos dispositivos de comunicao.
Bibliotecas de software.
Para que isso fique mais claro, podemos analisar o sistema operacional dividindo-o em quatro componentes: usurios, programas aplicativos, sistema
operacional e o hardware.
Usurio
1

Usurio
2

Usurio
3

...

Usurio
n

Compilador

Browser

Editor
de Texto

...

Sistema
de Banco
de Dados

Sistema Operacional
Computador
Hardware

Figura 4 Sistema computacional.

Fonte: Oliveira et al. (2010).


Ns usurios utilizamos os programas aplicativos (editor de texto, planilhas
eletrnicas, navegador web, etc) para diversas tarefas, tanto para trabalho como
para lazer. Os aplicativos por sua vez dependem dos recursos de hardware para
executar suas funes. O hardware a parte mais bsica dos componentes, sendo composto pela unidade central de processamento (CPU - Central Processing
Unit), memrias (RAM e ROM), dispositivos perifricos (teclado, monitor, mouse, impressora, etc.) e unidades de armazenamento (disco rgido).

14

captulo 1

ATENO
O sistema operacional considerado por muitas pessoas como sendo um programa que fica
executando o tempo todo no computador, enquanto o restante considerado como programas aplicativos (TANENBAUM; WOODHYLL, 1999).

Neste ponto entra o sistema operacional fornecendo um ambiente de integrao que possibilite a execuo dos programas e o controle e coordenao
da utilizao dos recursos de hardware pelos aplicativos. Silberschatz et al.
(2004) considera o sistema operacional como uma alocador de recursos. de
responsabilidade do sistema operacional resolver conflitos na utilizao destes recursos. Por exemplo, imagine trs computadores em rede e os usurios
destes computadores resolvem mandar ao mesmo tempo um texto para uma
impressora compartilhada na rede. Qual texto o sistema operacional deve imprimir primeiro? Imprimir parte do texto do usurio 1, em seguida, parte do
usurio 2 e assim por diante? Como o sistema operacional resolve este conflito
de alocao de recursos? A soluo adotada neste caso , primeiramente o sistema operacional armazenar os arquivos enviados em uma fila de impresso
no disco rgido. Em seguida, imprime o primeiro arquivo da fila e em seguida o
prximo at no haver mais nenhum para impresso.
Este um pequeno exemplo do que acontece a todo o momento em um sistema operacional, que procurar gerenciar a utilizao dos recursos da forma mais
eficiente possvel, procurar minimizar as falhas, efetuar controle de acesso para
que os usurios possam acessar apenas os recursos que lhes foram autorizados,
entre outros. Em resumo, os objetivos fundamentais dos sistemas operacionais
so executar os aplicativos dos usurios e facilitar a resoluo de seus problemas.

1.2 Evoluo Histrica dos Sistemas Operacionais


Para estudarmos a evoluo histrica dos sistemas operacionais devemos estudar a evoluo dos computadores, isto porque os dois esto diretamente
ligados. Segundo Machado e Maia (2007) a mquina de clculos de equaes
polinomiais conhecida como Mquina Analtica (Analytical Engine) inventada
pelo matemtico ingls Charles Babbage em 1822 o que mais se assemelha a
um computador atual. Isto porque possua os conceitos de unidade central de
processamento, memria, unidade de controle e dispositivos de entrada/sada.

captulo 1

15

Figura 5 Charles Babbage - Mquina Analtica.

ATENO
A Mquina Analtica de Charles Babbage no possua sistema operacional, apenas as sequencias de instrues executadas pela Mquina Analtica que era de responsabilidade
daquela considerada a primeira programadora da histria, Augusta Ada Byron discpula de
Babbage (SILBERSCHATZ et al., 2004).

1.2.1 Dcada de 1940: vlvulas e painis com plugs


Durante a segunda guerra mundial houve um esforo muito grande no desenvolvimento de mquinas que pudessem agilizar os procedimentos manuais efetuados na rea militar, principalmente para clculos balsticos. Assim, em 1943
comeou a ser desenvolvido o ENIAC (Electronic Numerical Integrator Analyzer
and Computer Computador Integrador Numrico Eletrnico), primeiro computador eletrnico de grande porte idealizado pelos cientistas norte-americanos John Eckert e John Mauchly, da Electronic Control Company.

16

captulo 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, conhecida como Arquitetura von Neumann, foi idealizado por um dos consultores
do projeto ENIAC, o professor John von Neumann. Segundo a arquitetura von
Neumann, uma mquina digital (computador) teria os seguintes componentes:
1. Memria: capaz de armazenar em um mesmo espao dados e instrues dos programas;
2. Unidade de processamento (CPU Central Processing Unit): responsvel
por executar as instrues dos programas armazenados na memria;
3. Unidade de controle (CU Control Unit): responsvel pela interpretao
das instrues de programa, como tambm, controlar a sequncia de
tempo das atividades necessrias para sua execuo;
4. Unidade aritmtica e lgica (ALU Arithmetical and Logical Unit): responsvel pela execuo das operaes aritmticas (somas, subtraes,
etc.) e lgicas (comparaes, AND, OR, etc.) contidas nas instrues
dos programas;
5. Registradores: pequenas reas de memria localizada na CPU para armazenamento temporrio de dados dos programas que esto sendo
executados, resultados de instrues, estado interno da CPU, etc.
6. Dispositivos de entrada e sada: responsvel por traduzir os dados inseridos pelo usurio no computador (ex.: teclado, cartes perfurados,
fitas ou discos magnticas etc.) para a memria como tambm traduzir
da memria para um formato externo (ex.: fitas ou discos magnticos,
telas de vdeo, etc.)

captulo 1

17

Neste perodo no havia ainda os conceitos de sistema operacionais, desta


forma, era responsabilidade do usurio operar, programar e efetuar a manuteno do computador durante o perodo que o equipamento ficava a sua disposio. A programao, composta basicamente por clculos numricos, era
feita diretamente nos painis do computador.
1.2.2 Dcada de 1950: transistores e sistemas batch
Na dcada de 1950 surgiram os transstores que permitiram uma grande diminuio do tamanho dos computadores, que anteriormente eram feitos a vlvula,
o que proporcionou um aumento do poder de processamento dos equipamentos. Grandes empresas e corporaes comearam a adquirir computadores,
conhecidos como Mainframes. Os Mainframes permitiram que houvesse uma
separao entre os operadores, programadores e tcnicos de manuteno.
A programao, feita atravs de cartes perfurados, eram entregues ao operador do computador para que fossem processados. Os programas, tambm
denominados Jobs, eram lidos por uma leitora e gravados em uma fita de entrada. O computador ento lia a fita e executava um programa de cada vez. O
resultado do processamento era ento gravado numa fita de sada. Esta tcnica,
onde so processados um conjunto de programas, ficou conhecido como processamento batch.
Em 1953 os usurios do computador IBM 701, do Centro de Pesquisas da
General Motors, desenvolveram o primeiro sistema operacional, chamado de
Monitor. O Monitor, chamado assim pela sua simplicidade, tinha como objetivo automatizar as tarefas manuais executadas na poca.
Neste perodo surgiram as primeiras linguagens de programao de alto nvel, tais como FORTRAM, ALGOL E COBOL. Houve ento um grande avano no
desenvolvimento e manuteno dos programas que no mais tinham uma relao direta com o hardware dos computadores. Consequentemente, os sistemas
operacionais evoluram para atender as demandas das linguagens de programao e assim facilitar o trabalho de codificar, executar e depurar os programas.
1.2.3 Dcada de 1960 - 1980: circuitos integrados e multiprogramao
Com o surgimento dos circuitos integrados os computadores tiveram uma reduo de custo de aquisio o que proporcionou sua viabilizao nas empresas.

18

captulo 1

Vrias inovaes foram implementadas nos sistemas operacionais, tais como


multiprogramao, multiprocessamento, time-sharing e memria virtual.
A dcada de 1970 foi marcada com a miniaturizao dos componentes
(chips) baseadas nas tecnologias de Integrao em Larga Escala (Lage Scale Integration LSI) e a Integrao em Muito Larga Escala (Very Lage Scale Integration
VLSI), o surgimento das primeiras redes de computadores, alm do desenvolvimento de novas linguagens de programao de alto nvel.
Na dcada de 1980 os fabricantes de computadores passam a produzir microcomputadores utilizando microprocessadores. A IBM ento cria a filosofica
de computadores pessoais o que impulsionou a evoluo dos sistemas operacionais. Os microcomputadores da poca possuam baixa capacidade de armazenamento e as verses iniciais dos sistemas operacionais eram monousurio/monotarefa. Os sistemas operacionais evoluram para monousurio/multitarefa com a
incorporao de discos rgidos e outros perifricos nos microcomputadores.
Em meados da dcada de 1980 crescem as redes de computadores pessoais
utilizando sistemas operacionais para rede e sistemas operacionais distribudos. Os sistemas operacionais para rede permitem que os usurios se conectem
a mquinas remotas e utilizem recursos compartilhados. O usurio tem plena
conscincia da existncia de vrios computadores conectados. J no sistema
operacional distribudo os usurios no tm conscincia onde esto armazenados seus arquivos ou onde esto sendo executados seus programas. Apesar
do sistema operacional distribudo ser composto de mltiplos computadores
conectados, as operaes so executadas de tal forma que o usurio tem impresso de estar trabalhando um nico computador.
1.2.4 Dcada de 1990 - 2000: Windows e Linux
A rede mundial de computadores, a Internet, surge na dcada de 1990 e com a
decorrncia de sua rpida evoluo, fora os sistemas operacionais a oferecerem suporte ao protocolo TCP/IP utilizado na Internet. Nesta mesma dcada os
sistemas operacionais como o Windows da Microsoft e o Unix, passam a adotar
as interfaces grficas.
Surge o Linux em 1991 atravs do desenvolvimento do finlands Linus Torvalds e de trabalhos colaborativos de diversos programadores. A forma colaborativa e os avanos da Internet possibilitaram que outros softwares abertos, como o
j citado sistema operacional Linux, o banco de dados MySQL, o servidores web

captulo 1

19

Apache entre outros, pudessem ser desenvolvidos e distribudos sem custos aos
seus usurios. Para Machado e Maia (2007) a dcada de 2000 aponta para uma
mudana radical no desenvolvimento de computadores frente as exigncias cada
vez maiores de equipamentos mais eficientes e com maior poder de processamento. Os sistemas operacionais voltados para as novas arquiteturas de processadores 64 bits, so dotados de interfaces usurio-mquina que exploram cada
vez mais imagens, sons e linguagens naturais para proporcionar ao usurio uma
interatividade com o computador mais intuitiva, natural e simples.

CONEXO
Para entender melhor as diferenas 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 comparao entre as 10 principais diferenas entre o Windows e o Linux. Leia e confira!

1.3 Classificao de Sistemas Operacionais


Com a evoluo dos computadores, houve a necessidade da evoluo dos
sistemas operacionais para suportar os novos recursos de hardware e das aplicaes por ele suportado. Neste sentido, os sistemas operacionais podem ser
classificados conforme o seu processamento, tarefas, usurios e interface.

Tipos de Sistemas
Operacionais
(Monotarefas)
Tipos de Sistemas
Operacionais

Sistemas
Multiprogramveis
(Multitarefas)
Sistemas com
Mltiplos
Processadores

Figura 7 Tipos de sistemas operacionais.

20

captulo 1

1.3.1 Sistema Monoprogramveis/Monotarefas


Os sistemas operacionais monoprogramveis foram os primeiros sistemas a serem utilizados. Este tipo de sistema operacional tem a caracterstica de permitir a execuo de um nico programa por vez.
Executa

Espera

Executa

Espera

Monotarefa

Figura 8 Sistemas Monoprogramveis/Monotarefa.

Assim o processador, memria e os perifricos do computador ficam dedicados


exclusivamente para um nico programa em execuo. Os sistemas operacionais
monoprogramveis tambm so conhecidos como sistemas monotarefas. Alm de
executar um programa por vez, os recursos do sistema so alocados para uma tarefa por vez. Nesse sentido quando o programa est esperando a entrada de um dado
pelo usurio, o processador fica parado, sem qualquer tipo de processamento.
Programa/Tarefa

UCP
Memria

E/S

Figura 9 Sistemas Monoprogramveis/Monotarefa.

Fonte: Machado e Maia (2007).


Os sistemas operacionais monoprogramveis/monotarefa surgiram para
serem utilizados nos primeiros computadores, os Mainframes e posteriormente aos computadores pessoais utilizados por um usurio por vez. O MS_DOS,
sistema operacional muito utilizado nas dcadas de 1980 e 1990 um exemplo
de sistemas operacionais monoprogramveis/monotarefa. Por no compartilhar recursos, como processador, memria e dispositivos de entrada/sada, este
tipo de sistema operacional de simples implementao.
captulo 1

21

1.3.2 Sistema Multiprogramveis/Multitarefa


Os sistemas operacionais multiprogramveis/multitarefa tm como caractersticas permitir o compartilhamento dos recursos do computador com vrios usurios e aplicaes.
Programa A

Executa

Espera

Executa

Espera

Programa B

Espera

Executa

Espera

Executa

Multitarefa
Figura 10 Sistemas multiprogramveis/multitarefa.

Para que isso acontea, os programas so carregados em memria e a utilizao do processador efetuado por apenas um programa, ficando os demais enfileirados, aguardando a sua vez. Neste ambiente cada programa (processo) recebe
um tempo para a utilizao do processador. No final do tempo, um novo programa passa a utilizar o processador. Para o usurio final a impresso de que vrios
programas esto sendo executados simultaneamente. Este tipo de alternncia de
processos denominado de concorrncia. Este acesso concorrente aos recursos disponvel gerenciado pelo sistema operacional de forma ordenada e protegida.

Programa/Tarefa

Programa/Tarefa

UCP
Memria

E/S

Programa/Tarefa

Figura 11 Sistemas multiprogramveis/multitarefa.

Fonte: Machado e Maia (2007).

22

captulo 1

Programa/Tarefa

A implementao dos sistemas operacionais multiprogramveis so mais


complexas, mas apresentam uma maior eficincia que os monoprogramveis e
uma sensvel reduo de custo em funo da possibilidade de compartilhar os
recursos disponveis de hardware entre diferentes aplicaes.

CONEXO
Leia um pouco mais sobre Sistemas multiprogramveis/multitarefa em: <http://prezi.com/
atwpl2cicalv/sistemas-multiprogramaveismultitarefa/>.

1.3.3 Classificao de Processamento


De acordo como as aplicaes so gerenciadas, os sistemas multiprogramveis podem ser classificados como: Batch, sistemas de tempo compartilhado
ou sistema de tempo real.

Sistemas Batch
Sistemas
Monoprogramveis
(Monotarefas)

Sistemas de Tempo
Compartilhado
Sistemas de Tempo
Real

Figura 12 Classificao de sistemas multiprogramveis.

1.3.3.1 Sistemas Operacionais Batch (lote)


Os primeiros sistemas multiprogramveis foram os Sistemas Batch. Neste sistema, a programao era feita com cartes perfurados. Os cartes eram lidos e
armazenados em disco ou fita, que em seguida eram utilizados para carregar
os dados para processamento. Uma vez executados, o resultado do processamento era armazenado em disco ou fita de sada. Apesar de apresentarem um
tempo de resposta muito longos eram considerados altamente eficientes.

captulo 1

23

1.3.3.2 Sistemas operacionais de tempo compartilhado (time-sharing)


Os sistemas operacionais de tempo compartilhado (time-sharing) so sistemas
onde o tempo do processador dividido em pequenas partes (time-slice) permitindo a cada programa utilizar uma destas partes para a sua execuo.
O controle do sistema operacional feito em um computador central. Os
usurios interagem com o computador central atravs de comandos digitados
em terminais compostos por teclado, monitor e mouse. Grande parte das atuais
aplicaes comerciais processada em sistemas de tempo compartilhado.
1.3.3.3 Sistemas de tempo real
Nos sistemas de tempo real (real-time) o tempo do processador distribuio de
acordo com a prioridade de cada aplicao. Devido natureza dos sistemas de
tempo real, cujas aplicaes so de controle de processo, a resposta na execuo
de uma tarefa deve estar dentro de limites rgidos de tempo. O conceito de tempo
compartilhado no aplicado neste tipo de sistema. Assim o sistema operacional
deve garantir a disponibilidade de todos os recursos necessrios para execuo
de um programa at que este termine ou que surja um de maior prioridade. O
sistema operacional no define as prioridades de execuo de um programa, esta
definio feita pela prpria aplicao. Para Machado e Maia (2007) o sistema
de tempo real empregado em aplicaes de controle e monitoramento de processos onde o tempo de processamento fator crtico, como em casos de usinas
termoeltricas ou nucleares, refinarias de petrleo, trfego areo, etc.
1.3.4 Sistemas com mltiplos processadores
Os sistemas com mltiplos processadores tm como caracterstica possuir
mais de um processador interligado e trabalhando em conjunto. Os processadores podem estar num mesmo computador ou espalhados fisicamente
em uma rede de computadores. Dessa forma diversos programas podem ser
executados simultaneamente, ou um programa pode ser dividido em partes e
executados em processadores diferentes numa mesma mquina ou em vrias.
Devido a sua capacidade de ampliar consideravelmente o poder de processamento a medida que novos processadores so adicionados, este tipo de sistema
muito empregado em aplicaes de processamento de imagens, simulaes,
prospeco de petrleo, processamento cientfico entre outros.

24

captulo 1

No desenvolvimento de sistemas operacionais com mltiplos processadores de vital importncia que se conhea a forma de comunicao entre os
processadores, o grau de compartilhamento da memria principal e dos dispositivos de entrada e sada. Isto porque, estes fatores definem a classificao dos
sistemas em: Fortemente acoplados e Fracamente acoplados.
Sistemas
com Mltiplos
Processadores
Sistemas
Fortemente
Acoplados

Sistemas
Simtricos

Sistemas
Fracamente
Acoplados

Sistemas
Assimtricos

Sistemas
Operacionais
de Rede

Sistemas
Operacioanis
Distribudos

Figura 13 Tipos de sistemas com mltiplos processadores.

1.3.4.1 Sistemas fortemente acoplados


Os sistemas fortemente acoplados, conhecidos tambm como multiprocessadores, tm como caractersticas possuir vrios processadores compartilhando
uma nica memria fsica e dispositivos de entrada e sada e apenas um sistema operacional efetuando o gerenciamento. Segundo Silberschatz et al. (2004)
os sistemas fortemente acoplados podem ser divididos em Multiprocessamento Simtrico (SMP Symmetric Multiprocessing) e Multiprocessamento Assimtrico (NUMA Non-Uniform Memory Access). Os sistemas multiprocessamento simtrico os processadores compartilham o mesmo tempo de memria.
No multiprocessamento assimtrico, o tempo de acesso memria pode variar
dependendo da localizao fsica dos processadores em relao memria.

captulo 1

25

Memria

UCP

UCP

E/S

E/S

Figura 14 Sistema fortemente acoplados.

Fonte: Machado e Maia (2007).


1.3.4.2 Sistemas fracamente acoplados
Os sistemas fracamente acoplados, conhecidos tambm como multicompudadores, conectam vrios sistemas computacionais (computadores) atravs de
linhas de comunicao. Os sistemas computacionais funcionam de forma independente, assim cada qual tem sua prpria UCP, memria, dispositivos de
entrada e sada e sistema operacional.

Link de Comunicao
UCP

Memria

UCP

E/S

Memria

E/S

Figura 15 Sistemas fracamente acoplados.

Fonte: Machado e Maia (2007).


Levando em considera o grau de integrao dos computadores da rede, os sistemas fracamente acoplados podem ser classificados como sistemas operacionais de rede e sistemas distribudos. Nos Sistemas Operacionais de Rede (SOR)
os recursos de um computador, tais como diretrios, impressora, servios, etc.
podem ser compartilhados com outro computador da rede. Neste tipo de sistema
o usurio tem pleno conhecimento dos computadores da rede, quais recursos e
servios que esto disponveis em cada um. No sistema distribudo os recursos
e servios individuais disponveis em cada computador e tratado com um nico conjunto. Assim o usurio final tem a sensao de estar trabalhando em um

26

captulo 1

nico sistema centralizado e no em uma rede de computadores. Entre diversas


vantagens oferecidas pelos Sistemas distribudos destaca-se o balanceamento de
carga, muitas vezes denominado de clusters. O balanceamento de carga permite
que quando um programa aceito para execuo, o sistema escolhe o computador com menor carga de processamento para execut-lo.

1.4 Interrupes
Quando um programa entra em execuo, suas instrues so executadas em
sequncia pelo processador. Pode ocorrer situaes que force o processador
lanar algum evento que cause o desvio da sequncia original de execuo do
programa. Estes eventos so conhecidos como interrupes ou excees.
Um evento gerado pelo processador quando este recebe um sinal de algum dispositivo de hardware informando uma mudana de estado em algum
dispositivo, como por exemplo, a concluso de uma entrada\sada em disco ou
da execuo de instrues do prprio programa.
A Figura 16 mostra um diagrama do mecanismo de interrupo. O programa composto de inmeras instrues que devem ser executadas em uma determinada ordem pelo processador. Aps executar cada instruo, o processador verifica se houve alguma ocorrncia de interrupo. Caso tenha ocorrido,
o processador suspende a execuo da prxima instruo e desvia para uma
rotina pr-definida para tratar o evento, chamada de rotina de tratamento de interrupo. Antes de desviar para a rotina, os dados dos registradores so salvos
permitindo que aps o tratamento da interrupo, o processador possa retornar ao cdigo que estava sendo executado quando recebeu a interrupo.
Programa
do Usurio

Sequncia
de Execuo
Desvio para a
rotina de tratamento
da interrupo

Retorno a
sequncia normal
de execuo
Figura 16 Mecanismos de interrupo e exceo.

captulo 1

27

Exemplo de um tratamento de interrupo:


est sendo executado um determinado programa pelo processador;
um pen-drive conectado a porta USB;
a placa de dispositivo de entrada e sada envia uma interrupo para o
processador;
o processador para a execuo do programa e desvia para um tratamento
de interrupo;
a rotina de tratamento executada, atualizando as estruturas do sistema
operacional e exibindo uma mensagem ao usurio informando da conexo do pen-drive;
finalizando a rotina de tratamento da interrupo o processador retorna
execuo do programa interrompido anteriormente.
A utilizao de interrupo permitiu o desenvolvimento de concorrncia
nos computadores.

1.5 Conceitos de concorrncia


Os primeiros sistemas operacionais, os monoprogramveis, apresentavam
uma arquitetura que limitava muito seu desempenho. Isto acontecia devido
utilizao pouco eficiente dos recursos computacionais como processadores,
memria, dispositivos de entrada e sada etc. Pouco eficiente no sentido de serem recursos de alto custo e ficarem ociosos em grande parte do tempo. O processador, por exemplo, ficava ocioso enquanto era efetuada a entrada de dados, por
exemplo, a digitao do usurio (Figura 17). A memria, que permitia carregar apenas um programa por vez, no era ocupada totalmente, permanecendo grandes
reas livres sem utilizao.

Executa

Espera

Executa

Espera

Monotarefa
Figura 17 Sistemas Monoprogramvel

Com o surgimento dos sistemas operacionais multiprogramveis, foi possvel


carregar vrios programas na memria, concorrendo pela utilizao do processa-

28

captulo 1

dor. Assim quando um programa solicita uma operao de entrada/sada, que


normalmente so muito lentas comparadas com a velocidade de processamento
de uma instruo, outro programa assume o uso do processador (Figura 18).
O controle do acesso concorrente a diversos recursos implementado por
mecanismos de proteo do sistema operacional para garantir a integridade
dos programas e do prprio sistema operacional. Assim, podemos visualizar o
sistema operacional como sendo um conjunto de rotinas que so executadas
de forma concorrente e ordenada.

Programa A

Executa

Espera

Executa

Espera

Programa B

Espera

Executa

Espera

Executa

Multitarefa

Figura 18 Sistemas Multiprogramvel.

1.6 Estruturas dos Sistemas Operacionais.


Os sistemas operacionais so diferentes dos demais programas que so executados sequencialmente, tendo incio, meio e fim. A execuo das rotinas est
baseada em eventos relacionados s tarefas internas do sistema operacional e
do hardware. Dessa forma o sistema operacional atravs de um conjunto de rotinas, oferece servios aos usurios do sistema, aos programas que esto sendo
executados e a outras rotinas do prprio sistema. O conjunto destas rotinas
chamado Kernel (crebro) ou ncleo do sistema.
As principais funes do Kernel so:
tratamento de interrupes e excees;
criao e eliminao de processos e threads;
sincronizao e comunicao entre processos e threads;
escalonamento e controle dos processos e threads;
gerncia de memria;
gerncia de sistema de arquivos;
gerncia de dispositivos de E/S;
suporte a redes locais e distribudas;
contabilizao do uso do sistema;
auditoria e segurana do sistema.
captulo 1

29

1.6.1 Modos de Acesso


Existe uma preocupao muito grande dos desenvolvedores de sistemas operacionais quanto ao acesso direto ao Kernel por usurio e seus aplicativos. Uma
instruo indevida executada diretamente pode corromper o kernel comprometendo todo o sistema. Instrues deste tipo so denominadas instrues
privilegiadas. A execuo de uma destas instrues est vinculada aos chamamos de modos de acesso. Os modos de acesso so:
Modo usurio: no permite que o usurio ou aplicaes executem instrues privilegiadas.
Modo Kernel: permite acesso total as instrues privilegiadas, tanto pelo
usurio quanto pelas aplicaes.
1.6.2 System Calls
Para que o usurio ou alguma aplicao possa usufruir de algum servio fornecido pelo Kernel deve acess-lo atravs de um mecanismo conhecido como
System Calls. O System Calls um intermedirio entre as aplicaes do usurio
e o sistema operacional. Usurios ou aplicaes acessam os servios do Kernel
chamando uma das suas rotinas atravs de uma System Call. O servio processado, com bases nos parmetros definidos na System Call, e retorna aplicao
os resultados obtidos.

ATIVIDADE
1. De acordo com o material, qual das opes 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.
2. Quais as principais funes do kernel?

30

captulo 1

3. Para que uma aplicao possa utilizar os servios disponveis pelo Kernel deve efetuar a
comunicao com o Kernel por meio de:
a) Device Drivers
b) Batch
c) Scripting
d) System Calls
e) Shell

REFLEXO
Neste captulo aprendemos sobre as principais caractersticas e funes do sistema operacional, o que nos auxilia a utiliz-lo de forma mais eficiente. Em seguida vimos a evoluo
dos sistemas monoprogramveis para os multiprogramveis o que nos permitiu estudar as
diversas formas como o computador tem sido controlado ao longo dos anos. Vimos tambm os diversos tipos de sistemas operacionais, como os sistemas de tempo compartilhado, tempo real e com mltiplos processadores. Conceitos muito importantes quando h
necessidade de escolher um sistema operacional para uma aplicao especfica. Fechamos estudando conceitos como interrupes e concorrncias, que so bases para muitos
programas e no somente para o sistema operacional.

LEITURA
Para voc avanar mais o seu nvel de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste captulo, consulte as sugestes de links abaixo:
MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponvel em: <http://
dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-cap01.pdf>. Acesso em: set. 2014.

captulo 1

31

REFERNCIAS BIBLIOGRFICAS
CARL. Emopulse Smile smartwatch available on pre-order. Disponvel em: <http://www.kitguru.net/channel/generaltech/carl/emopulse-smile-smartwatch-available-on-pre-order/>.
Acesso em: set. 2014.
COMPUTER HISTORY ARCHIVES PROJECT. Disponvel em: <https://sites.google.com/
site/worldcyber/>. Acesso em: set. 2014.
DEITEL, H. M.; DEITEL, P. J.; CHOFFNES, D. R. Sistemas Operacionais. 3 ed. So Paulo,
Editora Prentice-Hall, 2005.
FERREIRA, A. L. Milhares de Imagens - Mude o fundo de tela do seu PC, Tablet ou Smartphone. Disponvel em: http://visualdicas.blogspot.com.br/2013/09/milhares-de-imagens-mude-o-fundo-de.html. Acesso em: set. 2014.
HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de Computadores: uma abordagem quantitativa. 3 ed. Rio de Janeiro: Campus, 2003.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4 ed. Rio de Janeiro:
LTC - Livros Tcnicos Editora S.A., 2007.
MATSUMOTO. Entenda o que formatao de disco rgido. Disponvel em: http://www.socialbits.com.br/2012/11/entenda-o-que-e-formatacao-de-disco-rigido/. Acesso em: set.
2014.
MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponvel em: <http://
dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-livro.pdf>. Acesso em: set. 2014.
MEGATECH BRASIL. Disponvel em: <http://megatechbrasil.com/tecnologia/google-glass-ja-a-venda-nos-eua/>. Acesso em: set. 2014.
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4 ed. Porto
Alegre : Editora Bookman, 2010.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacionais. 6
ed. Rio de Janeiro: LTC - Livros Tcnicos Editora S.A., 2004.
SWADE, D. The Babbage Engine. Disponvel em: <http://www.computerhistory.org/babbage/>. Acesso em: set. 2014.

32

captulo 1

TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementao. 2


ed Porto Alegre: Bookman, 1999.

NO PRXIMO CAPTULO
No captulo seguinte, estudaremos sobre os conceitos relacionados aos processos. Voc
aprofundar seus conhecimentos de como feito o compartilhamento de um espao de
endereamento (memria) por vrios fluxos de execuo. Sero apresentados os principais
conceitos relacionados aos processos.

captulo 1

33

34

captulo 1

2
Processos

2 Processos
Como um sistema operacional consegue executar vrios programas ao mesmo
tempo?
A resposta para esta pergunta est nos processos. Veremos que os programas
podem ser divididos em vrios processos e que estes processos tem a necessidade de compartilhar diversos recursos, tais como processador, memria,
dispositivos de entrada e sada, etc. Vamos neste captulo estudar o que so 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 espao


de endereamento (memria) por vrios fluxos de execuo.

Discutir sobre os problemas envolvidos no compartilhamento de recursos entre os processos e as solues encontradas para resolv-los.

REFLEXO
Voc se lembra dos sistemas operacionais multiprogramveis? Caso no se lembre, faa
uma breve consulta e anote os principais conceitos.

2.1 Conceito de Processo


Como vimos anteriormente os sistemas operacionais multiprogramveis permitem carregar mais de um programa em memria e executa-los concorrentemente. Segundo Silberschatz et al. (2004) um processo um programa em
execuo. Assim h uma diferenciao entre programas e processos. O programa algo esttico enquanto os processos so dinmicos. Os programas so formados por sequncias de comandos e instrues e no tem a possibilidade de
alterar o seu estado. Os processos por sua vez, so quem executam os comandos
dos programas, e medida que os comandos so executados o processo pode
sofrer alteraes. Quando abrimos um navegador da Internet (ex.: Internet Ex-

36

captulo 2

plorer) um processo associado a ele. Se abrirmos um segundo Internet Explorer, um novo processo ser criado, totalmente independente do primeiro. Ou
seja, podemos ter vrios processos relacionados a um nico programa e gerenciados individualmente pelo sistema operacional.

Figura 19 Gerenciador de tarefas Windows 8.0.

O Gerenciador de Tarefas do Windows 8.0 permite que possamos visualizar


os processos que esto em execuo no computador. Notem que temos o grupo de Aplicativos e o grupo Processos em segundo plano. Os processos ligados a
execuo de um programa so listados no grupo Aplicativo. Existem muitos
processos que no tm ligao direta com algum programa e sim com o sistema
operacional. Estes processos, tais como gerenciador de memria, gerenciador
de rede, antivrus etc., so executados em segundo plano.

CONEXO
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 artigo: <http://www.tecmundo.com.br/memoria/3197-o-que-sao-processos-de-um-sistema-operacional-e-por-que-e-importante-saber.htm>.

captulo 2

37

ATENO
O termo Processo foi utilizado pela primeira vez na dcada de 60 pelos projetistas do sistema MULTICS. Desde esta poca, houve um aumento em sua definio, tais como tarefa,
programa em execuo, o esprito animado de um procedimento, etc. (DEITEL et al., 2005).

2.1.1 Pseudoparalelismo
Quando estamos fazendo um determinado trabalho no computador, como por
exemplo, digitando um trabalho da faculdade, podemos executar um programa para escutar nossas msicas enquanto efetuamos a digitao, abrir o browser da Internet para efetuar alguma pesquisa e rodar um programa para tratamento de imagens.
A impresso que temos e de que todos estes programas esto sendo executados em paralelo, ou seja, todos ao mesmo tempo, mas no bem assim que
as coisas acontecem.
Neste cenrio, para que todos os programas sejam executados, o sistema
operacional associa um processo a cada programa em execuo, assim, teremos quatro processos sendo executados. Cada processo tem diversas caractersticas prprias, tais como, seus estados atuais, recursos necessrios execuo de suas tarefas, valores de registradores, variveis etc.
Como h quatro processos em execuo, os quatro concorrem pela utilizao da CPU, forando o seu compartilhamento. O compartilhamento da CPU
feito atravs de uma rpida alternncia entre um processo e outro, executando
cada um num rpido intervalo de tempo, podendo chegar a dezenas ou centenas de milissegundos. Esta alternncia conhecida como pseudoparalelismo.
importante destacar que o paralelismo real acontece em hardware dos sistemas
multiprocessadores, ou seja, possuem duas ou mais CPU que compartilham a
mesma memria fsica.
Na Figura 20 temos o detalhamento deste processo de alternncia com quatro processos em memria. A Figura 20(a) ilustra os quatro programas na memria associados a quatro processos. Cada processo executado independente
uns dos outros, cada um executando o seu prprio fluxo de controle (Figura
20(b)). A Figura 20(c) exibe o progresso de execuo de cada um dos processos.
Podemos notar que apenas um processo foi executado em um determinado
instante. No tempo 1 a CPU executa as instrues do processo A. No tempo

38

captulo 2

Um contador de
programas
Quatro contadores
de programas

A
B
C
D

A B C D

Processo

2 o sistema operacional decide inicializar o processo B, mas antes, todos os


dados dos registradores do processador so salvos no processo A. Este ciclo
acontece para todos os processos enquanto estiverem em execuo. Este procedimento, efetuado pelo sistema operacional, de troca de processo por outro
chamado de mudana de contexto.

1 2 3 4 5 6 7
Tempo

Figura 20 (a) Multiprogramao de quatro programas. (b) Modelo conceitual de quatro processos sequenciais independentes. (c) S um programa est ativo em qualquer dados instante.
Fonte: Tanenbaum e Woodhyll (1999).

So grandes as vantagens de utilizao de processos pelo sistema operacional, tais como:


Simplicidade: um processo pode ser decomposto em vrios outros processos permitindo que se realizem vrias operaes independentes em
um sistema.
Velocidade: se um processo esta em espera, por exemplo, aguardando
alguma solicitao a um dispositivo de entrada e sada, este processo
substitudo por outro.
Segurana: cada processo pode estar associado a um determinado direito.
Em geral os processos podem ser classificados em trs classes:
Interativos (Foreground): so processos que necessitam de algum tipo de
interao com o usurio. Normalmente esta interao relativa a solicitaes de entrada e sada, feitas atravs de interface grfica, que exigem
do sistema operacional um tempo de resposta rpido. Exemplo: editor
de texto, planilhas eletrnicas, jogos, etc.
captulo 2

39

Batch (Backgound): so processos que realizam o processamento de dados de entrada produzindo um conjunto de dados de sada sem que haja
a interveno do usurio. Exemplo: backups, compiladores, programas
de clculo numrico, etc.
Daemons: so processos carregados pelo sistema operacional durante
sua inicializao e permanece em execuo at que o sistema seja finalizado. Processos Daemons ficam em espera em segundo plano at que
seja requerido algum servio. Exemplo: gerenciamento de log do sistema, servios de e-mail, etc.
2.1.2 Blocos de controle de processos (PCBs)
O sistema operacional ao criar um processo, cria um bloco chamado Blocos de
controle de processos (PCBs), tambm conhecido como descritor de processo. O
bloco de controle de processo contm diversas informaes que auxiliam o seu
gerenciamento pelo sistema operacional. Entre estas informaes esto:
Nmero de Identificador de processo (PID Process Identification Number):
nmero pelo qual o processo identificado pelo sistema operacional.
Estado do processo: estado atual do processo (Pronto, Execuo, Em Espera, etc.).
Contador de programa: indica qual instruo do processo dever ser
executada.
Prioridade de escalonamento: indica qual a prioridade do processo na
escala de prioridade de execuo.
Credenciais: indica quais as permisses o processo possui.
2.1.3 Contexto
Na seo anterior vimos que um processo tem diversas caractersticas, entre
elas, o seu estado. O estado representa a situao atual do processo, ou seja,
os valores de suas variveis, as instrues que esta executando, os recursos em
uso. Conforme a execuo do processo avana, o seu estado se altera. O estado
de um processo em um determinado instante conhecido como contexto.
Um processo formado por trs partes: contexto de hardware, contexto de
software e espao de endereamento. Atravs destas trs partes um processo
guarde todas as informaes do programa em execuo.

40

captulo 2

Contexto de
Software

Espao de
Endereamento

Processo

Contexto de
Hardware

Figura 21 Estrutura do processo.

2.1.4 Contexto de Hardware


Em sistemas de tempo compartilhado (multiprogramados), no qual h um revezamento na utilizao do processador pelos processos, o contexto de hardware de suma importncia. Atravs do contexto de hardware, o sistema operacional capaz de efetuar a troca de um processo por outro no processador, esta
operao conhecida como troca de contexto.
A troca de contexto envolve os registradores do processador. Um processador possui vrios registradores entre os de usos gerais e os especficos, tais
como o Program Conter (PC), o Stack Pointer(SP) e o Registrador de Status
(PSW). Os registradores so utilizados para armazenar informaes enquanto
um processo esta em execuo.

Processo

Contexto de
Hardware

Figura 22 Contexto de hardware.

captulo 2

41

A troca de contexto segue a seguinte sequencia. Ao executar um processo


A, o seu contexto de hardware armazenado nos registradores do processador. Quando o sistema operacional decide trocar de processo, executar o processo B, primeiramente salva os dados dos registradores no contexto de hardware do processo A e em seguida disponibiliza a utilizao 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 Mudana de contexto.


Fonte: Machado e Maia (2007).

42

captulo 2

2.1.5 Contexto de software


Quando um processo criado, o sistema operacional especifica os limites e
caractersticas de recursos que o processo pode alocar. Estas informaes so
armazenadas no contexto de software e so relativas : quantidade mxima
de arquivos que o processo pode abrir simultaneamente, qual a prioridade de
execuo, tamanho do buffer utilizado em operaes de entrada e sada, etc. As
especificaes de limites de recursos permitidos a um processo alocar so definidos pelo administrador do sistema e armazenado num arquivo do sistema
operacional denominado arquivo de usurios. O sistema operacional consulta o
arquivo de usurios para prover as informaes do contexto de software.
As informaes do processo so divididas em trs grupos no contexto de
software: identificao, quotas e privilgios.
Identificao: quando um processo criado, por um usurio ou por outro processo, recebe do sistema operacional um nmero de identificao nica (PID Process Identification Number) e a identificao nica do
usurio (UID User Identification) referente ao usurio ou processo que o
criou. O sistema operacional e outros processos utilizam o PID para fazer
referncias aos processos em execuo.
Quotas: o limite de recursos que um processo pode alocar e definidos
em quotas. Um processo em execuo pode ter necessidade de mais recursos do que lhe foi estipulado. Esta situao de insuficincia de quota
pode causar a lentido na execuo do processo, sua interrupo ou nem
mesmo ser executado.
Privilgio: cada processo possui privilgios que lhe permite executar
aes a ele mesmo, como alterar seus limites de alocao de memria,
sua prioridade de execuo etc. Alm dele mesmo, o processo pode ter
privilgios de efetuar aes a outros processos e ao sistema operacional.

captulo 2

43

Contexto de
Software

Processo

Figura 24 - Contexto de software.

2.1.6 Espao de endereamento


Os processos so responsveis pela execuo das instrues de um programa.
Para tanto, as instrues e os dados do programa so carregados em uma rea
de memria pertencentes ao processo para serem executados. Esta rea de memria chamada de espao de endereamento.

Espao de
Endereamento

Figura 25 Espao de endereamento.

44

captulo 2

Processo

2.2 Estados de um processo


Os processos executados pelo processador normalmente possuem necessidades distintas de durao, importncia e comportamento. O sistema operacional tem a responsabilidade de gerenciar e estabelecer uma ordem de execuo
destes processos. Como visto anteriormente, no sistema multiprogramvel h
um padro de compartilhamento do processador entre os diversos processos
em execuo. Assim h uma troca constante de processos em execuo no processador o que faz com que o processo passe por estados distintos durante o seu
ciclo de vida. Conforme avana a execuo de um processo, o seu estado pode
ser alterado tanto por eventos gerados pelo prprio processo como pelo sistema operacional. Os estados possveis para um processo so:
Pronto: este estado indica que o processo aguarda para ser executado.
Como normalmente h vrios processos em estado de Pronto, primeiramente o sistema operacional efetua um enfileiramento destes processos (Figura 26). Em seguida utiliza um mecanismo denominado escalonamento com o objetivo de determinar a ordem e os critrios de uso do
processador pelos processos.
Em Execuo: este estado indica que o processo esta sendo executado
pelo processador. A troca de um processo por outro na utilizao do processador deve respeitar os critrios de escalonamento.
Em Espera: este estado indica que o processo esta aguardando por um
evento externo ou ser atendida alguma chamada ao sistema operacional.
Os processos neste estado so organizados em fila e assim que o evento
esperado ou o retorno da chamada ao sistema operacional acontece, o
processo transferido para o estado de pronto.

Processo 1

Processo 2

Processo 3

Figura 26 Fila de processos aguardando a execuo pelo processador.


Fonte: Oliveira et al. (2010).

captulo 2

45

2.2.1 Mudana de estado de um processo


De acordo com Silberschatz et al. (2004) h quatro mudanas de estado que podem ocorrer durante o seu ciclo de vida de um processo:
Novo Pronto: esta mudana de estado ocorre quando o processo admitido pelo sistema operacional e termina de ser carregado na memria, aguardando apenas a oportunidade de ser escolhido pelo escalonador para ser
executado.
Pronto Em Execuo: esta mudana ocorre quando o escalonador escolhe um processo na fila de pronto para ser executado.
Em Execuo Pronto: esta mudana 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 Execuo Em Espera: esta mudana ocorre quando o processo aguarda um evento ou necessite utilizar algum recurso que no esteja disponvel
no momento, por exemplo. Isto faz com que o processo libere o uso do processador e fique em estado de espera enquanto aguarda o evento ou a disponibilidade do recurso.
Em Espera Pronto: esta mudana ocorre quando o processo recebe o
evento esperado ou o recurso solicitado fica disponvel para uso. Consequentemente o processo volta para a fila de pronto a fim de aguardar ser
processado.
Em Execuo Terminado: esta mudana ocorre quando o processo finaliza
sua execuo ou quando acontece algum erro e o processo precisa ser abortado.
Interrupo
Processo
carregado
em memria
Novo

Selecionado
pelo
escalonador
Pronto

Ocorrncia do
evento ou
dado disponvel

Em Execuo

Em Espera

Figura 27 Diagrama de estados de um processo.


Fonte: Silberschatz et al. (2004).

46

captulo 2

Fim da
execuo

Aguardando um
evento ou
dado externo

Terminado

2.2.2 Classificao de processos


Os processos podem ser classificados de acordo com vrios critrios entre eles, em
funo de modo como utiliza o processador e os dispositivos de entrada e sada:
Processo CPU-Bound: so processos que utilizam de modo muito intenso
o processador durante o seu ciclo de vida. A maior parte do tempo os estados destes processos so Pronto ou Em Execuo.
Processo I/O-Bound: este tipo de processo est mais ligado aos dispositivos de entrada/sada 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 solicitaes feitas
aos dispositivos de entrada e sada.
Durante o ciclo de vida de um processo so realizadas entradas e sadas de
dados no processo. Estas entradas e sadas so feitas atravs de canais de comunicao disponibilizada pelo processo. O processo tem no mnimo dois canais
de comunicao associados a ele. Os canais permitem acesso de um processo a
outros processos, comunicao com o usurio, arquivos, etc.
Processo em foreground: so processos que mantm com o usurio uma
ligao direta enquanto esta sendo processado. Esta ligao do processo
com o usurio feita atravs dos canais de comunicao associados ao
teclado, mouse, monitor, etc.
Processos em background: so processos que no tem ligao direta com
o usurio enquanto esta sendo processado. Este tipo de processo muito
utilizado em processamentos do tipo batch.

2.3 Threads
Anteriormente estudamos que os processos possuem uma srie de caractersticas tais como vistos em contexto de software, de hardware, espao de endereamento, etc. Alm das caractersticas, h associado a um processo um fluxo
de execuo que conhecido como thread. Os primeiros sistemas operacionais
eram monothread, ou seja, cada processo tinha o seu espao de endereamento
individual e era associado a um nico fluxo de execuo (thread).

captulo 2

47

Contexto de
Software

Espao de
Endereamento

Thread 1

Contexto de
Hardware

Figura 28 Processo monothread.

Em sistemas operacionais multithreading, um nico processo pode estar


associado a vrios fluxos de execuo (threads). Como as threads existem no
interior do processo, todas compartilham o mesmo espao de endereamento
(cdigo e dados).

Contexto de
Software

Espao de
Endereamento

Thread 1

Thread 2

Thread 3

Contexto de
Hardware

Contexto de
Hardware

Contexto de
Hardware

Figura 29 Processo multithread.

Compartilham o mesmo espao de endereamento faz com que o gerenciamento de processos das aplicaes concorrentes fiquem mais eficientes devido a
drstica diminuio de tempo gasto com a criao, eliminao e troca de contextos
destes processos. A troca de um thread por outro dentro de um mesmo processo muito mais rpida do que a troca entre dois processos. Os threads compartilham uso do processador como se fossem processos separados. Assim os estados
dos threads seguem os mesmos princpios dos processos. Logo se uma thread esta

48

captulo 2

aguardando que um determinado recurso fique disponvel, seu estado passa de Em


Execuo para Em Espera, liberando o processador para outra thread.
Um exemplo de utilizao de threads pode ser dado atravs da execuo de
um vdeo com som em ingls e legendas em portugus. O programa de visualizao do vdeo pode criar um processo com trs linhas de execuo (trs threads). Sendo um thread para tratar a exibio da imagem (vdeo) um segundo thread para tratar o udio e o terceiro para tratar a legenda. O usurio final visualiza
a imagem, o som e legenda, tudo ao mesmo tempo, mas o processamento de
cada thread executado individualmente no processador.

CONEXO
Entenda como so criadas as threads em linguagem de programao.
<http://www.macoratti.net/14/07/c_gptwf.htm>.

2.4 Comunicao entre Processos


Nos dias atuais temos acesso a computadores com multiprocessadores, os
quais, a maioria dos programas levam em considerao em seu desenvolvimento, para obter melhor desempenho.
Muitos problemas solucionados por um programa no so executados sequencialmente, so divididos em vrias tarefas interdependentes que relacionam entre si a fim de atingir um objetivo comum. Os cdigos dos programas
so estruturados de tal forma que permitem serem executados concorrentemente atravs de mltiplos processos ou threads. Programas com estas caractersticas so chamados de aplicaes concorrentes.
Aplicaes concorrentes proporcionam um melhor desempenho mesmo
no havendo um paralelismo real na execuo dos processos ou threads. Onde
h o paralelismo real, em casos de sistemas com mltiplos processadores, as
aplicaes concorrentes melhora ainda mais estas vantagens.
Programas desenvolvidos para serem executados de modo sequencial, que
executam apenas um nico fluxo por vez, no se beneficiam das vantagens oferecidas por um sistema com mltiplos processadores. Programas como editores
de texto, navegadores web e jogos, caso fossem um programa sequencial, no teramos a alta interatividade que temos nestas aplicaes. Os editores de texto,
por exemplo, permitem a digitao enquanto efetuam a reviso ortogrfica. Os

captulo 2

49

navegadores web interagem com usurio atravs das pginas de Internet ao mesmo tempo em que tarefas de comunicao com a rede esto sendo executadas.
Os bancos de dados, essencial nas aplicaes atuais, principalmente aplicaes empresariais como Sistema integrado de gesto empresarial (SIGE ou
ERP Enterprise Resource Planning) so outro exemplo de aplicaes concorrentes. Um sistema ERP integra todos os dados e processo de uma organizao em
um nico sistema e estes dados so armazenados em um banco de dados. Caso
o banco de dados utilizado por um ERP fosse sequencial, atenderia um nico
usurio por vez. Logo se um usurio estivesse dando entrada de mercadoria no
estoque, todo o restante da empresa estaria parado, aguardando o trmino desta tarefa, tornando este tipo de sistema invivel para uma empresa.
Para que os processos concorrentes possam cooperar entre si, necessrio
que haja uma comunicao entre eles para troca e compartilhamento de informaes, alm de um sincronismo, efetuado pelos sistemas operacional para
que as atividades sejam executadas sem erros. Diversos mecanismos podem
ser utilizados para efetuar a comunicao entre os processos, como variveis
compartilhadas na memria principal, quanto memria compartilhada entre os processos. Quando a memria no compartilhada, os processos podem
trocar mensagens para compartilhar as informaes entre si.
Para ilustrar o uso de memria compartilhada e a eficincia dos programas
concorrentes em relao aos programas sequenciais, Oliveira et al. (2010) propem uma pequena tarefa de impresso de arquivo, que deve ser executada por
um programa. O programa deve ler um arquivo do disco rgido, efetuar a formatao adequada para imprimir e por fim, enviar para a impressora.
A figura 30 exibe as trs operaes feitas utilizando um programa sequencial. Neste caso utilizado apenas um processo.

Arquivo
.

Processo

Impressora
Fsica

Figura 30 - Acessando arquivo e impressora atravs de um programa sequencial.


Fonte: Oliveira et al. (2010).

A Figura 31 exibe a linha do tempo necessria para que o processo possa


efetuar a sequncia de passos para a realizao da tarefa:

50

captulo 2

4. A primeira coisa efetuada pelo processo enviar um comando de leitura


do arquivo para o disco rgido.
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 normalmente o buffer relativamente pequeno so necessrias vrias repeties das quatro etapas at que o arquivo seja totalmente impresso.
Disco
Processo
Impressora
1

Esperando
Executando
Enviando Dados

4
Tempo

Figura 31 Linha do tempo do programa sequencial.


Fonte: Oliveira et al. (2010)

A Figura 32 exibe a mesma tarefa sendo executada por um programa concorrente. Logo foi utilizado dois processos na execuo da tarefa: processo leitor e
processo impressor.
A funo do processo leitor ler o arquivo do disco rgido, efetuar a devida
formatao e colocar na varivel compartilhada. O processo impressor retira os
dados da varivel e envia para o buffer da impressora.
Arquivo

Processo
Leitor

Varivel

Processo
Impressor

Impressora
Fsica

Figura 32 Acessando arquivo e impressora atravs de um programa concorrente.


Fonte: Oliveira et al. (2010).

captulo 2

51

Atravs do grfico, podemos notar a utilizao simultnea do disco e da impressora. Dessa forma, o tempo de impresso ser bem menor o que torna o
programa concorrente mais eficiente que o programa sequencial.

Disco
Processo
Leitor

Processo
Impressor

Impressora

Esperando
Executando
Enviando Dados

Tempo

Figura 33 Linha do tempo do programa sequencial.


Fonte: Oliveira et al. (2010).

2.5 Sincronizao entre Processos.


Na seo anterior, vimos que as aplicaes concorrentes em sistemas operacionais multiprogramveis permitiram um grande avano e eficiente em relao
aos programas sequenciais. A eficincia decorre do trabalho cooperativo entre
os processos e do acesso compartilhado de recursos, como memria, dispositivos de entrada/sada e arquivos. Em muitos casos o acesso a compartilhado
pode gerar situaes de inconsistncia de informaes ou problemas intermitentes de difcil reproduo e soluo do mesmo. Estes problemas impulsionaram a criao de mecanismos nos sistemas operacionais a fim de ordenar a
execuo dos processos, chamados de sincronizao.

52

captulo 2

2.5.1 Problemas das condies de corrida e regio crtica


O problema de compartilhamento de recursos entre processos concorrentes fica
evidente com o exemplo a seguir, onde a ordem de execuo de dois processos interfere no resultado final, conhecido como condies de corrida (race conditions).
Utilizando o diagrama da Figura 34, tm-se dois processos que postam arquivos para impresso e o spooler (tabela), que recebe arquivos a serem impressos e ao finalizar a impresso, o arquivo retirado do spooler. Em um determinado momento, o Processo A e B decidem imprimir um arquivo ao mesmo
tempo. Os procedimentos que se seguem so:
1. Os dois processos consultam a varivel de Entrada do spooler para obter o
prximo slot livre e para postarem os arquivos para impresso figura 34 (a).
2. Os dois obtm o mesmo slot livre para impresso, o slot 10 (figura 34 (b)).
3. O processo A posta o arquivo Arq_A.doc para a impresso e incrementa a varivel de Entrada para 11 (figura 34 (c)).
4. No mesmo instante o processo B, posta o arquivo Arq_B.doc, sobrepondo o Arq_A.doc, e em seguida incrementa a varivel de Entrada
para 11 (figura 34 (d)).
5. CONCLUSO: o processo A nunca receber a impresso do arquivo
Arq_A.doc.
Arq_A.doc

Processo A
Prximo
Slot Livre

Spooler
Fila de Impresso
(slots)
7

Figura.png

Tarifa.xls

9 Apostila.pdf
10

Prximo
Slot Livre

Arq_A.doc

Processo A
Entrada

Prximo
Slot Livre

Prximo
Slot livre

Figura.png

Tarifa.xls

9 Apostila.pdf

10
Prximo
Slot Livre

10

10

Entrada
10

Prximo
Slot livre

Processo B

Processo A
Arq_B.doc
Arq_A.doc

Processo A
Prximo
Slot Livre

Arq_B.doc
Spooler
Fila de Impresso
(slots)
7

Figura.png

Tarifa.xls

9 Apostila.pdf
Prximo
Slot Livre

10

Spooler
Fila de Impresso
(slots)

10

10

Arq_A.doc

Processo B
Arq_B.doc

Arq_A.doc

Processo A
Entrada

Prximo
Slot Livre

Figura.png

Tarifa.xls

9 Apostila.pdf

11

Prximo
Slot livre

Spooler
Fila de Impresso
(slots)

10

Prximo
Slot Livre

Arq_B.doc

Entrada
11

Prximo
Slot livre

Processo B
Arq_B.doc

Figura 34 Condies de corrida.

captulo 2

53

A soluo para o problema de condies de corrida (race conditions) se inicia


pela identificao da parte do programa que gera disputa dos recursos compartilhados e da parte que no gera disputa. A parte que gera disputa conhecida
como regio crtica ou seo crtica e a que no gera disputa e conhecida como
cdigos reentrante ou cdigo pblico.
Uma vez identificado regio crtica, o prximo passo para a soluo do problema atender os seguintes aspectos:
Excluso mtua: garantir que apenas um processo por vez ter acesso
regio crtica.
Progresso: caso um processo deseja utilizar uma regio crtica que no est
em uso, outros processos no podem bloque-lo de utilizar a regio crtica.
Espera limitada: caso um processo deseja utilizar uma regio crtica, o mesmo no deve esperar indefinidamente para a utilizao da regio crtica.
A literatura oferece vrias solues para o problema da regio crtica e que
satisfazem os trs aspectos descritos anteriormente. A seguir so abordadas algumas destas solues.

ATENO
Uma das tarefas dos programadores testar o programa que esta sendo criado. Esta tarefa
no nada fcil quando o programa em teste contm condies de corrida. Esta condio
faz com que a maioria dos testes tenham bons resultados, mas, de tempos em tempos, algo
estranho e inexplicvel acontece (TANENBAUM; WOODHYLL, 1999).

2.5.2 Sincronismo por software


Esta soluo leva em considerao a utilizao apenas de software. A entrada da
regio crtica feita atravs de uma varivel de sincronismo busy (Figura 35). A
varivel busy incialmente contm o valor 0 (zero) o que indica que qualquer processo pode entrar na regio crtica. Um processo ao entrar na regio crtica, altera
busy para 1 impedido o acesso de outro processo a regio. Suponha que temos dois
processos, A e B, sendo executados concorrentemente e que desejam entrar na
regio crtica. O processo A l a varivel busy com valor 0 (linha 5), entra na regio

54

captulo 2

crtica e antes de mudar o valor de busy para 1 (linha 6), ocorreu uma interrupo que
passou o controle para o processo B. O processo B l busy igual a 0, entra na
regio crtica e altera busy para 1. Ocorre novamente a interrupo voltando a
executar o processo A. Neste momento, para o processo A o valor de busy
ainda 0, o que ocasiona tambm a sua entrada na regio crtica.

Figura 35 Sincronismo por software.


Fonte: Maziero (2014).

Abordagem de software apresenta uma propriedade denominada busy-waiting (espera ativa). Busy-wating ocorre quando um processo tem que aguardar em
um lao a sinalizao de um evento. Segundo Oliveira et al. (2010) a propriedade
Busy-wating aliado ao fato que a implementao de solues de software serem
altamente complexas, faz com que no sejam muito empregadas na prtica.
2.5.3 Sincronismo por Hardware
Em sistemas que utilizam um nico processador a soluo adotada desabilitar as interrupes. O processo ao entrar na regio crtica, desabilita todas as
interrupes e habilita ao sair. Dessa forma o processador no efetua a troca
de processo enquanto a interrupo estiver desabilitada. Este tipo de soluo
apresenta algumas restries:
Segurana: no uma soluo segura pelo fato do processo, por algum
motivo, no habilitar novamente as interrupes e assim no conseguir
ser finalizado.
Eficincia: a perda de eficincia esta relacionada aos perifricos que dependem das interrupes para serem atendidos imediatamente durante
a utilizao de regies crticas. Os perifricos somente sero atendidos
depois que o processo sair da regio crtica.
captulo 2

55

Limitao: desabilitar a interrupo depende de acesso privilegiado e


processos do usurio pode no ter esta permisso. Em mquinas onde
h vrios processadores executando simultaneamente, desabilitar as interrupes no funciona. Isto porque ao desabilitar a interrupo em um
processador, os demais continuaram funcionando. Desabilitando todas
interrupes em todos os processadores, ainda assim os processadores
estariam executando simultaneamente os processos.
2.5.4 Semforos
Em 1965 o matemtico holands E.W.Dijkstra sugeriu a utilizao de um mecanismo conhecido como semforo para o sincronismo entre processos. A proteo
da regio crtica tornou-se simples com a utilizao do semforo. Logo, os projetos de sistemas operacionais e aplicaes concorrentes passaram a adotar o mecanismo se semforo como principal forma de implementar excluso mtua e a
sincronizao condicional entre processos. Os semforos so classificados em:
binrio ou contadores. Semforos binrios s podem assumir valores 0 e 1, por
isso tambm so chamados de mutexes (mutual exclusion semaphores). J os semforos contadores permitem qualquer valor desde que sejam inteiros positivos.
O semforo composto por uma varivel do tipo inteiro que controlada
por duas instrues: Down e Up. Down e Up so instrues que garante uma nica ao atmica e indivisvel, ou seja, no podem ser interrompidas quando
estiverem em execuo.
O recurso compartilhado fica associado a um semforo que controla o acesso dos processos concorrentes ao recurso. O recurso estar disponvel para uso
caso a varivel semforo esteja maior que 0, caso contrrio, o recurso esta sendo utilizado por algum processo.
A instruo Down executada quando um processo deseja entrar em sua
regio crtica. Estando o valor da varivel semforo maior que 0, este valor
decrementado de 1 e a regio crtica liberado para uso do processo. Se em seguida, outro processo executar a instruo Down, ver que o valor da varivel 0,
no podendo assim acessar sua regio crtica, ficando ento na fila de estado de
espera. O processo que est na regio crtica, ao sair, executa a instruo Up que
incrementa o valor da varivel semforo, liberando o acesso do recurso. Caso
haja processos na fila de espera, associados ao recurso, um desses processos
ter seu estado alterado para pronto pelo sistema.

56

captulo 2

2.5.5 Monitores
O mecanismo de semforo muito importante para a implementao de excluso mtua, mas por no ser estruturado, pode ser difcil sua utilizao em um
programa. Este fato exige do desenvolvedor um cuidado redobrado na programao, teste e depurao para no causar problemas intermitentes, difcil de
reproduzir e solucionar. Em 1974 C.A.R Hoare props um mecanismo de sincronizao de alto nvel chamado Monitor. Os monitores oferecem as funcionalidades dos semforos, porm tem a caracterstica de ser estruturado, logo seu
cdigo mais legvel e consequentemente mais imune a bugs.
Formado por um mdulo, que encapsula as variveis e procedimentos, o
monitor diminui a complexidade da programao alm de implementar a excluso mtua entre os procedimentos de forma automtica. A excluso mtua
entre procedimentos significa que, em um determinado instante, apenas um
processo de cada vez tem a permisso de executar um dos procedimentos do
monitor. Caso outro processo chame qualquer um dos procedimentos, este ficar bloqueado, aguardando em um fila de entrada at que seja sua vez.
2.5.6 2.5.6 Troca de mensagens
Quando a memria no compartilhada, os processos trocam mensagens para
compartilhar informaes entre si. Esta situao pode ocorrer quando os processos esto executando em diferentes computadores. A troca de mensagens
feita utilizando um canal de comunicao entre os processos. O canal de comunicao pode ser um buffer ou um link de rede entre os computadores. Uma vez
o canal de comunicao estabelecido entre os processos, s mensagens podem
ser trocadas utilizando duas funes bsicas: Send e Receive.
O processo transmissor (origem) utiliza a funo Send(Receptor, Mensagem) para enviar mensagens (dados) para um processo receptor (destino). O
processo receptor recebe as mensagens enviadas atravs da funo Receive
(transmissor, mensagem). A mensagem s pode ser lida aps ter sido enviada.
Logo necessrio que haja um sincronismo entre os processos envolvidos na
troca das mensagens.

captulo 2

57

Processo A

Contexto de
Software

Processo B
Send(B, MSG)

Receive(A, MSG)

Contexto de
Software

msg
Espao de
Endereamento

Espao de
Endereamento

Thread 1

Thread 1

Canal de Comunicao
Contexto de
Hardware

Contexto de
Hardware

Figura 36 Transmisso de mensagem.

Para que a comunicao entre processos acontea, os processos necessitam


saber como se referir um ao outro. A forma como os processos se referenciam
caracteriza o tipo de comunicao entre eles podendo ser:
Comunicao direta: este tipo de comunicao exige que o processo que deseja enviar ou receber uma mensagem, deve explicitar o nome do processo
receptor ou transmissor da mensagem. O tipo de comunicao direta tem a
restrio de permitir a troca de mensagens somente entre dois processos.

Espao de
Endereamento

Processo A

Processo B

Contexto de
Software

Contexto de
Software

Thread 1

Contexto de
Hardware

Espao de
Endereamento

Thread 1

Contexto de
Hardware

Figura 37 Comunicao direta.

Comunicao indireta: neste tipo de comunicao, so utilizadas caixas


postais para o recebimento e envio de mensagens. O processo transmissor deposita mensagens na caixa postal que so retiradas pelo processo receptor. Neste tipo de comunicao pode haver vrias caixas postais
para a comunicao dos processos. Cada caixa recebe uma identificao

58

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

Espao de
Endereamento

Processo A

Processo B

Contexto de
Software

Contexto de
Software

Thread 1

Caixa
Postal

Espao de
Endereamento

Contexto de
Hardware

Thread 1

Contexto de
Hardware

Figura 38 Comunicao indireta.

ATIVIDADE
1. O processo composto por trs partes, entre elas o contexto de hardware. Das opes
abaixo, qual opo que faz parte do contexto de hardware?
f) Endereo de memria
g) Registrador PC
h) PID
i) Privilgio
j) Tempo de processador
2. O processo composto por trs partes, entre elas o contexto de software. Das opes
abaixo, qual opo que faz parte do contexto de software?
a) Registrador SP
b) Registrador PC
c) PID
d) Endereo de memria
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?

captulo 2

59

REFLEXO
Neste captulo estudamos como os programas so executados pelo processador atravs dos
processos. Posteriormente vimos como os processos so estruturados em contexto de hardware, software e espao de endereamento, permitindo um gerenciamento mais eficiente do
sistema operacional. Em seguida, discutimos as threads, comunicao e sincronizao entre
processos, conceitos que nos auxiliam entender melhor a multiprogramao. Sugerimos que
voc faa todos os exerccios propostos e pesquise outras fontes para aprofundar seus conhecimentos. Em caso de dvidas, retorne aos tpicos e faa a releitura com bastante ateno.

LEITURA
Para voc avanar mais o seu nvel de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste captulo, consulte as sugestes de links abaixo:
MACORATTI, J. C. VB.NET Trabalhando com Threads. Disponvel em: <http://www.macoratti.net/vbn_thd1.htm>. Acesso em: set. 2014.
MACORATTI, J. C. Trabalhando com MultiThreads no VB.NET. Disponvel em: <http://www.
macoratti.net/vbn_thrd.htm>. Acesso em: set. 2014.

REFERNCIAS BIBLIOGRFICAS
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3 ed. So Paulo,
Editora Prentice-Hall, 2005.
HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de Computadores: uma abordagem quantitativa. 3 ed. Rio de Janeiro: Campus, 2003.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4 ed. Rio de Janeiro:
LTC - Livros Tcnicos Editora S.A., 2007.
MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponvel em: <http://
dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-livro.pdf>. Acesso em: set. 2014.

60

captulo 2

OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4 ed. Porto


Alegre : Editora Bookman, 2010.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacionais. 6
ed. Rio de Janeiro: LTC - Livros Tcnicos Editora S.A., 2004.
TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementao. 2
ed Porto Alegre: Bookman, 1999.

NO PRXIMO CAPTULO
No captulo seguinte, estudaremos sobre os principais conceitos relacionados ao escalonamento de processos. Voc observar as diferenas entre os diversos tipos de escalonadores.
Sero apresentados como feito a avaliao de um escalonador.

captulo 2

61

3
Gerncia de
Processador

3 Gerncia de Processador
Vimos que os processos tm a necessidade de compartilhar diversos recursos
do sistema, principalmente o processador. Como o sistema operacional gerencia quando dois ou mais processos disputam o uso do processador? Quais
os mtodos utilizados para acesso ao processador, suas vantagens e desvantagens? Estas so perguntas que foram sendo solucionadas medida que os sistemas operacionais e o prprio hardware foram evoluindo. A importncia dada
forma como os processos so escalonados, para a utilizao do processador,
ser um dos principais temas de nossa discusso.

OBJETIVOS
Estudarmos os principais conceitos relacionados ao escalonamento de processos.
Observar as diferenas entre os diversos tipos de escalonadores.
Entender como feita a avaliao de um escalonador.

REFLEXO
Voc se lembra dos estados de um processo? Como os processos so classificados em funo
de modo como utilizam o processador e os dispositivos de entrada e sada? Seria interessante
voc procurar relembrar estes conceitos no captulo 2, pois ir ajud-lo a compreender melhor
a funo do gerenciamento do processador.

3.1 Fundamentos
Estudamos em captulos anteriores que em sistemas multiprogramveis podemos ter vrios processos em estado de Pronto indicando que esto aguardando para serem executados. Neste momento, o sistema operacional, atravs do
escalonador de processo (scheduler), deve decidir qual processo ser executado
primeiramente pelo processador. A tomada de deciso, feita pelo escalonador,
leva em considerao critrios de uso do processador pelos processos com base
nas polticas de escalonamento. A poltica de escalonamento a estrutura base
da gerncia do processador.

64

captulo 3

So funes bsicas da poltica de escalonamento:


Manter o processador ocupado por maior tempo possvel.
Efetuar o balanceamento de uso do processador entre processos.
Aplicaes crticas devem ser executadas prioritariamente.
Maximizar o throughput (nmero de processos finalizados em um dado
intervalo de tempo) do sistema.
Processos interativos devem ter tempos de resposta razoveis.
Uma vez definido qual processo deve ser executado, o sistema operacional
passa a execuo para o mdulo conhecido como Dispatcher (despachante). O
mdulo Dispatcher responsvel por efetuar a troca de contexto e dar o controle
do processador para o processo selecionado pelo escalonador. Esta operao
de troca de contexto gasta um determinado tempo que conhecido como latncia do dispatcher, ou seja, o tempo para interromper a execuo de um processo
para executar outro.
Estado de
Execuo

ento

lonam

Esca

Estado de
Espera

Estado de
Pronto

Figura 39 Escalonamento.
Fonte: Machado e Maia (2007)

3.1.1 Escalonamento No-Preemptivo e Preemptivo


Inicialmente, seria razovel pensar que a atividade de polticas de escalonamento para a troca de um processo em execuo, seria troc-lo pelo primeiro processo que est na fila de pronto. Mas a tomada de deciso do escalonador leva

captulo 3

65

em conta outros aspectos que to 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 execuo por outro, mudana de estado do processo.
4. O processo carregado na memria e fica com estado de Pronto.
5. O processo muda de estado Em Execuo para Pronto.
6. O processo muda de estado Em Execuo para Em Espera.
7. O processo muda de estado Em Espera para Pronto.
8. O processo muda de estado de Em Execuo para Terminado.
Interrupo
Processo
carregado
em memria
Novo

Selecionado
pelo
escalonador
Pronto

Ocorrncia do
evento ou
dado disponvel

Fim da
execuo
Em Execuo

Em Espera

Terminado

Aguardando um
evento ou
dado externo

Figura 40 Diagrama de estados de um processo.


Fonte: Silberschatz et al. (2004).

To logo o processo tenha mudado o seu estado, o escalonador pode interromper um processo em execuo para dar lugar a outro. Esta tarefa de troca
de processo pelo sistema operacional conhecida como preempo. Levando em
considerao a preempo, os escalonadores podem ser classificados como:
Escalonador No preempetivo: este tipo de escalonador foi um dos primeiros a serem utilizados em sistemas multiprogramveis. Permite que o processo seja executado do incio ao fim sem ser interrompido at ser finalizado. Escalonadores no-preemptivo mantm o processo em execuo 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. Esto
nesta situao os processos com mudanas de estados citados acima de
1 a 5. Escalonadores preemptivos permitiram que sistemas de tempo
real pudessem dar prioridade na execuo de processos crticos.

66

captulo 3

ATENO
Os sistemas operacionais foram criados para executar os programas dos usurios. Nesta tarefa so consumidos, indiretamente, valiosos e escassos recursos do sistema. Este consumo
denominado sobrecarga pelo fato dos recursos no estarem sendo utilizados diretamente
pelas aplicaes (DEITEL et al., 2005).

3.2 Critrios de Escalonamento


As caractersticas principais de uma poltica escalonamento variam de acordo
com o tipo de sistema operacional. Em sistemas de tempo real a principal caracterstica da poltica de escalonamento garantir a prioridade de execuo
a processos considerados crticos em relao aos demais. Esta poltica no se
aplica a sistemas de tempo compartilhado, pelo fato deste tipo de sistema priorizar, na poltica de escalonamento, que no haja starvation.
Starvation a situao onde um processo nunca consegue ter acesso a um
recurso compartilhado. A poltica nesta situao garantir que todos os processos tenham o mesmo tempo de uso do processador.
Para Machado e Maia (2007), independente do tipo de sistema operacional,
a poltica de escalonamento tem diversas funes bsicas, tais como:
Utilizao do processador: o ideal manter o processador ocupado o
maior tempo possvel. Uma faixa considerada ideal para ocupao do
processador e entre 30% a 90%. Abaixo de 30% indica que o processador
esta sendo pouco utilizado. Acima da faixa superior, 90%, deve se ter cuidado pelo fato de estar prxima do limite do processador. As polticas de
escalonamento procuram maximizar a utilizao do processador.
Throughput: indica o nmero de processos executados por unidade de tempo. Logo Throughput representa a produo do sistema e deve ser maximizado. Para longos processos, o valor de Throughput ser baixo. Para curtos o
valor de Throughput ser alto. As polticas de escalonamento procuram maximizar o Throughput.
Tempo de Processador: tempo em que um processo fica em execuo no
processador. Este tempo e influenciado apenas pelo cdigo da aplicao
e entrada de dados e no pelas polticas de escalonamento. As polticas
de escalonamento no tm efeito sobre este tempo.

captulo 3

67

Tempo de Espera: tempo total de espera, para ser executado, de um processo na fila de Pronto. As polticas de escalonamento procuram reduzir
ao mximo este tempo.
Tempo de Turnaround: indica o tempo total de vida de um processo, desde sua criao at o momento que encerrado. No clculo deste tempo esto os tempos gastos com alocao de memria, espera na fila de
pronto, interrupes de entrada e sada. As polticas de escalonamento
procuram reduzir ao mximo este tempo.
Tempo de resposta: indica o tempo gasto para produzir uma resposta a
uma solicitao de uma aplicao ou sistema. Este tempo est relacionado com a velocidade dos dispositivos de entrada e sadas. As polticas de
escalonamento procuram reduzir ao mximo este tempo.

CONEXO
Aprofunde seus conhecimentos sobre escalonamento:
<http://www.oficinadanet.com.br/post/12781-sistemas-operacionais-o-que-e-escalonamento-de-processos>.

3.3 Escalonamento primeiro a entrar primeiro a sair (FIFO First IN - First - OUT)
Os primeiros sistema monoprogramveis utilizavam o algoritmo de escalonamento no-preemptivo FIFO (First-In-First-Out) tambm conhecido como escalonamento FCFS (First-Come-First-Served). J na arquitetura de sistemas multiprogramveis o escalonamento FIFO se apresentou pouco eficiente. Assim
sendo, houve vrias mudanas na verso original para que o mesmo pudesse
ser usado, de forma parcial, em sistemas de tempo compartilhado.
O escalonamento FIFO se baseia em uma fila simples do processador. Aps
ser criado e receber o estado de Pronto, o processo entra na fila de pronto. O
escalonador sempre coloca o primeiro processo da fila para ser executado. A
liberao do processador pelo processo em execuo somente acontece caso o
processo mude seu estado para Em Espera, Terminado ou quando ocorrer
um erro na execuo.

68

captulo 3

Fila dos Processos no Estado de Pronto


Estado de
Criao

UCP

Estado de
Trmino

Estado de
Espera
Figura 41 Escalonamento FIFO.
Fonte: Machado e Maia (2007).

A vantagem do escalonamento FIFO que de fcil entendimento e implementao, alm do que nunca acontecer o fenmeno starvation, logo, todos os
processos da fila de pronto sero executados. A desvantagem com relao ao desempenho, o escalonamento FIFO tem grande sensibilidade ordem de chegada
dos processos para serem executados. Se os primeiros processos que estiverem
na fila forem processos com tempo de execuo muito grande, consequentemente teremos o Tempo Mdio de Espera e o Turnaround muito elevado. Este cenrio
poderia acontecer se incialmente chegasse fila processos do tipo CPU-Bound,
que fazem muito uso do processador (Ex.: programas grficos de alta resoluo).
Caso os primeiros processos forem de curta durao, o Tempo Mdio de Espera e o Turnaround sero pequenos. Podemos citar como processos de curta
durao, os processos I/O-Bound que fazem muito uso de dispositivos de entrada e sada e pouco do processador (Ex.: cpia de arquivos).
Dessa forma no h possibilidade de prever quando um processo entrar
em execuo. Por exemplo, se simularmos a ordem de chegada de trs processos para serem executados, com tempos distintos, iniciando pelo processo com
maior tempo, conforme a tabela e a figura a seguir, o clculo do tempo mdio
de espera ficaria (0+6+10)/3 = 5,33.

ORDEM DE CHEGADA

PROCESSO

TEMPO DE ESPERA

TEMPO DE EXECUO

P3

P2

P1

10

Tabela1 Tempo de espera.

captulo 3

69

Tempo na CPU

P3
P2
P1
6

10 12

Tempo

Figura 42 Escalonamento FIFO.

Simulando a ordem de chegada dos processos iniciando com os de menor


tempo, teremos o tempo mdio de espera (0+2+6)/ 3 = 2,66.

ORDEM DE CHEGADA

PROCESSO

TEMPO DE ESPERA

TEMPO DE EXECUO

P1

P2

P3

Tabela 2 Tempo de espera.

Tempo na CPU

P3
P2
P1
2
Figura 43 Escalonamento FIFO.

70

captulo 3

12

Tempo

3.4 Escalonamento por job mais curto primeiro


(SJF Shortest - Job - First)
Como o escalonador FIFO, o escalonador SJF (Shortest-Job-First) tambm conhecido como SPN (Shortest-Process-Next) foi inicialmente utilizado nos primeiros sistemas monoprogramveis, de escalonamento no-preemptivo.
O princpio de funcionamento do escalonamento SJF tambm se baseia em
uma fila de Pronto onde ficam os processos que aguardam por execuo. O escalonador, com base em conhecimento prvio do uso do processador e estimativa do tempo de execuo dos processos da fila, escolhe o processo com menor
tempo de execuo para ser o primeiro a ser executado. Se houver processos
com tempos de execuo iguais, ser utilizado o critrio de ordem de chegada,
o primeiro a chegar ser o primeiro a ser executado. Uma vez em execuo, o
processo no libera o processador at finalizar seu processamento.
Na tabela abaixo, o primeiro processo a chegar o de maior tempo e o ltimo de menor tempo. Verificando os tempos, o escalonamento SJF inicia a ordem de execuo comeando pelo ltimo at o primeiro. Consequentemente
teremos o tempo mdio de espera (0+2+6)/ 3 = 2,66.

ORDEM DE
CHEGADA

PROCESSO

TEMPO DE
ESPERA

TEMPO DE
EXECUO

TEMPO DE
ESPERA

P3

P2

P1

Tabela 3 Tempo de espera

Tempo na CPU

P3
P2
P1
2

12

Tempo

Figura 44 Escalonamento SJF.

captulo 3

71

Para atender a necessidade de preempo, foi criada uma verso do escalonador SJF conhecida como SRTF (Shortest-Remaining-Time-First). Esta verso
permite que o escalonador compare, o tempo restante necessrio para que um
processo em execuo termine seu processamento, com os tempos estimados
dos processos que esto 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 execuo e substitudo 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 processamento, e isso no 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 mdio de espera para os
processos a serem executados. Esta reduo de tempo mdio de espera faz com
que o escalonador SJF seja mais eficiente que o escalonador FIFO. Podemos citar como desvantagem a possibilidade de ocorrer starvation para processos do
tipo CPU-Bound, que ocupam muito tempo de uso do processador, caso processos de tempos curtos, como os I/O-Bound forem continuamente adicionados
para a execuo.

3.5 Escalonamento circular (Round Robin)


Com o desenvolvimento dos sistemas multiprogramveis surgiu um escalonador para atender os requisitos de sistemas compartilhado denominado Round
Robin (escalonamento circular). No escalonamento circular, o sistema operacional determina um perodo de tempo que um processo pode ser executado
pelo processador, este perodo de tempo conhecido como fatia de tempo (time-slice) ou quantum e normalmente pode variar entre 10-100 milissegundos.
Esta poltica de escalonamento evita que um processo no monopolize o processador. Quando o processo est utilizando o processador dito que um surto do processador. O surto pode ser com relao aos dispositivos de entrada e
sada quando o processo est usando estes dispositivos. O surto de um processador, referente a um processo, pode ser menor que um quantum, se o tempo
necessrio para finalizar um processo for menor que o quantum.

72

captulo 3

Quantum

Surto
Figura 45 Surto de um processador.

O escalonador Round Robin forma uma fila circular de processos com estado
de pronto. Todo processo carregado na memria 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 trmino do quantum, o processo em execuo interrompido,
pelo sistema operacional, e volta para o fim da fila de pronto. Situao como esta,
tende a acontecer com maior frequncia em processos do tipo CPU-Bound.
Quando este mesmo processo tiver acesso novamente ao processador, retomar a execuo de onde parou no ciclo anterior. Esta forma de troca de processo levando em considerao um perodo de tempo conhecida como preempo por tempo. A troca de um processo em execuo 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.
Fila dos Processos no Estado de Pronto
Estado de
Criao

UCP

Estado de
Trmino

Preempo por Tempo


Estado de
Espera

Figura 46 Escalonamento circular.


Fonte: Machado e Maia (2007).

O exemplo a seguir tem se trs processos com diferentes tempos necessrios para sua execuo. O tempo de quantum equivale a duas unidades de tempo. O grfico de escalonamento circular ilustra a execuo dos processos de
acordo com o quantum atribudo a cada um. Note que o processo B terminou
antes do tempo de quantum, o que causou a troca de processo.
captulo 3

73

PROCESSO

HORA DE CHEGADA

DURAO

24

Tabela 4 - Processos

Processos

Diagrama de GANTT
A
C

A
C

A
Durao

Figura 47 Escalonamento Circular.

Um ponto crtico no desempenho do escalonamento circular a definio do


quantum. Alm do quantum, o sistema operacional necessita de certa quantidade
de tempo para executar a parte administrativa relacionada troca de processos
salvar e carregar contexto de hardware, software etc. Dependendo do tempo definido para o quantum, pode haver maior ou menor nmero de trocas de contexto
aumentado o tempo administrativo e consequentemente perda de eficincia.
Por exemplo, caso tenha um processo que o tempo total para ser executado
de 10 unidades de tempo e cada unidade de tempo for 20ms, ento o processo
necessitar de 200ms para ser executado. Para o tempo administrativo sero
necessrios 5ms para efetuar todo o procedimento para troca de contexto. Por
fim podemos simular o quantum com os seguintes valores:
f) Se o quantum for definido em 12 unidades de tempo, 240ms, o processo ter tempo suficiente para executar todo o seu processamento e no

74

captulo 3

haver troca de contexto, consequentemente no haver nenhum custo


adicional de tempo administrativo.
g) Se o quantum for definido em 6 unidades de tempo, 120ms, ser necessrio uma troca de contexto para que o processo possa finalizar o processamento. Logo haver um custo adicional de 5ms gastos com o tempo
administrativo.
h) Se o quantum for definido em 1 unidade de tempo, 20ms, sero necessrios 9 trocas de contexto para que o processo possa finalizar o processamento. Logo haver um custo adicional de 45ms gastos com o tempo
administrativo.

QUANTUM

TEMPO EM
MS

N TROCA

TEMPO
ADMINISTRATIVO

12

240

120

20

45

Tabela 5 - Tempo Quantum.

a
b
c

10

11

12

Figura 48 Quantidade de quantum para executar um processo.

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 pronto o que causaria o escalonador circular funcionar como se fosse um escalonador FIFO. Se o quantum for muito pequeno, haver muitas trocas de contexto, e
assim, haver grande perda de eficincia do sistema.

captulo 3

75

A troca de contexto no acontece somente quando o quantum muito pequeno, mas tambm em processos do tipo I/O-Bound. Processos do tipo I/O-Bound entram com maior frequncia em estado de Em Espera pelo fato de
efetuarem constantes acessos aos dispositivos de entrada e sada. Diferenas
de caractersticas dos tipos de processos CPU-Bound e I/O-Bound tendem a ocasionar um desbalanceamento de uso do processador.
Com o objetivo de balancear o processador, surgiu uma verso aprimorada
do escalonador circular chamado escalonamento circular virtual. O escalonamento 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 relao 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 dinmica da ordem em que os processos so executados conhecido como mecanismo adaptativo.
Fila dos Processos no Estado de Pronto
Estado de
Criao

UCP

Estado de
Trmino

Preempo por Tempo


Fila auxiliar

Estado de
Espera

Figura 49 Escalonamento circular Virtual.


Fonte: Machado e Maia (2007).

Os tempos atribudos para os processos da fila auxiliar so diferentes da


fila de tempo. O clculo de tempo que o processo da fila auxiliar recebe para
a execuo (Figura 50 (b)), leva em conta o seu ltimo tempo de ocupao do
processador (Figura 50 (a)).
Este ajuste dinmico do escalonamento dos processos para
Tempo recebido aps fila auxiliar = Quantum ltimo tempo em execuo

76

captulo 3

Quantum
a
ltimo tempo em execuo
b
Tempo recebido aps fila auxiliar
Figura 50 Tempo recebido aps fila auxiliar.

3.6 Escalonamento por Prioridade


As prioridades de escalonamentos de processos podem ser definidas com bases
em diferentes critrios. Estudamos trs deles, a ordem de chegada (ex.: escalonador FCFS), menor tempo de execuo (ex.: escalonador SJF), troca dinmica
(ex.: escalonador Round Robin). Maziero (2014) define outros critrios que podem ser usados na definio de prioridades, podendo ser o comportamento do
processo, se este em lote, interativo ou processo de tempo-real, como tambm
o proprietrio do processo, podendo ser administrador, gerente ou estagirio.
Em geral, as prioridades podem ser definidas com base em critrios internos ou externos. No caso de critrios internos, as prioridades dos processos so
dimensionadas com base em algum valor de grandeza, tempo de mdio de utilizao do processador, tempo mdio de utilizao de dispositivos de entrada e
sada, ordem de chegada, requisitos de memria etc. J as prioridades externas
so definidas por critrios que no tm interferncia do sistema operacional,
como por exemplo, tipo de processo, departamento responsvel, custo, etc.
O escalonamento por prioridade associa um valor, chamado prioridade de
execuo, a um processo que entra na fila de pronto, o processo com a maior
prioridade ser o primeiro a ser escalonado para execuo. Caso haja dois ou
mais processos com o mesmo nvel de permisso, ser escalonado o primeiro
entre eles (escalonamento FIFO). Isto faz com que o escalonamento por prioridade seja o ideal para sistemas de tempo real, aplicaes de controle de processo e quando a necessidade de definir a prioridade de determinados processos
em sistemas de tempo compartilhado.

captulo 3

77

O valor da prioridade um nmero 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 prioridade mais baixa e em outros, a mais alta. No exemplo a seguir o valor 0 define
a prioridade mais baixa.

PROCESSO

TEMPO DE
PROCESSADOR (u.t)

PRIORIDADE

10

Processo A
Processo B
Processo C
3

13

17

u.t.

Figura 51 Exemplo de Escalonamento por prioridades.


Fonte: Machado e Maia (2007).

Diferente do escalonador circular, que divide o tempo do processador para


uso dos processos, no escalonamento por prioridade no existe este conceito
de fatia de tempo, o que pode deixar um processo com maior prioridade utilizando o processador por tempo indeterminado (starvation) e desta forma processos de menos prioridade podem nunca serem executados.
Logo, para que um processo de maior prioridade no utilize o processador
por tempo indeterminado (starvation) utilizada uma estratgia conhecida como aging (envelhecimento). A estratgia aging pode ser implementada de duas formas segundo alguns autores. A implementao, segundo
Tanenbaum e Woodhyll (1999), consiste em diminuir gradativamente a prio-

78

captulo 3

ridade do processo em execuo a cada interrupo de relgio. Desta forma,


a prioridade do processo em execuo, em um determinado momento, ficar abaixo da prioridade de um processo na fila de pronto o que causar a
perda do uso do processador. Esta estratgia denominada preempo por
prioridade. J para Silberschatz et al. (2004) a estratgia aging consiste em
aumentando gradativo da prioridade dos processos que esto aguardando 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 execuo,
o processo em execuo ser substitudo pelo da fila de pronto.

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

O processo pode perder o uso do processador caso haja a alterao de seu


estado de Em Execuo para Em espera ou quando entrar um processo de
maior prioridade na fila de pronto. O escalonamento por prioridade pode ter
diversas filas de estado de pronto com prioridades distintas. Os processos na
fila com maior prioridade tem preferncia no uso do processador.
Fila dos Processos no Estado de Pronto
Prioridade P1

Prioridade P2

UCP

Estado de
Trmino

Estado de
Criao
Prioridade Pn

Preempo por Tempo


Estado de
Espera

Figura 52 Exemplo de fila de prioridades.


Fonte: Machado e Maia (2007).

captulo 3

79

O escalonador de prioridade pode ser implementado de forma mais simples no modelo no-preemptivo. No modelo no-preemptivo, se chegar um processo na fila de pronto com prioridade maior do que o processo em execuo,
no ocasionar a troca de processo. Neste caso, o processo que chegou fila de
pronto com maior prioridade, ser colocado no incio da fila. A prioridade de
execuo pode ser classificada como:
Esttica: o valor de prioridade associado ao processo no momento de
sua criao e no alterado durante o seu ciclo de vida.
Dinmica: o valor de prioridade associado ao processo pode variar durante seu ciclo de vida levando em considerao critrios estabelecidos
pelo sistema operacional.

CONEXO
Recomendamos a leitura deste artigo para melhor compreenso sobre escalonamento de
processos: <http://www.soffner.com.br/Semana5_SOII.htm>.

3.6.1 Escalonador circular com prioridades


O processador, no escalonamento por prioridade, fica desbalanceado em relao dos processos CPU-Bound e I/O-Bound. Processos do tipo I/O bound tende
a utilizar mais recursos de entrada e sada, o que faz com que o mesmo passe a
maior parte do tempo em estado de Em Espera aguardando que uma solicitao de entrada e sada termine. Um melhor balanceamento do processador
foi alcanado com a implementao do escalonador circular com prioridades. O
escalonador circular com prioridades adicionou, j existente prioridade de
processo, o conceito de fatia de tempo. Desta maneira um processo pode perder o uso do processador quando houver um processo com maior prioridade ou
o seu quantum finalizar ou quando entrar em estado de Em Espera.

80

captulo 3

Fila dos Processos no Estado de Pronto


Prioridade P1

Prioridade P2

UCP

Estado de
Trmino

Estado de
Criao
Prioridade Pn

Preempo por Tempo


Estado de
Espera

Preempo por
Prioridade ou Tempo
Solicitao de
Entrada/Sada

Figura 53 Escalonamento circular com preempo por tempo ou prioridade.


Fonte: Machado e Maia (2007).

A classificao do escalonador circular com prioridades pode ser:


Esttica: o valor de prioridade associado ao processo no momento de
sua criao e no alterado durante o seu ciclo de vida.
Dinmica: o valor de prioridade associado ao processo pode variar durante seu ciclo de vida levando em considerao critrios estabelecidos
pelo sistema operacional.
O tipo escalonador circular com prioridades dinmicas melhora o balanceamento entre os processos CPU-Bound e I/O-Bound mencionado anteriormente.
Como os processos I/O-Bound tende a ficar em estado de Em Espera muito
tempo, para compensar este tempo, a sua prioridade alterada para um valor
maior, assim quando sa do estado Em Espera, entra em uma fila de pronto
com prioridades mais altas. Consequentemente, o processo ser atendido mais
rapidamente pelo escalonador.

captulo 3

81

3.6.2 Escalonamento por mltiplas filas


Um dos mais antigos escalonadores de prioridade o escalonador de mltiplas
filas. O escalonador de mltiplas filas foi utilizado no Sistema de compartilhamento por tempo CTSS (Compatible Time-Sharing System Sistema compatvel de
diviso por tempo), desenvolvido pelo Centro Computacional do MIT em 1961 e
utilizado no IBM 7090. A implementao do Escalonamento por mltiplas filas
baseia-se em diversas filas de pronto, cada qual com um nvel de prioridade.

Fila de Processos do Sistema


Maior
prioridade
Fila de Processos Interativos

UCP
Fila de Processos Batch
Menor
prioridade
Figura 54 Mltiplas filas de escalonamento.
Fonte: Machado e Maia (2007).

Neste sistema, o processo no possui prioridade, a prioridade caracterstica da fila, assim, o sistema usa como critrio uma ou mais propriedades de
cada processo para associ-lo a uma desta fila.
Como vimos anteriormente, os processos so divididos em trs categorias,
interativos (foreground), batch (Backgound) e daemons, sendo que cada tipo tem
uma necessidade distinta de uso do processador de acordo com o tempo de resposta exigida para cada um deles. Esta necessidade, de tempo de resposta, um
exemplo da necessidade de um escalonamento diferenciado para cada tipo de
processo. Para Silberschatz et al. (2004) a escolha de qual fila um determinado
processo deve entrar, leva em considerao alguma propriedade do processo,
podendo ser o tipo de processo, sua prioridade, tamanho de memria, etc. Esta
associao acontece no momento da criao do processo e permanece at o fim

82

captulo 3

do seu processamento. Isto pode ser uma desvantagem, pelo fato do sistema
operacional no levar em conta que alguns processos podem alterar suas propriedades no decorrer de sua execuo 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 prprio algoritmo de escalonamento. Por exemplo, processos do tipo
foreground podem ser agendados em uma fila cujo escalonador seja do tipo escalonamento circular, enquanto processos do tipo backgound em fila com algoritmo do tipo FIFO. No escalonamento por mltiplas filas, um processo de
uma fila de menor prioridade somente ser escalonado se no houver processos em filas de maior prioridade. Por exemplo, se tivssemos 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
execuo, o processo do estudante pode sofrer preempo caso um processo
entre em uma das filas de maior prioridade.
Prioridade mais alta
Processos do Sistema
Processos Interativos
Processos de Edio Interativos
Processos Batch
Processos de Estudantes
Prioridade mais alta
Figura 55 Escalonamento com mltiplas filas de prioridade.

Para que os processos, como o do estudante, no fique indefinidamente


sem execuo, caso as filas acima estejam sempre ocupadas, existe a possibilidade de dividir o tempo de processamento entre as diversas filas. Esta diviso
pode ser feita, por exemplo, atribuindo 80% do tempo do processador para as
filas de processos do tipo foreground, com escalonamento circular, e 20% para

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

3.7 Escalonamento por Mltiplas filas com realimentao


A vantagem do escalonamento por mltiplas filas e permitir um escalonamento de baixo custo, mas por outro lado, tem a desvantagem de ser inflexvel em
relao a mudana de processo entre as filas.
Vimos que o sistema operacional analisa as propriedades de um processo
no momento de sua criao e associa-o permanentemente a uma das filas de
prioridade. Uma vez atribudo a uma fila, o processo no tem como se mover
para outra. De maneira geral, isso coerente se levarmos em conta a natureza
dos processos (foreground e background). Se um processo do tipo foreground,
ser associado a uma fila com prioridades de foreground, se for background ser
associado a uma fila com prioridades de background.
O problema dessa abordagem que processos do tipo CPU-Bound, em geral tem maior prioridade do que processos do tipo I/O-Bound. Se houver muitos
processos CPU-Bound entrando numa fila de maior prioridade, um processo do
tipo I/O-Bound pode ter que aguardar um tempo excessivo para ser escalonado. A
soluo deste problema veio com o escalonamento Escalonamento por Mltiplas
filas com Realimentao. Este escalonador permite que um processo possa trocar
de fila durante seu processamento. So implementadas diversas filas com nveis
de prioridades distintas. O comportamento do processo analisado dinamicamente pelo sistema que ento ajusta sua prioridade de execuo e mecanismo
de escalonamento. Esta anlise de comportamento feita, pelo sistema, ao longo do ciclo de vida do processo, permitindo que o mesmo possa ser direcionado
para uma determinada fila de acordo com sua mudana de comportamento. As
filas apresentam dois tipos de escalonamento. A fila de menor prioridade utiliza
o escalonamento circular. As demais filas, de maior prioridade, apresentam um
escalonamento FIFO adaptado com fatia de tempo. Um processo que estiver em
uma fila de menor prioridade somente ser escalonado quando as filas de maior
prioridade estiverem vazias. A fatia de tempo, atribuda a uma fila, dimensionada de acordo com a prioridade da fila. Uma fila com prioridade maior ter menos
tempo de processamento e fila com prioridade menor, mais tempo de processamento. Este mecanismo, do escalonador por Mltiplas filas com realimentao, que efetua ajustes conforme as mudanas no comportamento do processo

84

captulo 3

chamado de mecanismo adaptativo. Em geral, os mecanismos adaptativos geram


sobrecarga do sistema, mas no caso dos resultados obtidos no escalonador por
Mltiplas filas com realimentao, com estes mecanismos, justificam este aumento de sobrecarga (DEITEL et al., 2005).
Fila 1 (FIFO Adaptado)
Maior
prioridade

Menor
fatia
de tempo

Preempo por tempo


Fila 2 (FIFO Adaptado)

Preempo por tempo


Fila 3 (FIFO Adaptado)

UCP

Preempo por tempo

Fila n (Circular)
Menor
prioridade
Preempo por tempo

Maior
fatia
de tempo

Figura 56 Escalonamento por mltiplas filas com realimentao.


Fonte: Machado e Maia (2007).

O processo ao ser criado, no associado fila de pronto e sim direcionado


para o final da fila de maior prioridade. Como cada fila tem uma determinada fatia de tempo, atribudo ao processo uma parte deste tempo. Ao chegar ao incio
da fila, o processo escalonado e obtm acesso ao processador. Se durante a sua
execuo, ocorrer a chegada de um processo em uma fila de maior prioridade, o
processo sofrer a preempo para dar lugar ao processo de prioridade mais alta.
A preempo por prioridade ou por solicitao a um recurso do sistema faz
com que o processo seja associado para o final da mesma fila que estava anteriormente. Caso a preempo do processo for por tempo, ou seja, esgotou o quantum
atribudo a ele, o processo associado ao final de uma fila de menor prioridade.
Esta estratgia faz com que processos do tipo CPU-Bound entrem na fila de maior
captulo 3

85

prioridade e ganhe rapidamente o uso do processador. Como sua caracterstica


de utilizar o maior tempo possvel o processador, ir gastar seu quantum de tempo 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 tendncia de sofrer preempo por solicitao 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.

3.8 Clculo estimado de tempo de resposta.


Estudamos nas sees anteriores diversos tipos de escalonadores e suas caractersticas, tais como modo de funcionamento, parmetros, etc. Estas caractersticas podem definir a escolha do tipo de escalonador para um determinado
sistema. Outros critrios podem ser utilizados levando em conta a mxima utilizao do processador, tempo de resposta ou Throughput (nmero de processos executados em um determinado intervalo de tempo).
Uma vez os critrios definidos, podemos utilizar um determinado mtodo
para avaliar os escalonadores. Silberschatz et al. (2004) cita quatro mtodos de
avaliao: modelagem determinista, modelos de filas, simulaes e implementao. Para o nosso estudo do clculo estimado do tempo de resposta, utilizaremos a modelagem determinista. A modelagem determinista um tipo de avaliao analtica. Segundo Silberschatz et al. (2004) a avaliao analtica permite
obter um nmero que define o desempenho do escalonador a partir de um volume de trabalho predeterminado. A tabela 6 determina o tempo estimado de
processador e a ordem de chegada dos processos. Ser utilizado as seguintes
siglas: T_r = Tempo de Resposta
e
T_e = Tempo Estimado de CPU.

PROCESSO

TEMPO ESTIMADO DE CPU

P1

P2

P3

P4

Tabela 6 - Tempo estimado de processador.

86

captulo 3

Utilizando o escalonador FIFO, temos:

P4
P3
P2
P1
1

9 10 11 12 13 14 15 16 17 18 19

Figura 57 Escalonador FIFO.

Tempo de Resposta
Processo P1 Tr= 7
Processo P2 Tr= 7 + 3
Processo P3 Tr = 7 + 3 + 5
Processo P4 Tr = 7 + 3 + 5 + 4

Tr= 7ms
Tr= 10ms
Tr= 15ms
Tr= 19ms

Utilizando o escalonador SJF, teramos:

P1
P3
P4
P2
1

9 10 11 12 13 14 15 16 17 18 19

Figura 58 Escalonador SJF.

Tempo de Resposta
Processo P1
Processo P2
Processo P3
Processo P4

Tr = 3 + 4 + 5 + 7
Tr = 3
Tr = 3 + 4 + 5
Tr = 3 + 4

Tr = 19ms

Tr = 3ms

Tr= 12ms

Tr= 7ms

captulo 3

87

Utilizando o escalonador RR, temos:

P4
P3
P2
P1
1

9 10 11 12 13 14 15 16 17 18 19

Figura 59 Escalonador RR.

Tempo de Resposta
Para o clculo utilizaremos Quantum = 30m.
Processo P1 Tr= 3 + 3 + 3 + 3 + 3 + 2 + 1 + 1
Processo P2 Tr = 3 + 3

Processo P3 Tr = 3 + 3 + 3 + 3 + 3 + 2

Processo P4 Tr = 3 + 3 + 3 + 3 + 3 + 2 + 1

Tr= 19ms
Tr= 6ms
Tr= 17ms
Tr= 18ms

ATIVIDADE
1. De acordo com o material, o que poltica de escalonamento de um processo?
2. Qual a diferena entre o escalonamento preemptivo e no-preemptivo?
3. Descreva as principais diferenas entre os escalonamentos do tipo Circular e FIFO?

REFLEXO
Neste captulo estudamos as diversas polticas de escalonamento e suas funes bsicas.
Abordamos as caractersticas de diversos escalonamentos, tais como o FIFO, SJF, Round
Robin, por prioridades, circular com prioridade, assuntos mais densos e de relativa complexidade. Estudando estas caractersticas podemos definir a escolha do tipo de escalonador
para um determinado sistema. Por fim vimos alguns mtodos para avaliar os escalonadores.
Todos estes conhecimentos, certamente sero imprescindveis para sua vida profissional.

88

captulo 3

LEITURA
Para voc avanar mais o seu nvel de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste captulo, consulte as sugestes de links abaixo:
Captulo 8 do livro
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3 ed. So Paulo,
Editora Prentice-Hall, 2005.

REFERNCIAS BIBLIOGRFICAS
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3 ed. So Paulo,
Editora Prentice-Hall, 2005.
HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de Computadores: uma abordagem quantitativa. 3 ed. Rio de Janeiro: Campus, 2003.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4 ed. Rio de Janeiro:
LTC - Livros Tcnicos Editora S.A., 2007.
MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponvel em: <http://
dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-livro.pdf>. Acesso em: set. 2014.
OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4 ed. Porto
Alegre : Editora Bookman, 2010.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacionais. 6
ed. Rio de Janeiro: LTC - Livros Tcnicos Editora S.A., 2004.
TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementao. 2
ed Porto Alegre: Bookman, 1999.

NO PRXIMO CAPTULO
No captulo seguinte, estudaremos as estruturas de memria. Voc entender as diferenas entre
os espaos de endereamento fsico e lgico. Sero apresentados os diversos modos de alocao da memria.

captulo 3

89

4
Gerncia de
Memria

4 Gerncia de Memria
Estudamos que, na multiprogramao, vrios processos so mantidos na memria
a fim de que o sistema operacional tenha um grande desempenho. Os programas,
cada vez mais, tm a necessidade de utilizar uma quantidade maior de memria,
sem contar a exigncia de memrias com acesso cada vez mais rpido. Este cenrio
faz com que o sistema operacional procure efetuar um gerenciamento da memria
o mais eficiente possvel, comeando por alocar o mximo possvel de processos na
memria, controlar os processos dos usurios e ter o cuidado de no ocupar muita
memria. Estes so apenas alguns pontos para comearmos a refletir sobre o gerenciamento de memria. Os conceitos que iremos estudar sobre o assunto com
certeza sero de grande importncia para a sua formao.

OBJETIVOS
Expor as estruturas de memria.
Entender as diferenas entre os espaos de endereamento fsico e lgico.
Compreender os diversos modos de alocao da memria.

REFLEXO
Voc se lembra de como os processos so escalonados, certo? Estes conceitos ns estudamos no captulo 3. A partir deste momento, veremos quais as estratgias que o sistema operacional utiliza para a alocao dos processos na memria.

4.1 Funes
Estudamos anteriormente que um processo um programa em execuo e que
os sistemas operacionais multiprogramveis permitem carregar mais de um programa em memria e execut-los. Isto faz com que a memria seja responsvel
pelo armazenamento principal do sistema operacional, onde so carregados os
programas, e os dados que o que os programas acessam, durante a sua execuo.
Dependendo do tamanho do programa, ele pode estar armazenado parcial
ou total na memria para ser executado. Assim sendo, h uma grande necessi-

92

captulo 4

dade de gerenciar a alocao da memria a fim de que a mesma seja utilizada


da forma mais eficiente possvel, para isso o gerenciador de memria deve tentar manter a memria com o mximo de programas (processos) em execuo.
Com vrios programas em memria, o gerenciador de memria deve garantir que um programa no acesse reas destinadas a outro programa, como
tambm das reas destinadas ao sistema operacional. Em situaes onde os
processos tm a necessidade de trocar dados, o gerenciador de memria oferece mecanismos protegidos de compartilhamento de dados.
Outro ponto a ser considerado de que, mesmo com toda evoluo tecnolgica, proporcionando s memrias um grande aumentado de sua capacidade
de armazenamento e velocidade de acesso, os programas tambm evoluram
na mesma proporo, exigindo que o sistema operacional gerencie a memria
disponvel para que um determinado programa no venha a ocupar toda a memria disponvel.
Em geral, os programas devem estar armazenados permanentemente no
computador, em um meio no-voltil, ou seja, a memria principal no adequada para esta tarefa pelo fato de ser do tipo voltil, isto , se a energia for
desligada, todos os dados se perdem.
Este fato faz com que os discos rgidos, que so no volteis, de baixo custo e de
grande capacidade, seja o meio utilizado pelo sistema operacional, como sistema
de armazenamento secundrio, armazenando os programas e os seus dados.
muito importante frisar que o processador somente executa instrues
que esto carregadas na memria principal, assim, o gerenciador de memria
tem a funo de transferir os programas, que sero executados, do armazenamento secundrio (discos rgidos) para o armazenamento principal (memria).
Esta transferncia do programa da memria secundria para principal deve ser
gerenciada para que no cause perda de desempenho do sistema. Esta perda
de desempenho pode ocorrer se houver uma grande quantidade de acesso
memria secundria. O tempo de acesso memria secundria muito mais
lento se comparado com a memria principal. Dessa forma o sistema operacional deve otimizar a quantidade de operaes de entrada e sada da memria
secundria. Pode acontecer, da memria 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 memria principal, temporariamente para a memria secundria, permitindo que novos
processos sejam carregados na memria principal e executados.

captulo 4

93

Outras funes do gerenciado de memria controlar os espaos que sero


utilizados pelos programas e os que no sero, alocar espaos para os dados,
conforme os programa solicitem e desalocar quando no mais so necessrios.
Nesta unidade estudaremos os componentes de hardware que compem a memria e os mecanismos de controles utilizados pelo sistema operacional para o
gerenciamento da memria

CONEXO
Aprofunde seus conhecimentos sobre gerncia de memria.
<http://regulus.pcs.usp.br/~jean/so/AULA%2013%20-%20Ger%EAncia%20de%20
Mem%F3ria.pdf>.

4.2 Estruturas de memria


O armazenamento principal (memria) e o armazenamento secundrio (disco
rgido) faz parte de uma hierarquia de memria. Outros componentes do computador, utilizados para armazenar dados, fazem parte desta hierarquia de
memria, entre eles esto os dispositivos de armazenamento externos como
as fitas magnticas, pendrives, CD-Roms, DVD-Roms, Blu-ray, etc. e os internos
como os registradores e o cache interno do processador, o cache externo da placa-me, etc. (MAZIERO, 2014). Devido s caractersticas de cada componente,
o sistema operacional deve fornecer diversas funcionalidades para permitir
que os programas controlem todos os aspectos destes componentes. Aspectos
no sentido de componentes que podem ser acessados somente para leitura
ou leitura e escrita. Outros so de acesso sequencial ou aleatrio, sncrono ou
assncrono, etc. Outro fator que pode influenciar o sistema como um todo
a velocidade de acesso a estes componentes. Patterson e Hennessy (2005) detalha, na tabela abaixo, o tempo de acesso de cada componente e sua taxa de
transferncia. O tempo de acesso indica quanto tempo a memria gasta para
transferir uma informao para o barramento de dados aps uma determinada
ao. Uma vez iniciada a transferncia, uma determinada quantidade de bytes
por segundo podem ser lidos ou escritos em um meio de armazenamento. A
esta quantidade de bytes por segundo lidos ou escrito por segundo e dado o
nome de taxa de transferncia.

94

captulo 4

MEIO

TEMPO DE ACESSO

TAXA DE
TRANSFERNCIA

Cache L2

1 ns

1 GB/s (1 ns/byte)

Memria RAM

60 ns

1 GB/s (1 ns/byte)

2 ms

10 MB/s 9100 ns/byte)

memria flash
(NAND)

10 ms (tempo necessrio para o


Disco rgido IDE

deslocamento da cabea de leitura e

80 MB/s (12 ns/byte)

rotao do disco at o setor desejado)


de 100 ms a vrios minutos (caso a
DVD-ROM

gaveta do leitor esteja aberta ou o

10 MB/s (100 ns/byte)

disco no esteja no leitor)


Tabela 7 - Tempos de acesso e taxas de transferncia.
Fonte: Patterson e Hennessy (2005)

Levando em considerao as principais caractersticas dos componentes de


armazenamento, como custo, capacidade de armazenamento, tempo de acesso e
taxa de transferncia, possvel definir uma pirmide de hierarquia de memria.
registradores
cache L1

velocidade,
custo e
consumo
de energia

cache L2
voltil
no-voltil

memria RAM
memria Flash
disco rgido
CD-ROM, DVD-ROM, ta magntica
capacidade

Figura 60 Pirmide clssica de hierarquia de memria.

captulo 4

95

Na base pirmide esto os componentes que armazenam informaes


acessadas com menor frequncia pelo processador. Isto permite utilizar componentes de custo mais baixo e alta capacidade de armazenamento. Por outro
lado, so consideradas como memrias mais lentas e no-volateis. No topo da
pirmide temos os componentes que armazenam informaes acessadas com
maior frequncia pelo processador. So memrias com custo elevado e baixa
capacidade de armazenamento. No entanto, so memrias extremamente rpidas, apesar de serem volteis.

4.3 Espao de Endereamento Fsico e Lgico


Os processos sendo executados no processador possuem instrues que fazem
referncias a endereos de memria. Estes endereos de memria gerados pelo
programa so chamados endereos lgicos ou endereos virtuais. Os endereos
lgicos esto relacionados ao programa e no necessariamente so iguais aos
endereos na memria real do computador. Como o processador apenas pode
acessar posies de memria principal, ou seja, endereos fsicos, o endereo
lgico traduzido para endereo fsico. Esta traduo conhecida como mapeamento. Para que no haja perda de desempenho, o mapeamento feito por
um dispositivo de hardware conhecido como Unidade de Gerenciamento de
Memria (MMU - Memory Management Unit) figura 61.
A figura 61 exibe um exemplo de mapeamento de endereo lgico para fsico segundo Silberschatz et al. (2004). Neste exemplo, a Unidade de Gerenciamento de Memria possui um Registrador de Relocao que est apontando
para o endereo fsico de valor igual a 14000. O valor do registrador de relocao sempre somado aos endereos de memria que esto sendo acessados
pelo processo do usurio em execuo no processador. Assim, se o processo
est fazendo referncia ao endereo lgico de valor 0 ao passar pelo MMU, ser
mapeado para o endereo fsico de valor 14000. Caso o processo faa uma referncia ao endereo lgico de valor 346 ser mapeado para o endereo fsico de
valor 14360. Mesmo que o usurio crie um ponteiro no programa para acessar
o endereo fsico de memria 346, no acessar esta posio fsica, pois os programas de usurios tratam de endereos lgicos e nunca acessam diretamente
os endereos fsicos reais. Existem outros mtodos diferentes de mapeamento
que sero abordados nas prximas sees.

96

captulo 4

CPU

Endereo
Lgico
346

Registrador
de relocao
14000

Endereo
Fsico
14346

Memria

MMU
Figura 61 Traduo de endereo lgico para fsico.

Dados e instrues de programas podem ser associados a endereos de memria em


3 momentos: em tempo de compilao, em tempo de carga e em tempo de execuo.
Em tempo de compilao se a posio da memria for conhecida. Neste caso os endereos podem ser associados em valores absolutos. Em tempo de carga os endereos
sero gerados em cdigo relocvel. E o ltimo e mais utilizados na maioria dos sistemas
operacionais, o em tempo de execuo. Neste caso a associao somente feita no
momento que o processo for executado.

4.4 Estratgias de alocao


Nas sees seguintes, estudaremos as formas de alocao de memria. A alocao de memria pode ser organizada dos seguintes formas:
Simples
Contgua
Particionada Esttica(Fixa) / Dinmica
Alocao
Paginao
No-contgua
(Memria
Virtual)

Segmentao
Segmentao com Paginao

A alocao contgua ser estudadas nos prximos tpicos e a alocao no


contgua no tpico de Memria Virtual.

captulo 4

97

4.4.1 Alocao contgua simples


Os primeiros sistemas monoprogramveis utilizava a forma de alocao contgua de memria. Como os sistemas monoprogramveis permitiam que apenas
um programa fosse carregado na memria por vez, a alocao contgua era a
forma mais simples de gerenciamento de memria consistindo de dividir a memria entre o sistema operacional e o programa carregado. Tanenbaum e Woodhyll (1999) apresenta trs formas de organizar a memria para acomodar o
sistema operacional e um programa do usurio. A figura 62(a) e (b) utiliza uma
abordagem somente com memria RAM(Random Access Memory Memria de
Acesso Aleatrio). Notem que o sistema operacional pode ser alocado tanto na
parte baixa como na parte alta da memria.

ATENO
Em geral, o sistema operacional alocado na parte baixa da memria devido a posio do
vetor de interrupes que normalmente ocupa a memria baixa. O vetor de interrupes uma
tabela que contem os endereos das rotinas de tratamento de interrupo (MAZIERO, 2014).

Na configurao da figura 62 (a) o sistema operacional alocado na parte


baixa da memria ficando o restante da memria disponvel para o programa a
ser executado. J na configurao (b) ocorre o inverso, o sistema operacional
alocado na parte superior e o programa na inferior. A figura 62 (c) mostra uma
configurao utilizando uma memria RAM e uma ROM (Read-Only Memory
Memria Apenas de Leitura). Nesta abordagem os drivers de dispositivo ficam
alocados na parte superior da memria ROM e o sistema operacional e o programa do usurio na memria RAM.
0xFFF...
Programa
de usurio

0xFFF...
SO em
RAM

SO em
Ram

0
(b)

Figura 62 Formas de organizao da memria.

98

captulo 4

0xFFF...

Programa
de usurio

Programa
de usurio
0

(a)

Drivers de
dispositivos
em ROM

SO em
Ram
(c)

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 embarcados 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 Bsico de Entrada e Sada). Nesta forma de alocao, o usurio pode
acessar qualquer endereo de memria, ele tem o controle total sobre a memria principal. Esta caracterstica permite que um determinado programa possa,
de forma intencional ou no, 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 funo de delimitar as reas do
sistema operacional e do programa. Caso um programa faa referncia a um
endereo de memria, o sistema checa o delimitador para verificar se o endereo no est invadindo uma rea ocupada pelo sistema operacional. Se estiver
invadindo, ento o sistema operacional termina o programa e envia uma mensagem de erro para o usurio sobre a violao de acesso da memria principal.
Memria principal
Sistema
Operacional

Registrador

rea para
programa

Figura 63 Proteo de memria.


Fonte: Machado e Maia (2007)

4.4.2 Sobreposies (overlay)


Com o passar do tempo, a memria fsica passou a no ser suficiente para conter todo o programa do usurio que eram maiores que a memria principal.
A soluo encontrada foi a utilizao de uma tcnica conhecida como overlay
(sobreposies). Nesta tcnica o programa desenvolvido de forma que possa ser dividido em partes lgicas independentes de forma a permitir que uma
parte possa ser substituda por outra quando no estiver em uso. Por exemplo,

captulo 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 memria principal durante todo tempo em
que o programa deve ser executado. Assim carregado na memria principal logo
acima do sistema operacional. O restante da memria, rea de overlay, ser a rea
comum compartilhada pelas demais partes do programa. Quando a parte principal (a) efetuar uma chamada a uma das partes, por exemplo, parte (b), este mdulo
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
mdulo que j esteja carregado, a carga ser desconsiderada.
A rea de overlay definida pelo programador utilizando comandos da linguagem de programao utilizada para desenvolver o programa. Entretanto,
uma sobreposio que no for muito bem planejada pode se tornar complexa
e de difcil manuteno. Outro fator importante a ser considerado com relao 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 (memria principal) e a memria secundria.
d
fase de
inicializao

rea de
Overlay
Poro mnima
do programa do
usurio que deve
permanecer em
memria at o
final de execuo
Sistema
Operacional

fase de
processamento

fase de
gerao
de
resultado

b
d
c
a
0

Figura 64 Tcnica de overlay.

4.4.3 Alocao contgua particionada fixa


Com a evoluo dos sistemas monoprogramveis para os multiprogramveis, houve uma grande necessidade de aprimoramento no modo de alocao da memria.
Isto pelo fato de que, um dos fatores de eficincia dos sistemas multiprogramveis
decorrem de ter vrios programas alocados na memria ao mesmo tempo para serem executados. Assim, surgiu a alocao particionada fixa. Esta abordagem consiste em dividir a memria em tamanhos fixos, denominadas parties.

100

captulo 4

A partio da memria pode ser de tamanhos iguais ou diferentes. O tamanho de cada partio era definido no momento da inicializao do sistema
operacional levando em considerao os programas que seriam executados.
Caso houvesse a necessidade de um particionamento diferente do que tinha
sido configurado, era necessrio que o sistema operacional fosse reinicializado
com a nova configurao.

800 k
Participao 4
700 k
Participao 3
400 k
Participao 2
200 k
Participao 1
100 k
SO
0k
Figura 65 Partio da memria.

Este esquema tornava o gerenciamento de memria relativamente simples


pelo fato dos programas, ao serem compilados, recebiam um endereo fsico
da memria principal a partir de onde deveriam ser carregados. Isto fazia com
que o programa somente executasse em uma partio especfica. Dessa maneira, um programa tinha que aguardar a desocupao de sua partio para ser
executado, mesmo tendo outras parties livres. Por exemplo, o programa A
est sendo alocado na Partio 4 cujo tamanho de 100k. O programa D est
alocado na Partio 1, tambm com tamanho de 100k. A Partio 3 de tamanho
300k est livre, mas a restrio imposta pelos endereos absolutos impedem
que os programas B, E ou F sejam alocados nesta partio causando um
grande desperdcio de memria. Esta forma de gerenciamento de memria ficou conhecida como alocao particionada esttica absoluta.

captulo 4

101

800 k
B

Participao 4

700 k
Participao 3
400 k
C

Participao 2

Participao 1

200 k
F

100 k
SO
0k

Figura 66 Alocao particionada esttica absoluta.

O problema de desperdcio de memria da alocao particionada esttica


absoluta foi superado com a implementao de compiladores e carregadores de
realocao. Assim, todos os endereos de memria, utilizados por um programa,
ao ser compilado, passam a ser relativos ao incio do programa e no mais endereos fsicos da memria. Esta abordagem permite que ao carregar um programa, o carregador transforma os endereos relativos em endereos absolutos a
partir de partio onde foi alocado o programa. Esta forma de gerenciamento de
memria ficou conhecida como alocao particionada esttica relocvel.
Desta forma, o programa pode ser alocado em qualquer partio que comporte o seu tamanho. Contudo, houve um grande aumento na complexidade
dos compiladores e carregadores.
800 k
Participao 4
700 k
Participao 3
400 k
Participao 2
200 k
D

Participao 1
100 k
SO
0k

Figura 67 Alocao particionada esttica relocvel.

102

captulo 4

Para decidir em qual partio um programa deve ser carregado, o gerenciador de memria utiliza uma tabela conhecida como tabela de alocao de parties. A tabela de alocao de parties permite que o gerenciador verifique
qual partio est livre e qual o seu tamanho. Caso a partio livre seja grande o
suficiente para conter o programa, ele ser carregado nesta partio e a tabela
ser atualizada para informar que a partio est ocupada.

Memria Principal
Sistema Operacional

PARTIO

TAMANHO

LIVRE

2 Kb

No

5 Kb

Sim

8 Kb

No

Programa C

rea Livre

Programa B

Figura 68 Tabela de alocao de parties.


Fonte: Machado e Maia (2007).

Uma vez o programa carregado em uma partio, o prximo passo e gerenciar o acesso de memria feita pelo programa para que no invada a rea destinada ao sistema operacional ou outros programas alocados em outras parties. A soluo encontrada foi a utilizao de dois registradores de fronteiras:
registrador de base e de limite. Cada partio delimitada pelo seu prprio registrador de base e de limite. Estes registradores contm o endereo inicial e
final da partio. Quando o programa faz uma requisio de um endereo de
memria, o gerenciador verifica se o endereo maior ou igual ao valor do limite inferior e se menor que o valor do limite superior. Se estiver dentro da faixa
permitida, a requisio atendida, caso contrrio o sistema termina o programa com uma mensagem de erro para o usurio sobre a violao de acesso da
memria principal.

captulo 4

103

Memria Principal
Sistema Operacional

Endereo Inicial

Endereo Final

Figura 69 Registradores de fronteiras.


Fonte: Machado e Maia (2007).

4.4.4 Alocao contgua particionada dinmica


Um grande problema enfrentado nas abordagens anteriores, onde a partio
fixa a fragmentao da memria conhecida com fragmentao interna. A fragmentao interna acontece quando um programa no ocupa totalmente a partio em que foi alocado.
Alm disso, uma partio pode ser muito pequena que no possa acomodar
um programa que esteja esperando.

Memria principal
Reg

Sistema
Operacional

Reg

Participao A
Participao B

Fragmentao interna
Participao C

Figura 70 Fragmentao interna.

104

captulo 4

A soluo encontrada foi permitir que um programa ocupasse o espao que


for necessrio, de acordo com sua necessidade, desde que haja espao disponvel na memria. Assim, foi substituda a partio de tamanho fixo pela alocao
particionada dinmica. Inicialmente a memria organizada de forma a no ter
nenhuma partio. Conforme h a necessidade de carregar um programa, o sistema operacional cria a partio dinamicamente, de acordo com as necessidades
do programa. Consequentemente, eliminou-se a fragmentao interna, mas por
outro lado, aumentou a complexidade da tabela de alocao de parties. A tabela de alocao de parties passou a no ter mais um nmero fixo de entradas,
agora o nmero de entradas varia de acordo com o nmero de parties.

2 Kb

3 Kb

1 Kb

4 Kb

Memria Principal

Memria Principal

Sistema Operacional

Sistema Operacional

15 Kb

Programa B

4 Kb

Programa C

1 Kb

Programa E

3 Kb

Programa A

2 Kb
5 Kb

Figura 71 Alocao particionada dinmica.


Fonte: Machado e Maia (2007).

Esta soluo gerou um outro problema. Conforme os programas terminam


sua execuo e desalocam a partio, vo deixando cada vez mais, pequenos
espaos vazios na memria. Estes espaos vo se espalhando pela memria e
muitas vezes so to pequenos, que no possvel utiliz-los para alocar um novo
programa. Este problema conhecido como fragmentao externa.

captulo 4

105

Memria principal
Sistema
Operacional
Processo A
Processo C
Processo F
Fragmentao externa
Processo E
Figura 72 Fragmentao externa.

possvel resolver o problema de fragmentao externa atravs de duas


solues. A primeira soluo consiste em reunir os espaos livres adjacentes
quando um programa libera a partio. Na figura abaixo, quando o Programa C
finaliza sua execuo, sua partio de 1kb combinada com as duas parties
adjacentes formando um espao maior de 8kb.
Memria Principal

Memria Principal

Memria Principal

Sistema Operacional

Sistema Operacional

Sistema Operacional
4 Kb

4 Kb

8 Kb

Programa C
3 Kb

3 Kb
Programa A

Programa A
5 Kb

Programa A
5 Kb

5 Kb

Figura 73 Soluo para Fragmentao externa.


Fonte: Machado e Maia (2007).

A segunda soluo exige que todas as parties na memria sejam realocadas de forma que sejam eliminados todos os espaos vazios entre elas. Esta soluo conhecida como realocao dinmica ou alocao particionada dinamicamente com realocao. Esta abordagem praticamente elimina a fragmentao
externa, mas h um excessivo consumo de recurso do sistema, como processamento e rea de disco rgido, alm de ser muito complexa.

106

captulo 4

Memria Principal

Memria Principal

Sistema Operacional

Sistema Operacional
Programa C
Programa A

4 Kb
Programa C
3 Kb

Relocao
12 Kb

Programa A
5 Kb

Figura 74 Soluo para Fragmentao externa.


Fonte: Machado e Maia (2007).

CONEXO
Entenda um pouco mais sobre gerenciamento de memria
<http://www.ricardobarcelar.com.br/aulas/soa/mod2-ger_memoria.pdf>.

4.4.5 Estratgia de posicionamento de memria


Inicialmente, quando um programa necessita ser alocado, o sistema pode escolher qualquer partio livre que contenha o espao suficiente para receb-lo. A
escolha feita pelo gerenciador de memria utilizando diversas estratgias e levando em considerao diversos fatores com o objetivo de determinar em qual a
melhor partio livre, um programa esperando por memria, pode ser alocado.
Consequentemente a escolha de uma terminada estratgia pode influenciar no
desempenho do sistema. Independente de qual estratgia seja adotada, a fragmentao externa tende a diminuir ou praticamente ser eliminada. Para implementar qualquer uma das estratgias, o sistema operacional matem uma tabela
com os dados das reas livres e qual a sua quantidade de espao disponvel, permitindo desta forma a agilidade na identificao das reas livres.

captulo 4

107

Memria Principal
Sistema Operacional
rea Livre 1

4 Kb

Programa C

PARTIO

TAMANHO

LIVRE

2 Kb

No

5 Kb

Sim

8 Kb

No

rea Livre 2

5 Kb

Programa A
rea Livre 3

3 Kb

Figura 75 Tabela de memrias livres.


Fonte: Machado e Maia (2007).

Entre as estratgias mais utilizadas esto:


Estratgia o primeiro que couber (First-Fit): percorre a tabela de memrias livres procurando pela primeira rea capaz de comportar o programa
a ser alocado. Esta estratgia minimiza o trabalho de busca e extremamente rpida principalmente se houver reas livres muito longas. Nesta
estratgia, a tabela de memrias livres no possui nenhuma ordenao.
0
Sistema operacional

(a) Estratgia o primeiro que couber


Coloque o job na primeira lacuna de memria
da lista de memrias livres na qual ele couber.

a
b

Lista de memrias livres (mantida em ordem aleatria)


Endereo
de incio

Tamanho

16MB

5MB

14MB

30MB

c
d
Requisio
de 13 MB

e
f

Lacuna de 16 MB
Em uso
Lacuna de 14 MB
Em uso
Lacuna de 5 MB
Em uso

g
.
.
.

Lacuna de 30 MB
h

Figura 76 Estratgia o primeiro que couber (First-Fit).


Fonte: Deitel et al. (2005).

Estratgia o que pior couber (Worst-Fit): percorre a tabela de memrias


livres procurando pela maior rea possvel, encontrando, aloca o programa.

108

captulo 4

O restante que sobra, tambm 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 pequenas reas livres sem utilizao. Nesta estratgia, a tabela de memrias
livres ordenada em ordem descendente de tamanho de rea livre.
0
Sistema operacional

(a) Estratgia o pior que couber


Coloque o job na maior lacuna
possvel na qual ele couber.

a
b

Lista de memrias livres (mantida em ordem descendente


de tamanho de lacuna)
Endereo
Tamanho
de incio
g

30MB

16MB

14MB

5MB

c
d
Requisio
de 13 MB

e
f

Lacuna de 16 MB
Em uso
Lacuna de 14 MB
Em uso
Lacuna de 5 MB
Em uso

g
.
.
.

Lacuna de 30 MB
h

Figura 77 Estratgia o que pior couber (Worst-Fit).


Fonte: Deitel et al. (2005).

Estratgia o que melhor couber (Best-Fit): percorre a tabela de memrias


livres procurando pela menor rea possvel, encontrando, aloca o programa. O restante que sobra, tambm ser pequeno, e desta forma ter pouco espao sem utilizao. O problema que este pouco espao sem utilizao, com o tempo, pode causar o problema de fragmentao. Nesta
estratgia, a tabela de memrias livres ordenada em ordem ascendente
de tamanho de rea livre.
0
Sistema operacional

(a) Estratgia o que melhor couber


Coloque o job na menor lacuna
possvel na qual ele couber.

a
b

Lista de memrias livres (mantida em ordem ascendente


de tamanho de lacuna)
Endereo
Tamanho
de incio
e

5MB

14MB

16MB

30MB

c
d
Requisio
de 13 MB

e
f

Lacuna de 16 MB
Em uso
Lacuna de 14 MB
Em uso
Lacuna de 5 MB
Em uso

g
.
.
.

Lacuna de 30 MB
h

Figura 78 Estratgia o que melhor couber (Best-Fit).


Fonte: Deitel et al. (2005).

captulo 4

109

Nas pesquisas efetuadas por Johnstone e Wilson (1999) foram demostradas


que as estratgias mais eficientes so a Estratgia o que melhor couber (BestFit) e Estratgia o primeiro que couber (First-Fit), sendo que a First-Fit se mostrou bem mais rpida que a anterior.
4.4.6 Troca de memria (swapping)
Nas abordagens anteriores, o programa era alocado na memria e somente saa
quando era finalizado. Isto faz com que se a memria principal estiver toda ocupada, um novo programa no poder ser alocado e consequentemente, no ser
executado. Alm disso, pode ocorrer de ter parties livres, mas no com o tamanho suficiente para alocar um determinado programa pronto para ser executado.
A soluo para estes cenrios o mecanismo denominado swapping (troca). O
mecanismo de swapping transfere um processo da memria principal, temporariamente para a memria secundria, permitindo que um novo processo sejam
carregado na memria principal e executado. Este procedimento conhecido
swap-out. Em um determinado momento o processo, que foi transferido para a
memria secundria, carregado de volta para a memria principal. Este procedimento conhecido swap-in.
Para que o mecanismo de swapping seja utilizado, o gerenciador de memria, antes de qualquer coisa, reserva um espao em disco rgido (memria secundria) para que possa receber os processos da memria. O mecanismo de
swapping permitiu que o sistema operacional executasse um maior nmero de
processos que normalmente caberia na memria. Um ponto a ser observado
que o swapping tende a aumentar o tempo de execuo dos programas devido
ao fato da troca de um processo para o disco rgido ser demorado. Para diminuir as quantidades de troca, os processos escolhidos para swapping so processos no estado de Em Espera ou aqueles que estejam em estado de Pronto,
mas com poucas chances de ser escalonado. Assim o gerenciador de memria
tende a ter um desempenho melhor evitando trocas desnecessrias.

110

captulo 4

Sistema
Operacional
Swap Out
Espao do
usurio

Swap In

Processo 1
Processo 2

Figura 79 Swapping.

4.5 Memria Virtual.


Estudamos nas sees anteriores que os programas maiores que o tamanho
da memria principal so divididos em mdulos e armazenados na memria
secundria. Quando este programa entra em execuo, os mdulos so trocados (swapping) entre a memria principal e secundria e vice-versa pelo sistema
operacional. A diviso em mdulos era feita pelo prprio programador, tarefa
que dava muito trabalho principalmente se tratando de programas muito grandes. Em 1961, Fotheringham criou um mtodo que combina a memria principal e secundria de forma a dar a iluso que a memria muito maior do que a
memria principal. Este mtodo ficou conhecido como memria virtual.
Desta forma o programador no tem mais a necessidade de dividir os programas em mdulos por causa da limitao de memria. O disco rgido (memria secundria) passa a ser utilizada como extenso da memria RAM (memria
principal), e onde so armazenados parte dos programas e dados que esto carregados e executando. Assim, o sistema operacional transfere parte dos programas e dados, da memria secundria para a principal, somente no momento
que realmente sero executados. Esta tcnica cria-se o espao de endereamento virtual (lgico) e o espao de endereamento real (fsico) (ver seo: Espao
de Endereamento Fsico e Lgico).

captulo 4

111

Devido ao grande crescimento de capacidades das memrias RAM nos ltimos anos, que combinadas podem passar dos 16Gbs, no h necessidade de
utilizar em tempo integral a virtualizao da memria como era necessrio at
alguns anos atrs. Em alguns casos, ainda necessrio a utilizao da memria
virtual, mas importante salientar, como foi feito anteriormente, que esta tcnica pode causar perda de desempenho do computador tendo em vista que o
acesso ao disco rgido mais lento que o acesso memria principal.
4.5.1 Paginao
O gerenciador de memria utiliza uma tcnica onde o espao de endereamento real e o espao de endereamento virtual so divididos em blocos do mesmo
tamanho. Esta tcnica conhecida como paginao. Os blocos obtidos da diviso so conhecidos como pginas, sendo que os blocos do endereamento real
so denominados pginas reais ou frames e os blocos do endereamento virtual
so denominados pginas virtuais. A figura 80 exibe o esquema de paginao
formado pela memria virtual, memria principal e a tabela de pginas. Cada
processo possui a sua prpria tabela de pginas. A tabela de pginas montada
durante o carregamento do processo e responsvel pelo mapeamento do endereo virtual para o endereamento real. Toda pgina virtual do processo possui uma entrada na tabela de processos (Entrada na Tabela de Pginas ETP).
A figura exibe os endereos descritos na forma binria, sendo que os bits de
mais alta ordem (trs primeiros nmeros da esquerda para direita) correspondem ao nmero da pgina e os bits de mais baixa ordem (2 ltimos nmeros)
correspondem ao deslocamento dentro da pgina.
Tomemos como exemplo, mapear referente ao endereo virtual (lgico) Y2
para o endereo real (fsico). O endereo virtual de Y2 corresponde a 00101 sendo que o nmero da pgina 001 e o deslocamento 01. Atravs da tabela de pginas encontramos que a entrada da pgina virtual 001 foi carregada na pgina
real 101. Basta agora unir os bits de deslocamento ao nmero da pgina real,
encontrado ento o endereo real 10101.

112

captulo 4

Memria Principal
000 00
000 01
000 10
000 11
000 00
000 01
000 10
000 11
000 00
000 01
000 10
000 11

X1
X2
X3
X4
Y1
Y2
Y3
Y4
Z1
Z2
Z3
Z4

Z1
Z2
Z3
Z4

X1
X2
X3
X4

Endereo Virtual de
Y2
001

Endereo Virtual de
Y2

01

101

01

ETP
Tabela de Pginas
Pag. Virtual

Pag. Real

000

010

001

101

010

000

Y1
Y2
Y3
Y4

000 00
000 01
000 10
000 11
001 00
001 01
001 10
001 11
010 00
010 01
010 10
010 11
011 00
011 01
011 10
011 11
100 00
100 01
100 10
100 11
101 00
101 01
101 10
101 11

Figura 80 Esquema de paginao.

4.5.2 Segmentao
Enquanto a paginao divide a memria virtual e blocos do mesmo tamanho, a segmentao uma tcnica que permite dividir tanto o espao de endereo virtual e real em blocos de tamanhos diferentes.

captulo 4

113

Memria Principal
Sistema
Operacional

7KB
10KB

10KB

Livre

Livre

9KB

30KB

14KB
Requisitos de
espao do processo
que est chegando

16KB

Livre

Figura 81 Sistema de segmentao.


Fonte: Deitel et al. (2005).

A diviso do tamanho do bloco est relacionado a diviso lgica de um programa. Uma diviso lgica de blocos para um programa poderia ser, por exemplo, instrues, dados e pilhas. Estes blocos so chamados de segmentos. Os
segmentos no necessariamente precisam ser do mesmo tamanho ou ocupar
posies adjacentes na memria principal. Os endereos virtuais so mapeados para o endereo real atravs de uma tabela de segmentos. As informaes
mantidas na tabela de segmento so semelhantes tabela de paginao.

114

captulo 4

Segmento 00 - Cdigo
00000
00001
00010
00011
00100
00101

Memria Lgica

C1
C2
C3
C4
C5
C6

Memria Fisica
D1
D2
D3
D4

Segmento 01 - Dados
00000
00001
00010
00011

D1
D2
D3
D4

C1
C2
C3
C4
C5
C6

Segmento 10 - Pilha
00000
00001
00010

p1
p2
p3
Tabela de Segmentos

Segmento

Base

Limite

00

01000

0110

01

00000

0100

10

10100

0011

p1
p2
p3

00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
10110
10111

Figura 82 Esquema de segmentao.

4.5.3 Segmentao com paginao


Neste tipo de gerenciamento de memria so combinadas as tcnicas de
segmentao e paginao. Os segmentos so arranjados ao longo de pginas de
memria virtual, permitindo desta forma as vantagens das duas tcnicas. O mapeamento do endereo virtual para um endereo real utiliza uma tabela de segmentos e uma tabela de pginas. O endereo virtual formado por um nmero
de segmento, nmero de pgina e deslocamento. Cada segmento est associado a
uma tabela de pginas. A Figura 83 mostra como feito o mapeamento de um
determinado endereo virtual. O nmero de segmento indica qual tabela de
segmentos o endereo est associado. Na tabela de segmentos indica qual tabela de pginas o segmento est associado. Combinando o nmero da pgina
com o deslocamento temos o endereo real.

captulo 4

115

Segmento virtual

Endereo Virtual

Num.
segmento

Num.
pgina

Deslocamento
Tabela de segmentos
ETS
End. da tabela de pginas

Tabela de pginas
ETP
Endereo do frame

Endereo do frame

Deslocamento

Endereo fsico
Figura 83 Segmentao com paginao.
Fonte: Machado e Maia (2007)

ATIVIDADE
1. Quais so as formas de alocao de memria pelo sistema operacional?
2. Como funciona a tcnica conhecida como Sobreposies (overlay)?

116

captulo 4

REFLEXO
Neste captulo estudamos o gerenciamento da memria, para tanto iniciamos vendo as estruturas de memria, espaamentos de endereamento fsico e lgico. Para melhor entender
como o sistema operacional efetua este gerenciamento, abordamos as diversas formas de
alocao da memria, como a alocao contgua e no-contgua. importante que, baseado
nos conceitos e arquiteturas apresentadas, voc seja capaz de identificar as vantagens e
desvantagens de cada modelo de alocao de memria. Reflita sobre isso e identifique as
diferenas ente cada uma delas.

LEITURA
Para voc avanar mais o seu nvel de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste captulo, consulte as sugestes de links abaixo:
Captulo 4 do livro
TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementao. 2
ed Porto Alegre: Bookman, 1999.

REFERNCIAS BIBLIOGRFICAS
DEITEL H. M.; DEITEL P. J.; CHOFFNES D. R. Sistemas Operacionais. 3 ed. So Paulo,
Editora Prentice-Hall, 2005.
HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de Computadores: uma abordagem quantitativa. 3 ed. Rio de Janeiro: Campus, 2003.
JOHNSTONE, M. S.; WILSON, P. R. The memory fragmentation problem: solved? ACM SIGPLAN Notices, 34(3): 2636, 1998.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4 ed. Rio de Janeiro:
LTC - Livros Tcnicos Editora S.A., 2007.
MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponvel em: <http://
dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-livro.pdf>. Acesso em: set. 2014.

captulo 4

117

OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 4 ed. Porto


Alegre : Editora Bookman, 2010.
PATTERSON, D. A.; HENNESSY, J. L. Organizao e Projeto de Computadores. 3 Ed. Rio
de Janeiro: Campus, 2005.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacionais. 6
ed. Rio de Janeiro: LTC - Livros Tcnicos Editora S.A., 2004.
TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementao. 2
ed Porto Alegre: Bookman, 1999.

NO PRXIMO CAPTULO
No captulo seguinte, estudaremos os principais componentes de hardware e software de entrada e sada. Voc entender como feita a comunicao dos dispositivos com o computador. Ser
apresentado como o sistema operacional efetua o gerenciamento dos arquivos e diretrios.

118

captulo 4

5
Gerncia de Entrada
e Sada

5 Gerncia de Entrada e Sada


Atualmente podemos conectar, alm dos j existentes, uma infinidade de dispositivos em nosso computador, tais como, mquinas fotogrficas, filmadoras, tablets,
celulares etc. Efetuar um gerenciamento de todos estes dispositivos considerado
a funo mais complexa do sistema operacional e uma das principais. Outro ponto
com relao aos sistemas de arquivos. Quantas informaes de alta relevncia
guardamos em nossos arquivos? Quantos dias de trabalho podem estar armazenados em um simples arquivo? Quais as consequncias de perdermos um destes
arquivos? Para responder a este questionamento, estudaremos como o sistema
operacional efetua o gerenciamento dos arquivos de forma a garantir segurana e
integridade dos seus dados.

OBJETIVOS
Estudar os principais componentes de hardware e software de entrada e sada.
Entender como feita a comunicao dos dispositivos com o computador.
Compreender como o sistema operacional efetua o gerenciamento dos arquivos e diretrios.

REFLEXO
Voc se lembra de alocao de memria, contgua e paginao? Caso no se lembre,
faa uma breve consulta e anote os principais conceitos.

120

captulo 5

5.1 Introduo
Uma das principais funes do sistema operacional fornecer mecanismos que
possam servir de comunicao entre o usurio e os diversos componentes de um
computador. Estes componentes so conhecidos como dispositivos de entrada e
sada, tais como mouse, teclado, monitor, telas sensveis ao toque, impressora,
pen drive, etc. No somente interao homem\mquina, mas tambm entre outros computadores (modems, placas de redes), outros dispositivos como celulares, cmeras digitais, tablets, etc., ou mesmo dispositivos que permitem o armazenamento de informaes (disco rgido, fita magntica, CD-ROM, etc.).
Assim, o sistema operacional mantm uma estrutura que permite controlar a diversidade de dispositivos de entrada e sada, atravs de operaes, tais
como envio de comando para os dispositivos, captura das interrupes geradas, tratamento de erros, interface entre os dispositivos e o restante do sistema
os programas dos usurios, entre outros.
Os dispositivos de entrada e sada podem ser classificados em perifricos
de entrada, perifricos de sada ou perifricos de entrada e sada, de acordo
com o fluxo de dados entre o computador e o dispositivo. Segundo Oliveira et
al. (2010) um perifrico qualquer dispositivo conectado a um computador de
forma a permitir a sua interao com o mundo externo. Como exemplo de perifricos, podemos citar:
Perifricos de entrada: teclado, mouse, webcam, scanner, etc.
Perifricos de sada: monitor, impressora, caixas de som, etc.
Perifricos de entrada e sada: monitor touchscreen, modem, pendrive,
joystick, impressoras com scanners, etc.
Cada um destes perifricos possuem suas prprias caractersticas e necessidades de mecanismos de acesso especficos. Consequentemente, geram um grande
desafio no sentido de desenvolvimento e manuteno de sistemas operacionais.
Gerenciar todas estas diversidades de perifricos de entrada e sada uma
das funes principais e mais complexas efetuada pelo sistema operacional.
Alm disso, deve fornecer um conjunto de rotinas e servios para que os dispositivos possam ser acessados pelos usurios e os seus programas. Para tanto, o
sistema operacional utiliza uma arquitetura de camadas para melhor gerenciar
os dispositivos de entrada e sada.

captulo 5

121

Processos de Aplicao
nvel de usurio
nvel de ncleo

data
control
API Entrada/Sada
data
control
Subsistema de Entrada e Sada

Gerenciador
Interrupo
software
hardware

data
control

IRQ

Device Driver
control

IRQ
Controlador
Interrupo

data/control

IRQ

Controlador
DMA

Controlador
Dispositivo

IRQ
data/control

I/O device

Figura 84 Arquitetura de entrada e sada.


Fonte: Adaptado de Maziero (2014).

5.2 Componentes de hardware de ENTRADA E SADA


O sistema operacional tem como funo gerenciar a comunicao entre os programas e os diversos dispositivos de entrada e sada. O sistema operacional no acessa
diretamente os dispositivos. O acesso e gerenciamento aos dispositivos feito pelo
sistema operacional passam pela controladora. Estudaremos os aspectos envolvidos nesta comunicao, bem como as caractersticas destes dispositivos.
Gerenciador
Interrupo

IRQ
Device Driver
control

HARDWARE

IRQ
Controlador
Interrupo

data/control

IRQ

Controlador
DMA

Controlador
Dispositivo

IRQ
data/control

Dispositivos

Figura 85 Componentes de hardware de E/S.


Fonte: Adaptado de Maziero (2014).

122

captulo 5

5.2.1 Dispositivos de Entrada e Sada


Atualmente h diversos dispositivos perifricos que permitem ao homem se
comunicar com o computador, como tambm entre computadores. Segundo
Maziero (2014) os perifricos podem variar em suas caractersticas, velocidade
e forma de transferncia dos dados e mtodo de acesso. A velocidade tpica de
transferncia de dados de alguns dispositivos ilustrada na tabela a seguir.

DISPOSITIVO

VELOCIDADE

Teclado

10 B/s

Mouse tico

100 B/s

Interface infravermelho (IrDA-SIR)

14 KB/s

Interface paralela padro

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 rgido SATA 2

300 MB/s

Interface grfica high-end

4.2 GB/s

Tabela 8 - Velocidades de dispositivo de E/S.


Fonte: Mazieiro

A classificao dos dispositivos pode variar de autor para autor. A primeira


classificao e utilizada anteriormente neste captulo, a feita por Carpinelli
(2001) onde os dispositivos de E/S so classificados em:
Dispositivos de entrada: so os dispositivos utilizados apenas para a entrada dados no sistema. Exemplo: teclado, mouse, webcam, scanner, etc.
Dispositivos de sada: so os dispositivos utilizados apenas para sada de
dados do sistema. Exemplo: monitor, impressora, caixas de som, etc.
Dispositivos de entrada e sada: so os dispositivos utilizados tanto para
a entrada como a sada de dados no sistema. Exemplo: monitor touchscreen, modem, disco rgido, etc.

captulo 5

123

Para Stallings (2002) os dispositivos podem ser classificados de acordo com


sua finalidade e como interage com o usurio e outros dispositivos. Assim temos:
9. Voltados para a comunicao com o usurio: so dispositivos adequados para a comunicao com o usurio. Exemplo: teclado, mouse, monitor, impressora, caixas de som, etc.
10.
Voltadosparaacomunicaocommquina:sodispositivosadequados
para a comunicao com dispositivos eletrnicos. Exemplo: disco rgido,
fita magntica, CD-ROMs, controladores, etc.
11.
Voltadosparaacomunicaocomdispositivosremotos:sodispositivos adequados para a comunicao remota. Exemplo: placa de rede,
modem, etc.
A classificao dada por Tanenbaum e Woodhyll (1999) leva em considerao a forma em que os dados podem ser acessados e/ou obtidos a partir destes
dispositivos. Podendo ser:
Dispositivos de blocos: so dispositivos que transferem ou armazenam
dados em blocos de tamanho fixo, cada um desses blocos possui um endereo, sendo que cada bloco pode ser acessado independentemente.
Exemplo: disco rgido, CD-ROM, etc.
Dispositivos de caractere: so dispositivos que enviam ou recebe um
fluxo de caracteres. Os caracteres no possuem endereamento e no
podem ser acessados de forma individual. Exemplo: teclado, mouse, impressoras, placas de rede, etc.
5.2.2 Controlador de entrada e sada
Para que os perifricos sejam conectados ao computador, o sistema disponibiliza componentes de hardware conhecidos como interfaces. As interfaces, por
sua vez, so conectadas aos barramentos de dados para que, independente do
tipo de perifrico, todos se comunicam com o computador. As interfaces implementam um outro hardware denominado controlador.
O controlador responsvel por gerenciar diretamente os dispositivos de
entrada e sada como tambm permitir a comunicao entre estes dispositi-

124

captulo 5

vos e o sistema operacional. Normalmente o controlador em um computador


uma placa de circuito impresso inserida em um determinado slot da placa
me. De modo geral, o controlador pode ser entendido como um processador,
que possui alguns registradores, dedicados a gerenciar as complexas funes
necessrias para o acesso aos perifricos de entrada e sada. Cada dispositivo
necessita de um controlador diferente, isto porque o controlador tem que conhecer como o dispositivo funciona para poder efetuar o seu controle.
O controle feito atravs de diversas funes como escrever dados, ler dados, executar comandos, ler status, etc. Para tanto, a comunicao entre a UCP
e o controlador feita atravs de um conjunto de registradores: registrador de
dado, registrador de status e registrador de comando.
Memria
Principal

UCP
Controlador
de Impressora

Controlador
de Disco

Controlador
de Fita

Impressora

Disco

Fita

Figura 86 Controladores.
Fonte: Machado e Maia (2007).

Alm dos registradores, o controlador possui um buffer que utilizado


para armazenar os dados lidos nos dispositivos at que seja formado um bloco. Quando o bloco formado, o controlador faz a checagem de erros, e se no
houver nenhum erro, o bloco pode ser transferido para a um buffer de entrada
e sada na memria principal. Esta transferncia do bloco do buffer interno do
controlador para a memria principal pode ser feita pela UCP ou por um controlador DMA (Acesso Direto Memria - Direct Memory Access).

captulo 5

125

A utilizao do DMA permite, entre outras coisas, que seja liberada a UCP durante o operao de busca de dados nos dispositivos de blocos. Sem o DMA a UCP teria que executar loops para a transferncia do bloco para a memria principal. A UPC apenas inicia
a operao de Entrada e sada informando o endereo inicial na memria e a quantidade
de bytes a ser transferido. Desta forma, vrias controladoras possuem suporte a DMA,
principalmente as controladoras de dispositivos de bloco (SILBERSCHATZ et al., 2004).

CONEXO
Aprofunde seus conhecimentos sobre Gerncia de Entrada e Sada:
<http://www.devmedia.com.br/como-funcionam-os-dispositivos-de-entrada-e-saida/28275>.

5.3 Componentes de Software de ENTRADA E SADA


O objetivo principal dos componentes de software, em relao aos dispositivos de entrada e sada, padronizar ao mximo o acesso a estes dispositivos.
Isto permite que novos dispositivos, como por exemplo, novos discos rgidos
sejam acrescentados ao computador sem que seja necessrio mudar o sistema
operacional. A padronizao permite ainda que uma aplicao possa abrir um
determinado arquivo no disco rgido sem se preocupar com a complexidade
envolvida no acesso e leitura do disco.

126

captulo 5

Processos de Aplicao
nvel de usurio
nvel de ncleo

data
control
API Entrada/Sada
data
control
Subsistema de Entrada e Sada

Gerenciador
Interrupo
SOFTWARE
hardware

data
control

IRQ

Device Driver
control

IRQ
Controlador
Interrupo

data/control

IRQ

Controlador
DMA

Controlador
Dispositivo

IRQ
data/control

Dispositivos

Figura 87 Componentes de Software de E/S.


Fonte: Adaptado de Maziero (2014).

5.3.1 Drivers
A comunicao entre a camada de subsistemas de entrada e sada e os controladores feita pelos devices drivers ou simplesmente drivers. Os drivers so camadas de software responsvel pela implementao de rotinas especficas que
permitem o acesso, inicializao e o gerenciamento de um determinado dispositivo de entrada e sada. As rotinas permitem que, ao receber uma a instruo
de acesso ou controle de dispositivo, esta instruo seja traduzida de uma forma que o dispositivo possa entend-la.
A camada dos drivers considerada uma camada dependente dos dispositivos. Cada driver implementado levando em conta um determinado dispositivo de entrada ou um grupo de dispositivo com caractersticas semelhantes. Isto
porque funo dos drivers programar os registradores internos dos controladores a fim de fazer o acesso e a gerncia destes dispositivos.

captulo 5

127

Outro fator a ser considerado com relao aos drivers o alto grau de dependncia do sistema operacional e o restante do kernel do sistema em que
ser instalado. A implementao dos drivers, leva em considerao o sistema
operacional, para que as corretas instrues de acesso ao dispositivo estejam
presentes no driver.
O alto grau de dependncia 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 modernizao dos sistemas operacionais, no h mais a necessidade de reinicializar
o sistema aps uma instalao, pois os drivers so carregados dinamicamente.

Processo

Subsistema de E/S

Driver de
Impressora

Driver de
Disco

Driver de
Fita

Controlador
de Impressora

Controlador
de Disco

Controlador
de Fita

Figura 88 Device drivers.


Fonte: Machado e Maia (2007).

A figura a seguir ilustra o gerenciado de dispositivo do Windows 7. Atravs


do gerenciador de dispositivo, podemos visualizar, atualizar ou configurar os
drivers dos dispositivos que esto instalados no computador. Quando um de-

128

captulo 5

terminado hardware est com mau funcionamento, o sistema operacional sinalizado no gerenciador de dispositivo. Verificando esta sinalizao, possvel
efetuar as devidas correes.

Figura 89 Gerenciador de Dispositivos do Windows 7.

5.3.2 Subsistemas de entrada e sada


Atualmente h uma grande quantidade de perifricos conectados ao computador, para diversas funes, com velocidades diferentes e formatos variados.
Para isolar a complexidade de operaes especficas para controle da grande
variedade de dispositivo de hardware e usurios e os seus programas, o sistema
operacional implementa uma camada de software, denominada Subsistemas de
Entrada/Sada.
A funo dos Subsistemas de Entrada/Sada fornecer diversas rotinas necessrias para controle da grande quantidade de dispositivos, isolando o usurio e
os programas da complexidade de gerenciamento dos dispositivos de entrada e

captulo 5

129

sada, como tambm permitir uma maior flexibilidade do sistema. Isto feito
atravs da abstrao de uma camada para outra, ou seja, uma camada de baixo
nvel oferece rotinas simples de comunicao com sua camada superior. Dessa
forma, a camada superior no necessita conhecer toda a complexidade da camada inferior para efetuar a comunicao. As camadas mais prximas dos dispositivos, normalmente so as que tm a tarefa de tratar os erros destes dispositivos.
Esta estratgia permite uma maior padronizao e diminuio do nmero de rotinas de acesso aos perifricos de entrada e sada. Assim o subsistema
de E/S oferece um conjunto de rotinas, chamadas de rotinas de entrada/sada,
pelo qual o usurio consegue acessar os dispositivos, independentes de ter que
conhecer toda sua complexidade. Dessa forma, o subsistema de E/S considerado independente de dispositivo.
Consequentemente, ao instalar um novo dispositivo no computador, no
h necessidade de alterar as rotinas dos programas do usurio.
5.3.3 Aplicao do usurio
Os dispositivos de entrada e sada so acessados atravs dos aplicativos e linguagens de programao utilizadas pelos usurios. Por exemplo, o caso de um
aplicativo de planilha eletrnica, as operaes para abrir e salvar um arquivo
no disco rgido (dispositivo de armazenamento) feitas pelo aplicativo ficam
transparentes para o usurio. As linguagens de programao, utilizadas para
desenvolvimento dos aplicativos, possuem um conjunto de comandos de alto
nvel que so traduzidos pelo compilador da linguagem em funes que so
disponveis em bibliotecas de entrada e sada. Estas bibliotecas contm funes de chamadas ao sistema operacional e so fornecidas pelos fabricantes do
compilador. Uma caracterstica importante destas bibliotecas e que so fornecidas como um mdulo objeto (relocvel), ou seja, a biblioteca ligada com o
programa desenvolvido pelo programador para compor o aplicativo final.
As operaes de entrada e sada podem ser classificadas de acordo com o
seu sincronismo, podendo ser sncrona ou assncrona. A maioria dos comandos de alto nvel funciona na forma sncrona. Neste modelo de sincronismo, o
processo chama uma operao e fica em estado de espera aguardando o final
da chamada. Na chamada assncrona, o processo chama a operao e no necessita aguardar o final da chamada em estado de espera, o processo continua
pronto para ser executado.

130

captulo 5

Tempo
Processo
Bloqueado

Processo A
Chamada

Retorno

Chamada Sincrona
Tempo
Processo A
Chamada

Retorno

Processo B
Chamada Assincrona
Figura 90 Chamada sncrona e assncrona.

5.4 Sistema de Arquivos


Estudamos em captulos anteriores o armazenamento primrio e secundrio
do sistema operacional. O armazenamento secundrio e o local onde os arquivos (programas e dados) so armazenados de forma confivel e ntegro, mesmo
que o computador permanea longos perodos de tempo desligado. O armazenamento secundrio pode ser feito por diversos tipos de dispositivos de entrada e sada como, por exemplo, disco rgido, discos pticos, fitas magnticas,
etc. Os arquivos so gerenciados e organizados pelo sistema operacional atravs do sistema de arquivos.
Segundo Deitel et al. (2005) o sistema de arquivos tem a funo de:
Gerenciamento de arquivos: fornecer estrutura para que os arquivos possam ser armazenados, referenciados, compartilhados e que possam estar em segurana.
Integridade do arquivo: garantir que os dados armazenados em um arquivo no sejam corrompidos por qualquer motivo que seja.
Mtodos de acesso: fornecer mecanismo de acesso aos dados armazenados.

captulo 5

131

Estas caractersticas permitem que o usurio possa, atravs dos sistemas de


arquivo, estruturar os arquivos da melhor forma para que possam ser utilizados em cada aplicao. O sistema de arquivos deve prover mecanismos em que
os arquivos possam ser compartilhados entre usurios de uma forma segura e
controlada. O sistema de arquivo deve garantir a independncia do dispositivo,
ou seja, o usurio pode efetuar operaes com os arquivos atravs de nomes
simblicos. Nomes simblicos so nomes lgicos de fcil interpretao do usurio, por exemplo, MeuDiretrio:MeuArquivo.txt. Caso fosse necessrio utilizar
nomes de dispositivos fsicos para operaes com arquivos, teria que especificar o lugar do dispositivo onde o arquivo deveria ser acessado, por exemplo,
disco 2, blocos 782-791. Alm disso, os usurios devem poder criar, modificar,
eliminar arquivos e que o sistema de arquivo oferea uma interface amigvel e
consistente a realizao de todas as tarefas citadas anteriormente. Deitel et al.
(2005) destaca ainda a importncia do sistema de arquivo fornecer mecanismo
que facilitem a criao de cpias de segurana e recuperao que permitam ao
usurio a recuperar quaisquer dados danificados ou perdidos.

CONEXO
Leia mais sobre Sistema de Arquivos em:
<http://pt.kioskea.net/contents/612-o-sistema-de-arquivos>.

5.5 Conceitos de Arquivos e Diretrios


Silberschatz et al. (2004) define os arquivos como sendo um conjunto de dados
relacionados que gravado no armazenamento secundrio atravs de um nome.
A gravao feita no armazenamento secundrio principalmente por ser um dispositivo no voltil como um disco rgido, discos magnticos e discos pticos.
O conjunto de dados contidos em um arquivo pode ser uma sequncia de
bit, bytes, linhas ou registros. Os dados ainda podem estar na forma numrica,
alfabtica, alfanumrica ou binria. Desta forma possvel armazenar um arquivo
figura, texto, programa executvel, programa fonte, msica, vdeo, etc. Assim, os
arquivos podem representar programas ou dados.
Na viso do usurio e dos programas os arquivos so uma maneira de gravar informaes no disco rgido e de recuper-las de volta em algum momento.

132

captulo 5

Tanto a gravao quanto a leitura deve ser feita de forma que o usurio no tenha que conhecer os detalhes de como o disco rgido trabalha realmente. Isto
feito atravs de uma viso lgica uniforme fornecida pelo sistema operacional
para o armazenamento de informaes.
Quando um arquivo criado por um programa, ele recebe um nome, composto por uma cadeia de caracteres. Atravs do nome o arquivo pode ser acessado 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 vlidos de arquivos, sequncias de caracteres com oito letras. Sistemas
mais modernos permitem at 255 caracteres para nomes de arquivos. Outro
ponto a ser observado com relao a nomes escritos com letras maisculas e nomes escritos com letras minsculas. No sistema Windows, por exemplo, o arquivo
com nome SISTEMA_OPERACIONAL.DOCX a mesma coisa que sistema_operacional.docx e Sistema_Operacional.DocX. J para o UNIX, os nomes de arquivos SISTEMA_OPERACIONAL.DOCX, sistema_operacional.docx e Sistema_Operacional.DocX
so arquivos distintos. Em geral, os sistemas operacionais permitem nomes de arquivos com duas ou mais partes separadas por um ponto. A parte aps o ponto
chamada de extenso. A extenso tem como finalidade informar algo sobre
o arquivo ou uma conveno definida para ele. Por exemplo, um arquivo com
o nome noticia.txt, a extenso .txt, tem como conveco indicar que o arquivo provavelmente contm um texto. A tabela a seguir exibe algumas extenses
mais comuns para arquivos.

EXTENSO

SIGNIFICADO

file.back

Arquivo de cpia de segurana

file.c

Programa fonte em C

file.gif

file.html

Imagem no formato de intercmbio grfico da Compuserve


(graphical interchange format)
Arquivo de auxlio

captulo 5

133

EXTENSO
file.jpg

SIGNIFICADO
Documento do Word Wide Web em linguagem de marcao de
hipertexto (hypertex markup language HTML)

file.mp3

Imagem codificada com padro JPEG

file.mpg

Msica codificada no formato de udio MPEG camada 3

file.o

Filme codificado com padro MPEG

file.pdf

Arquivo-objeto (sada do compilador, ainda no-ligado)


Arquivo no formado porttil de documentos (portable document

file.ps

format PDF)

file.tex

Arquivo no formato PostScript

file.tex

Entrada para o programa de formatao TEX

file.txt

Arquivo de textos

file.zip

Arquivo comprimido

Tabela 9 - Extenses tpicas de arquivos.

Os arquivos possuem um conjunto de informaes de controle conhecidas


como atributos. Dependendo do sistema operacional, os atributos de um arquivo podem variar. Em geral os atributos so:
Tamanho: o total de dados que esto armazenados no arquivo.
Localizao: o local onde o arquivo est armazenado.
Acessibilidade: restrio quanto ao acesso dos dados do arquivo.
Tipo: indica o formato dos dados do arquivo permitindo saber como o
arquivo utilizado. Arquivo utilizado como imagem, vdeo, udio, etc.
Datas: os arquivos mantm as datas de criao, ltimo acesso e a sua ltima modificao.

134

captulo 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 boto direito do
mouse sobre um arquivo e escolhendo a opo Propriedade.

Figura 91 Propriedade de um arquivo no Windows 7.

Os dados armazenados e recuperados em um arquivo, feitas por uma aplicao ou pelo sistema operacional, so feitas atravs de um conjunto de operaes. As operaes bsicas oferecidas pelo sistema operacional so:
Criar: permite a criao de um novo arquivo. A criao de um arquivo
envolve definir nome, atributos, localizao, permisses, etc.
Abrir: permite a abertura do arquivo. Antes de abrir, o sistema operacional efetua vrias operaes, tais como verificar se o arquivo existe na localizao informada, se as permisses informadas permitem o acesso ao
arquivo, etc.
Ler: permite a leitura do arquivo.
Escrever: permite adicionar dados ao arquivo.
Copiar: permite que um arquivo seja copiado.

captulo 5

135

Renomear: permite que um arquivo seja renomeado.


Listar: permite exibir ou imprimir o contedo de um arquivo.
Fechar: impedir que novas referncias sejam feitas a um arquivo at que
o mesmo seja reaberto.
Destruir: elimina o arquivo do armazenamento secundrio.
Deitel et al. (2005) descreve as operaes que podem ser feitas para a manipulao do conjunto de dados contidos em um arquivo. Estas operaes so:
Ler: a memria de um processo recebe uma cpia dos dados contidos em
um arquivo.
Escrever: os dados contidos na memria de um processo so 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.
5.5.1 Estrutura de arquivos
A forma como os dados esto organizados internamente dentro de um arquivo
conhecida como estrutura de arquivos. As estruturas de arquivos podem ser
feitas de diversas formas. Algumas das estruturas mais comuns encontradas
para arquivos so apresentadas na figura 92.
A primeira forma de organizao (figura 92 (a)) uma sequncia de bytes
no estruturados. Neste tipo de estrutura, a aplicao que define toda a organizao interna do arquivo. A forma de estruturao de um arquivo apresentada
na figura 92 (b). Nesta estrutura, um arquivo contm um conjunto de registros
de comprimento fixo. Os registros possuem uma estrutura interna para organizar os dados. Na terceira forma (figura 92 (c)) os registros no tem a necessidade
de serem do mesmo comprimento.
O registro possui um campo chave. O campo chave permite uma organizao
em forma de rvore de registro, como tambm, permitir a rpida localizao de
uma chave particular dentro da rvore.

136

captulo 5

1 Byte

1 Registro

Gato

Vaca

Cachorro

Galinha

(a)

(b)

bis

Formiga

Raposa

Porco

Cabrito

Leo

Coruja

Potro

Rato

Minhoca

Carneiro

(c)

Figura 92 Tipos de estruturas de arquivos. (a) Sequencia de bytes. (b) Sequencia de


registros. (c) rvore.
Fonte: Tanenbaum e Woodhyll (1999)

5.5.2 Sistema de Diretrio


Um sistema pode conter uma elevada quantidade de arquivos armazenados em
seu disco rgido. A organizao lgica destes arquivos feita pelo sistema de
arquivos atravs de estruturas de diretrios.
A forma como os diretrios so organizados pode variar de acordo com o
sistema operacional. As formas mais comuns de organizao so mostradas na
figura 99. A primeira forma de estrutura e que foi utilizada nos primeiros computadores mostrada na figura 99 (a). Esta estrutura, considerada a forma mais
simples de organizao, uma estrutura de diretrio de nvel nico (ou plana).
No diretrio de nvel nico, todos os arquivos de todos os usurios so mantidos em um nico diretrio. O problema desta estrutura que os usurios criem
arquivos com o mesmo nome.
A figura 93 (b) exibe uma estrutura de diretrio em dois nveis. Com a estrutura em dois nveis possvel que cada usurio possua o seu prprio diretrio.
Desta forma, os usurios podem criar seus arquivos com qualquer nome sem
ter a necessidade de verificar se outro usurio criou um arquivo com o mesmo
nome. Para permitir que os usurios possam agrupar seus arquivos de forma

captulo 5

137

lgica surgiu a abordagem mostrada na figura 93 (c). Esta estrutura conhecida


como diretrio estrutudados em rvore. Nesta estrutura os usurios podem criar
quantos diretrios forem necessrios permitindo que possam agrupar seus arquivos de forma lgica.
Diretrio-raiz

Diretrio-raiz
A

Diretrio-raiz
A

B
A

Diretrio
de usurio
C

Arquivos

A
A

B
B

(b)

Subdiretrios
de usurio
(a)

C
C

(c)

Figura 93 Trs projetos de sistemas de arquivos. (a)Diretrio de nvel nico (ou plana).
(b) Diretrio em dois nveis. (c) Diretrio em rvore.
Fonte: Tanenbaum e Woodhyll (1999).

Segundo Deitel et al. (2005), um diretrio um arquivo onde so armazenados os nomes e as localizaes referentes a outros arquivos.

5.6 Mtodos alocao


A alocao de espao em armazenamento secundrio enfrenta problemas semelhantes aos de alocao da memria principal. Toda vez que se aloca e libera
espaos no disco rgido, este fica cada vez mais fragmentado. A fragmentao
do disco faz com que os arquivos fiquem espalhados por blocos, muitas vezes
distantes uns dos outros, que podem causar perda de desempenho do sistema.
Existem trs formas mais utilizada para alocar espao em disco: contguo,
encadeado e indexado.

138

captulo 5

5.6.1 Alocao Contgua


A abordagem de Alocao Contgua a mais simples de alocao de espao no
disco rgido. Na alocao contgua um arquivo ocupa um conjunto de blocos
sequenciais. Para acessar um arquivo, o sistema operacional necessita conhecer o endereo fsico do bloco e o tamanho do arquivo. O problema neste tipo
de alocao que se no houver a quantidade de espao contguo suficiente
para armazenar um arquivo, este arquivo no pode ser criado. Outro problema
est relacionado ao tamanho do arquivo que tende a mudar de tamanho conforme alterado pelo usurio. Isto pode acarretar um aumento no tamanho do
arquivo e talvez no haja espao contguo disponvel para suport-lo.

Tabela de diretrio
bytes

blocos

foto1.jpg

nome

10417

relat.pdf

28211

13

instruc.txt

6214

20

sinfonia.mp3

19116

incio

blocos lgicos com 4096 bytes

bloco em uso
bloco livre

00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

Figura 94 Estratgia de alocao contgua.


Fonte: Maziero (2014).

captulo 5

139

5.6.2 Alocao Encadeada


A alocao encadeada permite que os blocos sejam alocados de forma no contgua. Os blocos de um arquivo podem estar armazenados em locais diferentes
no disco rgido. O diretrio contm um ponteiro para o primeiro bloco do arquivo, este bloco, por sua vez, aponta para o prximo, e assim sucessivamente
o mtodo de alocao encadeada resolve boa parte dos problemas encontrados na alocao contgua. O problema neste tipo de alocao, est no fato dos
blocos dos arquivos estarem espalhados pelo disco rgido, h um aumento no
tempo de acesso destes arquivos.

Tabela de diretrio
bytes
blocos

nome

incio

foto1.jpg

10417

relat.pdf

28211

13

instruc.txt

6214

20

sinfonia.mp3

6214

blocos lgicos com 4096 bytes

bloco em uso
bloco livre

Figura 95 Alocao Encadeada.


Fonte: Maziero (2014).

140

captulo 5

00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

5.6.3 Alocao indexada


Um problema da alocao encadeada que para acessar um determinado bloco necessrio iniciar a busca no primeiro bloco e ir navegando na lista at
encontrar o bloco desejado. No possvel acessar o bloco diretamente. Este
problema foi solucionado com a alocao indexada. Neste mtodo todos os
ponteiros de um arquivo so colocados em um mesmo bloco chamado bloco de
ndices, conforme figura abaixo. Desta forma qualquer bloco do arquivo pode
ser acessado diretamente.
Tabela de i-nodes

Tabela de diretrio
nome
foto1.jpg

i-node
4

relat.pdf

instruc.txt

10

sinfonia.mp3

31

10417
...

blocos lgicos com 4096 bytes

i-node 5
meta-dados

bloco em uso
bloco livre

ponteiros
de dados

13
16
17
19
22
10
12
null
null
null

Figura 96 Alocao indexada.


Fonte: Maziero (2014).

captulo 5

141

5.7 Gerncia de espaos livres


Devido a quantidade limitada de espao em disco rgido, o sistema operacional tem que manter informaes dos espaos livres no disco para que possam
ser utilizados. Estes espaos livres incluem os j existentes alm daqueles liberados quando um arquivo excludo do sistema. As estratgias mais comuns
adotadas pelo sistema operacional para manter estas informaes so:
Mapa de bits: neste mtodo cada bloco no disco representado por um
bit. Se o bloco estiver em uso, o seu bit no mapa de bits tem o valor igual
a 1. Se o bloco esta livre, o valor referente a seu bit tem o valor igual a 0
(figura 97 (a)).
Lista encadeada: este mtodo mantm uma lista encadeada com todos
os blocos livres (figura 97 (b)).
Tabela de blocos livres: esta abordagem leva em considerao a utilizada
de blocos contguos. A tabela mantm o endereo do primeiro bloco de
cada segmento e a quantidade da sequencia de blocos (figura 97 (c)).

Incio

11001101
10000111
01110100
.
.
.
11100000
(a) Mapa de bits

(b) Lista encadeada

Figura 97 Gerncia de espaos livres.


Fonte: Machado e Maia (2007).

142

captulo 5

Bloco

Contador

10

13

25

20

50

(c) Tabela de blocos livres

5.8 Proteo de acesso


Devido o acesso aos arquivos por diversos usurios e levando em considerao
que muitos destes arquivos podem conter dados confidencias como senhas,
nmeros de carto de crdito, etc., h uma grande necessidade do sistema operacional fornecer mecanismos de controle de acesso aos arquivos. Entre os tipos de operaes que podem ser controladas so:
Leitura: controla qualquer operao para visualizar, editar ou copiar
o arquivo.
Escrever: controla qualquer operao para incluir ou alterar o arquivo.
Executar: controla qualquer operao de carregamento e execuo do
arquivo.
Excluir: controla qualquer operao para excluir o arquivo.
O controle de acesso a um arquivo pode ser feito atravs de senha de acesso.
Somente o usurio que possuir a senha de acesso pode efetuar as operaes
descritas acima em relao ao arquivo. Outra forma de controle baseada em
grupos de usurios. Nesta abordagem o acesso a um arquivo dado a um grupo
de usurio. Os usurios ento so adicionados a este grupo quando necessitarem fazer acesso ao arquivo.

ATIVIDADE
1. De acordo com o material, qual a forma que o sistema operacional acessa os dispositivos de entrada e sada?
2. Os dispositivos de entrada e sada podem ser classificados levando em considerao
a anlise de diversos autores. Quais so as formas de classificao de um dispositivo
quando so consideradas as formas como os dados so acessados a partir deste dispositivo.

REFLEXO
Neste captulo estudamos os principais componentes de hardware e software de entrada e
sada. Vimos como o sistema operacional tem a difcil tarefa de gerenciar a complexidade dos
diversos tipos de dispositivos de entrada e sada que podem variar em funo, velocidade, etc.

captulo 5

143

Fomos alm, e compreendemos como so feitas as comunicaes entre estes dispositivos e o


sistema operacional, atravs das controladoras, drives, etc. Por fim estudamos os principais aspectos envolvidos no gerenciamento de arquivos e diretrios. A compreenso das dificuldades
do sistema de gerenciamento de dispositivos de entrada e sada como tambm do sistema de
gerenciamento de arquivos de grande relevncia para um melhor entendimento das solues
providas para um sistema operacional.
No 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 sucesso!

LEITURA
Para voc avanar mais o seu nvel de aprendizagem envolvendo os conceitos de sistemas
operacionais e demais assuntos deste captulo, consulte as sugestes de links abaixo:
Captulos 11 e 12 do livro
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacionais. 6 ed. Rio de Janeiro: LTC - Livros Tcnicos Editora S.A., 2004.

REFERNCIAS BIBLIOGRFICAS
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. So Paulo,
Editora Prentice-Hall, 2005.
HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de Computadores: uma abordagem
quantitativa. 3 ed. Rio de Janeiro: Campus, 2003.
JOHNSTONE, M. S.; WILSON, P. R. The memory fragmentation problem: solved? ACM
SIGPLAN Notices, 34(3): 2636, 1998.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4 ed. Rio de Janeiro: LTC - Livros Tcnicos Editora S.A., 2007.

144

captulo 5

MAZIERO, C. A. Sistemas Operacionais: Conceitos e Mecanismos. Disponvel em:


<http://dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so-livro.pdf>. Acesso em: set.
2014.
OLIVEIRA, R. S., CARISSIMI, A. S., TOSCANI, S. S. Sistemas Operacionais. 4 ed.
Porto Alegre : Editora Bookman, 2010.
PATTERSON, D. A.; HENNESSY, J. L. Organizao e Projeto de Computadores. 3 Ed.
Rio de Janeiro: Campus, 2005.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G Fundamentos de Sistemas Operacionais. 6 ed. Rio de Janeiro: LTC - Livros Tcnicos Editora S.A., 2004.
STALLINGS, W. Arquitetura e Organizao de Computadores, 5 Edio, Prentice
Hall, So Paulo, 2002.
TANENBAUM, A. S.; WOODHYLL, A. S. Sistemas operacionais projeto e implementao. 2 ed Porto Alegre: Bookman, 1999.

EXERCCIO RESOLVIDO
Captulo 1
1. De acordo com o material, qual das opes 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 so considerados sistemas operacionais so: Android, Windows e Linux. Assim, a opo correta a C.
2. Quais as principais funes do kernel?
As principais funes do kernel so a sincronizao e comunicao entre processos,
escalonamento e controle dos processos, gerncia de memria, gerncia de sistema de
arquivos, gerncia de dispositivos de E/S.

captulo 5

145

3. Para que uma aplicao possa utilizar os servios disponveis pelo Kernel deve efetuar a
comunicao 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 intermedirio entre as aplicaes do usurio
e o Kernel.

Captulo 2
1. O processo composto por trs partes, entre elas o contexto de hardware. Das opes
abaixo, qual opo que faz parte do contexto de hardware?
a) Endereo de memria
b) Registrador PC
c) PID
d) Privilgio
e) Tempo de processador
A resposta correta a B. Das opes acima, apenas o Registrador PC faz parte do
contexto de hardware.
2. O processo composto por trs partes, entre elas o contexto de software. Das opes
abaixo, qual opo que faz parte do contexto de software?
a) Registrador SP
b) Registrador PC
c) PID
d) Endereo de memria
e) Registrador de status
A resposta correta a C. Das opes 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

captulo 5

seu ciclo de vida


Porque os processos I/O-Bound esto mais ligados aos dispositivos de entrada e sada,
cujo acesso so mais lentos que outros componentes do sistema

Captulo 3
1. De acordo com o material, o que poltica de escalonamento de um processo?
Atravs da politica de escalonamento, o sistema operacional gerencia o processador
definindo qual processo deve ser executado, tornando possvel a multiprogramao.
2. Qual a diferena entre o escalonamento preemptivo e no-preemptivo?
O escalonamento no-preemptivo permite que o processo seja executado do incio ao fim
sem ser interrompido at ser finalizado. J no escalonamento preemptivo, o escalonador
tem a capacidade de trocar um processo, que poderia continuar executando, por outro.
3. Descreva as principais diferenas entre os escalonamentos do tipo Circular e FIFO?
O escalonamento circular o sistema operacional determina um perodo de tempo que um
processo pode ser executado pelo processador. No final do tempo, o processo trocado
por outro. J no escalonamento FIFO o processo utiliza o processador at terminar para
ento ser trocado por outro. O escalonador FIFO no-preemptivo enquanto o circular
preemptivo.

Captulo 4
1. Quais so as formas de alocao de memria pelo sistema operacional?
O sistema operacional pode alocar a memria de forma Contgua ou No-Contgua. A
forma Contgua pode ser Simples ou Particionada Esttica (Fixa) / Dinmica. J a No-Contgua pode ser por Paginao, Segmentao ou Segmentao com Paginao.
2. Como funciona a tcnica conhecida como Sobreposies (overlay)?
Nesta tcnica o programa desenvolvido de forma que possa ser dividido em partes
lgicas independentes de forma a permitir que uma parte possa ser substituda por outra
quando no estiver em uso.

captulo 5

147

Captulo 5
1. De acordo com o material, qual a forma que o sistema operacional acessa os dispositivos de entrada e sada?
O sistema operacional no acessa diretamente os dispositivos de entrada e sada. O
acesso aos diapositivos feito atravs de uma controladora.
2. Os dispositivos de entrada e sada podem ser classificados levando em considerao
a analise de diversos autores. Quais so as formas de classificao de um dispositivo
quando so consideradas as formas como os dados so acessados a partir deste dispositivo.
De acordo com Tanenbaum e Woodhyll (1999), que leva em considerao a forma em
que os dados podem ser acessados e/ou obtidos a partir dispositivos de E/S, os dispositivos podem ser classificados em: dispositivos de blocos ou dispositivos de caractere.

148

captulo 5