Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução Aos Sistemas Operacionais - ISO
Introdução Aos Sistemas Operacionais - ISO
Notas de aula
Salto, 2010
Prefcio
O objetivo deste guia servir de referncia inicial a alunos do curso de Introduo aos
Sistemas Operacionais. Recomenda-se fortemente que os alunos busquem as informaes
complementares e detalhes nos livros citados na referncia bibliogrfica. Seu contedo uma
pesquisa de vrios autores, sendo em partes transcries e tradues dos mesmos. Esta apostila visa
ser uma primeira leitura para os alunos e tenta sempre mostrar os temas abordados de forma simples
e clara. Todas as referncias bibliogrficas utilizadas na construo desta apostila se encontram no
final do texto.
Sumrio
1
Introduo .................................................................................................. 1
1.1
Histrico dos Sistemas Operacionais ......................................................... 2
1.1.1 Vlvulas e Painis de Conexo (1945-1955) ........................................... 2
1.1.2 Transistores e Sistemas de Lote (batch) (1955-1965).............................. 3
1.1.3 Circuitos Integrados e Multiprogramao (1965-1980) .......................... 3
1.1.4 Computadores Pessoais e Redes (1980 - 1990) ....................................... 4
1.2
Tipos de Sistemas Operacionais. ............................................................... 5
1.2.1 Sistema Operacional (Monotarefa) .......................................................... 5
1.2.2 Sistemas Operacionais Multiprogramados (Multitarefa) ......................... 5
1.2.3 Sistemas Operacionais Batch(lote) .......................................................... 5
1.2.4 Sistemas Operacionais de tempo compartilhado (time-sharing) ............. 5
1.2.5 Sistemas Operacionais de Tempo Real (real-time) ................................. 5
1.2.6 Sistemas Operacionais Multiprocessados ................................................ 6
1.3
Exerccios ................................................................................................... 6
2
Fundamentos .............................................................................................. 7
2.1
Sistema de computao .............................................................................. 7
2.2
Buffering .................................................................................................... 7
2.3
Spooling ..................................................................................................... 8
2.4
Interrupes................................................................................................ 8
2.4.1 Interrupo de hardware .......................................................................... 9
2.4.2 Interrupo de software.......................................................................... 10
2.5
2.6
2.7
2.7.1
Exerccios ................................................................................................. 14
3
Estruturas dos sistemas operacionais ....................................................... 16
3.1
Componentes dos Sistemas Operacionais ................................................ 16
3.1.1 Gerncia de processos ............................................................................ 16
3.1.2 Gerncia de memria principal .............................................................. 16
3.1.3 Gerncia de arquivos.............................................................................. 16
3.1.4 Gerncia do sistema de I/O .................................................................... 16
3.1.5 Gerncia de armazenamento secundrio ................................................ 17
3.1.6 Proteo de sistema ................................................................................ 17
3.1.7 Interpretador de comandos ..................................................................... 17
3.2
Estrutura dos Sistemas Operacionais ....................................................... 17
3.2.1 Sistemas Monolticos ............................................................................. 17
Exerccios ................................................................................................. 56
6
Sistemas de arquivos ................................................................................ 57
6.2
Exerccios ................................................................................................. 65
Referncias bibliogrficas .......................................................................................... 66
1 INTRODUO
Um sistema operacional um programa de computador, que aps o processo de inicializao (boot)
da mquina, o primeiro a ser carregado, e que possui duas tarefas bsicas:
Gerenciar os recursos de hardware de forma que sejam utilizados da melhor forma possvel, ou
seja, tirar o mximo proveito da mquina fazendo com que seus componentes estejam a maior
parte do tempo ocupados com tarefas existentes; e
Prover funes bsicas para que programas de computador possam ser escritos com maior
facilidade, de modo que os programas no precisem conhecer detalhes da mquina para poderem
funcionar.
justamente neste segundo item que os sistemas operacionais podem ser bem sucedidos ou no, em
despertar interesse para que a indstria de software e os programadores independentes construam
programas para determinados sistemas operacionais. Isto justifica parte do sucesso do Microsoft
Windows, pois, ao mesmo tempo que ele prov uma interface bastante amigvel com o usurio, para o
programador, no to difcil criar um programa com janelas, botes, listas, etc, como seria num sistema
operacional como o MS-DOS. Alm disso, os sistemas operacionais da Microsoft rodam no hardware
mais popular hoje em dia: os computadores baseados em IBM PC.
Computadores modernos possuem um ou mais processadores, memria principal, dispositivos de
entrada e sada como discos, fitas, teclado, mouse, monitor, interface de rede, entre outros. Escrever
programas que utilizem um computador com esta complexidade de forma eficiente muito difcil e
trabalhoso. exatamente neste ponto que entram as funes do sistema operacional: abstrair as
particularidades do hardware dos programas, fornecendo a eles facilidades para sua operao, tais como:
rotinas de acesso a dispositivos diversos; funes de armazenamento de dados como criao de arquivos,
leitura e escrita de dados; e rotinas de acesso aos dispositivos de interao com a mquina, como teclado,
mouse, monitor, etc.
Dada a existncia de softwares como o sistema operacional, os programas normalmente so
classificados como software bsico (que inclui o sistema operacional), e softwares de aplicao, que so
voltados a resolver problemas dos usurios.
Podemos visualizar atravs de um diagrama a integrao entre hardware, software bsico, e
softwares aplicativos, como mostra a Figura 1.
Sistema Bancrio
Controle de
Estoques
Jogos
Compiladores
Editores
Interpretador de
comandos (shell)
Programas de
Aplicao
Programas de Sistema
(software bsico)
Sistema Operacional
Linguagem de Mquina
Microprogramao
Hardware
Dispositivos Fsicos
Figura 1 Integrao entre hardware, software bsico e software aplicativo
Olhando para o diagrama, veremos que o que chamamos de hardware na verdade composto de
trs camadas. Nem todas as mquinas seguem este esquema, algumas podem ter uma camada a menos, ou
mesmo camadas adicionais, mas basicamente, os computadores seguem o esquema ilustrado na Figura 1.
Com a introduo de circuitos integrados, houve uma grande reduo no tamanho e custo dos
sistemas, bem com um aumento em sua complexidade e generalidade. Isto permitiu o desenvolvimento de
dispositivos de entrada e sada inteligentes, de forma que os prprios se responsabilizam pelo controle da
transferncia de dados entre eles e a memria principal. Outro desenvolvimento importante foi a
introduo dos discos, que permitem um acesso aleatrio informao contida nos mesmos,
diferentemente das fitas magnticas, que somente permitem um acesso aos dados na ordem em que os
mesmos esto gravados (note que isto pode ficar transparente atravs de uma programao cuidadosa,
entretanto com alto custo em tempo de execuo). Estes foram fatores fundamentais para o sucesso do
conceito de multiprogramao, apresentado a seguir. Simultaneamente com a utilizao de circuitos
integrados, surgiu o conceito de multiprogramao. A idia provm dos seguintes fatos:
i) durante a execuo de programas que realizam alta utilizao de clculos (ex: programas
3
Com a integrao em larga escala e o surgimento dos microcomputadores, surge tambm o conceito
de user-friendly para Sistemas Operacionais, que corresponde ao desenvolvimento de sistemas
operacionais para serem utilizados por pessoas sem nenhum conhecimento de computao e que,
provavelmente, no tm nenhum interesse em vir a conhecer algo.
Um outro desenvolvimento interessante que foi bastante impulsionado pelos microcomputadores
(apesar de no depender dos mesmos) o de sistemas operacionais para redes de computadores, que
consistem em computadores distintos interligados por elementos de comunicao. Os sistemas
operacionais para redes so divididos em duas categorias:
Sistemas operacionais de rede: no qual cada usurio tem conhecimento de seu prprio computador
e pode acessar dados em outros computadores;
Sistemas operacionais distribudos: em que o sistema operacional faz com que todos os
computadores da rede formem uma unidade, de forma que nenhum usurio tenha conhecimento de
quantos computadores h na rede ou de em qual (ou quais) computador o seu especfico programa
est executando.
1.2.2
So semelhantes aos sistemas time-sharing, embora exijam tempo de resposta dentro de limites
rgidos, na execuo de tarefas. O conceito de time-slice muito pouco utilizado e os processos executam
o tempo necessrio e conforme sua prioridade. So sistemas muito utilizados em controle de processos,
onde o tempo um fator crucial: refinaria de petrleo, automao industrial, controle de trfego areo etc..
Neste sistema, os processos geralmente so ativados por sensores.
Linha de
comunicao
DISPOS
E/S
MEM
UCP
DISPOS
E/S
MEM
UCP
MEM
DISPOS
E/S
DISPOS
E/S
1.3 Exerccios
1. Quais os principais objetivos e as principais funes de um SO?
2. Qual a diferena entre monoprogramao e mutiprogramao. Exemplifique.
3. Defina as propriedades essenciais dos seguintes tipos de SO: Batch, Multiprogramados, Tempo
Compartilhado, Tempo Real e Multiprocessados.
4. Se o computador possuir apenas um processador, possvel ocorrer um processamento paralelo?
Justifique a resposta.
5. Quais so as diferenas entre um sistema fracamente e fortemente acoplado?
6. Explique a diferena entre processamento paralelo e concorrente.
2 FUNDAMENTOS
Este captulo tem como objetivo introduzir diversos fundamentos que sero utilizados no decorrer do
curso.
2.2 Buffering
A tcnica de buffering consiste na utilizao de uma rea de memria (buffer) para a transferncia
de dados entre os perifricos e a memria principal. O buffering veio permitir que, quando um dado fosse
transferido para o buffer aps uma operao de leitura, o dispositivo de entrada pudesse iniciar uma nova
leitura. Neste caso, enquanto a CPU manipula o dado localizado no buffer, o dispositivo realiza outra
operao de leitura no mesmo instante. O mesmo raciocnio pode ser aplicado para operaes de gravao,
onde a CPU coloca o dado no buffer para um dispositivo de sada manipular, como mostra a Figura 5.
Memria
Principal
CPU
g
l
buffer
g
l
Dispositivos
de E/S
g = gravao
l = leitura
Figura 5- Buffer
2.3 Spooling
A tcnica de spooling foi introduzida nos anos 50 com o processamento batch e hoje utilizada na
maioria dos sistemas operacionais. Naquela poca, os programas eram submetidos um a um para o
processamento, e como a velocidade de operao dos dispositivos de E/S, muito lenta, a CPU ficava
ociosa esperando o carregamento de um programa e dados para a memria, ou esperando pelo trmino de
uma impresso.
A soluo foi armazenar os vrios programas e seus dados, tambm chamados de jobs, em uma fita
magntica e, em seguida, submet-los a processamento. Dessa forma, a CPU poderia processar os jobs,
diminuindo o tempo de execuo dos jobs e o tempo de transio entre eles. Da mesma forma, em vez de
um job gravar suas sadas na impressora, poderia direcion-las para uma fita, que depois seria impressa
integralmente. Essa forma de processamento chamado de spooling, e mostrada na Figura 6.
Arquivo
de spool
Programa
Impresso
Sistema
Operacional
Figura 6- Spool
A tcnica de buffering permite que um job utilize um buffer concorrentemente com um dispositivo
de entrada e sada. O spooling, basicamente, utiliza o disco como um grande buffer, permitindo que dados
sejam lidos e gravados em disco, enquanto outros jobs so processados.
2.4 Interrupes
um sinal informando a um programa que um evento ocorreu. Quando um programa recebe um
sinal de interrupo, ele deve tomar uma ao. Existem muito tipos diferentes de sinais que podem
disparar uma interrupo, por exemplo, a concluso de uma oprao de I/O, diviso por zero, acesso
invlido memria e um pedido por algum servio do sistema operacional. Para cada interrupo, uma
rotina de servio designada para tratar a interrupo.
Quando a CPU interrompida, ela pra o que est fazendo e imediatamente transfere a execuo
para um local fixo. Esse local fixo geralmente contm o endereo de incio onde est localizada a rotina de
servio para a interrupo. Um diagrama de tempo dessa operao apresentada na Figura 7.
Para comear uma operao de I/O, como mostrada na Figura 7, a CPU carrega os registradores
adequados dentro da controladora de dispositivo. A controladora de dispositivo, por usa vez, examina o
contedo desses registradores para determinar que ao deve ser tomada. Por exemplo, se encontrar um
pedido de leitura, a controladora comear a transferir dados do dispositivo para o seu buffer local. Uma
vez concluda a transferncia, a controladora de dispositivo informa a CPU que terminou a operao. Essa
comunicao feita disparando uma interrupo.
8
Existem dois tipos de interrupes: a de hardware que um sinal originado em algum dispositivo
fsico; e a de software que um sinal originado por alguma aplicao.
2.4.1
Interrupo de hardware
O hardware da UCP (Unidade Central de Processamento) possui uma linha chamada linha de
solicitao de interrupo que a UCP verifica depois de executar cada instruo. Quando a UCP detecta
que uma controladora emitiu um sinal na linha de solicitao de interrupo, a UCP salva uma pequena
quantidade de informaes de estado, como o valor atual do ponteiro de instrues, e passa para a rotina
de tratamento de interrupo em um endereo fsico na memria. A rotina de tratamento de interrupo
determina a causa da interrupo, realiza o processamento necessrio e executa uma instruo return from
interrupt para retornar a UCP ao estado de execuo antes da interrupo. A Figura 9 resume o ciclo de
I/O baseado em interrupes de hardware.
Interrupes de hardware podem ser originadas pelos vrios dispositivos perifricos (discos,
impressora, teclado e outros) ou pelo relgio. O relgio um dispositivo que decrementa automaticamente
o contedo de um registrador, com uma freqncia constante, e interrompe a UCP quando o valor do
registrador atinge zero. Os computadores possuem instrues especiais para desabilitar (mascarar, inibir) o
sistema de interrupo. Enquanto as interrupes esto desabilitadas elas podem ocorrer, mas no so
atendidas pelo processador. Nesse caso, elas ficam pendentes (enfileiradas) e s voltam serem atendidas
quando a UCP executa uma instruo especial que habilita (desmascara, desinibe) as mesmas.
Controladora de I/O
Inicia I/O
4
UCP recebe interrupo,
transfere o controle para a
rotina de tratamento de
interrupo
Gera sinal de
interrupo
5
A rotina de tratamento de
interrupo processa dados,
retorno da interrupo
6
A UCP retorna o
processamento da tarefa
interrompida
Figura 9 Ciclo de E/S baseado em interrupes
2.4.2
Interrupo de software
Uma interrupo de software um sinal gerado por uma instruo especial (portanto, por software)
denominada trap, system call ou supervisor call. Quando uma instruo desse tipo executada pela UCP,
o computador desencadeia as mesmas aes desencadeadas por uma interrupo de hardware, isto , o
programa em execuo suspenso, informaes so salva a rotina especfica do SO executada.
Os traps so necessrios principalmente nos computadores que possuem instrues protegidas
(privilegiadas). Nesses computadores o registrador (palavra) de estado do processador possui um bit para
indicar se a UCP est em estado privilegiado (estado de sistema, estado de supervisor, estado mestre) ou
no privilegiado (estado de usurio, estado de programa, estado escravo). Sempre que ocorre uma
interrupo ou trap, o novo valor carregado no registrador do estado do processador, indica estado
privilegiado de execuo. No estado de supervisor qualquer instruo pode ser executada e no estado de
usurio apenas as instrues no protegidas podem ser executadas. Exemplos de instrues protegidas so
instrues para desabilitar e habilitar interrupes e instrues para realizar operaes de E/S. Operaes
que envolvam o uso de instrues protegidas s podem ser executadas pelo sistema operacional, portanto.
Quando um programa de usurio necessita executar alguma dessas operaes, o mesmo deve executar um
trap, passando como argumento o nmero que identifica a operao que est sendo requerida.
A diferena fundamental dos traps para as interrupes de hardware que eles so eventos
previsveis. Isto , dado um programa e seus dados, possvel determinar os pontos em que os traps iro
ocorrer. Por outro lado, as interrupes de hardware so geradas por dispositivos perifricos em pontos
imprevisveis. As interrupes de software tm prioridade baixa quando comparadas com as de hardware,
10
CPU
Dispositivo E/S
Instrues de E/S
Utilizado para dispositivos de E/S de alta velocidade capazes de transmitir informao com
velocidades prximas da memria;
O controlador do dispositivo transfere blocos de dados do buffer diretamente para a memria
principal sem a interveno da CPU;
Somente uma interrupo gerada por bloco, ao contrrio de uma interrupo por byte.
11
A seguir sero definidos os principais parmetros para anlise das caractersticas de cada tipo de
memria componente da hierarquia apresentada na Figura 11. O valor maior (base) ou menor (pico) de
algum parmetro foi a causa da utilizao de uma pirmide para representar a hierarquia do sistema de
memria de um computador.
Tempo de acesso - indica quanto tempo a memria gasta para colocar uma informao no
barramento de dados aps uma determinada posio ter sido endereada. Isto , o perodo de tempo
decorrido desde o instante em que foi iniciada a operao de acesso (quando a origem - em geral a CPU
- passa o endereo de acesso para o sistema de memria) at que a informao requerida (instruo ou
dado) tenha sido efetivamente transferida. um dos parmetros que pode medir o desempenho da
memria. Pode ser chamado de tempo de acesso para leitura ou simplesmente tempo de leitura.
Capacidade - a quantidade de informao que pode ser armazenada em uma memria; a unidade
de medida mais comum o byte, embora tambm possam ser usadas outras unidades como clulas (no
caso de memria principal ou cache), setores (no caso de discos) e bits (no caso de registradores).
Dependendo do tamanho da memria, isto , de sua capacidade, indica-se o valor numrico total de
elementos de forma simplificada, atravs da incluso de K (kilo), M (mega), G (giga) ou T (tera).
Volatilidade - memrias podem ser do tipo voltil ou no voltil. Uma memria no voltil a que
retm a informao armazenada quando a energia eltrica desligada. Memria voltil aquela que perde
a informao armazenada quando a energia eltrica desaparece (interrupo de alimentao eltrica ou
desligamento da chave ON/OFF do equipamento).
Custo - o custo de fabricao de uma memria bastante variado em funo de diversos fatores,
entre os quais se pode mencionar principalmente a tecnologia de fabricao, que redunda em maior ou
menor tempo de acesso, ciclo de memria, quantidade de bits em certo espao fsico e outros. Uma boa
unidade de medida de custo o preo por byte armazenado, em vez do custo total da memria em si. Isso
porque, devido s diferentes capacidades, seria irreal considerar, para comparao, o custo pelo preo da
memria em si, naturalmente diferente, e no da unidade de armazenamento (o byte), igual para todos os
tipos.
12
O compartilhamento de recursos de sistema requer que o sistema operacional garanta que um programa
incorreto no possa causar danos execuo de outros programas. O hardware deve suportar a
diferenciao entre pelo menos dois modos de operao:
1) Modo usurio: quando a execuo est sendo feita em nome de um usurio;
2) Modo monitor (privilegiado): tambm conhecido como modo supervisor ou modo de sistema;
ativado quando da execuo do prprio sistema operacional.
O hardware utiliza um bit (mode bit) que indica qual o modo corrente: monitor (0) ou usurio (1).
Quando uma interrupo ou falha ocorre o hardware passa para o modo monitor.
set user mode
Moni
tor
User
Interrupo / falha
As instrues privilegiadas podem ser executadas somente no modo monitor. Dessa forma se
garante que somente o sistema operacional pode execut-las; ou seja, um usurio no poder alterar o
sistema operacional acidentalmente ou propositalmente.
2.7.2
Operao de E/S
Proteo de Memria
Deve-se ter proteo de memria pelo menos para o vetor de interrupes e as rotinas de
tratamento de interrupes. A fim de que se tenha proteo de memria, deve-se ter dois registradores
extras que determinam os limites de espao de endereamento da memria que um programa pode
acessar:
base register: retm o menor endereo fsico legal de memria;
limit register: contm o tamanho do espao acessvel.
A memria fora da faixa estabelecida protegida.
13
Figura 13 - A memria
Quando est executando no modo monitor, o sistema operacional tem acesso irrestrito a todo o
espao de endereamento. As instrues de carga dos registradores base e limit so instrues
privilegiadas. O hardware de proteo atua conforme apresentado na Figura 14:
2.8 Exerccios
1.Qual a funo dos controladores de dispositivos? Por que eles possuem um buffer local?
2.O que uma interrupo?
3.Explique o grfico abaixo (Linha do Tempo de uma Interrupo para um nico Processo Gerando
Sadas)4.Um programa de usurio pode alterar a rotina de tratamento de uma interrupo?
14
5.O grfico abaixo apresenta interrupes de I/O sncrona/assncrona, em quais situaes utilizado
uma ou outra? Justifique sua resposta.
15
Gerncia de processos
Memria um grande array de bytes, cada um com o seu endereo. um depsito de acesso rpido de
dados compartilhado pela CPU e E/S. um dispositivo de armazenamento voltil. O SO responsvel pelas
seguintes atividades com relao a gerncia de memria:
Manter informaes de que partes da memria esto em uso e por quem.
Decidir que processos carregar quando espaos de memria esto disponveis.
Alocar e liberar espao de memria quando necessrio.
3.1.3
Gerncia de arquivos
Um arquivo uma coleo de informaes relacionadas definidas pelo seu criador. Arquivos
representam programas e dados. O SO responsvel pelas seguintes atividades com relao a gerncia de
arquivos:
Criao e deleo de arquivo.
Criao e deleo de diretrio.
Suporte de primitivas para manipular arquivos e diretrios.
Mapeamento de arquivos na memria secundria.
Backup de arquivos em meios de armazenagem estveis (no voltil).
3.1.4
16
Memria principal voltil e pequena, sistema deve fornecer memria secundria para funcionar como
backup da principal. Maioria dos sistemas modernos usam discos. O SO responsvel pelas seguintes
atividades com relao a gerncia de disco:
Gerncia de espao livre
Alocao de memria
Escalonamento de disco
3.1.6
Proteo de sistema
Interpretador de comandos
Sistemas Monolticos
Neste tipo de estrutura (Figura 15), o Sistema Operacional 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.
17
Figura 16- Gerao de Cdigo Executvel de um SO Monoltico. As caixas com borda mais grossa indicam
ferramentas do ambiente de desenvolvimento.
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 17.
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
seqenciais 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 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.2.3
Sistemas Cliente-Servidor
Observe na Figura 17 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 conseqncia, 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 conseqncias
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 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 19 mostra esta situao.
20
3.4 Exerccios
1.Quais so os componentes de um SO ?
2.Qual a responsabilidade do SO em relao Gerncia de Processos ?
3.O que um processo ?
4.Qual a responsabilidade do SO em relao Gerncia de Memria ?
5.Qual a responsabilidade do SO em relao Gerncia de Arquivos ?
6.Qual a responsabilidade do SO em relao Gerncia de I/O ?
7.Qual a responsabilidade do componente de Proteo de Sistema ?
8.Se ocorrer uma diviso por zero, o que ocorre ? quem trata o erro ?
9.Qual a vantagem/desvantagem de desenvolver um SO na linguagem C ?
10.Qual a vantagem/desvantagem de desenvolver um SO na linguagem Assembly ?
11. Compare as abordagens em camadas e microkernel no projeto do SO?
21
4 PROCESSOS
Fazendo uma retrospectiva das ltimas dcadas do mercado de computao de alto desempenho,
High Performance Computing (HPC), verifica-se que o fator mais constante foi a evoluo. Este mercado
tem sido marcado pela rpida mudana de fornecedores, arquiteturas, tecnologias e aplicaes. Apesar
desta instabilidade, a evoluo do desempenho em larga escala tem-se mostrado um processo contnuo e
constante. A convergncia de desempenho entre os microcomputadores e os supercomputadores com um
s processador motivou o aparecimento do processamento paralelo, que vem ultrapassar alguns limites do
uniprocessamento, reduzir alguns custos (podem construir-se supercomputadores recorrendo a um
conjunto de processadores normais), e tambm para facilitar a expansibilidade de um computador
(bastando para isso adicionar mais processadores).
4.1 Fundamentos
O conceito de processo , certamente, o conceito mais importante no estudo de sistemas
operacionais. Para facilitar o entendimento deste conceito, considere-se um computador funcionando em
multiprogramao (isto , tendo vrios programas simultaneamente ativos na memria). Cada programa
em execuo corresponde a um procedimento (seqncia de instrues) e um conjunto de dados (variveis
utilizadas pelo programa). conveniente ter as instrues separadas dos dados, pois isso possibilita o
compartilhamento do cdigo do procedimento por vrios programas em execuo (neste caso diz-se que o
procedimento e reentrante ou puro). Se cada programa em execuo possui uma pilha prpria, ento os
dados podem ser criados (alocados) na prpria pilha do programa.
Alm das instrues e dados, cada programa em execuo possui uma rea de memria
correspondente para armazenar os valores dos registradores da UCP, quando o programa, por algum
motivo, no estiver sendo executado. Essa rea de memria conhecida como bloco de controle de
processo -BCP (ou bloco descritor, bloco de contexto, registro de estado, vetor de estado) e, alm dos
valores dos registradores da UCP, contm outras informaes. A Figura 20 mostra um BCP. Ele contm
muitas informaes associadas a um processo especfico:
Estado do processo: o estado pode ser pronto, execuo ou bloqueado (espera).
Contador do programa: o contador indica o endereo da prxima instruo a ser executada para
esse processo.
Registradores de UCP: os registradores variam em nmero e tipo, dependendo da arquitetura do
computador. Incluem acumuladores, registradores, ponteiros de pilha e registradores de uso geral,
alm de informaes de cdigo de condio. Juntamente com o contador do programa, essas
informaes de estado devem ser salvas quando ocorre uma interrupo, para permitir que o
processo continue corretamente depois.
Informaes de escalonamento de UCP: essas informaes incluem prioridade de processo,
ponteiros para filas de escalonamento e quaisquer outros parmetros de escalonamento
Informaes de gerncia de memria: essas informaes podem incluir dados como o valor dos
registradores de base e limite, as tabelas de pginas ou tabelas de segmentos, dependendo do
sistema de memria usado pelo sistemas operacional
Informaes de contabilizao: essas informaes incluem a quantidade de UCP e tempo real
usados, limites de tempo, nmeros de contas, nmeros de jobs ou processos, etc.
Informaes de status de E/S: as informaes incluem a lista de dispositivos de E/S alocados para
este processo, uma lista de arquivos abertos e outras informaes.
22
estado do
processo
Nmero do processo
Contador de programa
registradores
limites de memria
limites de arquivos abertos
...
Figura 20 Bloco de controle de processo (BCP)
Cada programa em execuo constitui um processo. Portanto, pode-se definir processo como sendo
um programa em execuo, o qual constitudo por uma seqncia de instrues, um conjunto de dados e
um bloco de controle de processo.
Num ambiente de multiprogramao, quando existe apenas um processador na instalao, cada
processo executado um pouco de cada vez, de forma intercalada. O sistema operacional aloca a UCP um
pouco para cada processo, em uma ordem que no previsvel, em geral, pois depende de fatores externos
aos processos, que variam no tempo (carga do sistema, por exemplo). Um processo aps receber a UCP,
s perde o controle da execuo quando ocorre uma interrupo ou quando ele executa um trap,
requerendo algum servio do sistema operacional.
As interrupes so transparentes aos processos, pois o efeito das mesmas apenas parar,
temporariamente, a execuo de um processo, o qual continuar sendo executado, mais tarde, como se
nada tivesse acontecido. Um trap, por outro lado, completamente diferente, pois bloqueia o processo at
que o servio requerido pelo mesmo, ao sistema operacional, seja realizado.
Deve ser observado que um processo uma entidade completamente definida por si s, cujas
operaes (instrues executadas) se desenvolvem no tempo, em uma ordem que funo exclusiva dos
valores iniciais de suas variveis e dos dados lidos durante a execuo.
Em um sistema com multiprocessamento (com mais de uma UCP), a nica diferena em relao ao
ambiente monoprocessado que o sistema operacional passa a dispor de mais processadores para alocar
os processos, e neste caso tem-se realmente a execuo simultnea de vrios processos.
Um sistema monoprocessado executando de forma intercalada N processos pode ser visto como se
possusse N processadores virtuais, um para cada processo em execuo. Cada processador virtual teria
1/N da velocidade do processador real (desprezando-se o overhead existente na implementao da
multiprogramao). O overhead de um sistema operacional o tempo que o mesmo perde na execuo de
suas prprias funes, como por exemplo o tempo perdido para fazer a multiplexao da UCP entre os
processos. o tempo durante o qual o sistema no est produzindo trabalho til para qualquer usurio.
Quando a UCP altera a execuo para outro processo, o sistema salva o estado do processo antigo e
carregar o estado salvo do novo processo (Troca de contexto). A Figura 21 exemplifica a troca de
contexto.
23
Processo A
executando
Salva Processo A
Carrega Processo B
executando
Salva Processo B
Carrega Processo A
executando
Tanto no paralelismo fsico (real, com vrias UCP) como no lgico (virtual, uma UCP
compartilhada), as velocidades relativas com que os processos acessaro dados compartilhados no podem
ser previstas.
Quando os processos so denominados paralelos quando eles realmente (de maneira fsica) so
executados simultaneamente e so denominados concorrentes quando so disputam para serem executados
no mesmo perodo de tempo em uma UCP. De acordo com o tipo de interao existente entre eles, podem
ser classificados como disjuntos (no interativos), quando operam sobre conjuntos distintos de dados, ou
interativos, quando tm acesso a dados comuns. Processos interativos podem ser competitivos, se
competirem por recursos, e/ou cooperantes, se trocarem informaes entre si.
No caso de computaes realizadas por processos interativos, como a ordem das operaes sobre as
variveis compartilhadas pode variar no tempo (pois as velocidades relativas dos processos dependem de
fatores externos que variam no tempo), o resultado da computao pode no depender somente dos
valores iniciais das variveis e dos dados de entrada. Quando o resultado de uma computao varia de
acordo com as velocidades relativas dos processos diz-se que existe uma condio de corrida (race
condition). necessrio evitar condies de corrida para garantir que o resultado de uma computao no
varie entre uma execuo e outra. Condies de corrida resultam em computaes paralelas errneas, pois
cada vez que o programa for executado (com os mesmos dados) resultados diferentes podero ser obtidos.
A programao de computaes paralelas exige mecanismos de sincronizao entre processos, e por isso a
sua programao e depurao so bem mais difceis do que em programas tradicionais.
A maioria das linguagens de programao existentes no permite a programao de computaes
paralelas, pois cada programa gera um nico processo durante a sua execuo. Tais linguagens so
denominadas seqenciais. Linguagens que permitem a construo de programas que originam vrios
processos para serem executados em paralelo so denominadas linguagens de programao
concorrente. Exemplos deste tipo de linguagem so: Pascal Concorrente, Modula 2, Ada, Java e algumas
extenses de linguagem C.
A programao concorrente, alm de ser essencial ao projeto de sistemas operacionais, tambm tem
aplicaes na construo de diversos outros tipos de sistema importantes. Qualquer sistema que deva
atender a requisies de servio que possam ocorrer de forma imprevisvel pode ser organizado,
convenientemente, para permitir que cada tipo de servio seja realizado por um dos processos do sistema.
Dessa maneira, diversos servios podero ser executados simultaneamente e a utilizao dos recursos
computacionais ser, certamente, mais econmica e eficiente. Exemplos de aplicaes deste tipo so
sistemas para controle on-line de informaes (contas bancrias, estoques, etc) e controle de processos
externos (processos industriais, processos qumicos, rotas de foguetes, etc).
Os processos durante suas execues requerem operaes de E/S que so executadas em dispositivos
24
trap
escalonador
interrupo
pronto
bloqueado
interrupo
(concluso do servio)
O componente do sistema operacional que, aps o atendimento de uma interrupo ou trap, escolhe
o prximo processo a ser executado denominado escalonador de processos (scheduler) ou despachador
de processos (dispatcher).
Em geral, um trap faz com que o processo fique bloqueado. Entretanto, em algumas ocasies
especiais, quando o sistema operacional pode atender imediatamente a requisio de servio, o processo
pode ser novamente despachado, no ocorrendo o bloqueio.
Quando um job admitido no sistema, um processo correspondente criado e normalmente inserido
25
26
27
Talvez a disciplina de escalonamento mais simples que exista seja a First-In-First-Out - FIFO (o
primeiro a entrar o primeiro a sair). Vrios autores referem-se a este algoritmo como FCFS - FirstCome-First-Served (o primeiro a chegar o primeiro a ser servido). Processos so escalonados de acordo
com sua ordem de chegada na fila de processos prontos do sistema. Uma vez que um processo ganhe a
UCP, ele roda at terminar. FIFO uma abordagem no preemptiva. Ela justa no sentido de que todos os
jobs so executados, e na ordem de chegada, mas injusta no sentido que grandes jobs podem fazer
pequenos jobs esperarem, e jobs sem grande importncia fazem jobs importantes esperar. FIFO oferece
uma menor varincia nos tempos de resposta e portanto mais previsvel do que outros esquemas. Ele no
til no escalonamento de usurios interativos porque no pode garantir bons tempos de resposta. Sua
natureza essencialmente a de um sistema batch.
4.3.2
Um dos mais antigos, simples, justos, e mais largamente utilizados dos algoritmos de escalonamento
o round robin. Cada processo recebe um intervalo de tempo, chamado quantum, durante o qual ele
pode executar. Se o processo ainda estiver executando ao final do quantum, a UCP dada a outro
processo. Se um processo bloqueou ou terminou antes do final do quantum, a troca de UCP para outro
processo obviamente feita assim que o processo bloqueia ou termina. Round Robin fcil de
implementar. Tudo que o escalonador tem a fazer manter uma lista de processos runnable (que desejam
executar), conforme a Figura 23(a). Quando o quantum de um processo acaba, ele colocado no final da
lista, conforme a Figura 23(b).
Processo
corrente
Processo
corrente
Prximo processo
D
(a)
Prximo processo
(b)
Assim, o algoritmo round robin semelhante ao FIFO, mas com a diferena de que preemptivo: os
processos no executam at o seu final, mas sim durante um certo tempo, um por vez. Executando
sucessivamente em intervalos de tempo o job acaba por terminar sua execuo em algum momento.
O nico aspecto interessante sobre o algoritmo round robin a durao do quantum. Mudar de um
processo para outro requer um certo tempo para a administrao salvar e carregar registradores e mapas
de memria, atualizar tabelas e listas do Sistema Operacional, etc. Suponha esta troca de contexto dure 5
ms. Suponha tambm que o quantum est ajustado em 20 ms. Com esses parmetros, aps fazer 20 ms de
trabalho til, a UCP ter que gastar 5 ms com troca de contexto. Assim, 20% do tempo de UCP gasto
com o overhead administrativo.
Para melhorar a eficincia da UCP, poderamos ajustar o quantum para digamos, 500 ms. Agora o
28
29
Quando um processo ganha a UCP, especialmente quando ele ainda no pde estabelecer um padro
de comportamento, o escalonador no tem idia da quantidade de tempo de UCP que ele precisa e que
precisar. Processos I/O bound geralmente usam a UCP brevemente antes de gerar em pedido de I/O.
Processos CPU bound poderiam utilizar a UCP por horas se ela estivesse disponvel para eles em um
ambiente no preemptivo.
Um mecanismo de escalonamento deveria:
favorecer pequenos jobs;
favorecer jobs I/O bounds para atingir uma boa utilizao dos dispositivos de E/S; e
determinar a natureza de um job to rpido quanto possvel e escalonar o job de acordo.
Filas multi-nvel com retorno (Multilevel feedback queues) fornecem uma estrutura que atinge esses
objetivos. O esquema ilustrado na Figura 24:
Nvel 1
(FIFO)
Usa a
CPU
Trmino
Usa a
CPU
Trmino
Usa a
CPU
Trmino
Preempo
Nvel 2
(FIFO)
Preempo
Nvel n
(round robin)
Preempo
Um novo processo entra na rede de filas ao final da fila do topo. Ele se move atravs desta fila
segundo uma poltica FIFO at que ganhe a UCP. Se o job termina ou desiste da UCP para esperar um
trmino de E/S ou outro evento, ele deixa a rede de filas. Se o quantum expira antes do processo
voluntariamente desistir da UCP, o processo colocado de volta no final da fila um nvel abaixo. O
processo avana nesta fila, e em algum momento atinge a cabea da fila. No momento em que no houver
processos na primeira fila, ele ganha a UCP novamente. Se ele ainda utiliza todo o quantum, ele vai
descendo para as filas de nveis inferiores. Normalmente, a fila de nvel mais baixo possui uma poltica
round robin para que todos os processos terminem de executar de uma maneira ou outra.
Em muitos sistemas de filas multi-nvel, o quantum dado ao processo conforme ele se move para as
filas de nveis inferiores aumentado. Assim, quanto mais um processo permanece no sistema de filas,
maior o seu quantum. Entretanto ele passa a no ganhar a UCP com tanta freqncia, porque as filas
superiores possuem prioridade maior. Um processo em uma dada fila no pode executar at que as filas
superiores estejam vazias. Um processo em execuo suspenso em favor de um processo que chegue em
30
31
4
4
B C D
B C D A
Mdia = 11 minutos
B = 4 minutos
C = 8 minutos
D = 12 minutos
A = 20 minutos
Mdia = 14 minutos
A = 8 minutos
B = 12 minutos
C = 16 minutos
D = 20 minutos
4.5
33
sincronizao
Consumidor
Produtor
dados
dados
Buffer
Figura 26 -Produtor x Consumidor
Agora, imaginem dois caixas diferentes atualizando o saldo de um mesmo cliente simultaneamente.
Caixa comando
saldo arquivo valor dep/ret
saldo memria
1
read
1.000
*
1.000
1
readln
1.000
-200
1.000
1
:=
1.000
-200
800
2
read
1.000
*
1.000
2
readln
1.000
300
1.000
2
:=
1.000
300
1.300
1
write
800
-200
800
2
write
1.300
300
1.300
4.5.1.1.2 Compartilhamento de uma varivel em memria
Suponha dois processos A e B estejam executando um comando de atribuio, onde o processo A
some 1 varivel X, e o processo B diminua 1 da mesma varivel que est sendo compartilhada.
Considere inicialmente X=2
Processo A
Processo B
34
x:= x-1
load x, r2
sub 1, r2
store r2, x
Comando
load x, r1
add 1, r1
load x, r2
sub 1, r2
store r1, x
store r2, x
x
2
2
2
2
r1
2
3
*
*
3
1
r2
*
*
2
1
3
*
*
1
Em qualquer situao, onde dois ou mais processos tenham acesso a um mesmo recurso
compartilhado, devam existir mecanismos de controle que evitem esses tipos de problemas. A parte do
programa onde necessria a excluso mtua, ou seja, onde o dado compartilhado acessado
denominada regio crtica. A excluso mtua consiste em impedir que dois ou mais processos acessem
algum dado compartilhado simultaneamente
4.5.2
Solues de hardware.
Antes das solues de software para o problema da excluso mtua serem examinadas, sero
apresentadas duas solues de hardware para o mesmo problema. As solues de hardware so
importantes porque criam mecanismos que permitem a implementao das solues de software.
A soluo mais simples para o problema da excluso mtua fazer com que o processo, antes de
entrar em sua regio crtica, desabilite todas as interrupes externas, e as reabilite aps deixar a regio
crtica. Como a mudana de contexto s pode ser realizada atravs de interrupes, o processo que as
desabilitou ter acesso exclusivo garantido.
BEGIN
Desabilita_Interrupes;
Regio_Crtica;
Habilita_Interrupes;
END;
Esse mecanismo inconveniente por vrios motivos. O maior deles acontece, quando o processo
que desabilitou as interrupes no torna a habilit-las. Nesse caso, o sistema provavelmente ter seu
funcionamento seriamente comprometido. No entanto, pode ser til ao sistema operacional, quando ele
necessita manipular estruturas de dados compartilhadas do sistema, como listas de processos. Dessa
forma, o sistema garante que no ocorrero problemas de inconsistncia em seus dados.
Uma outra opo, a existncia de uma instruo especial, que permite ler uma varivel,
armazenar seu contedo em uma outra rea e atribuir um novo valor a essa varivel. Esse tipo de instruo
chamada test-and-set, e caracterizada pela execuo sem interrupo, ou seja, uma instruo
indivisvel ou atmica. Assim, no existe a possibilidade de dois processos estarem manipulando uma
varivel compartilhada ao mesmo tempo, possibilitando a implementao da excluso mtua.
Na execuo da instruo test-and-set o valor lgico da varivel Y copiado para X, e atribudo
para varivel Y o valor lgico true (verdadeiro). Para coordenar o acesso concorrente a um recurso, esta
instruo utiliza uma varivel lgica global denominada Bloqueio. Quando a varivel Bloqueio for false
(falsa), qualquer processo pode alterar seu valor para verdadeiro, atravs da instruo test-and-set e assim,
acessar ao recurso de forma exclusiva. Ao terminar o acesso, o processo deve simplesmente retornar o
valor da varivel para falso, liberando o acesso ao recurso.
Program Programa_Test_and_set;
Var Bloqueio: Boolean;
Procedure Processo_A;
35
Begin
Bloqueio:= False;
Cobegin
Processo_A;
Processo_B
Coend;
End.
Solues de software
37
38
4.5.3.2 Monitores
So mecanismos de sincronizao compostos de um conjunto de procedimentos, variveis e
estrutura de dados definidos dentro de um mdulo cuja finalidade a implementao automtica da
excluso mtua entre seus procedimentos. Somente um processo pode estar executando um dos
procedimentos do monitor em um determinado instante. Toda vez que um processo chamar um destes
procedimentos, o monitor verifica se j existe outro processo executando algum procedimento do monitor.
Caso exista, o processo fica aguardando a sua vez at que tenha permisso para execut-lo.
A implementao da excluso mtua nos monitores realizada pelo compilador do programa e no
mais pelo programador. Para isto ele ir colocar todas as regies crticas do programa em forma de
procedimentos no monitor e o compilador se encarregar de garantir a excluso mtua destes
procedimentos. A comunicao do processo com o monitor passa a ser feita atravs de chamadas a seus
procedimentos e dos parmetros passados para eles.
Outra caracterstica do monitor que os processos, quando no puderem acessar estes
procedimentos, ficaro aguardando em uma fila de espera e enquanto isto, eles podero executar outros
procedimentos. Como mostrado no cdigo a seguir o monitor no pode ser executado como uma
subrotina comum. A comunicao do processo com o monitor feita unicamente atravs de chamadas aos
seus procedimentos e dos parmetros passados para eles. Neste exemplo, a inicializao da varivel
compartilhada X com o valor zero s acontecer uma vez (no momento da primeira ativao do monitor
Regio_Crtica). O valor final de X ser 0.
PROGRAM Exemplo;
MONITOR Regio_Crtica;
VAR X: INTEGER;
PROCEDURE Soma;
BEGIN
X:=X+1;
END;
PROCEDURE Diminui;
BEGIN
X:=X-1;
39
program Produtor_Consumidor;
procedure Produtor;
var Msg: Tipo_Msg;
begin
repeat
:
Produz_Mensagem(Msg);
send(Msg);
until false;
end;
procedure Consumidor;
var Msg: Tipo_Msg;
begin
repeat
receive(Msg);
Consome_Mensagem(Msg);
:
until false;
end;
Cobegin
Produtor;
40
4.5.4
Um processo est em deadlock quando ele est suspenso espera de uma condio que jamais ir
acontecer. Por exemplo: Espera circular (Figura 27)
solicitao
Processo A
alocao
Recurso 1
Recurso 2
alocao
Processo B solicitao
Figura 27 -Deadlock
4.5.5
Problemas clssicos
41
42
5 GERENCIA DE MEMRIA
A organizao e o gerenciamento da memria real (tambm denominada principal, memria fsica ou
memria primria) de um sistema de computador tem sido a principal influncia sobre o projeto de
sistemas operacionais. Armazenamento secundrio mais comumente disco e fita fornece
capacidade macia e barata para a grande quantidade de programas e dados que devem ser mantidos
prontamente disponveis pra o processamento, porm lento e no diretamente acessvel por
processadores. Para que sema executados e referenciados diretamente, programas e dados devem estar
na memria principal.
Memria:
- principal: voltil, pouca capacidade e muito rpida
- secundria: permanente, muita capacidade e lenta
Principal funo: armazenar programas para a execuo.
- o arquivo que est na memria secundria deve ser carregado para a memria principal para ser
executado pelo processador.
Arquivo = programa
+
dados
: :
programa
dados
: :
instruces
variveis
43
MP
2k
3k
cadastro
SO
mdulo
principal
4k
rea de
overlay
1k
rea livre
4k
impresso
2k
rea livre 2k
Pergunta: Em um sistema monoprogramado, dispondo de uma memria fsica de 10k, como pode ser
executado um programa de 20k? Explique o mtodo.
- somente se for utilizado tcnica de overlay, de forma que o mdulo principal mais o
maior mdulo de overlay no devem ultrapassar 10k de memria.
44
E
4k
5k
8k
tabela de ocupao
Part
1
2
3
Tam Ocp
2k N
5k S
8k N
2 -------3
reg. incio
MP
SO
reg. final
- tanto a alocao absoluta quanto a relocvel: os programas no preenchiam todos os espaos das
parties -> reas livres inutilizadas -> "fragmentao"
Ex:
MP
SO
C
1k livre
6k livres
A
B
E
3k livre
sem poder
4k
4k
de
D
utilizao
2k livre
45
Pergunta: De que forma uma memria pode ficar totalmente preenchida (sem fragmentao) por
processos, utilizando o mtodo de Alocao Particionada Esttica?
- Somente se por coincidncia, os programas preencherem a memria.
5.2.2
MP
SO
A F C
2k 3K 1k
B
4k
SO
B
C
F
A
11k
1k livre
C
3k livre
A
1k livre
MP
SO
SO
4k
C
A
1k
3k
2k
1k
8k livre
A
2k
1k livre
46
MP
SO
SO
C
A
4k
C
A
1k
3k
2k
1k
1k
2k
8k livre
47
Best-fit
4k
I
G
1k
MP
SO
SO
3k
3k
G
1k
4k
I
Worst-fit
H
G
I
2k
3k
2k
SO
G
First-fit
2k
H
4k
I
2k
Tabela de
Parties
SO
(Deadline)
0K
LIVRE
(Tamanho)
100K
time-slice = 5"
escalonamento a longo prazo = FIFO
estratgia p/ escolha da partio = worst-fit
escalonamento a curto prazo = round-robin
reduo da fragmentao = unio das parties adjacentes
obs: considere apenas o tempo de processamento
5.3 Swapping
-> Tcnica para resolver o problema da insuficincia de memria
48
memria
secundria
Quando o programa tiver que ser executado novamente, ento ele novamente carregado para a
memria principal (swapp in). Esta operao pode at causar o "swapp out" de um outro programa.
memria principal
S.O
A
B
C
swapp
in
B
memria
secundria
Problema: A relocao (feito pelo loader) no swapp in torna o sistema ineficiente quando existe uma
troca intensa de programas.
Soluo: Implementao via hardware para a relocao automtica em tempo de execuo
-> "relocao dinmica", atravs do registrador de relocao
49
0
1
2
:
Mem. Princ.
0
1
2
:
:
m
Espao de
Endere/
Real
:
n
Mem Secundria
Obs: Como os programas podem ser muito maiores que a memria fsica, somente parte deles devem
estar na memria fsica em um dado instante.
Obs: O usurio no se preocupa com o endereamento, pois para ele, como se a memria fosse contnua
e inacabvel. O SO + Compilador que se preocupam com o mapeamento.
Mapeamento: Nos sistemas atuais, a tarefa de traduo realizada por um hardware especfico
controlado pelo sistema operacional, de forma transparente para o usurio.
-> atravs de tabelas de mapeamento para cada processo.
A
EEV
tab
Mem. Princ.
::
: :
B
EEV
tab
EEV = Espao de
Endere/
Virtual
::
Controle: Registrador que indica a posio inicial da tabela relativa ao processo que ser executado.
Obs: As tabelas mapeiam blocos de informaes, ou seja, cada bloco da memria virtual possui um bloco
correspondentes na memria fsica.
blocos menores -> - tabelas maiores
- maior tempo de acesso ao disco
- proporciona um grau maior de multiprogramao
blocos maiores -> - tabelas menores
- menor tempo de acesso ao disco
- proporciona um grau menor de multiprogramao
- blocos de tamanhos iguais -> Paginao
- blocos de tamanhos diferentes -> Segmentao
5.4.1
Paginao
50
Mem. Princ.
"frame"
Pg. Real 0
Pg. Real 1
Tab. Pg.
Pg. Virt. 1
: : :
Pg. Virt. 2
Pg. Real r
: : :
Pg. Virt. v
Execuo de Programas: Quando o processador tentar executar uma determinada instruo do programa
do usurio (memria virtual), antes, ele dever consultar a tabela de pginas para saber se a pgina que
contm aquela instruo j est ou no na memria principal, e se estiver, em que posio real ela est. Se
no estiver (page fault), a pgina dever ser carregada para a memria principal.
Endereamento: O processador tenta sempre executar um endereo virtual. Este endereo virtual contm
duas partes: um nmero da pgina e um deslocamento dentro da pgina. O nmero da pgina serve para o
processador consultar a tabela de pginas para saber qual a pgina real (endereo do frame) que a
instruo desejada est. Ento o endereo real definitivo obtido concatenando o nmero da pgina real
(endereo do frame) com o deslocamento. Note que o deslocamento sempre o mesmo, tanto para pginas
virtuais como para pginas reais, j que os tamanhos destas so iguais.
Mem. Virt.
deslocamento
instruo a ser executada
end. virt.
NPV desl
Tab. Pags.
Mem. Princ.
EF
endereo
real
NPV = nmero da
pag. virtual
EF = end. do frame
: : :
EF
desl
desl
frame EF
51
pg 1
pg 0
pg 2
NPV desl
01010
pg 1
Tab. Pag.
pg 3
:
0
1
2
3
pg 2
100
pg 3
: : :
pag. real nro 4
pg 4
100 10
:
Exemplo genrico:
Usando um comprimento de pginas de 4 words e uma memria fsica de 32 words (8 pginas).
Obs: offset = deslocamento.
52
Mem. Virtual
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
0
pg 0
pg 0
4
pg 1
0
1
2
3
5
6
1
2
pg 2
i
j
k
l
m
n
o
p
pg 1
pg 2
12
pg 3
pg 3
16
pg 4
20
24
a
b
c
d
e
f
g
h
pg 5
pg 6
28
pg 7
Para localizar o endereo fsico onde se encontra a instruo "a", faz 5x4+0=20; "f" : 6X4+1=25 e
"d" : 5x4+3=23.
Alm da informao sobre a localizao da pgina virtual, uma entrada na tabela de pginas possui
um bit que indica se uma pgina est ou no na memria principal (bit de validade). Se o bit for 0, indica
que a pgina virtual no est na memria (page fault) e se for 1, indica que est.
Quanto a busca da pgina "faltante" no disco, existem 2 tcnicas de paginao:
- paginao por demanda: o sistema s busca a pgina quando ela for referenciada ( a tcnica
mais utilizada).
- paginao antecipada: o sistema tenta prev a utilizao da pgina e faz uma busca antecipada
(antes dela ser referenciada).
Fragmentao: Mesmo sendo em menor escala que as tcnicas anteriores vistas, ainda existe o problema
da fragmentao, que ocorre sempre na ltima pgina, pelo fato do programa no ocupar todas as pginas
por completo.
53
pg 0
program x;
var
pg 1
procedure A;
pg 2
end; { A }
pg 3
begin
pg 4
end.
fragmentao
Working Set: o conjunto de pginas que um processo referencia constantemente, e por isso, deve
permanecer na memria, na medida do possvel. Sempre que um processo referencia uma nova pgina, ela
entra no working set do processo.
O working set deve ter um limite mximo de pginas, assim, quando o sistema estiver com o seu
working set no limite e precisar acessar outra pgina (page in), alguma das pginas do working set deve
ser liberada (descartada) para permitir o carregamento da pgina nova.
Antes da pgina ser descartada, deve ser verificado se ela no foi alterada. Se foi, ela deve ser
atualizada (gravada) no disco (page out). Para isso, basta colocar um campo "bit de modificao" na tabela
de pginas, que indica se a pgina foi ou no modificada. Sempre que uma pgina for modificada, o SO
seta este bit com o valor 1.
Existem vrias tcnicas para selecionar a pgina que ser descartada:
1) Aleatria
2) FIFO: escolhe-se a pgina mais antiga do working set
3) LRU (Least-recently used): menos recentemente usada, ou seja, aquela que est a mais tempo
sem ser referenciada
4) NUR (Not used recently): no usada recentemente, ou seja, que no seja a ltima que foi
referenciada
5) LFU (Least frequently used): menos frequentemente usada, ou seja, menas vezes referenciada.
Pergunta: Na paginao, analisando a tabela de pginas, o que acontece se:
a) Se o working set de um processo for maior que a tabela de pginas?
- Haver sobra de pginas de memria, de modo que o processo no ter
necessidade de realizar paginao, pois todo o programa caber na memria.
b) Se o working set de um processo for menor que a tabela de pginas?
- Neste caso, haver necessariamente paginao, podendo at ser excessiva,
conforme o tamanho do working-set.
Pergunta: No mecanismo de Paginao, a memria fsica pode ficar fragmentada em diversas posies?
Explique?
- Sim, pois os programas dificilmente totalizam pginas completas, ficando sempre a ltima pgina
com fragmentao. Assim, sempre que as ltimas pginas dos cdigos dos programas estiverem na
memria, haver fragmentao.
5.4.2
Segmentao.
54
Mem. Virtual
program seg;
var A: array
C: record
procedure X;
end;
function y;
end;
begin
end.
Mem. Princ.
procedure X
programa
principal
funo Y;
array A
record C;
: :
O mecanismo de mapeamento semelhante ao da paginao. Os segmentos so mapeados por uma
tabela de mapeamento de segmentos TMS, e os endereos so compostos pelo nmero do segmento e um
deslocamento dentro do segmento.
Alm do endereo do segmento na memria fsica, cada entrada na tabela de segmentos possui
informaes sobre o tamanho do segmento, se ele est ou no na memria etc. O sistema mantm uma
lista de reas livres e ocupadas da memria.
Na segmentao, apenas os segmentos referenciados so transferidos da memria secundria para
a memria principal, e as tcnicas para a escolha da rea livre podem ser as mesmas da Alocao
Particionada Dinmica (best-fit, worst-fit ou first-fit).
Exemplo genrico:
O programa possui 5 segmentos (0-4). A tabela de segmentos possui uma entrada separada para
cada segmento, com a posio inicial (base) e o tamanho de cada segmento (limite).
Mem. Fsica
Tab. Segms
subrotina
stack
seg 0
sqrt
seg 1
seg 3
symbol
table
seg 4
main
program
seg 2
endereamento lgico
lim base
0 1000 1400
1 400 6300
2 400 4300
3 1100 3200
4 1000 4700
1400 seg 0
2400
3200 seg 3
4300 seg 2
4700 seg 4
5700
6300
seg 1
6700
Para localizar o endereo fsico onde se encontra a instruo nro 53 do seg 2: 4300+53=4353; a
instruo nmero 852 do segmento 3: 3200+852=4052.
5.4.3
Permite a diviso lgica dos programas em segmentos e, por sua vez, cada segmento dividido
fisicamente em pginas. Nesse sistema, um endereo formado pelo nmero do segmento, um nmero da
pgina dentro deste segmento e um deslocamento dentro dessa pgina. O nro do segmento aponta para
uma entrada na tabela de segmentos, que por sua vez aponta para uma tabela de pginas.
55
Seg. Virtual
end
virt
Tab. Seg.
etp
Mem. Fsica
ef
ns np desl
ns = nro do segm.
np = nro da pag.
desl = deslocamento
ef
desl
end. fsico
Thrashing: Excessiva transferncia de pginas e/ou segmentos entre a memria principal e a secundria.
Ocorre basicamente em 2 nveis: do processo e do sistema.
do processo:
- elevado nmero de "page faults"
- o programa fica mais tempo esperando por pginas do que executando
- causa: - working set muito pequeno -> "aumentar"
- mal programao: no respeito da "localidade" -> "reescrever"
do sistema:
- mais processos concorrendo pela memria do que espao disponvel (atender todos os
processos) -> "expandir a memria"
Pergunta: Qual a relao do princpio da localidade e overhead no barramento?
- Se o programa no respeita o princpio da localidade, o sistema poder acusar muito page-fault e
efetuar muita paginao e consequentemente haver muito overhead.
5.5 Exerccios
1.
2.
3.
4.
5.
6.
7.
56
6 SISTEMAS DE ARQUIVOS
Discos
Os discos possuem um formato circular. Suas duas superfcies so cobertas com um material
magntico. Durante a formatao, cada superfcie dividida em trilhas e cada trilha dividida em setores
(tambm chamado de bloco do disco), onde so armazenadas as informaes. As informaes so lidas ou
escritas atravs de uma cabea de leitura/gravao.
Trilha
Setor
Furo para
acesso do
motor
Furo de ndice
Figura 29 - Disco
Um setor a menor unidade de informao que pode ser lida ou escrita no disco. Todas as
operaes de entrada e sada no disco, so feitas em uma certa quantidade de setores (isto pode gerar
fragmentao, se o setor no for totalmente preenchido).
O hardware para um sistema de disco basicamente gerenciado pelo controlador de disco, que
determina a interao lgica com o computador. O controlador traduz instrues enviadas pela CPU, em
um conjunto de sinais que sero utilizados para o controle do disco. O controlador de disco ativado pela
CPU atravs de seus registradores de entrada e sada.
O sistema operacional implementa vrias camadas de software, para que seja facilitada a gerncia
dos discos. As camadas de mais baixo nvel, tentam esconder as caractersticas do hardware dos
dispositivos (so camadas vinculadas ao dispositivo) das camadas mais superiores, dando maior
portabilidade para estas, permitindo ao sistema operacional trabalhar de forma independente do hardware.
Processo
Solicitao de E/S
Resposta de E/S
Rotinas de E/S
Disk Driver
Rotina de Interrupo
Controlador
do disco
DISCO
Figura 30 - Portabilidade
O usurio acessa o disco atravs das rotinas de E/S fornecidas pelo SO. Estas rotinas permitem ao
usurio realizar operaes sobre os discos, sem se preocupar com detalhes tais como: como o disco est
formatado, qual a trilha ou setor que o arquivo ser gravado, etc.. Estas rotinas tambm so as
responsveis pelo controle de permisses do usurio.
57
Arq2
Arq8
20
34
25
10
60
25
Arq1
50
10
60
blocos
de dados
Figura 31 - Diretrios
Para facilitar a manipulao dos arquivos no disco pelo usurio, o Sistema de Arquivos fornece
uma estruturao o diretrio da forma mais conveniente. Esta estruturao dever fornece mecanismos
para a organizao de muitos arquivos, que podem estar armazenados fisicamente em diferentes discos. O
usurio s se preocupa com o diretrio lgico e ignora os problemas da alocao fsica.
Existem muitas estruturas propostas para diretrios, mas os tipos principais so: Diretrio de Nvel
Simples, Diretrio de Dois Nveis, Diretrio em rvores e Diretrio em Grafos Acclicos.
6.1.1.1.1 Diretrio de Nvel Simples
58
Arquivos
Figura 32 - Nvel simples
Este tipo de estrutura possui limitaes significantes, quando o nmero de arquivos cresce ou
quando existe mais do que um usurio, como por exemplo: se todos os arquivos esto em um mesmo
diretrio, eles devem possuir nomes diferentes. Como controlar isto se houver mais que um usurio?
Mesmo com um nico usurio, se a quantidade de arquivos for grande, como controlar a utilizao sempre
de nomes diferentes para os arquivos?
6.1.1.1.2 Diretrio de Dois Nveis
Neste tipo de estrutura, cada usurio possui seu prprio diretrio de nvel simples, permitindo que
usurios diferentes possam ter arquivos com os mesmos nomes. Assim, o sistema possui um diretrio
mestre que indexa todos os diretrios de todos os usurios, como mostra a figura abaixo.
Diretrio
Mestre
Diretrios
dos
Usurios
Arquivos
Figura 33 - Dois nveis
59
raz
dos vacinas
pilha lista
norton pctools
pilha lista
scan cura
O sistema mantm um arquivo de usurios cadastrados, e para cada entrada neste arquivo existe
um nome do usurio e um ponteiro para o seu diretrio inicial. Cada usurio possui um diretrio corrente.
Quando feita uma referncia a um arquivo, o diretrio corrente pesquisado. Se o arquivo no est no
diretrio corrente, ento o usurio deve especificar o "caminho" (pathname) ou trocar o diretrio corrente.
6.1.1.1.4 Diretrios em Grafos Acclicos
Este tipo de estruturao permite o compartilhamento de arquivos e/ou diretrios por vrios
usurios, evitando a manipulao de vrias cpias do mesmo arquivo. Quando o arquivo compartilhado
por um usurio que possui o direito de acesso, todas as alteraes so efetuadas neste arquivo e
imediatamente se tornam visveis aos outros usurios.
bete lu
clipper
raz
alunos
bcc
pd
professor
din dema
gil ana
projeto
luiz ana
trab2
dina maria
turbo
Uma maneira usual para implementar este tipo de estrutura, utilizando um link, que funciona da
seguinte forma: quando se deseja ter acesso a um arquivo (ou diretrio) atravs de um diretrio, adicionase uma entrada neste diretrio com o nome do arquivo (ou diretrio) desejado e marca-o como sendo do
tipo link. Em compensao, adiciona-se nesta entrada o pathname definitivo do arquivo.
Este tipo de estruturao apresenta uma srie de incovenientes, entre eles podemos destacar a
"deleo". Neste caso teremos que eliminar todos os links para este arquivo.
6.1.1.2 Gerenciamento de Espao Livre em Disco
Na criao do arquivo, necessrio que o sistema operacional tenha condies de verificar se cada
bloco do disco est livre ou ocupado. Torna-se necessrio, portanto, que sejam mantidas estruturas de
60
head
0 1 2 3
4 5 6 7
8 9 10 11
: : :
61
head
: : :
2030
20
tamanho da sequencia
incio da sequencia
Pergunta: Na figura acima, como poderia ser atualizada a tabela, se o SO alocasse 2 setores da segunda
sequncia?
- O primeiro campo (incio) seria incrementado de 2 e o segundo campo (quantidade) seria
decrementado de 2.
6.1.1.3 Alocao de Espao em Disco
Uma das preocupaes do sistema de arquivos, como alocar os espaos livres do disco para os
arquivos, de forma que o disco seja melhor utilizado e os arquivos possam ser acessados mais
rapidamente. Os principais mtodos de alocao de espao do disco so: alocao contgua, alocao
ligada e alocao indexada.
62
Disco
0
4
8
12
1
5
9
13
::
2
6
10
14
::
3
7
11
15
diretrio
arquivo incio tamanho
carta
2
3
tese
9
5
:
:
:
Disco
0
4
8
12
1
5
9
13
::
2
6
10
14
::
3
7
11
15
diretrio
arquivo incio fim
relato
2
11
:
:
:
Apesar de qualquer bloco poder ser utilizado na aloca, este mtodo apresenta 2 principais
desvantagens: o gasto de disco decorrente da necessidade de armazenamento dos ponteiros usados para
implementar a lista, e a necessidade de acesso sequencial as informaes armazenadas, que podem causar
vrios movimentos da cabea de leitura/gravao.
Este mtodo resolve o problema da fragmentao externa e o problema do crescimento do arquivo,
no existindo a necessidade de alocao prvia.
63
1 2 3
5 6 7
9 10 11
12 13 14
:: ::
diretrio
arquivo end. bloco ndice
carta
15
:
:
4
2
3
12
-1
-1
bloco de
ndices
Quando o arquivo criado, todos os ponteiros do bloco de ndice so inicializados com nil.
Quando o i-simo bloco escrito, um bloco removido do espao livre e seu endereo colocado na isima entrada do bloco de ndices do arquivo.
mesmo se o arquivo pequeno (1 ou 2 blocos), esta tcnica ir consumir um bloco de ndices, o
que na alocao ligada seria utilizado apenas 2 ponteiros. O objetivo ter um bloco de ndices to
pequeno quanto possvel, sempre levando em considerao que o tamanho do bloco de ndices limita o
tamanho do arquivo, assim, algumas tcnicas podem ser utilizadas:
1. ligar vrios blocos de ndices, de forma que a ltima posio do bloco de ndices contenha o
endereo de um outro bloco de ndices ou contenha o valor nil.
2. utilizar uma indexao de 2 nveis, usando um bloco de ndices para conter os endereos de
outros blocos de ndices, que por sua vez conteriam os endereos dos blocos de dados do arquivo. Isto
pode ser estendido para mais de 2 nveis.
3. usar um mtodo misto (utilizado no sistema UNIX), como por exemplo: o diretrio do disco
conteria para cada arquivo 15 ponteiros, que seriam utilizados da seguinte maneira:
- 12 apontariam diretamente para os blocos de dados do arquivo e seriam suficientes para
arquivos pequenos. Se o bloco = 4096, seriam suficientes para arquivos at 48K.
- 3 ponteiros seriam usados para apontar blocos indiretos, onde o primeiro apontaria para
um bloco indireto simples, o segundo apontaria para um bloco indireto duplo (ndice de 2 nveis) e o
terceiro apontaria para um bloco indireto triplo (ndice de 3 nveis).
6.1.1.4 Escalonamento do Disco
Para que o sistema operacional atenda uma solicitao de acesso ao disco por uma aplicao, ele
gasta um certo tempo. Este tempo equivalente a somatria do tempos gastos em 3 etapas:
1. Tempo de Seek: tempo gasto para locomover a cabea de leitura/gravao da trilha atual para a
trilha desejada.
2. Tempo de Latncia: tempo gasto para esperar que o disco rotacione at que o bloco desejado
esteja sob a cabea de leitura/gravao.
3. Tempo de Transferncia: tempo gasto para transferir os dados do bloco do disco para a memria
principal.
64
FCFS
640 trilhas
SSTF
236 trilhas
SCAN
208 trilhas
Figura 42 - varredura
6.2 Exerccios
1) Qual o motivo do SO ter um Sistema de Arquivos ?
2) Explique os mtodos de acesso a arquivos
3) Explique as formas de estruturar diretrios
4) Explique a proteo que o Sistemas de Arquivos devem oferecer
5) Qual o motivo do SO ter um Sistema de Arquivos ?
6) Explique os mtodos de acesso a arquivos
7) Explique as formas de estruturar diretrios
8) Explique a proteo que o Sistemas de Arquivos devem oferecer
9) Explique os algoritmos FCFS, SSTF, SCAN, C-SCAN
10) Qual a importncia do backup ? Como pode ser feito ? (dirio, mensal)
65
REFERNCIAS BIBLIOGRFICAS
MACHADO,F.B. & MAIA,L.P. Introduo arquitetura de Sistemas Operacionais. Rio de
Janeiro.Editora LTC- Livros Tcnicos e Cientficos.1992.
SILBERSCHATZ, A. & GALVIN, P. B. & GAGNE, G. Fundamentos de Sistemas Operacionais,
6 Edio, 2004, LTC.
TANENBAUM,A. S. Sistemas Operacionais Modernos. 2Edio. So Paulo. Prentice Hall.2003.
TOSCANI, S., OLIVEIRA, R., CARISSIMI, A. Sistemas Operacionais e Programao
Concorrente. Srie Didtica do II UFRGS. Ed. Sagra-Luzzato, 2003.
66