You are on page 1of 69

Sistemas

Operacionais
Este manual foi feito somente para o Curso Superior de
Cincia da Computao, para o ano de 2015, para ser
usada pelo Professor Flvio Augusto de Freitas. O autor
reserva-se o direito de ceder seu uso somente por
autorizao tcita e por escrito.

2015

Quaisquer usos que porventura este manual possa ter,


sem a prvia autorizao do autor, configura roubo de
propriedade intelectual e como tal ser tratado nas mais
altas penalidades que a Lei de Direitos Autorais (Lei n
9.610, de 19/02/1998) possa alcanar.
A licena de uso e redistribuio deste material
oferecida sem nenhuma garantia de qualquer tipo,
expressa ou implcita, quanto a sua adequao a
qualquer finalidade. O autor no assume qualquer
responsabilidade sobre o uso das informaes contidas
neste material.

Flvio Augusto de Freitas


Professor de Informtica

Impresso em outubro de 15

Sistemas Operacionais
ndice Analtico
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

ndice Analtico
CAPTULO 1 INTRODUO ............................................................................................................................ 1
1.1 - O que um Sistema Operacional? ........................................................................................................ 1
1.2 - O Sistema Operacional como uma Mquina Virtual ............................................................................. 1
1.3 - O Sistema Operacional Visto como um Gerente de Recursos ............................................................... 2
CAPTULO 2 EVOLUO DOS SISTEMAS OPERACIONAIS ................................................................... 3
2.1 - Introduo ............................................................................................................................................. 3
2.2 - Os primeiros Sistemas Operacionais ..................................................................................................... 3
2.2.1 - Primeira Fase (1945-1955)...............................................................................................................................3
2.2.2 - Segunda Fase (1956-1965)...............................................................................................................................4
2.2.3 - Terceira Fase (1966-1980) ...............................................................................................................................5
2.2.4 - Quarta Fase (1981-1990)..................................................................................................................................7
2.2.5 - Quinta Fase (1991-Atualmente) .......................................................................................................................8

CAPTULO 3 ESTRUTURA DE SISTEMAS OPERACIONAIS .................................................................... 9


3.1 Ncleo de um Sistema Operacional ......................................................................................................... 9
3.2 Chamadas ao Sistema (System Calls) ...................................................................................................... 9
3.3 Modos de Acesso .................................................................................................................................... 10
3.4 O INTERPRETADOR DE COMANDOS ............................................................................................... 11
3.5 Tipos de Estrutura de Sistemas Operacionais ....................................................................................... 12
3.5.1 Sistemas Monolticos ....................................................................................................................................... 12
3.5.2 Sistemas em Camada ........................................................................................................................................ 13
3.5.3 Sistemas Cliente-Servidor ................................................................................................................................ 14
3.5.4 Sistemas Monolticos versus Sistemas Cliente-Servidor .................................................................................. 15

CAPTULO 4 PROCESSOS .............................................................................................................................. 16


4.1 O Modelo de Processo ........................................................................................................................... 16
4.1.1 Estados dos Processos ...................................................................................................................................... 17
4.1.2 Implementao de Processos ............................................................................................................................ 20

4.2 Comunicao entre Processos ............................................................................................................... 21


4.2.1 Condies de Corrida ....................................................................................................................................... 22
4.2.2 Sees (Regies) Crticas .................................................................................................................................23
4.2.3 Propostas Para Obteno de Excluso Mtua ...................................................................................................23
4.2.3.1 Buffers e Operaes de Sleep e Wakeup ..................................................................................................24
4.2.3.2 Semforos ................................................................................................................................................ 27
4.2.3.3 Monitores ................................................................................................................................................. 28
4.2.3.4 Passagem de Mensagens .......................................................................................................................... 31
4.2.3.4.1 Classificao da Comunicao em Sistemas com Vrias CPUs....................................................... 31
4.2.3.4.2 Problema do Produtor-Consumidor com Passagem de Mensagens .................................................. 32

CAPTULO 5 ESCALONAMENTO DE PROCESSOS .................................................................................. 34


5.1 Escalonamento Preemptivo versus No Preemptivo.............................................................................. 34
5.2 Qualidade do Escalonamento ................................................................................................................ 34
5.2 Algoritmos de Escalonamento ............................................................................................................... 35
5.2.1 Escalonamento First In, First Out ..................................................................................................................... 35
5.2.2 Escalonamento Round Robin ........................................................................................................................... 36
5.2.3 Escalonamento Shortest Job First ..................................................................................................................... 38
5.2.4 Escalonamento Multilevel Feedback Queues ...................................................................................................39

CAPTULO 6 SISTEMAS DE ARQUIVOS ..................................................................................................... 41


6.1 Conceitos de Arquivos ........................................................................................................................... 42
6.2 Organizao de Diretrios .................................................................................................................... 44
6.2.1 Organizao em Nvel nico ........................................................................................................................... 44
6.2.2 Organizao em Dois Nveis ............................................................................................................................ 44
6.2.3 Organizao em rvores ..................................................................................................................................45

6.3 Sistemas Baseados em Disco ................................................................................................................. 46


6.3.1 Converso de Trilha/Setor em Bloco Contnuo ................................................................................................ 47

6.4 Mtodos de Acesso ................................................................................................................................. 48


Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
ndice Analtico
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.
6.4.1 Gerenciamento de Espao Livre em Disco ....................................................................................................... 48
6.4.1.1 Lista Ligada ou Encadeada ...................................................................................................................... 48
6.4.1.2 Lista de Blocos Contguos........................................................................................................................ 49
6.4.2 Alocao de Espao Para Arquivos .................................................................................................................. 49
6.4.2.1 Alocao Contgua ...................................................................................................................................49
6.4.2.2 Alocao Encadeada ................................................................................................................................ 50
6.4.2.3 Alocao Indexada ...................................................................................................................................51

CAPTULO 7 GERENCIAMENTO DE MEMRIA ..................................................................................... 53


7.1 Organizao Hierrquica de Memria .................................................................................................. 53
7.2 Tipos de Gerenciamento de Memria .................................................................................................... 55
7.2.1 Alocaes Particionadas Esttica e Dinmica ..................................................................................................55
7.2.2 Swapping .......................................................................................................................................................... 57
7.2.3 Memria Virtual ............................................................................................................................................... 59
7.2.3.1 Paginao ................................................................................................................................................. 61
7.2.3.2 Segmentao ............................................................................................................................................ 64

NDICE REMISSIVO ......................................................................................................................................... 66

Flvio Augusto de Freitas

Professor de Informtica

ii

Sistemas Operacionais
Introduo
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Captulo 1
Introduo
1.1 - O que um Sistema Operacional?
Mesmo que os usurios j tenham uma certa experincia em Sistemas Operacionais, difcil
dar-lhes uma idia precisa do que um Sistema Operacional (SO). Parte do problema vem do
fato do Sistema Operacional realizar duas funes que no possuem nenhuma relao uma com
a outra, e dependendo de quem est tentando passar a idia, poder dar nfase maior a uma ou
outra funo. Essas funes esto descritas a seguir.

1.2 - O Sistema Operacional como uma Mquina


Virtual
A arquitetura de um computador (conjunto de instrues, organizao da memria, estrutura
de Entrada/Sada (E/S) e estrutura de barramento) bastante primitiva e difcil de programar,
em especial a parte de entrada e sada. Fica claro que a maioria dos programadores no quer ou
no pode envolver-se com detalhes da programao. Torna-se evidente, ento, que o
programador deseja lidar com uma abstrao de alto nvel e, consequentemente, bastante
simples. No caso dos discos, uma abstrao tpica poderia fazer com que o disco fosse visto
como uma coleo de arquivos identificados por nomes. Cada arquivo deve ser aberto para
leitura ou escrita, em seguida deve ser lido ou escrito, e finalmente deve ser fechado. Detalhes
a respeito do processo de gravao ou a respeito do estado da corrente do motor da controladora,
no devem aparecer na abstrao apresentada ao usurio.
O programa que esconde o verdadeiro hardware do usurio e apresenta-lhe um esquema
simples de arquivos identificados que podem ser lidos ou escritos , naturalmente, o Sistema
Operacional. Da mesma forma que o Sistema Operacional isola o usurio dos detalhes da
operao do disco, fornecendo-lhe uma interface bastante simples, ele tambm trata de uma
srie de outras questes de nvel bastante baixo, tais como interrupes, os temporizadores, a
gerncia da memria e CPU, alm de vrias outras questes relacionadas ao uso do hardware.
Em cada caso, a abstrao apresentada ao usurio do SO mais simples e mais fcil de utilizar
que o prprio hardware.
O SO tornou a interao entre usurios e computador mais simples, confivel e eficiente,
eliminando a necessidade do programador se envolver com a complexidade do hardware para
poder trabalhar, ou seja, a parte fsica do computador tornou-se transparente para o usurio.
Partindo desse princpio, pode-se considerar o computador como uma mquina de nveis ou
camadas onde, inicialmente, existem dois nveis: o nvel 0 (hardware) e o nvel 1 (Sistema
Operacional).
De forma simplificada, uma boa parte dos computadores possui a estrutura mostrada na
figura abaixo, podendo conter mais ou menos camadas, para adequar o usurio s suas diversas
aplicaes.

Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Introduo
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 1.2 Estrutura geral de um computador

Neste aspecto, a funo do Sistema Operacional a de apresentar ao usurio uma mquina


virtual equivalente ao hardware, porm muito mais simples de programar.

1.3 - O Sistema Operacional Visto como um Gerente


de Recursos
O conceito de Sistema Operacional como fornecedor de uma interface conveniente a seus
usurios uma viso top-down. Uma viso alternativa, bottom-up, mostra o SO como um
gerente dos recursos de hardware disponveis na mquina. Os computadores modernos so
compostos de processadores, memrias, temporizadores, discos, dispositivos de fita magntica,
interface de rede e dispositivos de E/S, tais como scanners, cmeras digitais e impressoras. Na
viso alternativa, a funo do Sistema Operacional a de fornecer um esquema de alocao dos
processadores, das memrias e dos dispositivos de Entrada/Sada entre os vrios processos que
competem pela utilizao de tais recursos.
Imagine o que poderia acontecer se trs processos, executando em um dado computador,
resolvessem imprimir suas sadas simultaneamente na mesma impressora. As trs primeiras
linhas da listagem poderiam ser do processo 1, as seguintes do processo 2, e assim por diante,
alternadamente, at que os trs terminassem a impresso. Fica claro que tal situao no
admissvel em nenhum sistema computacional. O Sistema Operacional tem por funo colocar
ordem nestes casos, armazenando em disco todas as sadas destinadas impressora, durante a
execuo dos processos. Quando um dos processos terminar sua execuo, o SO copia sua sada
do disco para a impressora, enquanto os demais continuam a executar e, eventualmente, a gerar
sada no arquivo em disco.
No caso do computador possuir mltiplos usurios, a necessidade de gerncia e proteo da
memria, dos dispositivos de Entrada/Sada e dos demais recursos do sistema fica ainda mais
aparente. Tal necessidade vem do fato de ser frequentemente necessrio aos usurios fazer o
compartilhamento de recursos relativamente caros, como o caso das impressoras a laser. Alm
das questes econmicas, comum, entre usurios que trabalham juntos no mesmo sistema, a
necessidade de compartilhar informaes.
Esta outra viso da funo de um Sistema Operacional mostra que sua tarefa principal a
de gerenciar os usurios no uso de recursos da mquina, contabilizando o tempo de uso de cada
um e garantindo o acesso ordenado dos usurios a recursos, por meio da mediao dos conflitos
entre as requisies dos diversos processos do sistema.

Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Evoluo dos Sistemas Operacionais
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Captulo 2
Evoluo dos Sistemas Operacionais
2.1 - Introduo
Uma boa maneira de se compreender um SO acompanhando a sua evoluo atravs dos
ltimos anos. Assim, pode-se entender o porqu de determinadas caractersticas, como e quando
estas foram incorporadas.
Sistema Operacional e arquitetura de computadores influenciaram-se mutuamente. O SO
surgiu da necessidade de aproveitamento do hardware. Em determinados momentos, alteraes
no hardware foram necessrias para facilitar o projeto de um determinado SO. O surgimento de
novas facilidades de hardware propiciou melhor desenvolvimento de SOs, mais complexos e
eficientes. A Figura 2.1 mostra a relao da evoluo de software e hardware.

Figura 2.1 Relao da Evoluo do Software e Hardware.

2.2 - Os primeiros Sistemas Operacionais


A evoluo dos SOs est, em grande parte, relacionada ao desenvolvimento de
equipamentos cada vez mais velozes, compactos e de custos baixos, e necessidade de
aproveitamento e controle desses recursos. Neste histrico a evoluo dividida em fases, onde
so destacadas, em cada uma, suas principais caractersticas de hardware e de software.

2.2.1 - Primeira Fase (1945-1955)


Os primeiros computadores digitais surgiram na II Guerra Mundial. Eles eram formados
por milhares de vlvulas e ocupavam reas enormes, sendo de funcionamento lento e no
confivel.
O primeiro computador digital de propsito geral foi o ENIAC (Eletronic Numerical
Integration and Computer). Sua estrutura possua vlvulas, capacitores, resistores, pesava 30
toneladas, e ele realizava 5 mil adies por segundo.
Para trabalhar nessas mquinas, era necessrio conhecer profundamente o funcionamento do
hardware, pois a programao era feita em painis, por meio de fios, e em linguagem de
mquina.
Existia um grupo de pessoas que projetava, construa, programava, operava e realiza a
manuteno nestes computadores. Nesta fase no existia o conceito de Sistema Operacional e
nem de linguagem de programao.
Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Evoluo dos Sistemas Operacionais
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

2.2.2 - Segunda Fase (1956-1965)


A criao do transistor e das memrias magnticas contribui para o enorme avano dos
computadores da poca. O transistor permitiu o aumento da velocidade e da confiabilidade do
processamento, e as memrias magnticas permitiram o acesso mais rpido aos dados, maior
capacidade de armazenamento e computadores menores.
Com o surgimento das primeiras linguagens de programao, como Assembly e Fortran, os
programas deixaram de ser feitos diretamente no hardware, o que facilitou o processo de
desenvolvimento de programas. Os primeiros Sistemas Operacionais surgiram, justamente,
para tentar automatizar as tarefas manuais at ento utilizadas.
O uso individual do computador (conceito de open shop) era pouco produtivo, pois a entrada
de programas constitua uma etapa muito lenta e demorada que, na prtica, representava o
computador parado.
Para otimizar a entrada de programas, surgiram as mquinas leitoras de carto perfurado
que aceleravam muito a entrada de dados. Os programadores deveriam ento escrever seus
programas e transcrev-los em carto perfurados. Cada programa e seus respectivos dados eram
organizados em conjuntos denominados jobs que poderiam ser processados da seguinte forma.
Os vrios jobs de diferentes usurios eram lidos por um computador, como o IBM 1401, que
gravava os dados em uma fita magntica. Depois de aproximadamente 1 hora de coleta do lote
de jobs, a fita era rebobinada e levada por um operador (pessoa) para a sala de mquina. Na
sala de mquina, estava o computador que era adequado para clculos numricos, como o IBM
7094. Este computador era mais caro do que o 1401. O operador, ento, montava a fita
magntica em um drive de fita de entrada e carregava um programa (o ancestral dos SOs de
hoje) no 7094, o qual lia o primeiro job da fita, o executava e a sada era escrita em uma segunda
fita (drive de sada). Depois de cada job ter terminado, o SO lia o prximo job e o executava.
Depois de todo o lote de jobs ter sido lido e executado, o operador levava a fita de sada para
um outro computador 1401 o qual imprimia as sadas dos jobs. A Figura 2.2 ilustra o processo
descrito.

Figura 2.2 Um Sistema de Processamento em Lote (Batch). Imp = Impressora.

Apesar da natureza sequencial do processamento, para os usurios era como se um lote de


jobs fosse processado a cada vez, originando o termo Processamento em Lote (Batch
Processing). Com o Processamento Batch, um grupo de programas era submetido de uma s
vez, o que diminua o tempo existente entre a execuo dos programas, permitindo o melhor
uso do processador.
Os SOs passaram e ter seu prprio conjunto de rotinas para operaes de Entrada/Sada
(Input/Output Control System IOCS), o que veio a facilitar bastante o processo de
programao. O IOCS eliminou a necessidade de os programadores desenvolverem suas
prprias rotinas de leitura/gravao para cada dispositivo perifrico. Importantes avanos, em
Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Evoluo dos Sistemas Operacionais
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

nvel de hardware, foram implementados no final dessa fase, principalmente na linha 7094 da
IBM. Entre eles, destaca-se o conceito de canal, que veio permitir a transferncia de dados entre
dispositivos de E/S e memria principal de forma independente da CPU.

2.2.3 - Terceira Fase (1966-1980)


Com o uso de circuitos integrados (CIs) e, posteriormente, dos microprocessadores, foi
possvel viabilizar e difundir o uso de sistemas computacionais por empresas. Em 1964, a IBM
lanou a Srie 360. Esse lanamento introduziu umA linha de computadores pequena, poderosa
e compatvel. Para essa srie, foi desenvolvido o sistema operacional OS/360, que introduziu
novas tcnicas, utilizadas at hoje.
Um dos principais avanos desta fase foi a utilizao da multiprogramao. Segundo Deitel,
multiprogramao quando vrios jobs esto na memria principal simultaneamente,
enquanto o processador chaveado de um job para outro job, fazendo-os avanarem enquanto
os dispositivos perifricos so mantidos em uso quase constante.
Enquanto o processamento chamado cientfico era muito bem atendido pelo Processamento
em Lote comum, o mesmo no acontecia com o processamento dito comercial. No
processamento cientfico, ocorre a execuo de grande quantidade de clculos com quantidade
relativamente pequena de dados, mantendo o processador ocupado na maior parte do tempo. O
tempo gasto com operaes de Entrada/Sada era insignificante; eis ento o fato deste
comportamento ser chamado CPU Bounded. J no processamento comercial, o processador
permanece bastante ocioso dado que os clculos so relativamente simples, em comparao
com o processamento cientfico, e o uso de operaes de Entrada/Sada frequente, devido a
quantidade de dados a ser processada. Este comportamento conhecido como I/O (E/S)
Bounded.
A multiprogramao permitiu uma soluo para o problema da ociosidade do processador
por meio da diviso da memria em partes, denominadas parties, onde em cada diviso um
job poderia ser mantido, conforme mostrado na Figura 2.3.

Figura 2.3 Um sistema multiprogramado com 3 jobs na memria.

Na Figura 2.3, se o Job 1 solicitasse uma operao de E/S e estivesse esperando-a terminar,
o processador poderia ento ser chaveado para executar o Job 2, por exemplo. Se vrios jobs
fossem mantidos na memria de uma vez, a CPU permaneceria ocupada o suficiente para
compensar o tempo das operaes mais lentas de Entrada/Sada.
A utilizao de fitas magnticas obrigava o processamento a ser estritamente sequencial, ou
seja, o primeiro programa a ser gravado na fita era o primeiro a ser processado. Assim, se um
programa que levasse vrias horas antecedesse pequenos programas seus tempos de resposta
Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Evoluo dos Sistemas Operacionais
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

ficariam comprometidos. Com o surgimento de dispositivos de acesso direto, como os discos,


foi possvel escolher os programas a serem executados, realizando o escalonamento de tarefas.
Isto permitia a alterao na ordem de execuo das tarefas, tornando o Processamento em Lote
mais eficiente.
Outra tcnica presente nesta gerao foi a tcnica de spooling (simultaneous peripheral
operation on-line), isto , a habilidade de certos SOs em ler novos jobs de cartes ou fitas
armazenando-os em uma rea temporria do disco rgido interno, para uso posterior quando
uma partio de memria fosse liberada.
Um exemplo dessa tcnica nos dias atuais ocorre quando impressoras so utilizadas. No
momento em que um comando de impresso executado por um programa, as informaes que
sero impressas so gravadas em um arquivo em disco (arquivo de spool), para ser impresso
posteriormente pelo sistema. Essa tcnica permite um maior grau de compartilhamento na
utilizao de impressora.
Apesar destas novas tcnicas, os sistemas da poca operavam basicamente em lote, com
multiprogramao. Assim, enquanto satisfaziam as necessidades mais comuns de
processamento comercial e cientfico, no ofereciam boas condies para o desenvolvimento
de novos programas. Em um sistema em lote, a correo de um problema simples de sintaxe
poderia levar horas devido a rotina imposta: preparao dos cartes, submisso do job no
prximo lote e a retirada dos resultados vrias horas ou at mesmo dias depois.
Associem-se a isto a limitao que ainda existia na comunicao de usurios com a mquina
e, tambm, o problema de monoplio de CPU por parte de programas que tomam muito tempo
de processamento e realizam relativamente poucas operaes de E/S como, por exemplo, os
programas cientficos.
Tais problemas motivaram o surgimento de uma variao de multiprogramao chamada
sistemas de tempo compartilhado (time-sharing systems). Os sistemas de tempo compartilhado
permitiam a interao de vrios usurios com o sistema, basicamente por meio de terminais de
vdeo. Devido a essa caracterstica, eles ficaram tambm conhecidos como sistemas on-line.
O computador poderia, ento, ser usado por vrios usurios ao mesmo tempo, por meio de
pseudoparalelismo. O pseudoparalelismo poderia ser obtido com o chaveamento do
processador entre vrios processos que poderiam atender aos usurios. A idia central era
dividir o poder computacional do computador entre seus diversos usurios, passando a
impresso de que o computador estava totalmente disponvel para cada usurio, embora isto
no fosse verdade.
Nos sistemas de tempo compartilhado, o tempo do processador era dividido em pequenos
intervalos denominados quanta de tempo ou fatia de tempo (time-slice). A idia consiste em
dar uma fatia de tempo para cada programa em execuo, tirando o direito de uso da CPU
obedecendo as duas condies bsicas abaixo:
1 se esgotar sua fatia de tempo, ele ser transferido para uma Fila de Prontos;
2 se o programa necessitar de um recurso externo durante a execuo, ele ser transferido
para uma Fila de Suspensos.
A Figura 2.4 mostra uma possvel situao em um sistema de tempo compartilhado com Pn
processos.

Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Evoluo dos Sistemas Operacionais
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 2.4 Exemplo de sistema de tempo compartilhado.

Nos sistemas de tempo compartilhado, o controle da execuo dos programas feita


interativamente e ocorre a eliminao do monoplio sobre a CPU da multiprogramao,
realizando uma distribuio mais justa do tempo de uso do processador.
Outro fato importante nessa fase foi o surgimento do sistema operacional UNIX (1969).
Concebido inicialmente em um minicomputador PDP-7, baseado no sistema MULTICS
(Multiplexed Information and Computing Service), o Unix foi depois escrito em uma
linguagem de alto nvel (Linguagem C). O Unix tornou-se conhecido por sua portabilidade,
pois era mais fcil modificar o cdigo do sistema Unix para implement-lo em um novo
computador do que escrever um novo Sistema Operacional.
No final dessa fase, com a evoluo dos microprocessadores, surgiram os primeiros
microcomputadores, muito mais baratos que qualquer um dos computadores at ento
comercializados. Entre eles, destaca-se os micros de 8 bits da Apple e o Sistema Operacional
CP/M (Control Program Monitor).

2.2.4 - Quarta Fase (1981-1990)


A integrao em larga escala (Large Scale Integration LSI) e integrao em muito larga
escala (Very Large Scale Integration VLSI) levaram adiante o projeto de miniaturizao e
barateamento dos equipamentos. Os mini e superminicomputadores se firmaram no mercado e
os microcomputadores ganharam um grande impulso.
Nesse quadro, surgiram os microcomputadores (Personal Computer - PC) de 16 bits da IBM
e o Sistema Operacional da Microsoft MS-DOS, criando a filosofia dos computadores pessoais.
Na rea dos minis e superminis, ganharam impulsos os sistemas multiusurios, destacandose sistemas compatveis com o Unix (Unix-type). O chip de microprocessador tornou possvel
para uma pessoa ter o seu prprio computador pessoal. O mais poderoso dos PCs usados por
empresas, universidades e instalaes governamentais eram usualmente denominadas de
estaes de trabalho (workstations) que, de fato, eram realmente PCs com maior capacidade de
processamento. Apesar de monousurias, elas permitem que se executem diversas tarefas
concorrentemente, criando o conceito de multitarefa.
Neste ponto, importante fazer uma observao sobre os termos multitarefa e sistemas de
tempo compartilhado. O termo tempo compartilhado (time-sharing) est associado aos
Mainframes, computadores grandes, potentes e caros, que possuam terminais de vdeo, com
quase nenhum processamento, ligados a eles. A idia era permitir que mltiplos usurios
compartilhassem um nico Mainframe, conforme mencionado na seo 2.2.3. Atualmente,
existe um conceito mais amplo que veio a substituir o conceito de Sistemas de Tempo
Compartilhado, que justamente Sistemas Multitarefa. Uma definio de Multitarefa :
Mtodo em que mltiplas tarefas podem ser executadas, aparentemente de forma
simultnea, em um computador com uma nica CPU.
Pode-se dividir os Sistemas Multitarefas em dois tipos: Sistemas Preemptivos e Sistemas
Cooperativos. Um Sistema Operacional Multitarefa Preemptivo contempla justamente as
Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Evoluo dos Sistemas Operacionais
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

mesmas caractersticas dos chamados sistemas de tempo compartilhado, conforme descrito na


seo 2.3.3. deste Captulo. Exemplos de Sistemas Multitarefa so o Windows NT, Unix e
Linux. Um Sistema Operacional Multitarefa Cooperativo se caracteriza pelo fato de que o
processo que est atualmente de posse da CPU, ou seja, o que est sendo executado, quem
passa o controle da CPU para outros processos. Um exemplo deste tipo de Sistema Operacional
o Windows 3.1.
importante perceber que um Sistema Multitarefa Cooperativo no deixa de ser um
Sistema de Tempo Compartilhado. Porm, ser adotada a terminologia Sistemas de Tempo
Compartilhado para referenciar os Sistemas Multitarefa Preemptivos.
As redes distribudas (Wide Area Networks WANs) se difundiram por todo o mundo,
permitindo o acesso a outros sistemas de computao, em locais distantes. Tambm foram
desenvolvidos inmeros protocolos de rede como o DECnet da Digital E.C., SNA (System
Network Architecture) da IBM, e outros de domnio pblico, como o TCP/IP e o X25. Surgem
as primeiras redes locais (Local Area Networks LANs) interligando pequenas reas. Os
softwares de rede passaram a estar intimamente relacionados ao Sistema Operacional e surgem
os Sistemas Operacionais de Rede.

2.2.5 - Quinta Fase (1991-Atualmente)


Os grandes avanos em termos de hardware, software e telecomunicaes no final de sculo
passado, so consequncia da evoluo das aplicaes, que necessitam cada vez mais de
capacidade de processamento e armazenamento de dados. Sistemas especialistas, sistemas
multimdia, banco de dados distribudos, inteligncia artificial e redes neurais so apenas alguns
exemplos da necessidade cada vez maior de capacidade de processamento.
A evoluo da microeletrnica permitir o desenvolvimento de processadores e memrias
cada vez mais velozes e baratos, alm de dispositivos menores, mais rpidos e com maior
capacidade de armazenamento. Os componentes baseados em tecnologia VLSI evoluem
rapidamente para o ULSI (Ultra Large scale Integration).
Tpicos importantes:
- Modificaes profundas nas disciplinas de programao no uso de arquiteturas paralelas;
- Processamento distribudo explorado nos Sistemas Operacionais, espalhando funes por
vrios processadores (redes);
- Arquitetura cliente-servidor em redes locais passa a ser oferecida em redes distribudas,
permitindo o acesso a todo tipo de informao, independentemente de onde esteja armazenada.
- Consolidao dos SOs baseados em interfaces grficas. Novas interfaces homem-mquina
sero utilizadas, como linguagem naturais, sons e imagens.
- Conceitos e implementaes s vistos em sistemas considerados de grande porte esto
sendo introduzidos na maioria dos sistemas desktop (Windows, Unix, Linux, etc.).
- Durante o ano de 1991, as primeiras verses (releases) do Sistema Operacional Linux
comearam a ser desenvolvidas por Linus Torvalds, com ajuda de outros desenvolvedores.
Desenvolvido para os clones AT 386, 486, o Linux era () um sistema tipo Unix (Unixtype) para computadores pessoais e tinha como grande atrativo, alm do fato de ser parecido
com o Unix, o fato de ser um Sistema Operacional gratuito. Estima-se hoje que existam 18
milhes de usurios no Mundo usando Linux.

Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Captulo 3
Estrutura de Sistemas Operacionais
A estrutura e funcionamento de um SO so tpicos de difcil compreenso. Um SO no
executado como uma aplicao sequencial, com incio, meio e fim. As rotinas do SO so
executadas sem uma ordem predefinida. A execuo baseada em eventos assncronos.
Para tentar entender o conceito de estrutura de um SO, primeiro necessrio definir o que seja
Ncleo (Kernel) de um Sistema Operacional, as Chamadas ao Sistema e Modos de Acesso.

3.1 Ncleo de um Sistema Operacional


O Ncleo (Kernel) o software que fornece servios bsicos para todas as outras partes de
um SO. De forma mais detalhada, o Ncleo um conjunto de rotinas que oferecem servios
aos usurios do sistema e suas aplicaes, bem como a outras rotinas do prprio SO.
Um ncleo pode ser contrastado com um interpretador de comandos, conhecido como shell
nos sistemas UNIX, o qual no parte do SO mas que desempenha um relevante papel
interagindo com comandos do usurio. O shell ser estudado adiante.
Dentre as principais funes do Ncleo esto:
- tratamento de interrupes;
- gerenciamento de processos (criao e destruio de processos; sincronizao e
comunicao entre processos, ...);
- gerenciamento de memria;
- gerenciamento do sistema de arquivos;
- operaes de E/S.
Os servios do Ncleo so solicitados por outras partes do SO ou por aplicaes de usurios,
por meio de um conjunto especificado de interfaces de programa (rotinas) conhecidas como
Chamadas ao Sistema (System Calls).

3.2 Chamadas ao Sistema (System Calls)


As Chamadas ao Sistema so um mecanismo de proteo ao Ncleo do sistema e de acesso
aos seus servios. O usurio (ou aplicao), quando deseja solicitar algum servio do SO,
realiza uma chamada a um de seus servios por meio de uma rotina (procedimento de biblioteca)
que est diretamente associada s System Calls. A Figura 3.1 mostra a relao entre a rotina de
biblioteca, usada pelos programas dos usurios, e as System Calls.

Figura 3.1 Relao entre a System Call e a respectiva rotina de biblioteca.

Para tentar tornar claro o mecanismo de chamada ao sistema, seja o caso da System Call
READ do SO UNIX. A System Call READ possui trs parmetros: o nome do arquivo que
dever ser lido, o buffer para onde devem ir os dados do arquivo e a quantidade de Bytes para
serem lidos. Uma chamada a READ de um programa de usurio escrito em C poderia ser a
seguinte:
contador = read (arquivo, buffer, nBytes);

importante perceber que existe uma diferena entre a rotina de biblioteca usada no
programa do usurio, read, e a System Call READ, a qual invocada por read. O efeito de
Flvio Augusto de Freitas

Professor de Informtica

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

executar read, e portanto chamar a System Call READ, copiar os dados do respectivo arquivo
para o buffer, onde o programa pode acess-lo.
A rotina read retorna o nmero de Bytes atualmente lidos em contador. Este valor
normalmente o mesmo do que nBytes, mas pode ser menor se, por exemplo, for encontrado o
final de arquivo (EOF) no processo de leitura.
OBS: embora tenha sido feita a distino entre a rotina usada pelo programa do usurio
(read, no exemplo), e a System Call (READ, no exemplo), alguns autores consideram a rotina
usada pelo usurio (read) como, de fato, a System Call. Para este curso, o termo System Call
ser usado para se referir rotina do SO (READ).

3.3 Modos de Acesso


As Chamadas ao Sistema esto relacionadas aos Modos de Acesso do processador. O Modo
de Acesso um mecanismo para impedir a ocorrncia de problemas de segurana e mesmo
violao do sistema. Existem as instrues privilegiadas as quais possuem o poder de
comprometer o sistema, pois atuam diretamente no hardware da mquina. As instrues no
privilegiadas no fornecem qualquer perigo ao sistema. Os Modos de Acesso podem ser
divididos em dois nos SOs mais recentes:
1.) Modo Ncleo (Modo Supervisor, Modo Kernel): a aplicao pode ter acesso ao conjunto
total de instrues do processador. O Sistema Operacional executa no Modo Ncleo, de modo
que somente ele, SO, tem acesso s instrues privilegiadas.
2.) Modo Usurio: a aplicao pode executar somente instrues no privilegiadas (acesso
a um nmero reduzido de instrues). Alguns dos programas de sistema, tais como editores e
compiladores, tambm executam em Modo Usurio. importante mencionar que editores e
compiladores no fazem parte do SO, embora eles sejam costumeiramente fornecidos juntos
com o SO.
A Figura 3.2 mostra a relao entre os Modos de Acesso do processador.

Figura 3.2 Modos de Acesso.

Os processadores mais modernos implementam em hardware no mnimo 2 diferentes


estados. Por exemplo, considerando a linha Intel, 4 estados determinam o nvel de privilgio de
execuo dos programas. possvel ter os estados 0, 1, 2 e 3, sendo o estado 0 correspondendo
ao Modo Ncleo. Sistemas Unix, o que inclui o Linux, requerem somente dois estados de
privilgio, conforme mostrado na Figura 3.2.
Objetivando esclarecer como uma System Call pode ser realizada, seja o exemplo anterior
onde o programa do usurio chamava a rotina read no UNIX. A rotina read coloca os parmetros
da System Call READ em um lugar especificado, como os registros de mquina do processador,
e ento executa uma instruo de controle (trap) especial. Esta instruo faz com que haja um
Flvio Augusto de Freitas

Professor de Informtica

10

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

salto para uma posio definida no Ncleo do SO. Em processadores Intel, isto feito por meio
da interrupo 0x80. Desta forma, o hardware sabe que agora o programa est sendo executado
no Modo Ncleo e que, portanto, o que est sendo executado justamente o SO.
Aps isto, o SO examina os parmetros da chamada para determinar qual System Call
(nmero da System Call) deve ser invocada. Sendo esse nmero k, o SO procura no slot k da
tabela de System Calls o endereo da System Call k, e chama tal procedimento. Aps terminada
a System Call, o controle retorna para o programa do usurio. A Figura 3.3 ilustra o processo
de uma Chamada ao Sistema.

Figura 3.3 Realizao de uma System Call: (1) Programa do usurio (rotina de
biblioteca) salta para o Ncleo. (2) SO determina o nmero do servio requisitado.
(3) SO localiza e chama a System Call. (4) Controle retornado para o programa do
usurio.

Na Figura 3.3, a ttulo de exemplificao, percebe-se que o endereo onde est armazenada
a System Call READ, chamada pelo rotina de read, 0020h (base hexadecimal).

3.4 O INTERPRETADOR DE COMANDOS


Um Interpretador de Comandos no faz parte de um SO, embora seja extremamente til.
No UNIX, o interpretador de comandos chamado de shell e ele a interface primria entre
um usurio sentado em frente ao computador e o SO. O shell e o Ncleo do SO so programas
separados que se comunicam por meio de um conjunto de System Calls.
No caso do UNIX, considerando a interface de linha de comando, o shell mostrar um
prompt aps o usurio ter entrado no sistema (login). Supondo que seja o Bourne Shell, este
prompt ser $. Ento, seja o caso de o usurio digitar na linha de comando o seguinte:
$ ls (Enter)

O comando ls lista arquivos e diretrios. O shell ler, ento, o comando digitado no terminal
e entender que o usurio deseja executar o comando no arquivo /bin/ls. Ento, o shell solicita
ao Ncleo que crie um novo processo filho (rotina: fork; System Call: FORK). O processo filho
executar o comando (ls) digitado pelo usurio por meio de outra System Call: EXEC (rotina
execve, por exemplo). O shell se suspender, esperando que o processo filho termine de
executar. Quando o processo filho terminar de executar, ele avisa ao Ncleo, por meio da
System Call EXIT (rotina: exit) e o ncleo, por sua vez, acorda o shell e avisa-o que ele pode
continuar a executar. O shell mostra o prompt novamente e espera por um novo comando. O
que importante perceber que o shell um programa comum de usurio. Tudo o que ele

Flvio Augusto de Freitas

Professor de Informtica

11

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

precisa a habilidade de ler ou escrever para o terminal, e a capacidade de interagir com o


Ncleo do SO.
No Unix, outro shell bastante conhecido o C Shell (%). No Linux, dois shells usados so
o Bash (Bourne Again Shell) e o Csh.

3.5 Tipos de Estrutura de Sistemas Operacionais


A estrutura de um SO est relacionada ao desenho (design) interno do sistema. Os seguintes
tipos de estrutura sero examinados nas prximas sees: Sistemas Monolticos, Sistemas em
Camada e Sistemas Cliente-Servidor.

3.5.1 Sistemas Monolticos


Neste tipo de estrutura, o SO escrito como uma coleo de rotinas, onde cada uma pode
chamar qualquer outra rotina, sempre que for necessrio. Portanto, o sistema estruturado de
forma que as rotinas podem interagir livremente umas com as outras. Quando esta tcnica
usada, cada rotina no sistema possui uma interface bem definida em termos de parmetros e
resultados. A Figura 3.4 mostra a estrutura de um SO Monoltico.

Figura 3.4 Estrutura de um SO Monoltico.

Os servios do SO (gerenciamento de processos, gerenciamento de memria,


gerenciamento do sistema de arquivos, ...) so implementados por meio de System Calls em
diversos mdulos, executando em Modo Ncleo. Mesmo que as diversas rotinas que fornecem
servios estejam separadas umas das outras, a integrao de cdigo muito grande e difcil
desenvolver o sistema corretamente. Como todos os mdulos (rotinas) executam no mesmo
espao de endereamento, um bug em um dos mdulos pode derrubar o sistema inteiro.
Evidentemente que esta uma situao indesejvel.
Para construir um cdigo executvel de um SO desta natureza, todas as rotinas (ou arquivos
que possuem as rotinas) so compiladas individualmente e unidas pelo linker em um cdigo
executvel nico. Tal cdigo executa em Modo Ncleo. No existe ocultao de informao, o

Flvio Augusto de Freitas

Professor de Informtica

12

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

que tambm indesejvel, pois cada rotina visvel a qualquer outra. A Figura 3.5 mostra o
processo de criao de um cdigo executvel de um SO Monoltico.

Figura 3.5 Gerao de Cdigo Executvel de um SO Monoltico. As caixas com


borda mais grossa indicam ferramentas do ambiente de desenvolvimento.

Embora possa parecer que no h quase estruturao em um SO Monoltico, existe um


pouco de estruturao quando os servios do SO so solicitados por meio das System Calls.
Este processo exatamente o que foi descrito na seo 3.3 e sumarizado na Figura 3.3.
Como vantagem dos SOs Monolticos pode-se afirmar que, se a implementao do sistema
est completa e confivel, aps um processo de desenvolvimento em que se supe que tcnicas
consagradas de Engenharia de Software tenham sido aplicadas, a forte integrao interna dos
componentes permite que detalhes de baixo nvel do hardware sejam efetivamente explorados,
fazendo com que um bom SO Monoltico seja altamente eficiente. Entre os SOs Monolticos
esto as verses tradicionais do UNIX, incluindo o Linux, e MS-DOS.

3.5.2 Sistemas em Camada


A idia por trs deste tipo de SO fazer a organizao por meio de hierarquia de camadas.
O SO dividido em camadas sobrepostas, onde cada mdulo oferece um conjunto de funes
que podem ser utilizadas por outros mdulos. Mdulos de uma camada podem fazer referncia
apenas a mdulos das camadas inferiores.
O primeiro SO construdo de acordo com esta concepo foi o THE, que foi desenvolvido
na Technische Hogeschool Eindhoven na Holanda por E. W. Dijkstra (1968) e seus estudantes.
O computador que executava o THE possua Memria Principal com capacidade de 32K
palavras de 27 bits cada. A estrutura do THE pode ser vista na Figura 3.6.

Figura 3.6 Estrutura do Sistema Operacional THE.

A camada 0 era responsvel pela alocao do processador entre os processos, chaveamento


entre processos quando ocorria interrupes ou quando os temporizadores expiravam.
Resumindo, a camada 0 fornecia a multiprogramao bsica da CPU. Acima da camada 0, o
sistema consistia de processos sequenciais que podiam ser programados sem se preocupar se
havia mltiplos processos executando na CPU.
A camada 1 realizava o gerenciamento de memria. Ela alocava espao para os processos
na Memria Principal do sistema e tambm em um Tambor (dispositivo de armazenamento
magntico usado nos computadores antigamente) de 512K palavras, usado para armazenar
partes de processos (pginas) para as quais no havia espao na Memria Principal. Acima da
camada 1, os processos no tinham que se preocupar se eles estavam na Memria Principal ou
Flvio Augusto de Freitas

Professor de Informtica

13

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

no Tambor; a camada 1 do SO era quem tratava deste tipo de situao, trazendo as partes do
software para a Memria Principal sempre quando necessrio.
A camada 2 manipulava a comunicao entre cada processo e o operador do console. Um
console consistia de um dispositivo de entrada (teclado) e um de sada (monitor ou impressora).
A camada 3 era responsvel pelo gerenciamento dos dispositivos de E/S.
Acima da camada 3, cada processo podia lidar com dispositivos de E/S abstratos, com
propriedades mais agradveis, e no com os dispositivos reais em si. Na camada 4 havia os
programas do usurio, e na camada 5 havia o processo do operador do sistema.
O esquema de camadas do THE era, de fato, apenas um auxlio de desenho (design), pois
todas as partes do sistema eram ultimamente unidas em um nico cdigo executvel.

3.5.3 Sistemas Cliente-Servidor


Os Sistemas Operacionais com estrutura Cliente-Servidor so baseados em Microncleo
(Microkernel). A idia neste tipo de sistema tornar o ncleo do SO o menor e o mais simples
possvel (Microncleo), movendo cdigo para camadas superiores. A abordagem usual
implementar a maior parte dos servios do SO em processos de usurio. Em tal implementao,
o SO dividido em processos, sendo cada um responsvel por oferecer um conjunto de servios
tais como:
- servios de arquivo (servidor de arquivos);
- servios de criao de processos (servidor de processos);
- servios de memria (servidor de memria), etc.
Para requisitar um servio, tal como ler um bloco de dados de um arquivo, um processo de
usurio, conhecido como processo cliente, envia uma solicitao a um processo servidor
(servidor de arquivos, neste caso), que realiza o trabalho e envia a resposta de volta ao processo
cliente. A Figura 3.7 mostra o modelo Cliente-Servidor.

Figura 3.7 Estrutura Cliente-Servidor.

Observe na Figura 3.7 que diversas funes do SO esto agora sendo executadas no Modo
Usurio, e no mais no Modo Ncleo, como era no caso dos Sistemas Monolticos. Somente o
Microncleo do SO executa no Modo Ncleo. Ao Microncleo cabe, basicamente, permitir a
comunicao entre processos clientes e servidores.
Entre as vantagens apresentadas pelos Sistemas Cliente-Servidor esto o fato de, ao dividir
o SO em partes onde cada parte manipula um aspecto do sistema tais como servio de arquivos,
servio de processo, servio de memria entre outros, cada parte se torna menor e mais fcil de
gerenciar. Alm disto, devido ao fato de que todos os processos servidores executarem em
Modo Usurio, eles no tm acesso direto ao hardware da mquina.
Como consequncia, se houver um bug no processo servidor de arquivos, este servio pode
deixar de funcionar, mas isto usualmente no derrubar (crash) o sistema inteiro. Se esta mesma
situao ocorresse em um SO Monoltico, e possvel que o sistema sofresse consequncias mais
srias do que em um Sistema Cliente-Servidor.
Uma outra vantagem do modelo Cliente-Servidor a sua adaptabilidade para usar em
sistemas com processamento paralelo/distribudo. Se um processo cliente se comunica com um
servidor pelo envio de mensagens, o cliente no necessita saber se a mensagem tratada
localmente na sua mquina, ou se ela foi enviada por meio de uma rede para um processo
Flvio Augusto de Freitas

Professor de Informtica

14

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

servidor executando em uma mquina remota. Do ponto de vista do cliente, o mesmo


comportamento ocorreu: um pedido foi requisitado e houve uma resposta como retorno. A
Figura 3.8 mostra esta situao.

Figura 3.8 Uso do Modelo Cliente-Servidor em um Sistema Paralelo ou


Distribudo.

Como exemplos de SO Cliente-Servidor pode-se citar o Minix, o Windows NT e o QNX.

3.5.4 Sistemas Monolticos versus Sistemas ClienteServidor


Em uma primeira anlise, uma estrutura de SO Cliente-Servidor parece ser bem melhor do
que um SO Monoltico. Porm, em termos prticos, a implementao de uma estrutura ClienteServidor bastante complicada devido a certas funes do SO exigirem acesso direto ao
hardware, como operaes de E/S. Um ncleo Monoltico, por outro lado, possui uma
complexidade menor, pois todo cdigo de controle do sistema reside em um espao de
endereamento com as mesmas caractersticas (Modo Ncleo).
Usualmente, SOs Monolticos tendem a ser mais fceis de desenhar corretamente e,
portanto, podem crescer mais rapidamente do que SOs baseados em Microncleo. Existem
casos de sucesso em ambas as estruturas.
Um aspecto interessante sobre qual a melhor estrutura de SO foi a discusso entre Linus
Torvalds, o criador do SO Linux, e Andrew Tanenbaum, um dos principais pesquisadores na
rea de SOs e criador do SO Minix. Em 1992, quando o Linux estava no seu incio, Tanenbaum
decidiu escrever uma mensagem para o Newsgroup comp.os.minix, acusando justamente o
Linux de ser um SO obsoleto.
O ponto principal do argumento de Tanenbaum era justamente a estrutura Monoltica,
considerada ultrapassada por ele, do Linux.
Ele no concebia que um SO, em meados dos anos 90, fosse concebido com um tipo de
estrutura que remonta a dcada de 70 (poca em que o Unix foi desenvolvido; o Unix tambm
um SO Monoltico). O SO desenvolvido por Tanenbaum, Minix, apresenta estrutura baseada
em Microncleo (Cliente-Servidor).
Em sua primeira resposta Torvalds argumentou, entre vrios pontos, um aspecto no muito
tcnico: o Minix no era gratuito, enquanto o Linux sim. Do ponto de vista tcnico, Torvalds
concordava que um sistema com Microncleo era mais agradvel.
Porm, ele acusava o Minix de no realizar corretamente o papel do Microncelo, de forma
que havia problemas no que se refere a parte de multitarefa no ncleo do sistema.
A discusso continuou entre ambos sobre outros conceitos associados a SOs. Para saber
mais
sobre
este
assunto,
vide
o
link
http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html#liu. Dez anos aps tal
discusso, o que pode ser afirmado que SOs Monolticos ainda conseguem atrair a ateno de
desenvolvedores devido a uma complexidade menor do que Sistemas Cliente-Servidor. Tanto
que o Linux hoje uma realidade, sendo um SO bastante usado em servidores em empresas e
ambientes acadmicos. Os Sistemas Cliente-Servidor, porm, possuem casos de sucesso como
o exemplo do sistema QNX, usado em sistemas de braos de robs nos nibus Espaciais.
Flvio Augusto de Freitas

Professor de Informtica

15

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Captulo 4
Processos
Um conceito chave em todos os Sistemas Operacionais justamente o processo. Um
processo basicamente um programa em execuo. Ele consiste do programa executvel, dos
dados do programa, do seu contador de programa (PC Program Counter), de diversos registros
e de toda a informao necessria para executar o programa.
Em um sistema multitarefa, a CPU permuta (switch) de programa para programa,
executando cada um por dezenas ou centenas de milisegundos. Em cada instante de tempo, uma
CPU pode executar somente um programa, mas, no curso de 1 segundo, ela pode executar
diversos programas, dando a iluso para os usurios de paralelismo. Isto o que se pode
denominar pseudoparalelismo, fazendo referncia a esta rpida permutao de programas
realizada pela CPU, em contraste com o verdadeiro paralelismo de hardware obtido, por
exemplo, em um multiprocessador (1 computador com vrios processadores internos os quais
se comunicam por meio de memria compartilhada).
O fato de tratar atividades paralelas, mltiplas algo difcil de ser realizado. Os desenhistas
de SOs tm evoludo em um modelo que torna o paralelismo mais fcil de ser tratado. Este o
Modelo de Processo.

4.1 O Modelo de Processo


Neste modelo, todo o software executvel no computador, frequentemente incluindo o SO,
organizado em um nmero de processos sequenciais, ou simplesmente processos.
Conceitualmente, cada processo possui seu prprio processador virtual, mas, de fato, a CPU
permuta de processo para processo, como j mencionado anteriormente. A Figura 4.1, mostra
4 programas na memria de um sistema multitarefa e a abstrao em processos.

Figura 4.1 Processos. (a) Quatro programas na memria principal


compartilhando o tempo da CPU. (b) Modelo conceitual de quatro processos
sequenciais e independentes. (c) Somente um processo est executando em cada
instante.

Na Figura 4.1(b), pode-se perceber a multitarefa realizada pelo computador sendo abstrada
em quatro processos, cada qual com o seu prprio fluxo de controle (ou seja, seu prprio
Flvio Augusto de Freitas

Professor de Informtica

16

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Contador de Programa) e executando independentemente uns dos outros. Na Figura 4.1(c),


percebe-se que todos os processos com o decorrer do tempo fizeram evoluo em relao
execuo, mas somente um processo executado em cada instante.
A diferena entre programa e processo sutil, mas crucial.
Um programa uma entidade passiva, enquanto um processo uma entidade (unidade de
trabalho) ativa. Neste contexto, um programa seria o conjunto de instrues necessrias (um
algoritmo expresso em uma notao adequada) execuo das operaes desejadas, enquanto
que um processo seria o programa associado ao seu conjunto de dados e variveis em um
determinado instante de sua execuo.
Em um Sistema Operacional existem basicamente dois tipos de processos: processos do SO
e processos do usurio. Os processos do sistema executam funes de gerenciamento de
recursos e gerenciamento de processos do usurio, enquanto que os processos do usurio
executam as tarefas programadas pelo usurio. Todos estes processos podem executar
concorrentemente. Para garantir a ordem desta execuo, o SO deve fornecer um mecanismo
de comunicao e sincronizao entre processos.
Os processos podem ser classificados como independentes ou cooperativos. Um processo
dito independente no caso em que a sua execuo no afete e no seja afetada pela execuo
de um outro processo. Um processo dito cooperativo quando interage (troca informaes)
com outros processos presentes no sistema.

4.1.1 Estados dos Processos


Embora cada processo seja uma entidade independente, com seu prprio PC e estado
interno, processos frequentemente precisam interagir (cooperar) com outros processos. Um
processo pode gerar sada da qual outro processo necessite como entrada. Seja o caso de digitar
no shell do Unix o seguinte comando:
cat cap1 cap2 cap3 | grep linguagem.

O comando cat do Unix extremamente flexvel. Ele pode ser usado para criar, ver e
concatenar arquivos. No exemplo acima, cat est sendo usado para concatenar 3 arquivos (cap1,
cap2 e cap3) e gerar a sada para a tela do computador como resultado. O smbolo |
denominado de pipe (tubo). O que pipe faz, neste caso, encaminhar a sada do comando cat
para a entrada do comando grep.
O comando grep serve para procurar informao em um arquivo ou em vrios arquivos. No
exemplo, grep mostrar todas as linhas da sada de cat que possuem a palavra linguagem.
Dependendo das velocidades relativas dos dois processos, um executando cat e outro grep, o
que deriva tanto da complexidade de cada programa como de quanto tempo de CPU cada um
tem tido, pode ser que grep esteja pronto para executar, mas no existe entrada disponvel para
ele. Ento grep deve-se bloquear at que a entrada esteja disponvel.
Na medida em que um processo vai sendo executado, o estado em que ele se encontra
alterado de acordo com a atividade que est sendo efetuada. Os estados em que um processo
pode se encontrar variam de sistema para sistema mas, de uma maneira geral, pode-se citar:
executando, pronto e bloqueado. A explicao destes estados dada a seguir:
- executando (running): tambm chamado de estado ativo. Um processo est no estado
executando, como o prprio nome diz, quando ele est sendo executado pelo processador. Em
ambientes com um nico processador, somente um processo pode estar sendo executado em
um certo instante;
- pronto (ready): temporariamente parado para que outro processo possa ser executado. O
processo encontra-se pronto para a execuo, aguardando apenas a liberao do processador
para que ele seja executado;
Flvio Augusto de Freitas

Professor de Informtica

17

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

- bloqueado (blocked): um processo est no estado bloqueado quando aguarda a ocorrncia


de algum evento externo para poder prosseguir, como o trmino de uma operao de E/S.
A Figura 4.2 mostra os estados possveis de um processo e as transies que podem ocorrer.

Figura 4.2 Estados dos processos e transies associadas.

A mudana de estados (transies) de um processo durante o seu processamento ocorre em


funo dos eventos originados por ele prprio (evento voluntrio) ou pelo Sistema Operacional
(evento involuntrio). Basicamente, existem 4 mudanas de estado que podem ocorrer a um
processo, conforme detalhado a seguir e mostrado na Figura 4.2:
1. pronto/executando: causada pelo escalonador de processos (parte do SO) de forma
involuntria ao processo. Quando um processo criado, o sistema o coloca em uma fila de
processos prontos, onde aguardar uma oportunidade para ser executado. Cada SO tem seus
prprios critrios e algoritmos para a escolha da ordem em que os processos sero executados
(escalonamento). Esta transio tambm ocorre quando todos os processos j tiveram o seu
tempo de execuo (fatia de tempo) e agora novamente a vez do primeiro processo da fila de
prontos ser executado pela CPU;
2. executando/pronto: causada pelo escalonador de processos (parte do SO) de forma
involuntria ao processo. Um processo em execuo passa para o estado de pronto quando
ocorrer o trmino da sua fatia de tempo, por exemplo. Nesse caso, o processo volta para a fila
de processos prontos, onde aguarda uma nova fatia de tempo;
3. executando/bloqueado: Um processo executando passa para o estado bloqueado por meio
de eventos gerados pelo prprio processo como, por exemplo, uma operao de E/S.
Em alguns sistemas, o prprio processo, de maneira voluntria, deve executar uma system
call, BLOCK, para que ele passe para o estado bloqueado;
4. bloqueado/pronto: quando ocorrer a concluso do evento solicitado, um processo no
estado bloqueado passar para o estado de pronto (fila de prontos), para que possa ser
novamente escalonado.
Objetivando detalhar como ocorrem as transies associadas aos processos, seja o caso do
usurio solicitar ao SO que execute um programa. O SO ento cria um processo e associa a este
um nmero de identificao, pid (process identifier), colocando-o no final da fila de processos
prontos. Em outras palavras, o estado inicial de um processo o estado pronto. Suponha que o
pid deste processo 5 (P5). Em um determinado tempo de execuo, a fila de prontos e o
processo sendo executado pela CPU pode ser como mostrado na Figura 4.3. Perceba que o
processo P5 o prximo processo a ser executado.
Figura 4.3 Exemplo de processos em um sistema de tempo compartilhado.

Em um sistema de tempo compartilhado, a entidade que coordena a utilizao do


processador por parte dos processos o escalonador de processos (scheduler). O escalonador
uma funo de baixo nvel, que utiliza de um temporizador (timer) do sistema para efetuar a
diviso do processamento e, portanto, est intimamente ligado ao hardware do computador.
Flvio Augusto de Freitas

Professor de Informtica

18

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Regularmente, a cada fatia de tempo (time-slice) do sistema, este temporizador dispara uma
interrupo a qual, em ltima instncia, ativar uma rotina que corresponde ao escalonador do
sistema. Tal rotina realiza algumas operaes com os registradores do processador, de forma
que o resultado o chaveamento do processador para o prximo processo na fila de prontos.
Ao terminar esta interrupo, o novo processo em execuo aquele designado pelo
escalonador. Na seo 4.1.2, ser abordado com mais profundidade o papel do escalonador de
processos.
No exemplo mostrado na Figura 4.3, esgotando a fatia de tempo de P2, a interrupo ser
gerada pelo temporizador e ocorrer o chaveamento, de forma que P5 estar sendo executado
aps o trmino da interrupo. Do ponto de vista de P5, esta mudana a transio 1 da Figura
4.2. A Figura 4.4 mostra a nova situao aps o chaveamento.
Figura 4.4 Processo P5 sendo executado aps o chaveamento.

A Figura 4.5 mostra o mecanismo de chaveamento de processos para este caso.

Figura 4.5 O escalonador e o mecanismo de chaveamento de processos.

Supondo que P5 comeou a ser executado e terminou a sua fatia de tempo. Ento, uma
interrupo ser gerada e o escalonador colocar P5 na fila de prontos, conforme mostra a
Figura 4.6. Isto corresponde a transio 2 da Figura 4.2.
Figura 4.6 Trmino da Fatia de tempo de P5.

Quando P5 voltar a ser escalonado para usar a CPU, suponha que, antes de terminar a sua
fatia de tempo, ele realize uma operao de E/S. O prprio processo P5 se suspender para
utilizar ou esperar pela disponibilidade do recurso solicitado. Esta situao corresponde a
transio 3 da Figura 4.2. Ao finalizar o uso do recurso, o SO recolocar P5 na fila de processos
prontos.
Esta situao corresponde a transio 4 da Figura 4.2.

Flvio Augusto de Freitas

Professor de Informtica

19

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

4.1.2 Implementao de Processos


Para implementar o modelo de processo, comum a criao e manuteno de uma tabela
que organize as informaes relativas aos processos. Esta tabela chamada de tabela de
processos e usualmente implementada sob a forma de um vetor de estruturas ou uma lista
ligada de estruturas. Cada processo existente corresponde a uma entrada nesta tabela, e cada
entrada da tabela denominada PCB (Process Control Block ou Bloco de Controle de
Processo). O PCB possui todas as informaes necessrias para que a execuo do processo
possa ser iniciada, interrompida e retomada conforme determinao do SO, sem prejuzo para
o processo. A Figura 4.7 mostra a tabela de processos, implementada como um vetor de
estruturas, e os PCBs.

Figura 4.7 Tabela de processos e PCBs. Em (a), a tabela de processos


implementada como um vetor de n posies; em (b), um exemplo de PCB.

Os campos exatos das entradas na tabela de processos, PCBs, variam de sistema para
sistema mas, em geral, uns lidam com gerenciamento de processos, outros com gerenciamento
de memria e outros com o sistema de arquivo. Algumas informaes tpicas que o PCB possui
so:
- identificador de processo (pid);
- estado atual do processo;
- cpia do contedo do registrador contador de programa (PC Program Counter);
- cpia do contedo dos demais registradores do processador;
- pid do processo pai (parent process);
- ponteiro para a pilha;
- tempo em que o processo iniciou;
- tempo utilizado do processador;
- informaes sobre diretrio raiz e de trabalho.
A troca de um processo por outro para ser executado pela CPU, realizada pelo SO com o
auxlio do hardware, denominada mudana de contexto. No fundo, a mudana de contexto
consiste em salvar as informaes PCB do processo que est deixando de ser executado e
carregar os valores referentes ao do processo que esteja ganhando a utilizao do processador.
Como exemplo, suponha, por simplificao, que cada PCB possua as seguintes informaes:
PC, pid, estado do processo.
Considerando a Figura 4.5, o processo P2 est atualmente sendo executado pela CPU e P5
o prximo na fila de prontos. Ao terminar a fatia de tempo de P2, uma interrupo gerada e
o SO, com auxlio do hardware, salva as informaes relevantes de P2 na sua entrada na tabela
de processos. Supondo que no instante imediatamente anterior interrupo, o valor do
registrador PC seja 0B30h (processador com endereos de 16 bits) e o PC do processo P5,
armazenado no PCB de P5, seja 0780h, as informaes na tabela de processo ficariam como
mostra a Figura 4.8.

Flvio Augusto de Freitas

Professor de Informtica

20

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 4.8 Tabela de processos e PCBs de P2 e P5 aps as informaes de P2


terem sido salvas.

Aps isto, o escalonador chamado para decidir qual novo processo ser o eleito para ser
executado pela CPU. No exemplo, o escalonador escolhe P5 para ser o prximo a ser executado.
Desta forma, o SO copia o contedo dos registradores no PCB de P5 para os registradores do
processador e comea a executar P5. A Figura 4.9 ilustra a tabela de processos e o registrador
PC logo aps o escalonamento de P5.

Figura 4.9 Situao aps a mudana de contexto.

Perceba que agora o registrador PC possui o valor que estava no PCB de P5 e o estado de
P5 est como executando.
OBS: Ao comentar a Figura 4.2, foi mencionado que as mudanas de estado
pronto/executando e executando/pronto eram tarefas do escalonador de processos. De fato, o
escalonador quem decide qual novo processo deve ser escolhido, baseando-se nas
informaes da tabela de processos. Porm, existem outros processos do SO associados com a
mudana de contexto. Tais processos so responsveis, por exemplo, pela atualizao dos
PCBs.

4.2 Comunicao entre Processos


A comunicao entre processos (IPC Interprocess Communication) uma situao
comum em sistemas de computao, que ocorre quando dois ou mais processos precisam se
comunicar, ou seja, quando os processos precisar compartilhar ou trocar dados entre si. A
comunicao entre processos pode ocorrer em vrias situaes diferentes, tais como:
- redirecionamento de sada (resultados) de um comando para outro;
- envio de arquivos para impresso;
- transmisso de dados pela rede, entre outras.
Tal comunicao ocorre, geralmente, por meio da utilizao de recursos comuns, como a
memria do sistema, aos processos envolvidos na comunicao. Devido complexidade e
limitaes de desempenho, as interrupes no so usadas para este tipo de comunicao. A
seguir sero abordados alguns tpicos associados comunicao entre processos.

Flvio Augusto de Freitas

Professor de Informtica

21

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

4.2.1 Condies de Corrida


Em alguns Sistemas Operacionais, processos que esto trabalhando conjuntamente
frequentemente compartilham algum recurso comum de armazenamento onde cada processo
pode ler ou escrever em tal recurso. O armazenamento compartilhado pode estar na memria
principal ou pode ser um arquivo compartilhado. Para entender a natureza da comunicao entre
processos, considere um exemplo simples mas comum: um spooler de impresso. Quando um
processo deseja imprimir um arquivo, ele coloca o nome do arquivo em um diretrio especial
chamado de diretrio de spooler. Um processo responsvel pelo gerenciamento de impresso
periodicamente verifica se existem arquivos para serem impressos e, caso haja, ele os imprime
e remove os nomes dos arquivos do diretrio.
Considere que o diretrio de spooler possui um nmero grande de slots (0, 1, 2, ...) cada
qual sendo capaz de armazenar um nome de arquivo que dever ser impresso. Tambm
considere que existem duas variveis compartilhadas, na memria principal, tais que:
- prox: aponta para o prximo arquivo para ser impresso;
- livre: aponta para o prximo slot livre no diretrio.
Em um certo instante, os slots de 0 a 3 esto vazios, os arquivos j forma impressos, e os
slots de 4 a 6 esto cheios, com os nomes dos arquivos para serem impressos. Quase que
simultaneamente, os processos A e B decidem que eles desejam imprimir um arquivo. A Figura
4.10 mostra esta situao.

Figura 4.10 Dois processos decidem acessar memria compartilhada ao mesmo


tempo.

Seja o seguinte caso. O processo A est executando atualmente e ele l a varivel livre, cujo
valor atual 7 pois este o prximo slot livre no diretrio, e armazena este valor em uma
varivel local sua, chamada slot_livre. Logo aps realizar isto, a fatia de tempo de A terminou
e este posto na fila de prontos. O processo B o novo processo a executar e, assim como A,
B l a varivel livre e obtm o valor 7. Ento, B escreve o nome do arquivo que ele deseja
imprimir (outro.c, por exemplo) no slot 7 e incrementa a varivel compartilhada livre (livre =
8, agora).
O processo B tinha sido o ltimo a enviar arquivo para o diretrio spooler, at que o
processo A, depois de um certo tempo, volta a ter a posse da CPU. Ento, A ser executado do
ponto em que parou e, ao verificar a sua varivel local slot_livre, A encontra o valor 7. Portanto,
ele escreve o nome do arquivo que deseja imprimir (isto.pdf, por exemplo) no slot 7 do diretrio
spooler, sobrescrevendo o nome do arquivo que B tinha posto no referido slot. Ento, A
incrementa a varivel slot_livre e atualiza a varivel livre para 8. A Figura 4.11 resume a
sequncia de aes dos dois processos.
Flvio Augusto de Freitas

Professor de Informtica

22

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 4.11 Sequncia de aes dos processos A e B. A ao em negrito indica o


momento em que o arquivo de B foi sobrescrito.

O diretrio spooler est internamente consistente e o processo que gerencia a impresso


nada encontrar de errado nesta situao. Entretanto, o processo B jamais conseguir ter o seu
arquivo, outro.c, impresso. Situaes como esta, onde dois ou mais processos esto lendo ou
escrevendo dados compartilhados e o resultado final depende de qual processo executa e
quando executa so chamadas condies de corrida. Evidentemente, esta uma situao
indesejvel e que deve ser contornada de alguma forma.

4.2.2 Sees (Regies) Crticas


A idia principal para prevenir as condies de corrida, em diversas situaes envolvendo
compartilhamento de memria principal, compartilhamento de arquivos e etc..., encontrar
uma forma que proba que mais de um processo leia e/ou escreva ao mesmo tempo os dados
compartilhados. Em outras palavras, o que necessrio a chamada excluso mtua uma
forma de assegurar que, se um processo est usando uma varivel compartilhada ou arquivo, os
outros processos estaro excludos de fazer o mesmo.
O problema de evitar condies de corrida pode tambm ser formulado da seguinte maneira.
Parte do tempo, um processo est ocupado realizado computaes internas e outras tarefas que
no conduzem s condies de corrida. Porm, em algumas oportunidades, o processo pode
estar acessando memria e arquivos compartilhados e isto pode resultar em condies de
corrida. A parte do programa onde a memria compartilhada acessada denominada de seo
ou regio crtica. Se for assegurado que dois processos jamais entrem em suas sees crticas
ao mesmo tempo, as condies de corrida podem ser evitadas. Alm de uma parte de software,
uma seo crtica pode ser, tambm, um dispositivo de hardware ou uma rotina de acesso para
um certo dispositivo de hardware.
Embora o requisito de assegurar que somente um processo esteja dentro de sua seo crtica
por vez evite condies de corrida, isto no suficiente para o caso de existirem processos
paralelos cooperando correta e eficientemente usando dados compartilhados. Os requisitos para
ter uma boa soluo so:
1.) Dois processos no podem estar simultaneamente dentro das suas sees crticas;
2.) Nenhuma considerao deve ser feita a respeito da velocidade e do nmero de
processadores;
3.) Nenhum processo executando fora da sua seo crtica deve bloquear outros processos;
4.) Nenhum processo deve ter de esperar eternamente para entrar na sua seo crtica.

4.2.3 Propostas Para Obteno de Excluso Mtua


Algumas propostas para que a excluso mtua seja obtida sero analisadas nesta seo. A
primeira delas est associada a um buffer compartilhado por dois processos.

Flvio Augusto de Freitas

Professor de Informtica

23

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

4.2.3.1 Buffers e Operaes de Sleep e Wakeup


Existem algumas primitivas (rotinas) de comunicao entre processos que se caracterizam
por bloquear o processo quando a este no permitido entrar na sua seo crtica. Umas das
mais simples so sleep (system call SLEEP) e wakeup (system call WAKEUP). SLEEP faz
com que o processo que a chama seja bloqueado, ou seja, seja suspenso at que outro processo
o acorde. WAKEUP uma system call que possui um parmetro: o processo que deve ser
acordado. Para exemplificar como estas primitivas so usadas, ser abordado o problema do
Produtor-Consumidor.
No problema do Produtor-Consumidor, existem dois processos que compartilham um
buffer, uma rea de dados de tamanho fixo que se comporta como um reservatrio temporrio.
Se Produtor e Consumidor so processos que executam em sequncia, a soluo do problema
simples, mas se estes so processos que executam paralelamente passa existir a situao de
concorrncia. O processo Produtor coloca informaes no buffer enquanto o Consumidor as
retira de l. Existem casos onde podem existir mltiplos Produtores ou mltiplos
Consumidores, mas basicamente o problema encontrado o mesmo. Estes so problemas
clssicos de comunicao entre processos, tais como os problemas do jantar dos filsofos e do
barbeiro dorminhoco, discutidos em detalhes por Tanenbaum no livro-texto desta disciplina.
O exemplo mostrado na seo 4.2.1, onde processos colocavam os nomes dos arquivos que
eles desejavam que fossem impressos em um diretrio (rea) de spooler e um processo de
gerenciamento de impresso imprimia os arquivos e os removia do diretrio, um exemplo do
problema do Produtor-Consumidor. No caso mais geral, tendo em mente que o diretrio de
spooler finito, onde existem vrios processos desejando imprimir (Produtores) e vrias
impressoras (Consumidores), as velocidades dos diversos processos que desejam imprimir
podem ser consideravelmente diferentes das velocidades das impressoras.
Um outro exemplo pode ocorrer quando diversos processos utilizam uma placa de rede para
realizar a transmisso de dados para outros computadores. Os vrios processos aparecem como
Produtores, enquanto o hardware da placa e seu cdigo representam o Consumidor. Em funo
do tipo de rede e do trfego, existe uma forte limitao com que a placa consegue consumir
(transmitir) os dados produzidos pelos programas e colocados no buffer de transmisso. A
Figura 4.12 mostra a situao do problema do Produtor-Consumidor.
Produtor

Flvio Augusto de Freitas

Professor de Informtica

24

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 4.12 Problema do Produtor-Consumidor.

Tanto o buffer como a varivel que controla a quantidade de dados do buffer, contador, so
sees crticas e, portanto, deveriam ter seu acesso limitado por meio de primitivas de excluso
mtua, desde que isso no impusesse esperas demasiadas aos processos envolvidos.
Problemas ocorrem quando o Produtor deseja colocar uma nova informao (item) no
buffer, mas este est cheio. A soluo, do ponto de vista do Produtor, este adormecer (rotina
sleep system call SLEEP) e ser acordado pelo Consumidor (rotina wakeup system call
WAKEUP) quando ele, Consumidor, remover um ou mais itens do buffer. De forma similar, se
o Consumidor deseja remover um item do buffer e observa que o buffer est vazio, o
Consumidor adormece at que o produtor coloque um ou mais itens no buffer e o acorde.
Se a varivel contador informa quantos itens existem atualmente no buffer, o Produtor deve
verificar se contador igual a N, onde N o valor mximo de itens que o buffer pode comportar.
Caso isto seja verdadeiro, o Produtor deve adormecer; caso contrrio, o Produtor adicionar um
item no buffer e incrementar contador. Do ponto de vista do Consumidor, primeiramente
verifica-se se contador igual a 0. Se isto for verdadeiro, ento o Consumidor deve adormecer;
seno, o Consumidor deve remover um item e decrementar contador. A Figura 4.13 mostra os
cdigos-fonte do Produtor e Consumidor escritos em linguagem C.

Flvio Augusto de Freitas

Professor de Informtica

25

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 4.13 Soluo parcial do problema do Produtor-Consumidor.

A soluo mostrada na figura 4.13 dita parcial, pois pode ocorrer condio de corrida. A
sequncia de eventos mostrada na Figura 4.14 ilustra a condio de corrida que pode acontecer.

Figura 4.14 Eventos que geram condio de corrida com a soluo parcial do
problema do Produtor-Consumidor.

A perda de um sinal wakeup deriva do fato do acesso varivel contador ser irrestrito. Uma
primeira soluo para este problema foi adicionar um flag (wakeup waiting bit) que sinalizasse

Flvio Augusto de Freitas

Professor de Informtica

26

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

a situao de envio de um sinal wakeup para um processo ativo. Na prxima tentativa de


adormecer, o processo verifica este flag ocorrendo o seguinte:
- se flag = 0 processo adormece;
- se flag = 1 processo permanece ativo e faz flag = 0.

O flag mencionado funciona para os casos mais simples, porm insuficiente para os casos
onde existem mais processos em operao.

4.2.3.2 Semforos
Dentro do contexto apresentado no tpico anterior, Dijkstra props em 1965 a utilizao de
variveis inteiras para controlar o nmero de sinais wakeup para uso futuro. Na proposta
apresentada por ele, um novo tipo de varivel, denominada semforo, foi introduzido. Um
semforo poderia ter um valor 0, indicando que nenhum wakeup foi salvo, ou algum valor
positivo se um ou mais sinais wakeup esto pendentes.
Duas operaes foram estabelecidas para atuar sobre as variveis do tipo semforo: P
(conhecida tambm como down system call DOWN) e V (conhecida tambm como up system
call UP), que so generalizaes de sleep e wakeup, respectivamente. O funcionamento de
DOWN e UP descrito na Figura 4.15.

Figura 4.15 Funcionamento de down e up.

Ambas as operaes devem ser realizadas como aes atmicas, ou seja, de forma
indivisvel. Deste modo, garante-se que, uma vez que uma operao de semforo foi iniciada,
nenhum outro processo pode acessar o semforo at que a operao tenha sido completada ou
bloqueada. A maneira usual de fazer isto implementar DOWN e UP como chamadas ao
sistema, com o SO desabilitando todas as interrupes enquanto est testando o semforo,
atualizando-o e colocando o processo para dormir, se for necessrio. Todas estas aes
consomem apenas umas poucas instrues, no ocasionando maiores problemas ao desabilitar
as interrupes. Portanto, para o caso de DOWN, verificar o valor do semforo, modific-lo e
possivelmente colocar o processo para dormir feito de forma indivisvel. Para o caso de UP,
incrementar o semforo e, possivelmente, acordar um processo feito de maneira indivisvel.
Nenhum processo se bloqueia realizando um UP, assim como nenhum processo se bloqueia
realizando um WAKEUP no modelo anterior.
A soluo do problema do Produtor-Consumidor usando semforos pode ser vista na Figura
4.16.

Flvio Augusto de Freitas

Professor de Informtica

27

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 4.16 O problema do Produtor-Consumidor usando semforos.

A soluo apresentada usa trs semforos. O semforo cheio conta o nmero de slots que
esto cheios no buffer, o semforo vazio conta o nmero de slots vazios no buffer enquanto o
semforo mutex assegura que o Produtor e o Consumidor no acessam o buffer ao mesmo
tempo. O semforo cheio est 0 inicialmente, enquanto vazio inicia com valor igual ao nmero
de slots no buffer e mutex inicialmente vale 1. Semforos que so iniciados com 1 e que so
usados por dois ou mais processos para assegurar que somente um deles possa entrar na sua
seo crtica por vez so chamados de semforos binrios. Se cada processo realizar um DOWN
imediatamente antes de entrar na sua seo crtica e um UP logo aps sair dela, a excluso
mtua est garantida.
Na Figura 4.16, semforos foram usados de duas maneiras distintas. O semforo mutex foi
usado para excluso mtua. O objetivo dele garantir que somente um processo por vez possa
ler do ou escrever no buffer e variveis associadas. O outro uso de semforos para
sincronizao. Os semforos cheio e vazio so necessrios para garantir que certas sequncias
de eventos possam ou no ocorrer. Neste caso, eles asseguram que o Produtor pra de executar
se o buffer estiver cheio, e o Consumidor pra de executar quando o buffer estiver vazio. Este
uso diferente do caso de excluso mtua. A utilizao de semforos permite, portanto, a
sincronizao de vrios processos. Em outras palavras, em um ambiente onde existem vrios
processos concorrendo por recursos, semforos podem ser usados para garantir o uso exclusivo
de um recurso por um processo.

4.2.3.3 Monitores
Com semforos, a comunicao entre processos parece fcil.
Flvio Augusto de Freitas

Professor de Informtica

28

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Mas, suponha que dois DOWNs no cdigo do Produtor fossem invertidos de ordem no
cdigo, de forma que mutex fosse decrementado antes de vazio ao invs de depois de vazio. Se
o buffer estivesse completamente cheio (semforos cheio = N e vazio = 0, no exemplo) o
produtor se bloquearia, pois vazio igual a 0, com mutex igual a 0. Consequentemente, na
prxima vez que o Consumidor tentasse acessar o buffer, ele realizaria um DOWN em mutex
e, como mutex est igual a 0, ele se bloquearia tambm.
Ambos os processos ficariam bloqueados indefinidamente e nenhum trabalho seria
realizado a partir deste ponto. Esta situao indesejada chamada deadlock. Uma definio
formal de deadlock a seguinte: Um conjunto de processos est em deadlock se cada processo
no conjunto est esperando por um evento que somente outro processo no conjunto pode
causar. Este problema mencionado para demonstrar o quo cuidadoso o programador deve
ser ao usar semforos. Os erros gerados so condies de corrida, deadlocks e outras formas de
comportamento imprevisveis e no reprodutveis.
Para que tais problemas pudessem ser resolvidos mais facilmente, Hoare (1974) e Hansen
(1975) propuseram o conceito de monitores. Um monitor uma coleo de procedimentos,
variveis, e estruturas de dados que so todos agrupados conjuntamente em um tipo especial de
mdulo ou pacote. Processos podem chamar os procedimentos em um monitor sempre que eles
precisarem, mas eles no podem acessar diretamente as estruturas de dados internas do monitor,
por meio de procedimentos declarados fora do monitor.
Monitores possuem uma propriedade importante que os torna teis para garantir excluso
mtua: somente um processo pode estar ativo em um monitor em qualquer instante. Monitores
so uma construo de linguagens de programao, de forma que o compilador sabe que eles
so especiais, e que pode manipular chamadas a procedimentos de monitor de forma diferente
de outras chamadas a procedimentos.
responsabilidade do compilador implementar excluso mtua em monitores, mas uma
maneira usual de se fazer isto usando semforos binrios, como o semforo mutex da Figura
4.16. Devido ao fato do compilador, e no o programador, est encarregado da excluso mtua,
bem menos provvel que algo saia errado. Para um programador, suficiente saber que ao
estarem todas as sees crticas em procedimentos de monitores, dois processos jamais
executaro suas sees crticas ao mesmo tempo.
Embora monitores forneam uma maneira fcil de conseguir excluso mtua, necessrio
haver um modo dos processos bloquearem quando eles no podem prosseguir. No problema do
Produtor-Consumidor fcil colocar todos os testes de buffer cheio? e buffer vazio? em
procedimentos de monitor, mas como deve o Produtor se bloquear quando ele encontrar o buffer
cheio ou Consumidor quando ele encontrar o buffer vazio? A soluo est no uso de variveis
de condio e com duas operaes nela: WAIT e SIGNAL. Quando um procedimento de
monitor descobre que ele no pode continuar (por exemplo, o Produtor encontra o buffer cheio),
ele realiza um WAIT em uma varivel de condio, que poderia ser denominada cheio. Esta
ao causa o processo em questo, o Produtor, se bloquear e permite a outro processo, que no
foi permitido anteriormente entrar no monitor, entrar agora.
Este outro processo, que poderia ser o Consumidor, poderia acordar o seu parceiro
adormecido por meio de um SIGNAL na varivel de condio na qual o seu parceiro est
esperando (varivel de condio cheio, no exemplo). Aps a realizao de um SIGNAL, o
processo que o fez deve sair imediatamente do monitor.
Isto evita ter dois processos ativos no monitor ao mesmo tempo. Em outras palavras, um
SIGNAL deve aparecer somente como uma instruo final no procedimento do monitor. Se um
SIGNAL realizado em uma varivel de condio onde vrios processos esto esperando,
somente um deles, determinado pelo escalonador, reativado.
Flvio Augusto de Freitas

Professor de Informtica

29

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Variveis de condio no so contadores. Eles no acumulam sinais para uso posterior


como os semforos fazem. Ento, se um SIGNAL realizado em uma varivel de condio
com nenhum processo esperando nesta varivel, ento o sinal perdido. Portanto, o WAIT deve
vir antes do SIGNAL. Um esqueleto do problema do Produtor-Consumidor com monitores
dado na Figura 4.17, em uma linguagem semelhante ao Pascal.

Figura 4.17 O problema do Produtor-Consumidor com monitores. O buffer possui


N slots.

As operaes WAIT e SIGNAL so bastante similares s operaes SLEEP e WAKEUP,


respectivamente, com uma diferena crucial: SLEEP e WAKEUP falham pois possvel que,
enquanto um processo est tentando adormecer, outro est tentando acord-lo. A excluso
mtua assegurada nos procedimentos do monitor evita este problema pois, por exemplo, se um
processo Produtor dentro de um procedimento de monitor encontrar um buffer cheio, ser
possvel a ele completar a operao WAIT sem que seja necessrio ele, Produtor, se preocupar
com a possibilidade do escalonador chavear para o Consumidor imediatamente antes de WAIT
ser completada.
A despeito dos aspectos positivos mencionados, monitores tambm tm os seus problemas.
No sem razo que o exemplo mostrado na Figura 4.18 foi descrito em uma linguagem
estranha, semelhante ao Pascal, ao invs de C. Monitores so um conceito de linguagens de
programao. O compilador deve reconhec-los e deve lidar com a excluso mtua de alguma
forma. C, Pascal e a maioria de outras linguagens de programao no possui monitores, ento
Flvio Augusto de Freitas

Professor de Informtica

30

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

no razovel esperar que os seus respectivos compiladores reforcem quaisquer regras de


excluso mtua. Portanto, com monitores necessria uma linguagem que os tenha embutidos.
Algumas poucas linguagens, como Concurrent Euclid, possuem monitores, mas elas so
raras.
Outro problema com monitores, e tambm com semforos, que eles foram projetados para
resolver o problema da excluso mtua em uma ou mais CPUs, onde todas possuem acesso a
uma memria comum. Porm, em um sistema distribudo consistindo de mltiplos
processadores, cada qual com a sua memria privada, conectados por uma rede local, estas
primitivas se tornam no aplicveis. A concluso que semforos so de muito baixo nvel e
que monitores existem apenas em poucas linguagens de programao.

4.2.3.4 Passagem de Mensagens


Este mtodo de comunicao entre processos usa duas primitivas SEND e RECEIVE as
quais, da mesma forma como semforos e diferentemente de monitores, so system calls ao
invs de construes de linguagem. Deste modo, elas podem ser facilmente colocadas em
procedimentos de biblioteca. Um possvel formato para estas primitivas mostrada na Figura
4.18.

Figura 4.18 Primitivas de comunicao usadas em passagem de mensagens.

Na Figura 4.18, destino e fonte so identificadores de processos (pid) e mensagem


corresponde informao que deve ser transmitida (enviada pelo processo fonte e recebida pelo
processo destino). Existem outras assinaturas de send e receive diferentes da mostrada na Figura
4.18, onde outros parmetros so passados para as primitivas, como o tamanho da mensagem
que est sendo transmitida.
Sistemas que usam passagem de mensagens possuem muitos problemas desafiadores que
no ocorrem com semforos ou monitores, especialmente se os processos comunicantes esto
em computadores diferentes conectados por uma rede. Embora passagem de mensagens
tambm possa ser aplicada a processos executando na mesma mquina, no caso dos processos
estarem em computadores diferentes, onde cada computador possui a sua memria privada,
problemas como a mensagem ser perdida pela rede pode ocorrer. Para contornar este problema,
os processos fonte e destino podem concordar que, logo que uma mensagem tenha sido
recebida, o processo destinatrio enviar uma mensagem especial de reconhecimento
(acknowledgement).
Se o processo fonte no receber o acknowledgement em um certo intervalo de tempo
(timeout), o fonte enviar a mensagem novamente.
Considere, ento, o que ocorre se a mensagem propriamente dita recebida, mas o
reconhecimento enviado perdido. O processo fonte retransmitir a mensagem e o processo
destinatrio receber a mesma mensagem duas vezes. Usualmente este problema pode ser
resolvido colocando nmeros de sequncias consecutivos em cada mensagem original. Se o
processo destino receber uma mensagem cujo nmero de sequncia o mesmo da mensagem
anterior, ele saber que uma mensagem duplicada e ignorar a mensagem.
4.2.3.4.1 Classificao da Comunicao em Sistemas com Vrias CPUs
A classificao da comunicao em sistemas que possuem vrios processadores interligados
e trabalhando em conjunto pode ser analisada sobre diversos aspectos. Entre estes, pode-se
citar: sincronismo e bloqueamento.
Flvio Augusto de Freitas

Professor de Informtica

31

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Em termos de sincronismo, a comunicao pode ser sncrona ou assncrona. Na


comunicao sncrona, um processo fonte, ao invocar uma primitiva send, fica bloqueado
enquanto a mensagem est sendo enviada. A instruo seguinte a send no executada at que
a mensagem seja completamente enviada. Similarmente, uma chamada a receive no permite a
execuo da prxima instruo, at que a mensagem seja recebida e armazenada na rea alocada
para isto. Em outras palavras, o processo que chamar a primitiva de comunicao primeiro
espera pelo outro.
Na comunicao assncrona, o processo fonte no espera pelo respectivo destinatrio. Uma
vez invocada send, ocorre o retorno ao programa principal sem esperar o trmino da mensagem.
Os dados enviados devem ser armazenados de alguma forma, neste caso.
Em relao a bloqueamento, a comunicao pode ser com bloqueio ou sem bloqueio. Na
comunicao com bloqueio, s existe um retorno das rotinas send/receive, e isto ocorre
quando a comunicao for finalizada. No caso da comunicao sem bloqueio, pode haver um
retorno das rotinas send/receive sem que a comunicao tenha sido completada. Ento, em
uma comunicao sncrona, ambas as primitivas, send e receive, so com bloqueio.
No caso de uma comunicao assncrona, podem existir dois casos:
send sem bloqueio, receive com bloqueio: embora o processo fonte possa seguir com o
seu processamento, aps chamar a rotina send, sem que a comunicao tenha sido terminada,
um processo destinatrio fica bloqueado, caso seja chamado um receive cujo respectivo send
do processo fonte no tenha ocorrido;
send sem bloqueio, receive sem bloqueio: ao invocar um receive, um processo destinatrio
segue o seu processamento, da mesma forma que o fonte.
Nos casos de comunicao sem bloqueio, buffers so necessrios para o armazenamento da
mensagem. Podem ocorrer problemas, caso a quantidade de buffers se torne muito grande
durante as comunicaes.
4.2.3.4.2 Problema do Produtor-Consumidor com Passagem de Mensagens
O problema do Produtor-Consumidor ser analisado com a soluo usando passagem de
mensagens e sem compartilhamento de memria. Assume-se que todas as mensagens possuem
o mesmo tamanho e que as mensagens enviadas mas no ainda recebidas so armazenadas
automaticamente pelo SO. Alm disso, o Produtor e o Consumidor esto em computadores
diferentes. Portanto, a comunicao assncrona, send sem bloqueio, receive com bloqueio.
Nesta soluo, um total de N mensagens usado, analogamente aos N slots em um buffer
de memria compartilhado. A Figura 4.19 mostra a soluo do problema do ProdutorConsumidor com passagem de mensagens.

Flvio Augusto de Freitas

Professor de Informtica

32

Sistemas Operacionais
Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 4.19 O problema do Produtor-Consumidor com passagem de mensagens.

Na Figura 4.19, assume-se que o mesmo cdigo estar presente em dois computadores em
uma rede. De acordo com o identificador do processo, valor que pode ser obtido pela rotina
obter_numero_processo(), o cdigo do Consumidor (identificador = 0) ou do Produtor
(identificador = 1) ser executado. Este paradigma chamado Single Program Multiple Data
(SPMD), onde cada processador da rede possui uma cpia do programa executvel, mas
processos diferentes executaro instrues diferentes dependendo da identificao do processo.
O Consumidor inicia enviando N mensagens vazias para o Produtor. Sempre que o Produtor
possui um item para dar para o Consumidor, ele toma uma mensagem vazia e envia de volta
para o Consumidor uma mensagem preenchida. Desta forma, o nmero total de mensagens
permanece constante no tempo, de forma que elas podem ser armazenadas em uma determinada
quantidade de memria.
Se o Produtor trabalha mais rpido do que o Consumidor, todas as mensagens terminaro
preenchidas, esperando pelo Consumidor. O Produtor, ento, ser bloqueado e esperar uma
nova mensagem vazia do Consumidor. Se o Consumidor trabalha mais rpido, ocorre o
contrrio: todas as mensagens estaro vazias esperando para que o Produtor as preencha. O
Consumidor ficar bloqueado at que o Produtor envie uma mensagem preenchida.
Flvio Augusto de Freitas

Professor de Informtica

33

Sistemas Operacionais
Escalonamento de Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Captulo 5
Escalonamento de Processos
O escalonamento de processos se refere a como os processos so distribudos para execuo
nos processadores em um Sistema de Computao. De acordo com Tanenbaum: Quando mais
de um processo executvel, o Sistema Operacional deve decidir qual ser executado primeiro.
A parte do Sistema Operacional dedicada a esta deciso chamada escalonador (scheduler) e o
algoritmo utilizado chamado algoritmo de escalonamento (scheduling algorithm). A forma
com que ocorre o escalonamento , em grande parte, responsvel pela produtividade e eficincia
atingidas por um Sistema de Computao. Mais do que um simples mecanismo, o
escalonamento deve representar uma poltica de tratamento dos processos que permita obter os
melhores resultados possveis em um sistema.

5.1 Escalonamento Preemptivo versus No


Preemptivo
Um algoritmo de escalonamento dito no preemptivo quando o processador designado
para um certo processo no pode ser retirado deste at que o processo seja finalizado. Por outro
lado, um algoritmo de escalonamento considerado preemptivo quando a CPU designada para
um processo pode ser retirada deste em favor de um outro processo.
Algoritmos preemptivos so mais adequados para sistemas em que mltiplos processos
requerem ateno do sistema, ou seja, no caso de sistemas multiusurio interativos (sistemas de
tempo compartilhado) ou em sistema de tempo real. Nestes casos, a preempo representa a
mudana do processo em execuo. Deste modo, para que a CPU seja retirada de um processo,
interrompendo a execuo deste, e designada a outro processo, anteriormente interrompido,
fundamental que ocorra a mudana de contexto dos processos, previamente mencionada no
Captulo 4. Tal mudana exige que todo o estado de execuo de um processo seja
adequadamente armazenado para sua posterior recuperao, representando uma sobrecarga
computacional para a realizao desta mudana e armazenamento de tais dados. Usualmente,
os algoritmos preemptivos so mais complexos, dada a natureza imprevisvel dos processos.
Por sua vez, os algoritmos no preemptivos so mais simples, se comparados aos
preemptivos, e adequados para o processamento no interativo, como no caso do Processamento
em Lote. Embora no proporcionem interatividade, so geralmente mais eficientes e previsveis
quanto ao tempo de entrega de suas tarefas.

5.2 Qualidade do Escalonamento


A qualidade do servio oferecido por um algoritmo de escalonamento pode ser avaliada por
meio de um critrio simples: o tempo de permanncia (tp), dado pela soma do tempo de espera
(te) com o tempo de servio ou execuo (ts), conforme mostrado a seguir.
t+
tpermanncia = tespera + tservio tp = te + ts

De um modo geral, deseja-se que o tempo de permanncia seja o menor possvel. A Figura
5.1 mostra uma representao grfica do tempo de permanncia.

Flvio Augusto de Freitas

Professor de Informtica

34

Sistemas Operacionais
Escalonamento de Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 5.1 Representao grfica do tempo de permanncia.

Uma outra forma de avaliar o escalonamento utilizando o tempo de permanncia


normalizado (tpn), ou seja, a razo entre o tempo de permanncia e o tempo de servio conforme
mostrado a seguir.
t
Se a espera for zero (melhor situao possvel, pois indica que o processo ao chegar logo
foi atendido), ter-se- que o tempo de permanncia normalizado de um processo ser 1. Assim
sendo, valores maiores indicam um pior servio oferecido pelo algoritmo de escalonamento.

5.2 Algoritmos de Escalonamento


Existem vrios algoritmos de escalonamento cujo objetivo principal alocar o processador
para um certo processo, dentre vrios processos existentes, otimizando um ou mais aspectos do
comportamento geral do sistema. Quatro algoritmos de escalonamento sero abordados neste
captulo: FIFO (First In, First Out), Round Robin, Shortest Job First e Multilevel Feedback
Queues (Filas Multniveis Realimentadas).

5.2.1 Escalonamento First In, First Out


Esta a forma mais simples de escalonamento. No escalonamento FIFO (First In, First Out
Primeiro a entrar, Primeiro a sair), os processos prontos so colocados em uma fila organizada
por ordem de chegada. No seu momento, cada processo recebe o uso da CPU at que a sua
execuo total seja completada, ou seja, o processo permanece em execuo at que seja
finalizado.
Os demais processos na fila de prontos ficam esperando o seu momento de ser executado
pelo processador. Desta maneira, o escalonamento FIFO um algoritmo no preemptivo. A
Figura 5.2 mostra o esquema do escalonamento FIFO.

Figura 5.2 Escalonamento FIFO.

Flvio Augusto de Freitas

Professor de Informtica

35

Sistemas Operacionais
Escalonamento de Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Embora haja igual tratamento para todos os processos, ocorre que processos de pequena
durao no so favorecidos pois, dependendo da quantidade de processos que existem para
serem processados antes deles e da durao de cada um destes processos, o servio oferecido
para estes processos menores pode ser consideravelmente ruim.
Outro ponto que processos importantes podem ficar esperando devido execuo de
outros processos menos importantes, dado que o escalonamento FIFO no possui qualquer
mecanismo de distino entre processos (por exemplo, processos com diferentes nveis de
prioridade).
A ttulo de exemplificao, seja o caso de quatro processos A, B, C e D com tempos de
servio distintos, 3, 35, 12 e 4 segundos respectivamente, os quais so escalonados conforme a
sua chegada pelo SO. A Figura 5.3 mostra os valores dos parmetros desta situao
considerando o escalonamento FIFO.

Figura 5.3 Exemplo considerando o escalonamento FIFO.

Na Figura 5.3, percebe-se que, em funo de como ocorreu o escalonamento, um processo


pequeno, como o processo D, obteve o pior servio.

5.2.2 Escalonamento Round Robin


No escalonamento Round Robin ou circular, os processos tambm so organizados em uma
fila segundo a ordem de chegada e ento so despachados para execuo pelo processador.
Entretanto, ao invs de serem executados at o final, a cada processo concedido apenas um
pequeno intervalo de tempo, denominado fatia de tempo, time-slice, quantum de tempo ou
quantum. Caso o processo no seja finalizado neste intervalo de tempo, ocorre sua substituio
pelo prximo processo na fila de processos prontos, sendo o processo interrompido colocado
no final da fila. Isto significa que, ao final da fatia de tempo do processo, ocorre a preempo
do processador, ou seja, o processador designado a outro processo, sendo salvo o contexto do
processo interrompido para permitir a continuidade da execuo deste processo quando chegar
o seu momento novamente.
O escalonamento Round Robin se baseia na utilizao de temporizadores, sendo um
algoritmo preemptivo e bastante adequado para ambientes interativos, ou seja, em sistemas de
tempo compartilhado onde existem mltiplos usurios simultneos sendo, portanto, necessrio
garantir tempos de resposta razoveis. A Figura 5.4 mostra o esquema do escalonamento Round
Robin.

Figura 5.4 Escalonamento Round Robin.

O tempo de resposta (tr) pode ser visto como o tempo que leva para que um certo processo
possa ser atendido pelo processador. A Figura 5.5 mostra a ilustrao deste conceito,
considerando que existam apenas 3 processos no sistema e que a janela de tempo de cada
Flvio Augusto de Freitas

Professor de Informtica

36

Sistemas Operacionais
Escalonamento de Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

processo seja de 10 ms. O conceito de janela de tempo do processo ser explicado logo adiante
nesta seo.

Figura 5.5 Tempo de resposta.

Considerando o escalonamento Round Robin, na Figura 5.5 percebe-se que o processo P2


tomou posse da CPU em t = 10 ms, foi desescalonado em t = 20 ms e voltou a ter a posse da
CPU em t = 40 ms. Para esta situao, o tempo de resposta vale 30 ms (40 ms 10 ms).
A sobrecarga imposta pela mudana de contexto representa um investimento para que seja
conseguido um bom nvel de eficincia.
importante perceber que o escalonamento mostrado no Captulo 2 justamente um
escalonamento Round Robin, mas desconsiderou-se, at aquele momento, a sobrecarga devido
mudana de contexto.
A determinao do tamanho da fatia de tempo (quantum) extremamente importante pois
relaciona-se com a sobrecarga imposta ao sistema pelas mudanas de contexto dos processos
em operao.
Para cada processo, existe uma janela de tempo onde ocorrem:
1.) a recuperao do contexto do processo (trc);
2.) a execuo do processo pela durao do quantum (q);
3.) a preservao do contexto do processo aps o trmino do seu quantum (tpc).
A Figura 5.6 mostra os tempos associados janela de tempo do processo.

Figura 5.6 Janela de tempo do processo.

Como o tempo gasto para a mudana de contexto (tc) no til do ponto de vista de
processamento de processos dos usurios tem-se que, para cada janela de tempo concedida aos
processos, existe um desperdcio de tempo de processamento devido a sobrecarga, identificada
pelos tempos trc e tpc na Figura 5.6.
Dado que a mudana de contexto toma um tempo aproximadamente constante, tem-se que a
sobrecarga (s) pode ser calculada por meio da seguinte relao:
tc = trc + tpc, o tempo associado mudana de contexto; q = tamanho do quantum.
Como exemplo, se tc = 2 ms e q = 8 ms, ento apenas 80% do tempo de processamento
til, sendo a sobrecarga imposta pela mudana de contexto de 20% do processamento til.
Se o quantum for aumentado, ento a sobrecarga da mudana de contexto diminuda, mas
um nmero de usurios (nu) menor ser necessrio para que os tempos de resposta se tornem
maiores e mais perceptveis. Diminuindo o quantum, existe uma situao inversa de maior
Flvio Augusto de Freitas

Professor de Informtica

37

Sistemas Operacionais
Escalonamento de Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

sobrecarga e tambm de um maior nmero possveis de usurios sem degradao sensvel dos
tempos de resposta. As equaes a seguir mostram a relao existente entre o tempo de resposta
(tr), o nmero de usurios (nu) e o quantum do sistema (q).
A Figura 5.7 mostra um exemplo da sobrecarga e do nmero de usurios possvel para um
tempo de resposta (tr) de 1 s e um tempo de mudana de contexto (tc) de 2 ms, considerando
diferentes valores de quantum.

Figura 5.7 Comporatamento da sobrecarga e do nmero de usurios para


diferentes valores de quantum.

Valores usuais de quantum so 10 ms, 20 ms. Com o aumento da velocidade dos


processadores, a mudana de contexto ocorre mais rapidamente diminuindo a sobrecarga e
aumentando ligeiramente a quantidade de usurios possveis para um mesmo limite de tempo
de resposta.

5.2.3 Escalonamento Shortest Job First


O escalonamento SJF (Shortest Job First Menor Job Primeiro) uma variante do
escalonamento FIFO onde os processos em espera pelo processador so organizados em um fila
segundo seu tempo de servio (ts), sendo colocados frente os menores jobs, isto , os que
sero processados em intervalos de tempo menores.
Mesmo sendo uma forma de escalonamento no preemptivo, oferece a vantagem de
proporcionar tempos mdios de espera menores do que aqueles obtidos em um esquema FIFO.
O grande problema deste esquema de escalonamento que o tempo de processamento de um
job no pode ser determinado antes de seu processamento, sendo necessrio o uso de
estimativas feitas pelo usurio ou programador, ainda assim, pouco precisas. A Figura 5.8
mostra o esquema do escalonamento SJF.

Figura 5.8 Escalonamento SJF. No caso, o processo B menor de todos.

Seja o mesmo caso usado para o escalonamento FIFO, onde quarto processos A, B, C e D
com tempos de processamento distintos, respectivamente 3, 35, 12 e 4 segundos, so
escalonados conforme sua durao pelo SO. A Figura 5.9 mostra esta situao.

Figura 5.9 Exemplo considerando o escalonamento SJF.

Percebe-se na Figura 5.9 que, em funo do escalonamento ordenar os processos segundo


sua durao, os menores processos obtiveram o melhor servio sem que isso resultasse em uma
Flvio Augusto de Freitas

Professor de Informtica

38

Sistemas Operacionais
Escalonamento de Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

degradao significativa para os processos maiores. O tempo de permanncia normalizado


possui valores bem inferiores aos obtidos com o escalonamento FIFO, evidenciando as
qualidades do escalonamento SJF.

5.2.4 Escalonamento Multilevel Feedback Queues


O escalonamento MFQ (Multilevel Feedback Queues Filas Multinvel Realimentadas)
um interessante esquema de escalonamento baseado em vrias filas encadeadas como mostra a
Figura 5.10.

Figura 5.10 Escalonamento MFQ.

Todos os novos processos so colocados inicialmente na Fila de Nvel 1, a qual possui um


comportamento FIFO. Ao utilizar a CPU podem ocorrer trs situaes:
1.) o processo finalizado e ento retirado das filas;
2.) o processo solicita o uso de dispositivos de E/S, ficando bloqueado at que o pedido de
E/S seja atendido, voltando para a mesma fila at que seu quantum se esgote;
3.) tendo esgotado seu quantum inicial de tempo, o processo colocado no final da fila de
Nvel 2.
Nas filas seguintes, o mecanismo o mesmo, embora os processos somente utilizem a CPU
na sua vez e na ausncia de processos nas filas de nvel superior. Quando novos processos
aparecem nas filas de nvel superior ocorre a preempo dos processos nas filas de nvel
inferior, de forma a atender os processos existentes nas filas superiores. Portanto, o
escalonamento MFQ possui nveis de prioridades sendo os processos que esto atualmente na
Fila 1 os de mais alta prioridade.
A ltima fila apresenta um comportamento um pouco diferente: ela possui escalonamento
Round Robin, onde os processos permanecem at que sejam finalizados.
Flvio Augusto de Freitas

Professor de Informtica

39

Sistemas Operacionais
Escalonamento de Processos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

As seguintes observaes so relevantes neste tipo de escalonamento:


a.) processos curtos so favorecidos pois recebem tratamento prioritrio enquanto
permanecem nas filas de nvel superior;
b.) processos com uso intenso de E/S so favorecidos, pois a utilizao de E/S no os
desloca para filas inferiores, at que o seu quantum termine;
c.) processos de durao maior tambm so favorecidos pois os quanta de tempo so
progressivamente maiores nas filas de nvel inferior. Portanto, se o quantum da Fila de Nvel 1
for 10 ms, por exemplo, ento o quantum da Fila 2 poderia ser 20 ms, o da Fila 3 poderia ser
40 ms e assim sucessivamente.
Um algoritmo de escalonamento deveria, no mnimo, favorecer os processos de curta
durao, de forma a minimizar os tempos mdios de resposta, e os processos que demandam
por dispositivos de E/S para obter adequada utilizao dos perifricos do sistema.
Deste modo, importante que tais algoritmos avaliem a natureza dos processos em
execuo promovendo um escalonamento adequado.
Neste sentido, o escalonamento MFQ pode ser considerado adaptativo, ou seja, ele capaz
de perceber o comportamento de um processo, favorecendo-o por meio da recolocao em uma
fila de nvel adequado. O critrio de recolocao de processos nas filas aps a solicitao de
uso de dispositivos de E/S influencia de forma considervel no quanto este esquema de
escalonamento adaptativo, isto , o quanto ele capaz de atender aos diferentes padres de
comportamento dos processos. Embora a sobrecarga para a administrao deste esquema de
escalonamento seja maior, o sistema torna-se mais sensvel ao comportamento dos processos,
separando-os em categorias (nveis de filas), possibilitando ganho de eficincia.

Flvio Augusto de Freitas

Professor de Informtica

40

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Captulo 6
Sistemas de Arquivos
O armazenamento e a recuperao de informaes so atividades essenciais para qualquer
tipo de aplicao. Um processo deve ser capaz de ler e gravar grande volume de dados em
dispositivos como fitas e discos de forma permanente, alm de poder compartilh-los com
outros processos. mediante a implementao de arquivos que o Sistema Operacional estrutura
e organiza estas informaes.
O Sistema Operacional controla as operaes sobre os arquivos, organizando seu
armazenamento no que denominado sistema de arquivos. De acordo com Deitel, um sistema
de arquivos geralmente possui:
- mtodo de acesso: maneira como os dados so acessados nos arquivos;
- gerenciamento de arquivos: conjunto de mecanismos de armazenamento, referncia,
compartilhamento e segurana;
- mecanismos de integridade: objetivam assegurar que os dados de um arquivo
permanecem ntegros.
Ainda segundo Deitel, um sistema de arquivos deve permitir, em termos funcionais, que:
- os usurios possam criar, modificar e eliminar arquivos, assim como duplic-los ou
transferir dados entre arquivos;
- operaes de backup e sua recuperao sejam realizadas;
- seja possvel a adoo ou implementao de procedimentos de proteo e segurana;
- a interface seja amigvel e consistente, admitindo a realizao de operaes apenas por
meio dos nomes simblicos dos arquivos, devendo estas operaes sempre ocorrer de maneira
uniforme, independentemente dos diferentes dispositivos de armazenamento.
Percebe-se que os sistemas de arquivos se preocupam com a organizao e controle do
armazenamento secundrio de um sistema de computao. importante mencionar que um SO
pode suportar diversos sistemas de arquivos, isto , o SO pode operar usando diferentes formas
de administrao dos dispositivos de armazenamento secundrio. A Figura 6.1 mostra exemplos
de SOs e de sistemas de arquivo suportados.
Sistema Operacional Sistemas de Arquivos Suportados
MS-DOS
FAT (File Allocation Table) 12 e 16 bits
MS-Windows 95/98
FAT (File Allocation Table) 12 e 16 bits
VFAT (File Allocation Table) 32 bits
MS-Windows NT
FAT (File Allocation Table) 12 e 16 bits
VFAT (File Allocation Table) 32 bits
NTFS (New Technology File System)
IBM OS/2
FAT (File Allocation Table) 12 e 16 bits
HPFS (High Performance File System)
Linux
FAT (File Allocation Table) 12, 16 e 32 bits
VFAT (File Allocation Table) 32 bits
Minix (Mini Unix)
Extended FS
Ext2
Ext3
Figura 6.1 Exemplos de SOs e sistemas de arquivos suportados.

Flvio Augusto de Freitas

Professor de Informtica

41

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

6.1 Conceitos de Arquivos


Entre as vrias definies possveis, Tanenbaum afirma, de forma simplificada, que os
arquivos podem ser entendidos como sequncias de Bytes no interpretadas pelo sistema,
dependendo de aplicaes apropriadas para sua correta utilizao.
Os arquivos, dependendo do SO e do sistema de arquivos em uso, podem possuir uma
identificao, atributos, lista de controle de acesso e uma organizao ou tipo.
Para que os dados possam ser corretamente identificados e utilizados, o sistema de arquivos
deve prover um mecanismo de identificao dos arquivos, isto , uma forma de distino
simples dos arquivos, que permita sua adequada operao. Isto feito por meio da associao
de um nome ao arquivo propriamente dito. Deste modo, muitas das operaes que podem ser
feitas sobre os arquivos so especificadas em termos de seus nomes, simplificando muitas
tarefas. A Figura 6.2 mostra formas de denominao diferentes em alguns Sistemas
Operacionais.
Sistema Operacional
Composio do Nome Composio da Extenso
MS-DOS (FAT12 e FAT16) 1 a 8 caracteres
1 a 3 caracteres
MS-Windows 95/98 (VFAT) 1 a 255 caracteres
1 a 255 caracteres
MS-Windows NT (NTFS)
1 a 255 caracteres
1 a 255 caracteres
IBM OS/2 (HPFS)
1 a 255 caracteres
1 a 255 caracteres
Figura 6.2 Denominao de arquivos em diversos SOs.

Alm dos nomes, os arquivos podem possuir atributos, isto , informaes de controle que
no fazem parte dos arquivos, embora associadas aos mesmos. Dependendo do sistema de
arquivos, os atributos variam, porm alguns, como tamanho do arquivo, proteo, identificao
do criador e data de criao, esto presentes em quase todos os sistemas.
Alguns atributos especificados na criao dos arquivos no podem ser modificados em
funo de sua prpria natureza, como organizao e data/hora de criao. Outros so alterados
pelo prprio SO, como tamanho e data/hora do ltimo backup realizado.
Existem ainda atributos que podem ser modificados pelo prprio usurio, como proteo do
arquivo, tamanho mximo e senha de acesso. A Figura 6.3 apresenta os principais atributos
presentes nos sistemas de arquivos de uma maneira geral.
Atributos
Descrio
Tamanho
Especifica o tamanho em Bytes
Proteo
Cdigo de proteo de acesso
Proprietrio Identifica o criador do arquivo
Criao
Data e hora de criao do arquivo
Backup
Data e hora do ltimo backup
Organizao Organizao lgica dos registros
Senha
Senha para acessar o arquivo
Figura 6.3 Principais atributos de arquivos.

As listas de controle de acesso so relaes de usurio que podem realizar operaes


especficas sobre um dado arquivo, tal como execuo ou escrita, e esto associadas diretamente
aos arquivos. Por exemplo, os sistemas Unix utilizam-se de uma lista de acesso simplificada
baseada no conceito de grupos. Permisses so associadas a todos os arquivos e podem ser
diferenciadas em 3 nveis: o do proprietrio, o do grupo ao qual pertence o seu proprietrio e
dos demais usurios. Para cada nvel, podem ser especificadas separadamente permisses para
leitura, escrita e execuo, que quando combinadas resultam em diferentes modos de acessar
os arquivos.

Flvio Augusto de Freitas

Professor de Informtica

42

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Existem diferentes organizaes ou estruturas possveis para os arquivos dentre as quais


pode-se citar: sequencial e de registro. A Figura 6.4 mostra tais estruturas.

Figura 6.4 Estruturas de arquivos. (a) Estrutura Sequencial. (b) Estrutura de


Registro.

Na estrutura sequencial, um arquivo uma sequncia de Bytes, garantindo a mxima


flexibilidade ao usurio do SO o qual oferece operaes bastante simples. Na estrutura de
registro, um arquivo uma sequncia de registros, os quais podem ter diversos formatos.
Tal estrutura menos flexvel do que a sequencial e depende de operaes um pouco mais
sofisticadas do SO. Existem diversos arranjos para arquivos organizados como sequncias de
registros, podendo haver registros de tamanho fixo e registros de tamanho varivel.
Sistemas Operacionais como o DOS, Windows 95/98/NT e o Unix estruturam seus arquivos
como uma sequncia de Bytes. Computadores de grande porte, como os sistemas IBM, utilizam
sequncias de registros como organizao comum.
Dependendo do contedo do arquivo, este pode ser entendido como de um certo tipo.
Muitos SOs utilizam a extenso do nome do arquivo como uma referncia para o tipo de seu
contedo. Nos SOs Windows 98/NT/2000/XP podem ser associadas aplicaes a determinadas
extenses, auxiliando o usurio. comum o usurio selecionar 2 vezes em um arquivo com
extenso .doc, no Windows XP por exemplo, e automaticamente invocado o Microsoft Word
abrindo o arquivo selecionado pelo usurio. De uma maneira geral, pode-se dividir os tipos de
arquivos em dois: arquivos alfanumricos e arquivos binrios. Um arquivo alfanumrico possui
apenas caracteres definidos por algum cdigo como o cdigo ASCII. Um arquivo tipo .txt,
gerado pelo Bloco de Notas (Notepad), um exemplo de um arquivo alfanumrico. Um arquivo
binrio pode conter qualquer tipo de caractere. O contedo de um arquivo binrio precisa ser
interpretado por uma aplicao para poder ser visualizado. Os arquivos executveis so tambm
arquivos binrios, cuja execuo realizada diretamente pelo SO.
O sistema de arquivos oferece um conjunto de System Calls que permite s aplicaes
realizar operaes de E/S, como traduo de nomes em endereos, leitura e gravao de dados
e criao/eliminao de arquivos. A Figura 6.5 apresenta algumas System Calls encontradas na
maioria das implementaes para gerenciamento de arquivos.
System Call Descrio
CREATE
Criao de um arquivo
OPEN
Abertura de um arquivo
READ
Leitura de dados de um arquivo
WRITE
Gravao de dados em um arquivo
CLOSE
Fechamento de um arquivo
Flvio Augusto de Freitas

Professor de Informtica

43

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

RENAME
DELETE

Alterao do nome de um arquivo


Eliminao de um arquivo

Figura 6.5 System Calls para gerenciamento de arquivos.

6.2 Organizao de Diretrios


A estrutura de diretrios o modo como o sistema organiza logicamente os diversos
arquivos contidos em um disco. O diretrio uma estrutura de dados que contm entradas
associadas aos arquivos onde so armazenadas informaes como localizao fsica, nome,
organizao e demais atributos.
Quando um arquivo aberto, o SO procura a sua entrada na estrutura de diretrios,
armazenando as informaes sobre atributos e localizao do arquivo em uma tabela mantida
na memria principal. Esta tabela contm todos os arquivos abertos, sendo fundamental para
aumentar o desempenho das operaes com arquivos. importante que ao termino do uso do
arquivo, este seja fechado, ou seja, que se libere o espao na tabela de arquivos abertos.

6.2.1 Organizao em Nvel nico


A implementao mais simples de uma estrutura de diretrios chamada de nvel nico.
Neste caso, existe apenas um nico diretrio contendo todos os arquivos do disco. Este modelo
bastante limitado, j que no permite que usurios criem arquivos com o mesmo nome, o que
ocasionaria um conflito no acesso aos arquivos. Uma vantagem deste tipo de organizao a
simplicidade de implementao e como desvantagens pode-se citar a ineficincia quando existir
mais de um usurio e a preocupao com arquivos de outros usurios. A Figura 6.6 mostra a
organizao em nvel nico.

Figura 6.6 Organizao de diretrio em nvel nico.

Esta estrutura de diretrio em nvel nico foi usada nos primeiros computadores.

6.2.2 Organizao em Dois Nveis


Como a organizao de nvel nico bastante limitada, foi implementada uma estrutura
onde, para cada usurio, existia um diretrio particular denominado User File Directory (UFD)
. Com esta implementao, cada usurio poderia criar arquivos com qualquer nome, sem a
preocupao de conhecer os demais arquivos do disco.
Para que o sistema possa localizar arquivos nesta estrutura, deve haver um nvel de diretrio
adicional para controlar os diretrios individuais. Este nvel, denominado Master File Directory
(MFD) , indexado pelo nome do usurio e nele cada entrada aponta para o diretrio pessoal.
A Figura 6.7 mostra a Organizao em dois nveis.

Flvio Augusto de Freitas

Professor de Informtica

44

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 6.7 Organizao de diretrio em dois nveis.

A estrutura de diretrios em dois nveis anloga a uma estrutura de dados em rvore, onde
o MFD a raiz, os galhos so os UFD e os arquivos so as folhas. Neste tipo de estrutura,
quando se referencia um arquivo, necessrio especificar o seu nome, bem como o diretrio
onde ele se encontra. Esta referncia chamada de PATH (caminho). Como exemplo, caso o
usurio CARLOS necessite acessar seu prprio arquivo denominado DOCUMENTO.TXT, ele
pode referenci-lo como /CARLOS/DOCUMENTO.TXT. Cada sistema de arquivos possui sua
prpria sintaxe para especificar diretrios e arquivos.
Como vantagens deste sistema, pode-se mencionar que o usurio tem melhor controle sobre
seus arquivos, existem poucas chances de um usurio interferir no outro e usurios distintos
podem ter arquivos de mesmo nome. Como desvantagens, ocorre um isolamento de um usurio
de outros, dificultando o trabalho conjunto. Alm disto para acessar arquivos de outro usurio,
deve-se indicar, alm do nome do arquivo, o usurio que o contm.
Para evitar a gerao de cpias de arquivos que so de uso comum entre usurios, tais como
utilitrios, editores, compiladores etc., utiliza-se do seguinte artifcio:
- criado e informado ao sistema um subdiretrio especial;
- quando o sistema vai buscar um arquivo, ele procura primeiro no diretrio atual; se no
achar, ele busca no subdiretrio indicado como especial.

6.2.3 Organizao em rvores


Pelo ponto de vista do usurio, a organizao dos seus arquivos em nico diretrio no
permite uma organizao adequada.
A extenso do modelo de dois nveis para um de mltiplos nveis permitiu que os arquivos
fossem logicamente melhor organizados.
Este novo modelo, chamado organizao de diretrios em rvores, atualmente adotado
por um grande nmero de SOs.
Na estrutura em rvore, possvel ao usurio criar quantos diretrios desejar, podendo um
diretrio conter arquivos ou outros diretrios (chamados subdiretrios). Cada arquivo nesta
estrutura possui um PATH nico, que descreve todos os diretrios desde a raiz (MFD) at o
diretrio no qual o arquivo est ligado. A Figura 6.8 mostra este tipo de organizao.

Flvio Augusto de Freitas

Professor de Informtica

45

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 6.8 Organizao de diretrios em rvores.

Como vantagens, pode-se citar o fato de poder-se organizar os arquivos no apenas por
usurios, mas por projetos e, tambm, de cada usurio poder organizar os seus arquivos em
subdiretrios.
Na maioria dos sistemas, os diretrios tambm so tratados como arquivos, possuindo
identificao e atributos, como proteo, identificao do criador e data de criao.

6.3 Sistemas Baseados em Disco


A grande vantagem do disco est na possibilidade de se acessar a informao diretamente.
As unidades de leitura ou gravao de discos magnticos constam dos seguintes elementos:
Um dispositivo de trao que mantm os discos em contnuo movimento e a velocidade
constante;
um pente de cabeas de leitura/gravao (uma por face magnetizvel) capaz de mover-se
radialmente sobre a superfcie dos discos. Em alguns casos de unidades rpidas de discos,
existem mais de uma cabea por face magnetizvel para que o tempo de acesso informao
seja menor. Estes casos so tpicos do uso do disco como memria virtual. A Figura 6.9 mostra
a estrutura dos sistemas baseados em disco.

Figura 6.9 Estrutura de sistemas baseados em disco.

Fisicamente, para a controladora, a unidade de armazenamento no disco o setor. Um setor


possui 512 Bytes. Para se acessar uma informao no disco, preciso fornecer controladora
o seguinte:
Flvio Augusto de Freitas

Professor de Informtica

46

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

face;
trilha ou cilindro;
setor dentro da trilha.
A controladora enxerga o disco por meio dos cilindros que o conjunto de trilhas
sobrepostas, faces e setores. O SO, por sua vez, enxerga os setores de forma contnua, ignorando
as trilhas e faces. A esses setores contnuos d-se o nome de blocos contnuos ou registros
fsicos.

6.3.1 Converso de Trilha/Setor em Bloco Contnuo


O SO estabelece uma relao da parte fsica do disco com a sua parte lgica, por meio do
clculo de trilha/setor em bloco contnuo.
Como exemplo, considere um disco contendo duas faces e 16 setores por trilha, sendo 8
setores de cada lado. Qual o bloco correspondente ao setor de nmero 4 da terceira trilha na
segunda face do disco? Neste exemplo, existem duas trilhas anteriores quela que contm o
bloco procurado; portanto so 16 x 2 = 32 setores contidos nestas duas trilhas. O bloco est na
terceira trilha da segunda face e, portanto, existem 8 setores na primeira face pertencente a
terceira trilha. Tem-se, desta forma, 32 + 8 = 40 setores que antecedem ao bloco desejado.
Como o bloco corresponde ao quarto setor da trilha e, supondo que a numerao dos blocos
comea em 1, o nmero do bloco desejado :
40 + 4 = 44.

Para o SO, muitas vezes conveniente trabalhar com unidades de alocao de tamanho
diferente de 1 setor. Por exemplo, discos com alta capacidade podem trabalhar, segundo o SO,
com unidades maiores, para aumentar a velocidade de trabalho. Existe, ento, o conceito de
registros lgicos em contraposio aos registros fsicos (blocos contnuos). Um registro lgico
composto de vrios registros fsicos conforme mostra a Figura 6.10.

Figura 6.10 Registros Lgicos e Fsicos e como a controladora e o SO visualizam


o disco.

A Figura 6.11 apresenta uma relao da capacidade de disco e do tamanho de registro


lgico.

Figura 6.11 Capacidade de disco x tamanho do registro lgico.

Flvio Augusto de Freitas

Professor de Informtica

47

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Um registro lgico grande tem como vantagem o aumento da velocidade de uso do disco e,
como desvantagem, o aumento de espao perdido por registro.

6.4 Mtodos de Acesso


Como as memrias secundrias so vistas pelo SO como um conjunto de unidades de
alocao (registros lgicos), existem mecanismos para gerenciamento de tais unidades com o
objetivo de melhorar o desempenho do SO (velocidade, aproveitamento e confiabilidade). Os
pontos a seguir devem ser considerados na anlise dos diferentes casos de alocao de espao
em disco:
a) os mtodos so basicamente para aplicao em discos;
b) os registros lgicos so chamados simplesmente de blocos;
c) um disco dividido em n blocos, comeando do bloco nmero 1;
d) Um arquivo tambm dividido em blocos, iniciando pelo bloco de nmero 1. Entretanto,
o primeiro bloco do arquivo no corresponde necessariamente ao primeiro bloco do disco.
A observao d pode ser mais bem entendida por meio da Figura 6.12 a seguir.

Figura 6.12 Blocos em arquivos e em disco.

6.4.1 Gerenciamento de Espao Livre em Disco


Como os discos tm a propriedade de poderem ser reutilizados, os arquivos podem ser
criados e apagados com frequncia. Portanto, para melhor reutilizao de espao em disco, fazse necessrio um controle sobre seu espao livre. A seguir, sero apresentadas algumas tcnicas
para gerenciamento de espao livre em disco.

6.4.1.1 Lista Ligada ou Encadeada


A idia para realizar este controle por meio da ligao encadeada de todos os blocos livres
do disco. Para que isto seja possvel, cada bloco possui uma rea reservada para armazenamento
do endereo do prximo bloco. A partir do primeiro bloco livre, pode-se ter acesso sequencial
aos demais de forma encadeada. Este esquema apresenta algumas restries se for considerado
que, alm do espao utilizado no bloco com informao de controle, o algoritmo de busca de
espao livre sempre deve realizar uma pesquisa sequencial na lista. A Figura 6.13 mostra um
exemplo usando esta tcnica.

Flvio Augusto de Freitas

Professor de Informtica

48

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 6.13 Um exemplo usando a tcnica de lista ligada.

(a): situao em termos de blocos ocupados e livres. (b): lista ligada.


Na Figura 6.13, o valor 1 indica que o bloco est ocupado e o valor 0 significa que este
o ltimo bloco livre do disco.

6.4.1.2 Lista de Blocos Contguos


A idia por trs desta tcnica guardar o endereo do primeiro bloco livre de uma srie de
blocos contguos (adjacentes). Considere o exemplo mostrado no tpico anterior (6.4.1.1). A
lista de blocos contguos mostrada na Figura 6.14.

Figura 6.14 Lista de blocos contguos para o exemplo do tpico anterior.

6.4.2 Alocao de Espao Para Arquivos


Uma outra tarefa do sistema de arquivos alocar espao para novos arquivos no disco.
Existem formas diferentes desta tarefa ser realizada. A seguir sero descritos alguns mtodos
associados a este assunto.

6.4.2.1 Alocao Contgua


A alocao contgua consiste em armazenar um arquivo em blocos sequencialmente
dispostos no disco. Neste tipo de alocao, o sistema localiza um arquivo por meio do endereo
do primeiro bloco e da sua extenso em bloco.
O acesso a arquivos dispostos contiguamente no disco bastante simples, tanto para a forma
sequencial quanto para a forma direta. Seu principal problema a alocao de espao livre para
Flvio Augusto de Freitas

Professor de Informtica

49

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

novos arquivos. Caso um arquivo deva ser criado com n blocos, necessrio que exista uma
cadeia de n blocos dispostos sequencialmente no disco. A Figura 6.15 mostra um exemplo do
uso desta tcnica.

Figura 6.15 - Um exemplo usando a tcnica de alocao contgua. (a): situao em


termos de blocos ocupados e livres. (b): tabela de blocos contguos.

A alocao contgua apresenta um problema chamado fragmentao dos espaos livres.


Como os arquivos so criados e eliminados frequentemente, os segmentos livres acabam se
fragmentando em pequenos pedaos por todo o disco. O problema pode tornar-se crtico quando
um disco possui blocos livres disponveis, porm no existe um segmento contguo em que o
arquivo possa ser alocado. No exemplo mostrado na Figura 6.15, suponha que seja desejado
alocar espao para um arquivo que ocupa 3 blocos. Embora haja 7 blocos livres, no seria
possvel alocar o arquivo pois no existem 3 blocos contguos.
O problema da fragmentao pode ser contornado por meio de rotinas que reorganizem
todos os arquivos no disco de maneira que s exista um nico segmento de blocos livres. Este
procedimento, denominado desfragmentao, geralmente utiliza uma rea de trabalho no
prprio disco ou uma fita magntica. Existe um grande consumo de tempo nesse tipo de
operao, sendo importante ressaltar que a desfragmentao um procedimento com efeito
temporrio e deve, portanto, ser realizada periodicamente.

6.4.2.2 Alocao Encadeada


Nesta alocao, um arquivo pode ser organizado como um conjunto de blocos ligados
logicamente no disco, independentemente da sua localizao fsica. Cada bloco deve possuir
um ponteiro para o bloco seguinte do arquivo. A Figura 6.16 mostra um exemplo usando esta
tcnica de alocao.

Flvio Augusto de Freitas

Professor de Informtica

50

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 6.16 Alocao Encadeada. (a): situao em termos de blocos ocupados e


livres. (b): lista encadeada.

Na Figura 6.16, o valor 1 agora indica que o bloco est livre e o valor 0 indica que este
o ltimo bloco do arquivo.
A fragmentao dos espaos livres, apresentada no mtodo anterior, no ocasiona nenhum
problema na alocao encadeada, pois os blocos livres alocados para um arquivo no precisam
necessariamente estar contguos. O que ocorre neste mtodo a fragmentao de arquivos, que
a quebra do arquivo em diversos pedaos denominados extents.
A fragmentao resulta no aumento do tempo de acesso aos arquivos, pois o mecanismo de
leitura/gravao dos discos deve se deslocar diversas vezes sobre sua superfcie para acessar
cada extent, gerando um excessivo tempo de busca (seek). Para otimizar o tempo das operaes
de E/S nesse tipo de sistema, importante que o disco seja periodicamente desfragmentado.
Apesar de ter propsitos diferentes, o procedimento de desfragmentao idntico ao j
apresentado na alocao contgua.
A alocao encadeada s permite que se realize acesso sequencial aos blocos dos arquivos.
Isto constitui uma das principais desvantagens dessa tcnica, j que no possvel o acesso
direto aos blocos. Por exemplo, se fosse necessrio acessar o bloco de nmero 13, ento a
seguinte sequncia de acessos seria realizada at que fosse conseguido chegar ao bloco 13: 3,
4, 6, 11, 12, 8 e 9. Alm disso, essa tcnica desperdia espao nos blocos com o armazenamento
de ponteiros.

6.4.2.3 Alocao Indexada


A alocao indexada soluciona uma das principais limitaes da alocao encadeada que
a impossibilidade do acesso direto aos blocos dos arquivos. O principio dessa tcnica manter
os ponteiros dos endereos de todos os blocos do arquivo em uma nica estrutura denominada
bloco de ndice. A Figura 6.17 ilustra esta tcnica.

Flvio Augusto de Freitas

Professor de Informtica

51

Sistemas Operacionais
Sistemas de Arquivos
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 6.17 Exemplo usando alocao indexada.

No caso de arquivos grandes, pode-se fazer um encadeamento de blocos de ndices, ou seja,


o ultimo valor de um bloco de ndice aponta para o prximo bloco de ndice. Portanto, possvel
existir mais de um bloco para armazenar a informao de ponteiros dos endereos dos blocos
do arquivo.

Flvio Augusto de Freitas

Professor de Informtica

52

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Captulo 7
Gerenciamento de Memria
Memria um importante recurso que deve ser gerenciado cuidadosamente. senso
comum perceber que, embora a capacidade de memria disponvel nos sistemas de computao
cada vez aumente mais, os desenvolvedores de software demandam por mais memria para que
seus programas possam ser armazenados e executados.
Como o prprio nome sugere, gerenciamento de memria a tarefa desempenhada pela
parte do SO que gerencia a memria. funo desta parte do SO conhecer quais regies da
memria esto em uso e quais no esto sendo usadas, alocar memria para processos quando
eles necessitam dela e desaloc-la quando os processos terminarem de ser executados, e
gerenciar o swapping entre a memria principal e o disco, quando a memria principal no for
grande o suficiente para comportar todos os processos.
A necessidade de manter mltiplos programas ativos na memria do sistema impe outra
necessidade: a de controlar como esta memria utilizada por estes vrios programas. O
gerenciamento de memria , portanto, o resultado da aplicao de duas prticas distintas dentro
de um sistema de computao:
como a memria vista, isto , como pode ser utilizada pelos processos existentes neste
sistema;
como os processos so tratados pelo SO quanto s suas necessidades de uso de memria.
Este captulo tratar de alguns esquemas de gerenciamento de memria. Porm, antes ser
abordada a organizao hierrquica de memria.

7.1 Organizao Hierrquica de Memria


Em um sistema de computao, o armazenamento de dados ocorre em diversos nveis. Em
outras palavras, o armazenamento realizado em diferentes tipos de dispositivos devido
quatro fatores bsicos:
1.) tempo de acesso;
2.) velocidade de operao;
3.) custo por unidade de armazenamento;
4.) capacidade de armazenamento.
Tendo isto em mente, o projetista de um SO determina quanto de cada tipo de memria ser
necessrio para que o sistema seja, ao mesmo tempo, eficiente e economicamente vivel.
Em virtude das dificuldades tecnolgicas associadas construo de circuitos de memria
e seu custo, o armazenamento de dados assumiu historicamente a organizao mostrada na
Figura 7.1.

Flvio Augusto de Freitas

Professor de Informtica

53

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.1 Organizao da memria em nveis.

Na Figura 7.1, Armazenamento Interno so posies de memria disponveis


internamente ao processador para permitir ou agilizar sua operao. constitudo dos
registradores do processador e de seu cache interno. O Armazenamento Primrio so as
posies de memria externa diretamente acessveis pelo processador.
Tipicamente, so CIs de memria SRAM, DRAM, EPROM, PROM, entre outras. Por seu
lado, o Armazenamento Secundrio so as posies de memria externa que no podem ser
acessadas diretamente pelo processador, devendo ser movidas para o Armazenamento Primrio
antes da sua utilizao. Tipicamente so os dispositivos de armazenamento de massa tal como
o disco rgido.
Perceba que o Armazenamento Interno possui as maiores velocidades de acesso, ou seja os
menores tempos de acesso, representando os melhores dispositivos em termos de desempenho,
embora sejam os mais caros. Por outro lado, os dispositivos de Armazenamento Secundrio so
os de maior capacidade e os de melhor relao custo/Byte, mas consideravelmente mais lentos.
O Armazenamento Primrio representa um caso intermedirio, onde a velocidade e o tempo de
acesso so adequadas a operao direta com o processador, mas cujo custo ainda assim alto.
Com a evoluo dos computadores, a atual organizao conta com outros elementos
adicionados para otimizar o desempenho do sistema e, ainda assim, reduzir seu custo. A Figura
7.2 mostra a organizao atual tpica de armazenamento.

Flvio Augusto de Freitas

Professor de Informtica

54

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.2 Organizao atual tpica de armazenamento.

Os registradores, implementados em nmero limitado devido ao seu custo, so geralmente


usados para manter dentro do processador dados frequentemente utilizados. Os caches interno
e externo devido a sua maior velocidade, so usados para manter uma poro do programa que
pode ser executada mais rapidamente do que na memria principal, aumentando o desempenho
do sistema. A memria primria armazena os programas e dados em execuo no sistema. Os
dispositivos de Armazenamento Secundrio so usados para preservao dos dados de forma
perene. O cache de disco utilizado para acelerar a operao das unidades de disco, podendo
esta tcnica ser utilizada para outros tipos de perifricos.

7.2 Tipos de Gerenciamento de Memria


De uma maneira geral, sistemas de gerenciamento de memria podem ser divididos em duas
classes: aqueles que movem processos (programas) do disco para a memria principal e viceversa, e aqueles que no realizam isto. Nesta seo, alguns tipos e conceitos relativos ao
gerenciamento de memria sero abordados.
Os esquemas de alocaes particionadas esttica e dinmica sero comentados
primeiramente.

7.2.1 Alocaes Particionadas Esttica e Dinmica


Nos sistemas multiprogramados, a memria primria foi dividida em blocos chamados de
parties. Inicialmente, as parties, embora de tamanho fixo, no tinham necessariamente o
mesmo tamanho, possibilitando diferentes configuraes para sua utilizao. Este esquema era
conhecido como alocao particionada esttica e tinha como grandes problemas:
- o fato dos programas, normalmente, no preencherem totalmente as parties onde eram
carregados, desperdiando espao;
Flvio Augusto de Freitas

Professor de Informtica

55

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

- se um programa fosse maior do que qualquer partio livre, ele ficaria aguardando uma
que o acomodasse, mesmo se existisse duas ou mais parties adjacentes que, somadas,
totalizassem o tamanho do programa. Este tipo de problema, onde pedaos de memria ficam
impedidos de serem usados por outros programas, chamado de fragmentao.
A Figura 7.3 mostra o problema da fragmentao associado alocao particionada esttica.

Figura 7.3 Problema da fragmentao associado alocao particionada


esttica.

Dado o problema da fragmentao na alocao particionada esttica, foi necessrio um


outro tipo de alocao como soluo e, consequentemente, o aumento do compartilhamento da
memria. Na alocao particionada dinmica, foi eliminado o conceito de parties de tamanho
fixo. Nesse esquema, cada programa utilizaria o espao que necessitasse, passando esse pedao
a ser sua partio. A Figura 7.4 mostra uma situao supondo alocao particionada dinmica.

Figura 7.4 Exemplo com alocao particionada dinmica.

A princpio, o problema da fragmentao pareceu estar resolvido, porm, neste caso, a


fragmentao comear a ocorrer, realmente, quando os programas forem terminando e
deixando espaos cada vez menores na memria, no permitindo o ingresso de novos
Flvio Augusto de Freitas

Professor de Informtica

56

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

programas. Para exemplificar este fato, seja a Figura 7.5. Neste caso, com o trmino de B e E e
mesmo existindo 8 KB livres de memria, o programa D, de 6 KB, no poder ser carregado.

Figura 7.5 Problema da fragmentao, a princpio, persiste na alocao


particionada dinmica.

Depois de j ter sido detectada a fragmentao da memria, existem duas solues para o
problema:
a) caso o programa C termine, o sistema pode reunir apenas os espaos adjacentes,
produzindo espao de tamanho 8 KB;
b) caso o programa C continue executando, o sistema pode realocar todas as parties
ocupadas, eliminando todos os espaos entre elas, e criando uma nica rea livre contgua.
A Figura 7.6 mostra estas duas solues para o problema da fragmentao.

Figura 7.6 Solues para o problema da fragmentao.

A complexidade do algoritmo de desfragmentao e o consumo de recursos do sistema,


como processador e rea em disco, podem tornar este processo invivel.
importante perceber que nestes dois tipos de gerenciamento de memria apresentados, o
espao de endereamento igual ao tamanho da memria primria existente no sistema.

7.2.2 Swapping
Em um sistema de Processamento em Lotes, a organizao de memria em parties fixas
simples e eficiente. Desde que jobs suficientes possam ser mantidos na memria de modo que
a CPU fique ocupada todo o tempo, no existe razo para usar outra organizao mais
complexa. Em sistemas de tempo compartilhado, a situao diferente: normalmente existem
mais usurios do que memria para manter todos os seus processos (programas), de modo que
necessrio manter os processos em excesso no disco. Para executar tais processos, necessrio
que eles sejam trazidos para a memria principal. O movimento de processos da memria
principal para o disco e vice-versa denominado de swapping.
Flvio Augusto de Freitas

Professor de Informtica

57

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Nas alocaes particionadas esttica e dinmica, um programa permanecia na memria


principal at o final da sua execuo, inclusive nos momentos em que esperava um evento,
como uma operao de leitura ou gravao em perifricos. Em outras palavras, o programa
somente sairia da memria principal quando tivesse terminado sua execuo.
Swapping pode ser usado em sistemas multiprogramados com parties de tamanho
varivel. Desta forma, de acordo com algum critrio, um programa pode ser movido da
memria principal para o disco (swap out) e, este mesmo programa, pode voltar do disco para
a memria principal (swap in), como se nada tivesse acontecido. A Figura 7.7 ilustra esta
situao.

Figura 7.7 Tcnica de swapping.

Para um maior aprofundamento no assunto, relevante mencionar que o swapping


realizado por rotinas especiais do SO chamadas de relocadores ou swappers. A existncia de
relocadores em um sistema depende do tipo de gerenciamento de memria oferecido pelo SO.
Uma explicao simplificada do trabalho realizado pelos relocadores dada a seguir.
Seguindo instrues do SO, que detm o gerenciamento de memria e dos processos, um
relocador pode ser comandado para retirar o contedo de uma rea de memria, armazenandoa em disco.
O que geralmente ocorre que o relocador realiza uma cpia desta rea de memria em um
arquivo especial denominado arquivo de troca ou swap file. Ao copiar a rea de memria para
o disco, tal rea assinalada como livre, tornando disponvel para outros processos.
Tambm, efetuado um registro do que foi copiado para a memria possibilitando a
recuperao deste contedo. A Figura 7.8 mostra o relocador realizando swapping.

Flvio Augusto de Freitas

Professor de Informtica

58

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.8 Relocador em ao.

Em um sistema multiprogramado podem existir vrios processos em estado pronto e vrios


bloqueados, e apenas um processo efetivamente em execuo em um determinado instante. Tal
processo em execuo pode solicitar reas adicionais de memria. Estes novos pedidos de
alocao de memria podem ser atendidos de duas formas: reas efetivamente livres so cedidas
ao processo ou aciona-se o relocador para liberao de reas de memria pertencentes aos
demais processos por meio da remoo de seu contedo para os arquivos de troca.

7.2.3 Memria Virtual


O conceito de relocao de memria possibilitou o desenvolvimento de um mecanismo mais
sofisticado de utilizao de memria denominado memria virtual.
O conceito de memria virtual est baseado em desvincular o endereamento feito pelo
programa dos endereos fsicos da memria principal. Assim, os programas e suas estruturas
de dados deixam de estar limitados ao tamanho da memria fsica disponvel.
Segundo Deitel, o termo memria virtual normalmente associado com a habilidade de um
sistema enderear muito mais memria do que a fisicamente disponvel. Este conceito surgiu
em 1960 no computador Atlas, construdo pela Universidade de Manchester (Inglaterra),
embora sua utilizao mais ampla tenha acontecido recentemente. A Figura 7.9 mostra a
representao da memria virtual e real.

Flvio Augusto de Freitas

Professor de Informtica

59

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.9 Representao da memria virtual e real.

Conforme pode ser visto na Figura 7.9, a memria virtual de um sistema , de fato, o(s)
arquivo(s) de troca ou swap file(s) gravado(s) no disco rgido. Portanto a memria total de um
sistema, que possui memria virtual, a soma de sua memria fsica, de tamanho fixo, com a
memria virtual. O tamanho da memria virtual, chamado de arquivo de paginao no
Windows XP, definido, basicamente, pelo menor valor dentre os seguintes:
capacidade de endereamento do processador;
capacidade de administrao de endereos do SO;
capacidade de armazenamento dos dispositivos de armazenamento secundrio (unidades
de disco).
Um programa no ambiente de memria virtual no faz referncia a endereos fsicos de
memria (endereo reais), mas apenas a endereo virtuais. No momento da execuo de uma
instruo, o endereo virtual traduzido para um endereo fsico, pois o processador acessa
apenas posies da memria principal.
O mecanismo de traduo do endereo virtual para endereo fsico denominado
mapeamento. Este mecanismo, nos sistemas atuais, feito pelo hardware, com o auxlio do SO,
e ele traduz um endereo localizado no espao de endereamento virtual para um endereo
fsico de memria, pois o programa executado em seu contexto precisa estar no espao de
endereamento real para poder ser referenciado ou executado. Portanto um programa no
precisa estar necessariamente contguo na memria real para ser executado.
O mecanismo de traduo se encarrega de manter tabelas de mapeamento exclusivas para
cada processo, relacionando os endereos virtuais do processo s suas posies na memria
fsica.
A Figura 7.10 mostra o mapeamento para o caso do processo A.

Flvio Augusto de Freitas

Professor de Informtica

60

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.10 Mecanismo de Mapeamento.

A memria virtual pode ser implementada basicamente por meio dos mecanismos de
paginao e segmentao. Atualmente, paginao o mecanismo mais popular de
implementao de memria virtual. A segmentao uma alternativa menos utilizada, embora
mais adequada do ponto de vista de programao. Alguns sistemas usam ambas as tcnicas.
Paginao e segmentao sero abordadas nas prximas sees.

7.2.3.1 Paginao
A paginao a tcnica de gerenciamento de memria que faz uso da memria virtual, ou
seja, o espao de endereamento maior do que o tamanho da memria fisicamente presente
no sistema. Nesta tcnica, o espao de endereamento total do sistema, denominado de espao
de endereamento virtual, dividido em pequenos blocos de igual tamanho chamados pginas
virtuais ou simplesmente pginas.
Cada pgina possui um nmero que a identifica. Da mesma forma, a memria fsica
dividida em blocos iguais, do mesmo tamanho das pginas virtuais, denominados de molduras
de pginas. Cada moldura de pgina tambm identificada por um nmero, e corresponde uma
certa regio da memria fsica. Tanto as pginas virtuais como as molduras de pginas
comeam a ser identificadas a partir do nmero zero.
Os endereos gerados por um programa em execuo so chamados de endereos virtuais
e formam o j mencionado espao de endereamento virtual. Seja o caso de um programa
executar a seguinte instruo de uma certa linguagem de programao: MOV REG, 2060. Esta
instruo, desta linguagem, diz que o contedo do endereo de memria 2060 deve ser copiado
para o registrador REG.
O endereo 2060, gerado pelo programa , portanto, um endereo virtual.
Em computadores sem o mecanismo de memria virtual, o endereo virtual colocado
diretamente no barramento da memria e isto causar o acesso (leitura ou escrita) da palavra de
memria fsica com o mesmo endereo. No caso de existir memria virtual, o endereo virtual
vai para a MMU (Memory Management Unit Unidade de Gerenciamento de Memria), um
CI ou uma coleo de CIs (hardware) que faz o mapeamento dos endereos virtuais em
endereos fsicos. A Figura 7.11 ilustra esta situao.

Flvio Augusto de Freitas

Professor de Informtica

61

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.11 MMU e a traduo de endereos virtuais em fsicos.

Para que o esquema de diviso proposto pela paginao seja eficaz, o SO deve realizar o
mapeamento de forma a identificar quais pginas virtuais esto presentes na memria fsica (em
molduras de pginas) e quais esto localizadas na memria virtual do sistema (arquivo de troca).
Tal mapeamento feito por meio de tabelas de pginas que determinam a relao entre as
pginas virtuais, do espao de endereamento virtual, e as molduras de pginas do espao de
endereamento fsico (real). A Figura 7.12 mostra os espaos de endereamento virtual e real
na paginao.

Figura 7.12 Espaos de endereamento virtual e real na paginao.

Quando programas so executados, as pginas virtuais so transferidas da memria


secundria para a memria principal e colocadas nas molduras de pginas. Com o decorrer da
execuo dos programas, o SO relaciona quais pginas virtuais esto sendo alocadas para cada
um destes programas, sem se preocupar com o posicionamento contguo de partes de um mesmo
Flvio Augusto de Freitas

Professor de Informtica

62

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

programa. No instante efetivo da execuo, a MMU converte os endereos virtuais em


endereos fsicos, consultando as tabelas de pginas, conforme mostra a Figura 7.13.

Figura 7.13 Relacionamento entre endereos virtuais e fsicos.

Na Figura 7.13, o tamanho das pginas de 1 KB. Perceba que o espao de endereamento
virtual o dobro do espao real. Ento, supondo a instruo mencionada anteriormente, o
endereo virtual gerado pelo programa 2060. Este endereo est na pgina virtual 2, conforme
mostra a Figura 7.13. A MMU, ao consultar a tabela de pginas, verifica que a pgina virtual 2
est mapeada na moldura de pgina 1. Deste modo, a MMU consegue fazer a converso do
endereo virtual para o endereo fsico.
O endereo virtual formado pelo nmero da pgina virtual e um deslocamento dentro da
pgina. Para obter o deslocamento, basta subtrair o endereo virtual da instruo do endereo
virtual inicial da pgina virtual em questo. No exemplo da instruo MOV REG, 2060, temse:
Endereo virtual inicial da pgina virtual 2 = 2048 (2K);
Endereo virtual da instruo = 2060;
Deslocamento = 2060 2048 = 12.

O endereo fsico calculado somando-se o endereo fsico inicial da moldura de pgina,


que est mapeada com a pgina virtual endereada, com o deslocamento contido no endereo
virtual. Ento, no exemplo:
Endereo fsico inicial da moldura de pgina 1 = 1024 (1K);
Deslocamento = 12;
Endereo fsico = 1024 + 12 = 1036.

Alm da informao sobre a localizao da pgina virtual, a entrada na tabela de pginas


possui a informao se a pgina que contm o endereo referenciado est ou no na memria
principal, por meio de um bit de validade. Se o bit tem o valor 0, isto indica que a pgina virtual
no est na memria principal, enquanto se for igual a 1, a pgina virtual est localizada na
memria principal. A Figura 7.14 mostra o conceito de bit de validade.

Flvio Augusto de Freitas

Professor de Informtica

63

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.14 Tabela de pginas e bit de validade.

Na Figura 7.14, os valores das entradas na tabela de pginas esto expressos em binrio. O
bit destacado dos demais o bit de validade.
Se a MMU identificar que uma pgina virtual no est mapeada na memria fsica
(principal), como a pgina virtual 6 da Figura 7.14, ela realiza uma operao de falha de pgina
(page fault).
Quando ocorre isto, uma rotina do SO busca na memria virtual (arquivo de troca) a pgina
necessria, trazendo-a para a memria fsica (swap in). Esta operao particularmente
complexa quando no existe espao livre na memria fsica. Por exemplo, na Figura 7.14, dado
que um programa endereou a pgina virtual 6, como esta pgina no est mapeada na memria
fsica e a memria est cheia, qual das pginas atualmente na memria deve ser removida para
o disco (swap out)? Um grande problema da tcnica de paginao justamente este: a escolha
da pgina atualmente na memria fsica que deve ser removida. Existem diversos algoritmos
adotados pelos SOs para a realocao de pginas, entre eles pode-se citar:
First-In, First-Out (FIFO): a pgina que primeiro foi utilizada ser a primeira a ser
selecionada;
Least-Recently-Used (LRU): a pgina selecionada a que est h mais tempo sem ser
referenciada;
Not-Recently-Used (NRU): a pgina selecionada a que no foi recentemente utilizada.

7.2.3.2 Segmentao
Segmentao a tcnica de gerenciamento de memria onde os programas so divididos
logicamente em sub-rotinas e estruturas de dados e colocados em blocos de informaes na
memria. Os blocos tm tamanhos variveis e so chamados segmentos, cada um com seu
prprio espao de endereamento. A Figura 7.15 ilustra a tcnica de segmentao.

Flvio Augusto de Freitas

Professor de Informtica

64

Sistemas Operacionais
Gerenciamento de Memria
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

Figura 7.15 Tcnica de segmentao.

A grande diferena entre a paginao e a segmentao que, enquanto a primeira divide o


programa em partes de tamanho fixo, sem qualquer ligao com a estrutura do programa, a
segmentao permite uma relao entre a lgica do programa e sua diviso na memria.
O mecanismo de mapeamento muito semelhante ao da paginao. Alm do endereo do
segmento na memria fsica, cada entrada na tabela de segmentos possui informaes sobre o
tamanho do segmento e se ele est ou no na memria.
Se as aplicaes no estiverem divididas em mdulos, grandes pedaos de cdigo estaro na
memria desnecessariamente, no permitindo que outros usurios, tambm utilizem a
memria.
O problema da fragmentao tambm ocorre nesse modelo, quando as reas livres so to
pequenas que no acomodam nenhum segmento que necessite ser carregado.

Flvio Augusto de Freitas

Professor de Informtica

65

Sistemas Operacionais
ndice Remissivo
Para ser usado somente no Curso Superior de Cincia da Computao, sob autorizao tcita de Flvio Augusto de Freitas.
Por favor, reporte usos indevidos atravs do e-mail flaviocefetrp@gmail.com.

ndice Remissivo
E

Escalonamento de Processos ................................ 36


Algoritmos de .................................................. 37
FIFO ............................................................ 37
MFQ ............................................................ 41
Round Robin ............................................... 38
SJF .............................................................. 40
Preemptivo X No Preemptivo ........................ 36
Qualidade do .................................................... 36

Sistemas de Arquivos ........................................... 44


Conceitos ......................................................... 45
Diretrios
Organizao ................................................ 47
rvores................................................... 48
Dois Nveis ............................................ 47
MFD .................................................. 48
UFD ................................................... 47
Nvel nico ............................................ 47
Mtodos de Acesso .......................................... 51
Arquivos
Alocao de Espao Para ....................... 53
Alocao Contgua ............................ 53
Alocao Encadeada ......................... 54
Alocao Indexada ............................ 55
Espao Livre
Gerenciamento de .................................. 51
Lista de Blocos Contguos ................. 52
Lista Ligada ou Encadeada ............... 51
Sistemas Baseados em Disco ........................... 49
Converso de Trilha/Setor em Bloco
Contnuo................................................. 50
Sistemas Operacionais
Como Gerentes de Recursos .............................. 2
Como Mquinas Virtuais ................................... 1
Estrutura .......................................................... 10
Acesso
Modos de................................................ 11
Comandos
Interpretador de ...................................... 12
Ncleo ......................................................... 10
Sistema
Chamadas ao .......................................... 10
Tipos de ...................................................... 13
Anlise ................................................... 17
Camada .................................................. 15
Cliente-Servidor ..................................... 15
Monolticos ............................................ 13
Evoluo ............................................................ 3
Fases ............................................................. 3
1 Fase ...................................................... 3
2 Fase ...................................................... 4
3 Fase ...................................................... 5
4 Fase ...................................................... 7
5 Fase ...................................................... 8
Introduo ..................................................... 3
Introduo .......................................................... 1
O que so ........................................................... 1

G
Gerenciamento de Memria ................................. 56
Gerenciamento
Tipos de ...................................................... 58
Alocaes Particionadas ......................... 59
Memria Virtual ..................................... 63
Paginao .......................................... 65
FIFO ............................................. 68
LRU .............................................. 68
MMU ...................................... 65, 68
NRU.............................................. 68
Segmentao...................................... 68
Swapping ................................................ 61
Organizao Hierrquica de ............................ 56
I
ndice Analtico ................................................... i
P
Processos .............................................................. 18
Comunicao entre .......................................... 23
Condies de Corrida .................................. 24
Propostas Para Obteno de Excluso Mtua
............................................................... 26
Mensagens .............................................. 33
Classificao...................................... 34
Produtor-Consumidor ........................ 34
Monitores ............................................... 30
deadlock ............................................ 31
Semforo ................................................ 29
Sleep ....................................................... 26
Wakeup .................................................. 26
Sees Crticas ............................................ 25
Modelo de ........................................................ 18
Estados dos ................................................. 19
Implementao de ....................................... 22

Flvio Augusto de Freitas

Professor de Informtica

66