Você está na página 1de 759

Disciplina em geral

Sistemas Operacionais
Apresentao da disciplina Descrever os Sistemas Operacionais como gerenciadores de
recursos;

Descrever o funcionamento geral dos Sistemas Operacionais;

Prof. Douglas Castilho Relacionar o gerenciamento de recursos encontrados nos algoritmos


dos Sistemas Operacionais com outras reas da Cincia da
douglas.castilho@bcc.unifal-mg.edu.br Computao;

Dar capacidade ao aluno de identificar um problema que ocorre em


software, em funo do comportamento do Sistema Operacional que
o opera.

Ser ou no ser, eis a questo... Sistemas Operacionais

O que este curso definitivamente no trata: Introduo:


O que um sistema operacional;
Histria dos Sistemas Operacionais;
Aprendizado de S.O.s especficos; Conceitos de Sistema Operacional;
Exemplo: Chamadas de Sistema;
Comandos linux/unix; A estrutura do Sistema Operacional;
Onde fica a opo de alterar a resoluo de tela no Windows 3.11 ou no
Windows Seven.

Gerenciamento de Sistemas de Arquivos:


Configurao de servidores; Arquivos
Exemplo:
Diretrios
DNS;
Servidores HTTP;
Servidores de Banco de Dados;

Sistemas Operacionais Sistemas Operacionais


Gerenciamento de Memria:
Gerenciamento de Processos Gerncia Bsica;
Modelo de Processo; Troca de processos;
Comunicao Inter-Processo (CIP); Memria Virtual;
Problemas clssicos na CIP; Paginao.
Escalonamento de Processos.
Gerenciamento de Dispositivos:
Deadlocks: Princpios Bsicos de Hardware;
Acesso aos registradores dos perifricos;
Algoritmos para Eliminao de deadlocks;
Interao entre a CPU e os controladores de perifricos.
Deteco e recuperao
Alocao cuidadosa de recursos (evita o deadlock) Princpios Bsicos de Software;
Preveno Drivers de dispositivo;
E/S independente do dispositivo.

1
Bibliografia Atividade frequente
Bsica e Complementar

TANENBAUM, A. S., Sistemas Operacionais Leitura:


Modernos, 2. Edio, So Paulo: Prentice Hall,
2003. (ou verso nova)
Sempre, ao final de cada aula, ser(o) indicado(s) trecho(s) de
SILBERSCHATZ, A; GALVIN, P e GAGNE, G.; um ou mais livros para leitura;
Sistemas Operacionais. Conceitos e Aplicaes. Rio
de Janeiro: Editora Campus, 2000.
Esta leitura parte fundamental do aprendizado do aluno na
TANENBAUM, A. S.; WOODHULL, A.S.; disciplina.
Sistemas operacionais: projeto e implementao.
2a Ed. Porto Alegre: Ed. Bookman, 2000.
Aula Prtica:
Deitel Deitel Choffnes. Sistemas Operacionais. 3
edio. Editora Pearson Pratice Hall. 2005.
Trabalhos e exerccios prticos;

Avaliaes Onde me encontrar


3 Provas:
60% (20% cada);
Datas a serem definidas;
Sala K 206
3 Trabalhos Prticos:
33%;
Os trabalhos sero apresentados ao longo da disciplina; E-mail
Individuais;
douglas.castilho@bcc.unifal-mg.edu.br
1 Seminrio:
7%;
Apresentao em grupo;
Telefone
-----------------------------------------------------------------------------------------------
1 Prova Especial: (35) 3299 - 1393
20%;

1 Prova Final:
100%;

Leitura para prxima aula...

TANENBAUM, A. S., Sistemas Operacionais Modernos, 2. Edio,


So Paulo: Prentice Hall, 2003.

1.1 - O que um Sistema Operacional;


1.1.1 O sistema operacional como uma mquina estendida;
1.1.2 O sistema operacional como um gerenciador de recursos;

2
Sistemas Operacionais
O que o Sistema
Operacional

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.3
Contedo da Aula Passada

Plano de Ensino de SO 2012;

Contedo programtico da disciplina;

Avaliaes;

Leitura: Parte do Captulo 1 do livro texto (Sistemas


Operacionais Modernos)
Antes de comear a aula...
O computador moderno composto de...

Hardware

Software

Imaginem um computador sem software...

possvel?
Computadores sem software
Complexidade
do sistema em geral

Um computador moderno consiste em um ou mais processadores,


memria primria, memria secundria, impressoras, teclado,
monitor, interfaces de rede e outros dispositivos de entrada e sada.

Enfim, um sistema complexo.

Desenvolver programas que mantenham o controle de todos estes


componentes e os utilizem corretamente de maneira otimizada
extremamente difcil.
Sistemas Operacionais
Viso geral

um programa que atua como intermedirio entre o usurio e o


hardware de um computador;

O propsito principal do Sistema Operacional propiciar um


ambiente no qual o usurio possa executar programas de forma
conveniente e eficiente.

Compreender as razes por trs do desenvolvimento dos sistemas


operacionais nos d uma melhor compreenso das tarefas que eles
executam e como o fazem.
Sistemas Operacionais
Viso geral

O sistema operacional deve garantir a operao correta do sistema


de computao (gerenciador de recursos);

Para evitar que os programas de usurio interfiram na operao


correta do sistema, o hardware deve fornecer mecanismos
apropriados para garantir o comportamento adequado;

Para facilitar a programao, sistemas operacionais fornecem


servios aos programas e aos usurios destes programas;

Tais servios variam de S.O para S.O. Exploraremos ao longo da


disciplina classes comuns.
Sistemas Operacionais
Viso geral

O principal objetivo de um sistema operacional tornar


o uso do sistema de computao conveniente;
O que j uma constante entre os sistemas operacionais atuais.

Um objetivo secundrio tornar o uso do hardware


eficiente;

O que atualmente um desafio para alguns S.O.s que


privilegiam a satisfao do usurio final.

Ou melhor, o que usar o hardware de forma eficiente?


O que um Sistema Operacional?

Um sistema operacional um componente importante de


praticamente todo sistema de computao;

Um sistema de computao pode ser dividido em basicamente


quatro componentes principais:

O hardware;

O Sistema Operacional;

Os programas de usurio;

E os usurios.
Estrutura dos Computadores Modernos
segundo Abraham Silberschatz
Estrutura dos Computadores Modernos
segundo Andrew Tanenbaum

Sistema Reserva de Navegador da


bancrio passagem web Programas aplicativos
Interpretador de
Compiladores Editores
comando
Programas de sistema
Sistema Operacional

Linguagem de Mquina

Microarquitetura Hardware

Dispositivos fsicos
Estrutura dos Computadores Modernos
segundo Andrew Tanenbaum

Sistema Reserva de Navegador da


bancrio passagem web Programas aplicativos
Interpretador de
Compiladores Editores
comando
Programas de sistema
Sistema Operacional

Linguagem de Mquina

Microarquitetura Hardware

Dispositivos fsicos

Circuitos integrados;
Fios;
Fonte de Alimentao;
etc
Estrutura dos Computadores Modernos
segundo Andrew Tanenbaum

Sistema Reserva de Navegador da


bancrio passagem web Programas aplicativos
Interpretador de
Compiladores Editores
comando
Programas de sistema
Sistema Operacional

Linguagem de Mquina Aqui os dispositivos


fsicos so agrupados
Microarquitetura Hardware em unidades
funcionais
Dispositivos fsicos
Estrutura dos Computadores Modernos
segundo Andrew Tanenbaum

Sistema Reserva de Navegador da


bancrio passagem web Programas aplicativos
Interpretador de
Compiladores Editores
comando
Programas de sistema
Sistema Operacional

Linguagem de Mquina Possui em geral


de 50 a 300
Microarquitetura Hardware instrues.
Dispositivos fsicos
Extremamente
complexas!!!
Componentes do
Sistema Operacional
O hardware:

Basicamente, a maioria dos computadores


modernos so baseados na Arquitetura de von
Neumann.

A Arquitetura de von Neumann (de John von Neumann), uma


arquitetura de computador que se caracteriza pela possibilidade de uma
mquina digital armazenar seus programas no mesmo espao de
memria que os dados, podendo assim manipular tais programas.
Componentes do
Sistema Operacional
O hardware:

Detalhe interessante:

Os computadores modernos possuem o


mesmo poder computacional que
computadores da dcada de 50.

Conseguem resolver exatamente a mesma classe de problemas.

Existem problemas que definitivamente no podem ser resolvidos


por computadores na forma como os conhecemos;

Existe um grande esforo para propor arquiteturas mais


poderosas.
Mas... A teoria da computao ainda no conseguiu resolver este
problema...
Curiosidade

Equivalentes

Mquina de Turing
Definida na dcada
de 30
Curiosidade sobre nossas mquinas

Imagine que temos um sistema mdico que lida com vidas. E para isso,
queremos garantir que ele responder corretamente aos comandos dados
pelos enfermeiros e mdicos.

Problema: possvel verificar se o comando no programa mdico


pra (termina sua computao) com qualquer entrada de dados?

Ou seja: possvel garantir que o programa no vai entrar em loop


infinito?
Voltando...
Sistema Operacional
Podemos considerar o Sistema Operacional como um alocador de
recursos;

Exemplos de recursos:
CPU:
precisa definir o tempo que cada processo ocupar na CPU;
Precisa definir qual processo ocupar a CPU;
Memria:
Precisa definir quais processos ocuparo a memria primria/secundria;
Precisa definir o espao de endereamento de cada processo na memria;
Arquivos:
Precisa organizar e manter os arquivos em uma estrutura definida pelo
usurio;
Necessidade evidente!!!

Imagine, se...
cada programador tivesse de preocupar-se com o modo como as
unidades de disco funcionam e com todas as dzias de coisas que
poderiam dar errado ao ler um bloco de disco
(ex. discos flexveis);

cada programador tivesse de preocupar-se com todos os outros


processos que rodam simultaneamente no sistema operacional;

cada programador tivesse que se preocupar com o modelo do


processador utilizado.

seria provvel que muitos programas sequer pudessem ser


escritos!!!
Isolando o programador...

H muitos anos tornou-se bastante evidente a necessidade de


encontrar uma maneira de isolar os programadores da
complexidade do hardware.

A maneira com que isso se desenvolveu gradualmente foi colocar


uma camada de software por cima do hardware bsico para gerenciar
todas as partes dos sistema.

Conceito de mquina estendida...


Conceito
Eis ento que surge o conceito de mquina virtual em Cincia da
Computao...

Mas, o que uma mquina virtual???


O termo mquina virtual foi descrito na dcada de 1960 utilizando um termo de
sistema operacional: uma abstrao de software que enxerga um sistema fsico
(mquina real). Com o passar dos anos, o termo englobou um grande nmero de
abstraes por exemplo, Java Virtual Machine JVM que no virtualiza um
sistema real. wikipedia, 05/03/2009.

Os emuladores so mquinas virtuais que simulam computadores


reais.
Sistemas Operacionais

Resumindo:

Sistemas operacionais so mquinas virtuais, que servem de


interface para os programadores.

Ou seja, programar com o artefato disponvel nos dias de hoje


muito fcil!!!
Basicamente, um SO

Uma mquina estendida (mquina virtual)


Oculta os detalhes complicados que tm quer ser executados;
Apresenta ao usurio uma mquina virtual, mais fcil de usar.

Um gerenciador de recursos
Cada programa/processo tem um tempo com o recurso;
Cada programa/processo tem um espao no recurso.
Funes principais

Coordenao: Permite mltiplas aplicaes/usurios trabalhar


simultaneamente de forma eficiente.
Concorrncia;
Proteo de memria;
Arquivos;
Ex: fila de impresso

Padronizao de Servios: Padronizao da interface a fim de


simplificar a programao e uso.
Sistemas Operacionais

Por que estudar Sistemas Operacionais?

Isso ajudar na utilizao de diversos sistemas;

Isso ajudar na programao de diversos sistemas;

Isso ajudar a projetar aplicaes eficazes;

Isso ajudar a projetar aplicaes eficientes.


Sistemas Operacionais

Multidisciplinar

SOs combinam conceitos de praticamente todas as reas da


computao. Seu conhecimento fornece base slida para construo de
sistemas complexos;

Linguagens de Programao;
Teoria de Linguagens;
Hardware;
Estruturas de dados;
Algoritmos;
Teoria dos Grafos
Leitura para a prxima aula

Sistemas Operacionais Modernos ou


Sistemas Operacionais Projeto e Implementao

1.2 Histria dos Sistemas Operacionais


1.2.1 A primeira gerao (Vlvulas e Painis de Programao)
1.2.2 A segunda gerao (Transistores e Sistemas em Lote)
1.2.3 A terceira gerao (CIs e Multiprogramao)
1.2.4 A quarta gerao (Computadores Pessoais)
1.2.5 A histria do Minix (somente no livro de implementao)
Referncias

Sistemas Operacionais Modernos. Tanenbaum, A. S. 2 edio. 2003.

Sistemas Operacionais. Conceitos e Aplicaes. A. Silberschatz; P.


Galvin; G. Gagne. 2000.

Wikipedia;

Site do Prof. Srgio Vale Aguiar Campos (DCC-UFMG)


Sistemas Operacionais
A Histria dos Sistemas
Operacionais

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Aula passada...

O que o Sistema Operacional:


Gerenciador de Recursos;
Mquina Estendida.

Sistema Reserva de Navegador da


bancrio passagem web Programas aplicativos
Interpretador de
Compiladores Editores
comando
Programas de sistema
Sistema Operacional

Linguagem de Mquina

Microarquitetura Hardware

Dispositivos fsicos
Nos primrdios
Charles Babbage e a Mquina Diferencial

Em meados do sculo XIX, em plena segunda fase da Revoluo


Industrial, estavam em progresso muitas tentativas de automao de
processos, com destaque para aqueles envolvendo clculos para a
composio de tabelas trigonomtricas e de logaritmos quer para o
emprego na navegao, na pesquisa cientfica ou na engenharia.

Algumas pessoas tentavam conceber mquinas que executassem este tipo


de clculo, tendo sido construdos vrios modelos. A mquina mais
avanada, entretanto, jamais entrou em produo: a chamada mquina
diferencial de Babbage.
Nos primrdios
Charles Babbage e a Mquina Diferencial

Um modelo foi apresentado por Babbage, na


Inglaterra, em 1822, capaz de resolver
equaes sobre polinmios atravs de
diferenas entre nmeros (utilizando
matemtica desenvolvida por Newton);
Assim efetuava clculos necessrios para
construir tabelas de logaritmos.

A mquina tinha a capacidade de receber


dados, process-los, armazen-los e exibi-los.

Graas a ela, Babbage ficou conhecido como o


pai do computador e conseguiu apoio
governamental para criar um modelo mais Problema
complexo, o "Engenho Analtico". no mundo
real
Algoritmo Programa Processamento Resultado

Bem parecido com o fluxo


atual de computao
Nos primrdios
Charles Babbage e a Mquina Diferencial

Quais os benefcios que a mquina diferencial forneceu?

Foi a primeira tentativa de se construir uma mquina de


computao que fosse automtica e adaptvel;

Foi uma forma de subsdio do governo para inovao e


desenvolvimento tecnolgico;

Foi um dos pontos de partida para a indstria de mquinas.


Mquina Diferencial reconstruda
utilizando LEGO

http://acarol.woz.org/
Nos primrdios...
O engenho analtico
O engenho analtico, um passo importante na histria dos computadores,
o projeto de um computador mecnico moderno de uso geral. Foi descrito
pela primeira vez em 1837, mas Babbage continuou a trabalhar no projeto
at sua morte, em 1871.
Por causa de questes tcnicas, financeiras, polticas e legais, o engenho nunca
foi realmente construdo.

Computadores de uso geral, logicamente comparveis ao engenho analtico,


s iriam surgir, de forma totalmente independente da pesquisa de Charles
Babbage, cerca de 100 anos mais tarde.

Alguns acreditam que as limitaes tecnolgicas da poca constituam-se


num obstculo adicional para a construo da mquina; outros acreditam
que a mquina poderia ter sido construda com sucesso, mesmo usando a
tecnologia da poca, se houvesse obtido um forte apoio financeiro e
poltico. Em todo caso, a mquina seria enorme e extremamente cara.
Nos primrdios...

A Mquina Analtica
Nos primrdios

O Motor Analtico e a Mquina Diferencial


no possuam um Sistema Operacional;

Mas Babbage projetou seu invento em um


formato programvel...

Ele ento contratou uma mulher chamada


Ada Lovelace
A primeira programadora do MUNDO...

Ada Lovelace (1815-1852)


Computadores de Primeira Gerao

Vlvulas e Painis de Conectores


Primeira Gerao (1945 - 1955)
Vlvulas e Painis de Conectores

1940: John Von Neumann cria o primeiro computador


primitivo baseado em vlvulas.

Foi desenvolvido no Instituto de Estudos Avanados de


Princeton.
Primeira Gerao (1945 - 1955)
Vlvulas e Painis de Conectores
Outros pesquisadores, em outras partes do
mundo, tiveram sucesso ao construir mquinas
de clculo:

William Mauchly (Universidade da Pensilvnia)


Em 1943, junto com e John Presper Eckert e cientistas da
Universidade da Pensilvnia e em parceria com o
Governo dos EUA, construram um computador
eletrnico, conhecido como ENIAC (Electronic Numerical
Integrator And Computer).

Konrad Zuse (Alemanha)


1941: Construiu o primeiro computador eletromecnico.
No Museu da Tecnologia de Bonn existem alguns de seus
inventos, como o Z2, um dos primeiros computadores do
mundo.
Primeira Gerao (1945 - 1955)
Vlvulas e Painis de Conectores
O ENIAC comeou a ser desenvolvido em 1943 durante a II Guerra
Mundial para computar trajetrias tticas que exigissem conhecimento
substancial em matemtica, mas s se tornou operacional aps o final da
guerra.
30 toneladas
5,50 m de altura e 25 m de comprimento
ocupava 180 m , com estruturas metlicas de 2,75 m de altura
70 mil resistores e entre 17.400 e 18.000 vlvulas a vcuo
Primeira Gerao (1945 - 1955)
Vlvulas e Painis de Conectores

Atualmente, parte do antigo


ENIAC pode ser visto no museu
do departamento de engenharia
eltrica da Universidade da
Pensilvnia.

Seu funcionamento era parecido com uma calculadora simples de hoje. O


ENIAC tinha de ser operado manualmente.
Era preciso conectar fios, rels e sequncias de chaves para que se
determinasse a tarefa a ser executada.
A cada tarefa diferente o processo deveria ser refeito.
A resposta era dada por uma seqencia de lmpadas.
Primeira Gerao (1945 - 1955)
Vlvulas e Painis de Conectores
Toda a programao era feita em linguagem de mquina pura,
freqentemente ligando com fios de conectores para controlar as funes
bsicas da mquina;

Ainda no existiam os hoje conhecidos Sistemas Operacionais;

Durante a execuo, os pesquisadores torciam para que nenhuma vlvulas


queimasse (lembrando: aproximadamente 18.000).

Detalhe da parte de trs do ENIAC


Primeira Gerao (1945 - 1955)
Vlvulas e Painis de Conectores

No incio da dcada de 50, a maioria dos computadores j adotavam a


entrada e a sada de dados atravs de cartes perfurados;

Ento, era possvel gravar programas em cartes ao invs de usar cabos e


conectores;

No eram mais necessrias as lmpadas do ENIAC para visualizar o


resultado da computao.
Computadores de Segunda Gerao

Transistores e Sistemas de Lote


Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote
O transistor foi inventado nos Laboratrios da Bell Telephone em dezembro
de 1947 por Bardeen e Brattain, e inicialmente demonstrado em 23 de
Dezembro de 1947 por John Bardeen, Walter Houser Brattain, e William
Bradford Shockley, que foram laureados com o prmio Nobel da Fsica em
1956.

O objetivo do projeto era criar um dispositivo compacto e barato para


substituir as vlvulas terminicas usadas nos sistemas telefnicos da poca.

William Bradford Shockley


Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote

O desenvolvimento dos transistores tornou o computador mais


confivel possibilitando sua comercializao;

Alm de reduzir bruscamente o tamanho dos computadores da


poca.

No entanto, devido aos altos custos poucos tinham acesso a essa


tecnologia somente grandes empresas, rgos governamentais ou
universidades.

Uma rplica do primeiro transistor


inventado no Bell Labs em 1947
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote

Fato importante na segunda gerao

Neste instante do tempo, foi observado pela primeira


vez a clara separao entre:

Projetista;
Construtor;
Operador;
Programador;
Pessoal da manuteno.
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote
Somente as grandes corporaes ou importantes rgos do governo
ou universidades podiam ter recursos para arcar com seu alto preo
(na casa dos milhes de dlares).

IBM 7094
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote
A primeira instalao do IBM 7090 foi feita em 1959;

Era vendido aproximadamente por US$ 3.000.000,00;

Ou era alugado por US$ 65.000,00;

Cpsula Mercury
IBM 7090 utilizado pela NASA no Projeto Mercury
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote
Passos da programao da poca:

Programador escrevia o programa manualmente em Fortran;


Transformava seu programa em cartes perfurados;
O programador inseria os cartes no IBM 1401;
A sada do IBM 1401 era o programa escrito na fita magntica;
O operador levava a fita para entrada no IBM 7094;
O IBM 7094 realizava a computao e gravava a sada em outra fita;
Outro IBM 1401 recebia esta fita como entrada, e imprimia a sada do
programa em papel.

Comparando com o processo natural de computao hoje em dia

Problema
no mundo Algoritmo Programa Processamento Resultado
real

Passo duplo Passo duplo


Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote

Antigo sistema em lote (batch)


traz os cartes para o 1401
l os cartes para a fita
coloca a fita no IBM 7094 que executa o processamento
coloca a fita no IBM 1401 que imprime a sada
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote

Enfim! J podemos observar um Sistema Operacional.

Apesar de apenas dedicar o todo o recurso da mquina


ao programa em execuo, o IBM 7094 j possua um
sistema de fila para gerenciamento de programas.
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote

Tambm surge um item importante para os S.O.:


interpretador de comando: Fortran Monitor System (FMS);
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote
Segunda Gerao (1955 - 1965)
Transistores e Sistemas de Lote
Curiosidade sobre o Fortran:

Foi a primeira linguagem de programao imperativa;

O primeiro compilador de FORTRAN foi desenvolvido para o


IBM 704 entre 1954 e 1957;

O compilador era otimizado, pois os autores acreditavam que


ningum iria usar essa linguagem se seu desempenho no fosse
comparvel com a da linguagem assembly;

A linguagem utilizada at os dias atuais devido a sua vasta


aplicabilidade na rea cientfica.
Computadores de Terceira Gerao

Circuitos Integrados e Multiprogramao


Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

Na dcada de 60, existiam duas linhas de produto


distintas, e totalmente incompatveis:

Computadores cientficos de grande escala


Utilizados para clculos numricos;
IBM 7094

Computadores comerciais
Operaes triviais;
IBM 1401
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

Manter o desenvolvimento de ambas as


linhas estava se tornando uma tarefa cara
para a IBM;

A IBM tentou resolver tal problema


lanando o IBM System/360;

Uma srie de mquinas compatveis (em


teoria);

Pela primeira vez na histria:


O comprador configurava o que queria
comprar (memria, processador, etc).
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Como todas as mquinas tinham a mesma arquitetura e conjunto de
instrues, programas escritos para uma mquina podiam executar
em todas as outras;

Um IBM System 360/20 no Deutsches Museum em Munique, Alemanha.


Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

O IBM System/360 possua os hoje conhecidos Circuitos Integrados


(CIs);

Possua uma boa vantagem de preo para os computadores de 2


gerao;
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

Sua maior vantagem (compatibilidade em todas as mquinas IBM


360), era ao mesmo tempo a sua maior fraqueza;

Todos os softwares, inclusive o prprio SO, tinha que trabalhar em


todos os modelos IBM 360;

Isso resultou em um S.O. grande e complexo;


Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
IBM OS/360
Consistia em milhes de linhas da linguagem assembly escritas
por milhares de programadores;

Conseqentemente, milhares de bugs. O sistema necessitava, de


um contnuo fluxo de novas verses;
Na poca, no existiam as tcnicas hoje conhecidas e descritas a pela
Gerncia de Configurao.

E como nos dias de hoje, a correo de um bug no garantia a


no incluso de um outro bug!!!
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

Um dos projetistas do OS/360 (Fred Brooks),


escreveu em 1975 um livro contando suas
experincias com aquele projeto. A capa do livro j
nos d ideia da dimenso do seu problema:
Um monte de bestas pr-histricas atoladas em um
poo de petrleo.

A. Silberschatz na sexta edio do seu livro sobre


Sistemas Operacionais tambm descreve de
maneira simular os S.O.s do incio do sculo XXI.
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Apesar das dificuldades, foi exatamente nesta poca que se
desenvolveram muitas (a maioria) das tcnicas ainda hoje
utilizadas nos Sistemas Operacionais;

A mais importante delas a multiprogramao;

No IBM 7094 (2 gerao): Quando um programa fazia uma pausa


para esperar uma fita de entrada, todo o sistema ficava ocioso.
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

Estudos mostraram que na poca, o tempo de espera representava


80% do tempo total;

A soluo encontrada foi: dividir a memria em diversas partes e


alocar a cada uma dessas partes um programa;

Sempre que um programa era interrompido, o S.O. passava a


processar outro programa que estava em espera, diminuindo a
ociosidade do processador;
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Multiprogramao:
Exemplo de 3 programas em memria + o S.O.

Seguindo a arquitetura do Von Neumann, podemos ter tambm


os dados.
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

Outra importante tcnica desenvolvida no OS/360 foi o Spooling


(Operao Perifrica Simultnea On-line)

Possibilitava que a leitura de cartes de jobs fosse feita direta do


disco. Assim que um job terminava, o sistema operacional j
alocava o novo job uma partio livre da memria direto do
disco.

Exemplo dessa tcnica nos dias atuais:


Impressoras arquivo de spool
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Outra importante tcnica desenvolvida no OS/360 foi o Time-
Sharing (Compartilhamento de tempo):

Cada usurio tinha um terminal on-line disposio;

Pseudoparalelismo: o tempo do processador era dividido em pequenos


intervalos denominados "quanta de tempo" ou fatia de tempo;

Primeiro sistema Time-Sharing: CTSS (Compatible Time Sharing


System) IBM 7094 modificado (desenvolvido no M.I.T.);

Segundo: MULTICS (Multiplexed Information and Computing Service)

deu origem ao UNIX.


Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Caractersticas do MULTICS:
O projeto MULTICS foi muito criticado na poca, mas muitas de suas
definies ainda so utilizadas nos dias de hoje;

Como descrito no artigo cientifico de 1965 Introduction and Overview of the


Multics System por Corbat e Vyssotsky, os principais objetivos do
MULTICS eram:
Uso remoto e conveniente de terminais.
Operao contnua e anloga aos servios eltricos e telefnicos;
Uma grande variedade de configuraes do sistema, alterados de forma
transparente;
Um sistema de arquivos de alta confiana;
Suporte para informao compartilhada selecionada;
Estruturas hierrquicas de informao;
Suporte a vrios tipos de aplicaes;
Suporte para vrios ambientes de programao e interfaces para o usurio;

Curiosidade: A ltima instalao operacional do MULTICS foi desligada apenas em


31 de outubro do ano de 2000.
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Caractersticas do MULTICS:
Implementao de linguagem de alto nvel
Multics foi escrito na linguagem PL/I, que foi proposta em 1965
pela IBM. Apenas uma pequena parte do sistema operacional foi
implementada em Assembly.
Escrever um sistema operacional usando uma linguagem de alto nvel era
uma idia bastante radical para a sua poca. Mas com certeza foi
importante para o tamanho do projeto

Multiprocessadores
O hardware do MULTICS suporta vrias CPUs compartilhando a mesma
memria fsica. Todos os processadores so equivalentes.

Suporte a vrias linguagens


Alem de PL/I, MULTICS prov suporte as linguagens BCPL, BASIC,
APL, FORTRAN, LISP, SNOBOL, C, COBOL, ALGOL 68 e Pascal.
Rotinas em quaisquer uma dessas linguagens podem chamar as outras.
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Caractersticas do MULTICS:
Banco de dados relacional:
MULTICS promoveu o primeiro banco de dados relacional da poca, o
MULTICS Relational Data Store (MRDS) em 1978.

Segurana:
Multics foi desenvolvido para ser seguro desde o seu inicio. Em 1980s, o
sistema foi premiado com qualidade B2 de segurana pelo governo
americano NCSC, o primeiro (e durante anos) sistema a ter uma
qualificao B2.

Reconfigurao on-line:
MULTICS foi desenvolvido de rodar 7 dias por semana, 24 horas por
dia. CPUs, memria, controladores de I/O, e drives de disco podem ser
adicionados e removidos da configurao do sistema enquanto o
sistema esta funcionando, sem precisar reiniciar o sistema.
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao
Caractersticas do MULTICS:

Engenharia de Software:
O time de desenvolvimento empregou esforos em encontrar formas de
construir um sistema de maneira organizada.
O manual do programador para o sistema Multics (The Multics System
Programmer's Manual - MSPM) foi escrito antes da implementao
comear.
Tinhas mais de 3000 paginas e ocupava varias prateleiras. (Clingen e
Corbat mencionam que no seria possvel construir o sistema, sem a
inveno da mquina de fotocpia).
Linguagem de alto nvel, design e reviso de cdigo, programao
estruturada, modularidade e criao de camadas foram todas
empregadas intensivamente para gerenciar a complexidade do sistema,
que foi um dos maiores esforos para desenvolvimento de software em
sua poca.
Terceira Gerao (1965 1980)
Circuitos Integrados e Multiprogramao

Curiosidades sobre a criao do UNIX

Ken Thompson, cientista do projeto MULTICS, utilizando um PDP-7

IEEE desenvolveu o POSIX (portable operating system interface)

Tanenbaum desenvolveu o MINIX

Linus Torvalds desenvolveu o Linux


Computadores de Quarta Gerao

Computadores Pessoais
Quarta Gerao (1980 hoje)
Computadores Pessoais

Chips, contendo milhares de transistores por centmetro quadrado


de silcio, favoreceram a era do computador pessoal;

O primeiro impacto foi no preo dos computadores, que saiu da


casa dos milhes de dlares para os milhares de dlares;

A possibilidade de levar computadores a pessoas no especialistas


criou a necessidade de uma interface amigvel;
Quarta Gerao (1980 hoje)
Computadores Pessoais

Em 1974, Intel lana o 8080


Gary Kildall CP/M
Digital Research Inc
Quarta Gerao (1980 hoje)
Computadores Pessoais

Inicialmente, dois sistemas operacionais dominaram o


mercado para computadores pessoais:

DOS (Microsoft):
Amplamente utilizado no IBM PC e nas mquinas que empregavam
a CPU Intel 8088, 80286, 80386, 80486, Pentium.
A verso do DOS era primitiva, mas rapidamente incluiu
funcionalidades presentes no UNIX (XENIX)

UNIX:
Na poca especializado em computadores de ponta, servidores de
rede e mquinas com o chip RISC de alto desempenho.
Quarta Gerao (1980 hoje)
Computadores Pessoais
Macintosh - 1984
Quarta Gerao (1980 hoje)
Computadores Pessoais
Alguns S.O.s que
marcaram:

Famlia Windows:
Outros:
Windows 3.11
Windows 95
MAC/OS
Windows 98 LINUX
Windows NT 4.0 UNIX
Windows Me MINIX
Windows 2000
Windows XP E suas variaes...
Windows Vista
Windows Seven
Leitura para prxima aula

Sistemas Operacionais Modernos

1.5 Conceitos Sobre Sistemas Operacionais


1.6 Chamadas de Sistema
Referncias
Sistemas Operacionais Modernos. Tanenbaum, A. S. 2 edio. 2003.

Sistemas Operacionais Projeto e Implementao. Tanenbaum, A. S. 2


edio. 1999.

Sistemas Operacionais. Conceitos e Aplicaes. A. Silberschatz; P. Galvin;


G. Gagne. 2000.

Institute for Advanced Study (Princiton)


http://www.ias.edu/

http://en.wikipedia.org/

http://pt.wikipedia.org/

http://de.wikipedia.org/
Sistemas Operacionais Cincia da Computao
Conceitos sobre Sistemas
Operacionais

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Aula Anterior

Histria dos Sistemas Operacionais

Primeira Gerao (Vlvulas)

Segunda Gerao (transistores)

Terceira Gerao (CIs)

Quarta Gerao (computadores pessoais)


Conceitos de Sistemas Operacionais

Antes de iniciar os estudos especficos sobre cada aspecto de um


sistema operacional, faz-se necessrio, como uma introduo ao
assunto, abordar certos conceitos bsicos:

Processo/Programa/Espao de endereamento

rvore de Processos

Arquivos

Interpretador de Comando (Shell)

Chamadas de Sistema (System Calls)


Processos
Processos

Processo conceito fundamental para TODOS os sistemas


operacionais;

Um processo (s vezes chamado de tarefa ou de processo


seqencial) basicamente um programa em execuo.

Associado a cada processo est o seu espao de endereamento:

Uma lista contigua de posies de memria (virtual). Parte deste espao


de endereamento reservado aos dados que o processo necessita ao
longo de sua vida til.

Em resumo, o espao de endereamento possui o programa executvel,


os dados do programa e sua pilha.
Traduzindo e iniciando um programa...

Programa em C

Compilador

Programa em Assembly

Montador

Objeto:
Mdulo
Mdulo
em em Rotina de biblioteca
Linguagem de Mquina (ling. de mquina)

Link-editor

Executvel: programa
em ling. de mquina

Loader

Memria
Loader

O loader (carregador) o mdulo responsvel por copiar um


programa executvel para a memria do computador e prepar-lo
para execuo.

Suas tarefas so:


Verificar se o programa a ser executado existe;
Abrir o arquivo que contm o cdigo executvel e determinar a
quantidade de memria necessria para iniciar sua execuo;
Solicitar a gerncia de memria a alocao de memria necessria;
Copiar o cdigo executvel do arquivo para o trecho especfico do seu
espao de endereamento;
Se necessrio, ajustar os endereos no cdigo para que funcionem
corretamente na regio de memria onde o programa foi efetivamente
carregado.
Espao de endereamento

FFFF
Pilha

Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos

Texto

Reservado
0000
Conveno MIPS para alocao de memria
Espao de endereamento

FFFF
Pilha

Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos
Programa em linguagem de
Texto mquina:

Reservado O loader insere o programa


0000 no bloco de texto referente
ao espao de endereamento
Conveno MIPS para alocao de memria
Espao de endereamento
Local para constantes e
variveis estticas

FFFF Exemplos:
Pilha
int var = 3;
Lacuna float vet[1000];

Dados dinmicos Espao de


endereamento
Dados estticos

Texto

Reservado
0000

Conveno MIPS para alocao de memria


Espao de endereamento

FFFF
Pilha

Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos
Memria heap:
Texto Exemplo: A linguagem C
aloca e libera espao no heap
Reservado com funes explcitas (malloc
0000 e free)

Conveno MIPS para alocao de memria


Espao de endereamento Variveis das funes so
empilhadas a cada chamada
de procedimento. Tambm
so empilhados pontos para
FFFF retorno, e outros detalhes
Pilha para que o processo de
chamada de funes funcione
corretamente.
Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos

Texto

Reservado
0000

Conveno MIPS para alocao de memria


Espao de endereamento
Espao livre do processo;
Caso este espao termine, o
S.O. pode deslocar (shift) a
pilha de execuo para
FFFF
Pilha aumentar a capacidade do
processo alocar memria ou
empilhar procedimentos.
Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos

Texto

Reservado
0000

Conveno MIPS para alocao de memria


Processos
Alm do espao de endereamento

Tambm associado a cada processo est um conjunto de


registradores:
que inclui o contador de programa (PC);
o ponteiro para a pilha;
outros registradores de hardware;
e todas as demais informaes para executar um programa;

O Contador de programa indica a prxima instruo a ser executada


no processo. Tal varivel s faz sentido quando o SO suporta a
multiprogramao.
Diferena entre Programa e Processo
Programa: uma entidade esttica e permanente, formado por um conjunto
de instrues. Considerado passivo sob o ponto de vista do sistema
operacional.

Processo: entidade dinmica e efmera (altera seu estado medida que


avana sua execuo.

O processo uma diferenciao entre o programa e sua execuo

Outra definio de processo: uma entidade ativa que compete por


recursos oferecidos pelo sistema (acesso a discos, perifricos e
principalmente CPU) e tambm interage com outros processos.
Processos

Processos so instncias de programas:


de usurios e;
do sistema operacional.

No segundo caso, so chamados de daemons (executam em


background).

Exemplos de processos que rodam em background:


Spooler de impresso (daemon de impresso) do S.O.;
Servidor SSH;
Processos

Componentes de um processo:

Espao de endereamento
Memria primria, ou;
Memria secundria ????;

Registro na tabela de processos


Para controle do sistema operacional.
Possui todas as informaes sobre todos os processos no
finalizados.
Tabela de Processos

Para controlar as informaes relativas


aos processos e concorrncia entre eles
para uso da CPU, os sistemas
operacionais usam a tabela de
processos.

Cada processo na tabela de processo


pode ser visto como uma tupla;
Tabela de Processos

A tabela de processos (responsvel pelo salvamento das


informaes), a chave para a implementao eficiente da
Gerncia de Processos em Sistemas Operacionais;

Basicamente tal estrutura deve fornecer facilmente qualquer


informao para:

Gerncia de Sistemas de Arquivos (quais arquivos foram


abertos pelo processo?);

Gerncia de Memria (qual o espao livre no espao de


endereamento do processo?);
Tabela de Processos
nome
PID Registradores gerais

UID (owner)

Prioridade de
Registrador PC
execuao

Data/hora da criao
Contexto de Contexto de
Tempo de software Hardware Registrador SP
processador

quotas
Registrador de
privilgios status
PROGRAMA

Espao de
Endereamento

Endereos de memria
principal alocados
rvore de Processos

Uma rvore de processos


A criou dois processos filhos: B e C
B criou trs processos filhos: D, E, e F

Comunicao entre processos


Exemplo no Linux
init

apache2 login mysqld

shell

firefox Acrobat reader


vi

Aba 01 Aba 02
Estados de um processo
Diagrama simplificado

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Processos que esto aguardando eventos externos no podem ocupar a CPU


Arquivos
Arquivos (Organizao)
Arquivos e Diretrios
Sistema de Arquivos

Hierarquia de diretrios path name (caminho)

Diretrio Raiz
/Professores...

Diretrio de Trabalho Atual


Prof. Brown/Cursos
Montador (mount)

Antes da montagem,
os arquivos do disco flexvel so inacessveis
Depois da montagem do disco flexvel em b,
os arquivos do disco fazem parte da hierarquia de arquivos
Pipe (Canalizao)
Comunicao entre processos

Pipe um conceito fundamental


para os sistemas baseados no
UNIX;

Um pipe um conjunto de
processos encadeados atravs das
suas sadas padro, de forma que
a sada de um processo
utilizada como entrada do
processo seguinte.
Pipe (Canalizao)
Comunicao entre processos

um tipo de pseudoarquivo, que


pode ser usado para conectar
dois processos..
Pipe no Linux

$ ls | grep b

O comando "ls", como bem sabemos, lista o contedo do diretrio, porm


devido ao pipe ele no envia o resultado para tela e sim ao comando "grep
b".

O comando "grep b" por sua vez filtra os nomes de arquivos que contm a letra
"b"
Interpretador de Comandos
Interpretador de Comandos (Shell)

um processo responsvel pela interface do usurio com o sistema


operacional.

Este processo:
l o teclado a espera de comandos;
interpreta-os e;
passa seus parmetros para o sistema operacional.

Exemplos de servios solicitados atravs do Shell:


login e logout;
manipulao de arquivos (copia, remoo);
Transferncia remota de arquivos;
execuo de programas;
Interpretador de Comandos (Shell)
Sistema Reserva de Navegador da
bancrio passagem web
Interpretador de
Compiladores Editores
comando

Sistema Operacional

Linguagem de Mquina

Microprogramao

Dispositivos fsicos

Ateno: O Shell no faz parte do sistema operacional!

No Minix, o sinal $ informa ao usurio que o shell est


esperando receber um comando. O mesmo acontece no Linux.
Interpretador de Comandos (Shell)

Quando o comando dado, o shell cria um processo filho;

Ento, o shell espera que o processo-filho termine;

Quando o filho termina, o shell exibe o prompt novamente


fornecendo nova interface com o usurio.

No Linux, possvel criar um Thread e liberar o shell pai


imediatamente aps o comando. Necessrio quando o processo
filho no termina rapidamente. Assim, o terminal fica liberado
para outros comandos. (&)
Chamadas de Sistema
Chamadas de Sistema

Interface entre o Sistema Operacional e os Programas Aplicativos;

Conjunto de instrues estendidas que um sistema operacional


proporciona;

o mecanismo usado pelo programa para requisitar um servio do


sistema operacional, ou mais especificamente, do kernel do sistema
operacional.

De certa forma, fazer uma chamada de sistema como realizar um


tipo especial de chamada de procedimento, s que as chamadas ao
sistema fazem entrar em modo ncleo, e as de procedimento no.
Chamadas de Sistema

Os sistemas operacionais definem chamadas de sistema para todas


as operaes envolvendo o acesso a recursos de baixo nvel:

Gerenciamento de processos fork ( )

Gerenciamento de Arquivos - close (descritor_arquivo)

Gerenciamento de Diretrios rmdir (nome_diretorio)

Outros chmod ( )
Chamadas de Sistema

No modo usurio:

Aplicaes no tm acesso direto aos recursos da mquina, ou seja, ao


hardware;

Operaes restritas, sem privilgios;

Quando o processador trabalha no modo usurio, a aplicao s pode


executar instruo sem privilgios, com um acesso reduzido de
instrues;
Chamadas de Sistema

No modo ncleo:

Aplicaes tm acesso direto aos recursos da mquina, ou seja, ao


hardware;

Operaes com privilgios;

Quando o processador trabalha no modo kernel, a aplicao tem acesso


ao conjunto total de instrues;

Apenas o SO tem acesso s instrues privilegiadas;


Chamadas de Sistema

Se uma aplicao precisa realizar alguma instruo privilegiada, ela


realiza uma chamada de sistema, que altera o modo usurio para o
modo kernel;

Chamadas de sistemas so a porta de entrada para o modo Kernel;

So a interface entre os programas do usurio no modo usurio e o


Sistema Operacional no modo kernel;
Chamadas de Sistema

Aplicao Rotina de Chamada de Hardware


(Usurio) biblioteca Sistema (SO)
Chamadas de Sistema
Padronizao (POSIX)
POSIX um acrnimo para Portable Operating System Interface que pode ser
traduzido como
Interface Porttil entre Sistemas Operacionais;

O objetivo garantir a portabilidade do cdigo-fonte de um programa a


partir de um sistema operacional que atenda as normas POSIX para outro
sistema POSIX.

Rotinas definidas em POSIX no necessariamente fazem referncia


chamadas de sistema (executam apenas em modo usurio)
Isso bom ou ruim?

Maioria das rotinas POSIX

Rotina POSIX Chamada de Sistema (mapeamento)


Alguns exemplos de algumas chamadas de sistema comuns
entre S.O.s para manipulao de arquivos

Create;
Delete;
Open;
Close;
Read;
Write;
Append;
Seek;
Referncias

Organizao e Projeto de Computadores. A interface Hardware/Software.


David A. Petterson; John L. Hennessy. Editora Campus 2005;

Sistemas Operacionais Modernos. Tanenbaum, A. S. 2 edio. 2003.

Sistemas Operacionais Projeto e Implementao. Tanenbaum, A. S. 2


edio. 1999.

Sistemas Operacionais. Conceitos e Aplicaes. A. Silberschatz; P. Galvin;


G. Gagne. 2000.

Sistemas Operacionais; Rmulo Silva de Oliveira, Alexandre da Silva


Carissimi; Editora Sagra-Luzzatto; 2a edio; 2004.
Sistemas Operacionais Cincia da Computao
Sistemas de Arquivos
Estrutura de Arquivos

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Conceito
Sistema de Arquivos
Responsvel por implementar em software um recurso que no
existe no hardware:

O hardware oferece simplesmente um grande conjunto de bytes


contguos, e a tarefa principal do sistema de arquivos
implementar a abstrao de arquivo em cima do dispositivo de
armazenamento.
Fsico vs. Lgico

Aps a formatao fsica, feita pelo prprio fabricante do disco


rgido nas etapas finais da produo, temos um HD dividido em
trilhas, setores e cilindros, toda a infra-estrutura bsica para
permitir que a cabea de leitura possa ler e gravar dados. A
formatao fsica permite que a placa lgica posicione corretamente
as cabeas de leitura.

Porm, para que este disco possa ser reconhecido e utilizado pelo
sistema operacional, necessria uma nova formatao, a chamada
formatao lgica. A formatao lgica consiste em escrever no
disco a estrutura do sistema de arquivos utilizado pelo sistema
operacional.

Podemos visualizar a formatao lgica como a linguagem


utilizada pelo sistema operacional.
Fsico vs. Lgico

Em um passado recente, os fabricantes de HD disponibilizavam


formatadores fsicos;

Esta opo foi abandonada com o tempo;

O que se faz hoje em dia sobrescrever TODAS as posies do disco


com 0s. (zero fill);

O HD volta ao estado que saiu de fbrica;


Se no houver um dano fsico;
Sistemas de Arquivos

Todas aplicaes precisam recuperar e armazenar informaes

Um sistema de arquivos um conjunto de estruturas lgicas e de


rotinas, que permitem ao sistema operacional controlar o acesso ao
disco rgido. Diferentes sistemas operacionais usam diferentes
sistemas de arquivos:

MS-DOS, Win 3.x, Win95 e Win98: FAT12, FAT16, FAT32;


Win2000, WinNT, WinXP, WinVista, Windows 7: NTFS;
Linux: Ext2, Ext3, Ext4, ReiserFS.
Sistemas de Arquivos (FS)
Por que existem diferentes sistemas de arquivos?

Diferentes hardwares necessitam de diferentes sistemas de arquivos?

Disco rgido

IPOD usa memria flash Carto de memria que


utiliza tecnologia Flash Memria Flash na USB
Memria Principal vs Memria Secundria

Um processo em execuo pode armazenar uma quantidade


limitada de informao.
Na Memria Virtual;

Contudo, para algumas aplicaes este tamanho no adequado.


Exemplo, sistemas que necessitam de um banco de dados.

Hoje em dia j ouvimos falar de SGBDs que trabalham com mais de


1TB de informao;
Sistemas de Arquivos
Dispositivos de Armazenamento
O dispositivo de armazenamento de um sistema de arquivos pode
ser qualquer mdia (tambm chamada de memria secundria), a
qual prov um meio de:

armazenamento em massa;

persistncia de dados;

compartilhamento de informao entre processos.


Sistemas de Arquivos

ento necessrio que processos possam ler, criar e apagar arquivos


(manipulao);
Atravs de chamadas de sistema

ento necessrio que seja fornecida a persistncia: A existncia de


um arquivo independente ao processo, ou seja, quando o processo
finalizado, o arquivo pode continuar existindo;

ento necessrio que os arquivos devem ficar armazenados fora


da memria principal (que voltil);
Sistemas de Arquivos

O projeto de um sistema de arquivos envolve


principalmente:

Estrutura;
Nomeao;
Acesso;
Uso;
Proteo;
Viso sobre os arquivos:
Usurio vs. Sistema

Arquivos para Arquivos para o SO:


Usurios:
Setores;
Nomeao; Blocos Lgicos;
Proteo; Listas Encadeadas;
Como eles aparecem; Mapa de bits;
Proteo;
Logs para Journaling;
Arquivos
Arquivo

Arquivo um mecanismo de abstrao;

So unidades lgicas de informao criadas por processos;

O objetivo isolar o usurio sobre detalhes de como e onde a


informao est armazenada, e como os discos na verdade
funcionam; (mquina estendida)
Nomeao de Arquivos
Regras
Criao de arquivos:

Quando um processo faz uma Chamada de Sistema para criao


de um arquivo, ele d um nome a este arquivo (primeiro passo);

As regras de nomeao variam de sistema para sistema;

Todos os sistemas permitem strings de at 8 letras:


douglas
maria

Alguns sistemas permitem dgitos e caracteres especiais:


Figura3.23

Muitos S.O.s permitem nomes de at 255 caracteres;


Na verdade no o S.O. que permite. o seu o sistema de arquivos
utilizado.
Nomeao de Arquivos
Regras
Alguns sistemas de arquivos diferenciam letras maisculas de
minsculas;
Case sensitive;

EXT2, EXT3, EXT4 do UNIX e o do Linux diferenciam:


Podemos ter diferentes arquivos chamados:
Maria
Maria
MARIA
MaRiA;

Famlia FAT e NTFS no diferenciam:


Maria e MARIA so considerados o mesmo arquivo;
Nomeao de Arquivos
Regras
Win 95 e Win98 usam o mesmo sistema de arquivos do MS-DOS.
Portanto, herdam todas as propriedades de nomeao;

O WinNT e Win2000 suportam o sistema de arquivos do MS-DOS.


Portanto, tambm herdam suas propriedades de nomeao;

Contudo, o WinNT e o WIN 2000 suportam o sistema de arquivos


chamado NTFS (com suporte a unicode).

Unicode um padro que permite aos computadores representar e


manipular, de forma consistente, texto de qualquer sistema de escrita
existente.
Nomeao de Arquivos
Extenso
Muitos S.O.s suportam nomes de arquivos com duas partes:
Nome.extenso, exemplo:
Douglas.doc
codigo.cpp
MinhaClasse.java

No MS-DOS, por exemplo:


Nome com at 8 caracteres;
Extenso de at 3 caracteres;

No UNIX, por exemplo:


O tamanho da extenso fica a critrio do usurio;
O arquivo pode ter mais de uma extenso: prog.c.z
Nomeao de Arquivos
Extenso
As extenses so apenas convenes, e geralmente no so
impostas pelo S.O.;

Servem apenas para lembrar o usurio, que determinado


arquivo de determinado tipo;

Mas a nvel de aplicao, extenses podem ser exigidas, por


exemplo:
Compilador de C exige extenso .c
MS-Word exige extenso .doc, .docx, .rtf, htm, html, etc
Nomeao de Arquivos
Extenso
No Windows, os usurios finais e as
aplicaes podem registrar extenses no
sistema operacional;

O objetivo especificar qual programa


reconhece aquela extenso;

Tal requisito foi especificado apenas para


facilitar o uso do usurio final.
Nomeao de Arquivos
Extenso
Estrutura de Arquivos
Estrutura de Arquivos
Arquivos pode ser estruturados de vrias formas;

(a) Seqncia de bytes


(b) Seqncia de registros, e
(c) Em rvore;
Estrutura de Arquivos
Seqncia de Bytes

O sistema operacional no sabe o que o arquivo


contm;

Qualquer significado entendido a nvel de


programa de usurios;

Unix e Windows e a grande maioria dos S.O.s


modernos utilizam esta estratgia;
Estrutura de Arquivos
Seqncia de Bytes

Mxima flexibilidade;

possvel o programador desenvolver algo


incomum, j que quem interpreta sua lgica o
prprio programa desenvolvido por ele.
Estrutura de Arquivos
Seqncia de Registros

O arquivo uma seqncia de registros de


tamanho fixo;

Cada registro com uma estrutura interna;

A operao de leitura e escrita passa a ser


simplificada;
Estrutura de Arquivos
Seqncia de Registros

Como lembrete histrico:

Cartes perfurados, por exemplo de 80 colunas;

Na poca, muitos sistemas operacionais tinham


seus registros com 80 caracteres;

Ou seja, os registros eram as imagens dos


cartes;

Nenhum S.O. atual funciona assim;


Estrutura de Arquivos
rvore de Registros

Os registros no tem necessariamente o mesmo tamanho;

Cada registro possui um campo chave;


Estrutura de Arquivos
rvore de Registros

A rvore ordenada pelo campo chave;

A ordenao tem o objetivo de acelerar a busca por chaves


especficas;
Estrutura de Arquivos
rvore de Registros

Este esquema seria interessante para SGBDs;


Mas atualmente cada SGBD implementa a sua estrutura de dados
com diversos tipos de ndices para acelerar consultas.
Tipos de Arquivos
Tipos de arquivos

Comum no UNIX e no Windows


Arquivos regulares (ASCII ou binrios);
Arquivos diretrio (cada SO implementa de uma forma);

Os arquivos regulares possuem informaes do usurio;

Os arquivos diretrio possuem informaes da estrutura do sistema


de arquivos;
Utilizados para controle do S.O. e alterados apenas com chamadas de
sistema.
Tipos de arquivos
Arquivos Regulares

Os arquivos regulares so geralmente arquivos ASCII (Cdigo Padro


Americano para o Intercmbio de Informao);

Os arquivos ASCII so constitudos de linhas de texto. Elas no


necessariamente possuem o mesmo tamanho;

Um detalhe importante que o caractere de quebra de linha varia


entre os S.O.s.
Windows: \r\n (caractere 13 e caractere 10);
Unix: \n (caractere 10);

Muitos editores possuem problemas na leitura de arquivos ASCII por


este detalhe.
Alguns conseguem visualizar ambos de forma correta.
Tipos de arquivos
Arquivos Regulares

A grande vantagem de arquivos ASCII que podem ser


mostrados e editados em qualquer editor de texto;

Se vrios programas utilizam ASCII como entrada e


sada, fcil conectar a sada de um programa na
entrada de outro; (como o pipeline)
Tipos de arquivos
Arquivos Binrios

A visualizao um arquivo binrio em um editor de textos nos


apresenta algo incompreensvel;

Sua estrutura interna traduzida pelas aplicaes que a utilizam.

Exemplos:
.zip
.class
.rar
.bin
.exe
.dll
Tipos de arquivos
Arquivos Binrios

Exemplo:
Arquivo executvel do UNIX.
Nmero mgico (evita que outros
arquivos sejam executados por engano);
Outras informaes de cabealho...
Texto do programa;
Etc...

O S.O. quem conhece a estrutura do


arquivo.
Acesso aos Arquivos
Acesso aos Arquivos

Acesso seqencial;
O processo pode ler todos os bytes de um arquivo, sem efetuar saltos;
Neste tipo de acesso, o processo pode voltar o cabeote de leitura para o
incio do arquivo;
Era conveniente quando o meio de armazenamento era a fita magntica;

Acesso aleatrio (esta traduo no boa);


O processo pode acessar as informaes do arquivo fora de ordem
(efetuando saltos);
Mais adequado para discos rgidos;
Geralmente os S.O.s disponibilizando a funo seek.
Acesso aos Arquivos

Alguns sistemas operacionais antigos classificavam os


arquivos como sendo de acesso seqencial ou de acesso
aleatrio;

Sistemas operacionais modernos consideram todos os


arquivos como de acesso aleatrio;

Isso influencia diretamente na programao.


Atributos de Arquivos
Atributos de Arquivos

Associado a cada arquivo, podemos ter:


Data e Hora de criao;
Data e hora do ltimo acesso;
Informaes de proteo;
Senha;
Identificador do criador;
Identificador do proprietrio atual;
Flag de apenas leitura;
Flag de temporrio;
Etc.
Operaes com Arquivos
Operaes com Arquivos

Diferentes sistemas oferecem diferentes operaes para armazenar e


recuperar informaes; A seguir, as mais comuns:
Create: Arquivo criado sem dados. Alguns de seus atributos so
definidos;
Delete;
Open;
Close;
Read: n bytes so lidos a partir da posio atual do cabeote de
leitura;
Operaes com Arquivos

write: Os bytes so escritos a partir da posio atual do cabealho


de escrita; Write pode sobrescrever dados existentes; Ou escrever
no fim do arquivo, aumentando seu tamanho;

Append: apenas uma forma reescrita de write, mas com a


limitao de escrever apenas no fim do arquivo;

Seek: Efetua saltos nos cabeotes de leitura e escrita;

Rename: altera o nome do arquivo;


Leitura para a prxima aula

4.2 Diretrios

4.3 Implementao do sistema de arquivos


Referncias

TANENBAUM, A. S., Sistemas Operacionais Modernos,


2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.; Sistemas


Operacionais. Conceitos e Aplicaes. Rio de Janeiro:
Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao
Sistemas de Arquivos
Estrutura de Parties e Diretrios

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.3
Organizao

Os sistemas de arquivos dos computadores atuais podem ser


enormes em volume de dados;

Atualmente, alguns sistemas armazenam centenas de milhares de


arquivos em terabytes de disco;

Para gerenciar todos estes dados, precisamos organiz-los. Tal


organizao geralmente feita em duas camadas distintas:

Parties;

Diretrios.
Organizao
Parties

Parties, tambm so chamadas de


Minidiscos (IBM);
Volumes (PCs e Macintosh);

Em geral, cada disco possui pelo menos uma partio, que uma
estrutura de baixo nvel onde residem arquivos e diretrios;

Os sistemas permitem:
Vrias parties em um mesmo disco;
Uma partio para vrios discos;
Parties expansveis com a insero de novos discos.
Organizao
Parties

O usurio ento precisa se preocupar apenas com a estrutura


lgica de arquivos e diretrios;

Ele pode ignorar completamente os problemas de alocao de


espao fsico para os arquivos;

Assim, as parties podem ser consideradas discos virtuais;


Organizao
Diretrios

J os diretrios armazenam informaes da estrutura dentro de


parties especficas;

Tais informaes so mantidas em entradas de um diretrio de


dispositivo ou ndice de volume;

Informaes de cada arquivo em um diretrio de dispositivo:


Nome;
Posio no disco;
Tamanho;
Tipo;
Organizao dos Diretrios

Histrico

Organizao em um nvel
Sistemas de Arquivos
Organizao em um nico diretrio

A estrutura de diretrio mais simples dentro de uma partio


a de apenas um nvel;

Todos os arquivos esto contidos no mesmo diretrio, que


de fcil suporte e compreenso;

Mas existem limitaes...


Quais?
Sistemas de Arquivos
Organizao em um nico diretrio

Exemplo de um sistema de diretrio de nvel nico


contm 4 arquivos
propriedades de 3 pessoas diferentes, A, B, e C
Sistemas de Arquivos
Organizao em um nico diretrio

Vantagem:
Simples implementao;

Desvantagens:
Dificulta a segurana em mltiplos usurios;
Teria que especificar a permisso de cada arquivo;

Organizao no o seu ponto forte;


Imagine que voc tenha 5000 arquivos do tipo txt;
Seria complicado nomear arquivos que so similares e esto em
um contexto parecido, j que todos precisam ter nomes exclusivos;
Alm disso, alguns sistemas operacionais limitam o tamanho do
nome do arquivo (11 caracteres para o MS-DOS e 255 para o
UNIX);
Computador que utilizava apenas um
diretrio
1964 - CDC 6600
Considerado o primeiro SUPERCOMPUTADOR bem sucedido;
Ele foi o computador mais veloz do mundo de 1964 at 1969;
Suporte a multiprogramao;
Organizao dos Diretrios

Histrico

Organizao em dois nveis


Sistemas de Arquivos
Organizao em dois nveis
A principal desvantagem de um diretrio de nvel nico a
confuso de nomes de arquivos criadas por diferentes usurios;

Imagine...
Voc nunca criou um arquivo com o nome so.doc
Mas outro usurio j criou;
Assim, o sistema te retorna um erro indicando que este nome no pode
ser mais utilizado...
Como voc saberia quais nomes j foram usados por outros usurios?

A soluo foi criar um diretrio para cada usurios;


Sistemas de Arquivos
Organizao em dois nveis

Nesta estrutura, cada usurio tem seu prprio diretrio


Diretrio de arquivo de usurio (UFD User File Directory)

O S.O. controla no processo de login


o diretrio de arquivos mestre (MFD - Master File Directory)

Quando um usurio fizer referncia a determinado arquivo, apenas


seu prprio UFD ser pesquisado;
Sistemas de Arquivos
Organizao em dois nveis

As letras indicam os donos dos diretrios e arquivos.


Sistemas de Arquivos
Organizao em dois nveis

Vantagem:

Resolve o problema de coliso de nomes;

Desvantagem:

No permite que diferentes usurios compartilhem arquivos,


pois no existe uma rea comum de armazenamento;

Com o passar dos anos, a quantidade de arquivos de um s


usurio ser tornou um problema para esta estrutura;

Surgia nesta poca a necessidade da organizao de


arquivos seguindo critrios lgicos.
Organizao dos Diretrios

Histrico

Organizao em rvore
rvore de diretrios

Permite a classificao seguindo uma hierarquia lgica a ser


definida pelo prprio usurio;
Fazendo um paralelo:
Foi alcanada liberdade semelhante estrutura dos arquivos (Sequncia de
bytes), onde o usurio capaz de criar sua organizao dentro do arquivo;

Mais geral que uma rvore, seria um grafo;


Mas cuidados devem ser tomados em um grafo

Todos os modernos sistemas de arquivos so organizados assim.


Em
rvore, ou
grafos;
Sistemas de Arquivos
Organizao hierrquica Em rvore

Um sistema de diretrio hierrquico


Sistemas de Arquivos
Organizao em rvore

Vantagem:

Classificao hierrquica em qualquer nvel desejado;

Desvantagem:

Arquivos podem precisar estar em dois ou mais locais ao


mesmo tempo.
Nomes de caminhos
Nomes de caminhos

Quando o sistema de arquivos organizado como uma rvore de


diretrio, preciso algum modo de especificar o nome dos arquivos;

So usados comumente dois mtodos:


Nome de caminho absoluto;
Nome de caminho relativo;
Nomes de caminhos

Caminho absoluto
Caminho relativo
Nomes de caminhos absolutos

Os caminhos absolutos sempre iniciam no diretrio raiz;

Cada S.O. fornece uma forma diferenciada de indicar a separao de


diretrios:
Windows: \
MAC OS, Unix, Minix e Linux: /
MULTICS: >

Exemplo:
\home\douglas\fotos
/home/douglas/fotos
>home>douglas>fotos
Nomes de caminhos absolutos

Se o primeiro caractere do nome do caminho for o separador, ento


o caminho absoluto;

/home/users/douglas
users/douglas
./users/douglas
Nomes de caminhos

Caminho absoluto
Caminho relativo
Nome de caminho relativo

Usado juntamente com o conceito de diretrio de trabalho;


Tambm chamado diretrio atual;

Os comandos Unix:
cp /home/users/douglas/aula.doc /docs
cp aula.doc /docs

possuem o mesmo efeito se o diretrio atual for


/home/users/douglas
Apontadores gerais

A maioria dos S.O.s que suportam a hierarquia de rvores


possuem dois arquivos especiais em cada diretrio:
.
..

So arquivos que no podem ser removidos sem a remoo


completa do diretrio corrente;

O ponto referencia o diretrio atual;

O ponto-ponto referencia o diretrio pai;


Operaes com Diretrios
Exemplo de Chamadas de sistema do UNIX

1. Create:
Cria um diretrio vazio;
Exceto pelo . e pelo ..;
Programa responsvel: mkdir

2. Delete:
Remove um diretrio vazio;
Vazio quando possui somente . e ..;
Programa: rmdir
Referncias

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.;


Sistemas Operacionais. Conceitos e Aplicaes. Rio de
Janeiro: Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao
Sistemas de Arquivos
Implementao de Arquivos e Diretrios

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.3
Implementao de Sistema de Arquivos

Diferentes Vises

Usurio Projetista de S.O.


Quais operaes so Como so armazenados
permitidas; os arquivos e diretrios
no disco;
Como a rvore de
diretrios manipulada Quais so as estruturas
pela interface grfica; mais eficientes;
Implementao do Sistema de Arquivos

Um possvel layout de sistema de arquivo


Implementao do Sistema de Arquivos

Master boot record:


Fica localizado no setor 0 do disco rgido;
usado para iniciar o computador;
Contm a tabela de parties;
Uma das parties marcada como partio ativa;

Um possvel layout de sistema de arquivo


MBR

Quando um computador iniciado...


a BIOS l e executa o MBR;

O primeiro passo localizar a partio ativa;

Cada partio possui um bloco de boot;

O sistema operacional carregado aquele que referenciado no


bloco de boot da partio ativa;

Portanto, erros no boot podem estar situados em dois lugares


distintos:
Na MBR;
No bloco de boot da partio ativa;
MBR

Caracteriza-se por permitir at quatro parties, ditas primrias;

Caso seja necessrio um nmero maior, pode-se usar uma partio


como estendida;

Neste caso, essa partio ser um repositrio de unidades lgicas ou


parties lgicas.
Parties

Nem todas as parties precisam ter um S.O.;


O que bem comum nos dias de hoje:
C:\ D:\ E:\ (na Famlia Microsoft);
/boot; /home; /usr; (na Famlia UNIX)

Mas necessrio reservar um bloco de boot no espao reservado


para cada partio:
Parties

Nem todas as parties precisam ter um S.O.;


O que bem comum nos dias de hoje:
C:\ D:\ E:\ (na Famlia Microsoft);
/boot; /home; /usr; (na Famlia UNIX)

Mas necessrio reservar um bloco de boot no espao reservado


para cada partio: pois futuramente aquela partio poder receber
a instalao de um S.O.;
Implementao do Sistema de Arquivos

Informaes para carregar o S.O.


Um possvel layout de sistema de arquivo
Implementao do Sistema de Arquivos

Contem todos os principais parmetros sobre o


Sistema de Arquivos, exemplo:
Um possvel
Nmero layout
mgico, de sistema
para dequal
identificar arquivo
o S.A.
Implementao do Sistema de Arquivos

Um possvel layout de sistema de arquivo


Mapa de bits dizendo quais so os espaos livres
do disco;
Implementao do Sistema de Arquivos

Estrutura de Um possvel
dados, layout
que contm de sistema de arquivo
informaes
dos arquivos: permisso, dono, localizao;
1 por arquivo;
Implementao do Sistema de Arquivos

Um possvel
Topo da layout desistema
rvore do sistema de arquivo
de arquivos:
No Unix, o diretrio /
Implementao do Sistema de Arquivos

O restante ocupado
Um possvel pela maioria
layout dos bytes
de sistema de arquivo
armazenados na partio; Contem todos os
diretrios e arquivos pertencentes a hierarquia do
diretrio raiz;
Implementao do Sistema de Arquivos

ARQUIVOS x I-NODES

Estrutura de Um possvel
dados, layout
que contm de sistema de arquivo
informaes
dos arquivos: permisso, dono, localizao;
1 por arquivo;
Implementao de Arquivos

Alocao Contgua
Alocao por lista encadeada
Implementao de Arquivos
Alocao contgua

7 arquivos alocados sequencialmente no disco;

O algoritmo para armazenamento muito simples;

Sempre alocar o prximo arquivo depois da ltima posio


ocupada;
Implementao de Arquivos
Alocao contgua

O desempenho de leitura excelente;


preciso saber apenas:
o endereo do disco do primeiro bloco;
E o nmero de blocos do arquivo;

A chamada de sistema seek posiciona o cursor de leitura na posio


correta em tempo O(1);
Implementao de Arquivos
Alocao contgua

Qual o ponto fraco da alocao contgua?


Implementao de Arquivos
Alocao contgua

Qual o ponto fraco da alocao contgua?


Fragmentao do disco!!!
Implementao de Arquivos
Alocao contgua

Obviamente, ao se apagar um arquivo, o disco no pode ser


desfragmentado imediatamente;

Qual seria a complexidade desta operao?


Implementao de Arquivos
Alocao contgua

Mantendo as lacunas, ao se criar um novo arquivo, necessrio


saber o seu tamanho para indicar em qual lacuna ele ser alocado.

Qual poltica melhor?


Deixando a maior lacuna possvel? ou
Deixando a menor lacuna possvel?
Implementao de Arquivos
Alocao contgua

Fragmentao Externa;

Fragmentao Interna;

Fragmentao de Disco x Fragmentao de Arquivo


Implementao de Arquivos
Alocao contgua

Um dado interessante:
A alocao contgua foi largamente utilizada em antigos S.O.s,
por sua simplicidade na implementao;

Deixou de ser utilizada porque era necessrio saber o tamanho


do arquivo na hora de sua criao;

Mas, com o surgimento das mdia pticas somente para escrita


(CD-ROM, DVD), a alocao contgua passou a ser novamente
uma boa idia;
Implementao de Arquivos

Alocao Contgua
Alocao por lista encadeada
Alocao por lista encadeada

O objetivo da alocao por lista encadeada :


reduzir o processo de fragmentao gradual do disco;

Os arquivos no precisam estar necessariamente


armazenados em uma sequncia ininterrupta de blocos;
Alocao por lista encadeada

Armazenamento de um arquivo como uma lista


encadeada de blocos de disco
Alocao por lista encadeada

Assim, os arquivos do tipo diretrio precisam saber apenas o


primeiro endereo de cada arquivo;

O restante do arquivo pode ser encontrado a partir do primeiro


bloco;

Por outro lado, a leitura de todo arquivo utilizando acesso aleatrio


passa a ser mais lenta;
Somente operaes em disco!!!

Alm disso, a quantidade de dados que um bloco pode armazenar


deixa de ser potncia de 2, pois se perde com a alocao do
apontador para o prximo bloco;
Alocao por lista encadeada

Por que a leitura dos ponteiros no disco prejudicial?


Alocao por lista encadeada

Por que a leitura dos ponteiros no disco prejudicial?

Imagine que voc deseja ler apenas os ltimos bytes de um arquivo

E seu arquivo possui quase 500MB;

O S.O. precisa (em disco), navegar por todos os blocos at localizar os


ltimos blocos do arquivo;
Alocao por lista encadeada

Para resolver o problema de velocidade no acesso aleatrio, foi


proposta a tabela de alocao de arquivos;

O acesso aos ponteiros feito na memria principal;

FAT (File Allocation Table);


Alocao por lista encadeada

Alocao por lista encadeada usando uma tabela de alocao


de arquivos em RAM
Alocao por lista encadeada

A complexidade continua sendo a mesma para o acesso aleatrio:


O(n);

Mas agora, todo acesso feito diretamente na memria principal


(RAM);

A principal desvantagem deste mtodo que toda a tabela deve


estar em memria o tempo todo;
Alocao por lista encadeada

Um exemplo:

Para um disco rgido de 200 GB e blocos de 1 KB, qual o


tamanho da tabela de alocao de arquivos FAT??

Supondo cada entrada da tabela com aproximadamente 4 bytes.


i-node
i-node

Vantagens:

O i-node do arquivo s precisa estar em memria quando este


estiver aberto !!

Independente do tamanho do disco: 10 GB, 100 GB, 1000 GB...

Quantos arquivos podem estar abertos ao mesmo tempo?


Implementao de Diretrios
Implementao de diretrios

A funo principal do sistema de diretrios mapear o nome do


arquivo em ASCII na informao necessria para localizar os dados;

Endereo de disco de todo o arquivo;

Nmero do primeiro bloco;

Nmero do i-node;
Implementao de diretrios
Uma alternativa bvia armazenar as propriedades dos arquivos
diretamente na entrada do diretrio;
Esquema do MS-DOS

Outra alternativa armazenar um apontador para cada arquivo ou


diretrio filho do diretrio em anlise. Este apontador leva a uma
estrutura externa que contem todas as informaes do arquivo ou
diretrio;
Esquema index nodes (i-nodes), do UNIX

Esquema UNIX
Implementao de diretrios

(a) Um diretrio simples (usada pelo DOS)


entradas de tamanho fixo
endereos de disco e atributos na entrada de diretrio

(b) Diretrio no qual cada entrada se refere apenas a um


i-node (usada pelo UNIX)
Implementao de diretrios
Qual a vantagem se utilizamos tamanhos fixos nos nomes dos
arquivos e nos atributos?

Qual a desvantagem?
Implementao de diretrios
Entradas fixas vs Entradas variveis

O tamanho das entradas, sendo fixo ou varivel equivalente ao


problema em banco de dados, na declarao dos tipos:
char
varchar

Imagine uma tabela com 1 milho de registros de nome e senha,


sendo que foram declarados com varchar(50)... Como isso
influenciaria na busca?
Implementao de diretrios
Apagando diretrios com entradas variveis

Se utilizamos nomes de tamanhos variveis de arquivos na


estrutura do diretrio...

Imagine se este arquivo removido...

Uma lacuna, varivel, fica disponvel...

O prximo arquivo criado pode ter um nome maior e no se


encaixar na lacuna deixada...

Fragmentao externa tambm na rea de controle do S.O.


Implementao de diretrios
Busca por arquivos...

Qual a primeira idia que temos ao buscar arquivos em um


diretrio?
Busca linear: (n), onde n o nmero de arquivos;

Qual estrutura bsica pode ser utilizada para agilizar este processo
de busca?
Implementao de diretrios
Busca por arquivos...
Qual estrutura pode ser utilizada para agilizar este processo de
busca?

Utilizar uma tabela hash para cada diretrio...


Ao entrar com um nome buscado no diretrio, este mapeado em um
nmero n, de 0 a k.

O processo de busca em uma tabela hash muito mais eficiente que


uma lista (na busca por nomes);
Implementao de diretrios
Busca por arquivos...

A utilizao da tabela hash possui a vantagem de acelerar a busca,


mas...
Possui um gerenciamento mais complexo;

Mas lembrem-se que a hash teria que ser implementada em memria


secundria;

uma alternativa para sistemas que podem conter centenas ou


milhares de arquivos...
Exemplo de navegao na busca por
um arquivo
Implementao de Diretrios

Passos...

Antes de ser utilizado pelo usurio, por programas ou pelo prprio


sistema operacional, um arquivo precisa:

Ser identificado;

Ser localizado;

Ser aberto;
Implementao de Diretrios

Na fase de identificao (onde o usurio passa o nome do arquivo


para o sistema operacional caminho relativo ou caminho
absoluto), o S.O. faz uma chamada de sistema para localizar este
arquivo na entrada de diretrio especfica;

Se for um caminho relativo, o S.O. utiliza a entrada de diretrio atual;

Se for um caminho absoluto o S.O. tem que navegar na rvore de


diretrios;
Implementao de Diretrios

Se for um caminho absoluto o S.O. tem que navegar na rvore de


diretrio, por exemplo:

Arquivo /home/douglas/Desktop/teste.txt
O sistema abre a entrada de diretrio barra: /
Lembrando que o a entrada do diretrio raiz fica em uma posio conhecida
pelo prprio S.O.
Implementao de Diretrios

Se for um caminho absoluto o S.O. tem que navegar na rvore de


diretrio, por exemplo:

Arquivo /home/douglas/Desktop/teste.txt
O sistema abre a entrada de diretrio /

Exemplo de contedo do /
bin -> I-node = 01
boot -> I-node = 02
dev -> I-node = 03
etc -> I-node = 04
home -> I-node = 05
lib -> I-node = 06
mnt -> I-node = 07
usr -> I-node = 08
var -> I-node = 09
Implementao de Diretrios
Arquivo /home/douglas/Desktop/teste.txt

No 5 I-node do sistema, encontramos ento informaes referentes ao


diretrio /home;

Neste I-node encontraremos, por exemplo, as seguintes informaes:


Endereo no disco do arquivo que contm a entrada de diretrio /home;
Permisses do diretrio /home
Leitura, Escrita e Execuo para:
Dono do diretrio;
Usurios que esto no mesmo grupo do dono do diretrio;
Todos os usurios.
Flags:
Somente leitura;
Diretrio oculto.
Tempo:
Criao;
ltima modificao;
ltimo acesso;
Implementao de Diretrios
Arquivo /home/douglas/Desktop/teste.txt

O sistema agora precisa descobrir se existe o diretrio Desktop


dentro do diretrio /home/douglas

Se o diretrio no existe, o S.O. reporta uma exceo;

Localizando o i-node de Desktop, o S.O. verifica se o usurio atual


possui permisso para acessar o arquivo
/home/douglas/Desktop/teste.txt
Implementao de Diretrios
Arquivo /home/douglas/Desktop/teste.txt

Caso tenha permisso, o arquivo pode ser aberto, atravs do


endereo fsico do primeiro bloco especificado pelo i-node do
arquivo /home/douglas/Desktop/teste.txt

Lembrando que atualmente os S.O. operacionais possuem apenas a


informao do primeiro bloco do arquivo. No empregada a
alocao contgua na memria.
Sistemas de Arquivo Journaling

Maior tolerncia a falhas;

Ideia Bsica: manter registro sobre o que o sistema de arquivos ir


fazer, antes mesmo que o faa

Permite ao sistema recorrer ao log em momentos de falha.


Leitura da Prxima Aula..

4.5 Exemplos de sistemas de arquivos


Referncias

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.;


Sistemas Operacionais. Conceitos e Aplicaes. Rio de
Janeiro: Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao
Sistemas de Arquivos
Exemplos de alguns sistemas de arquivos

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


Departamento de Cincias Exatas
verso da aula: 0.2
Sistema de Arquivos
do CP/M
O Sistema de Arquivos
CP/M
Ancestral direto do MS-DOS;

Possui acesso de mltiplos usurios (no concorrentes);

interessante olharmos o CP/M:


Muitas pessoas pensam que um computador precisa de 32MB de RAM
para executar;
Estas, deveriam saber que o CP/M funcionava bem com apenas 16KB
de RAM;
Sistemas embarcados podem se espelhar em solues deste antigo
sistema de arquivos;
O Sistema de Arquivos CP/M

17 chamadas de E/S;
Estas chamadas liam e
escreviam em
dispositivos como
teclado, tela, disco
flexvel;

Esquema de memria do CP/M


O Sistema de Arquivos CP/M

- O sistema
operacional em si.
- Ocupava apenas
3584 bytes.
- Menos de 4kB

Esquema de memria do CP/M


O Sistema de Arquivos CP/M

- O shell;
- Ocupava 2KB na
memria principal;

Esquema de memria do CP/M


O Sistema de Arquivos CP/M

- A maior parte fica


para os programas de
usurio.
- No sobrava tanto
assim na poca.

Esquema de memria do CP/M


O Sistema de Arquivos CP/M

- Reservado 256 bytes


para uso do shell
(buffer)

Esquema de memria do CP/M


O Sistema de Arquivos
CP/M

O sistema de arquivos possui apenas um diretrio de entradas fixas


(32Kb);

Possui 38 chamadas de sistema.


A maioria para ler e escrever em arquivos;

Neste S.A., existe a preocupao interessante:


ao carregar um arquivo as informaes do diretrio so descartadas da
memria principal;
O Sistema de Arquivos
CP/M

O interessante do CP/M sua simplicidade e bom relacionamento


com pouca memria RAM;

Segundo Andrew S. Tanenbaum, um programador experiente pode


implementar um sistema de arquivos equivalente em uma semana!!!

Para muitas aplicaes embarcadas, pode ser uma alternativa


interessante;
Sistema de Arquivos
do MS-DOS
Sistema de Arquivos do MS-DOS

Baseado no CP/M;

Executado somente na plataforma Intel;

No suporta multiprogramao;
Isso implica em um sistema de arquivos bem simplificado, sem controle
de concorrncia nas estruturas de arquivos e diretrios;
Sistema de Arquivos do MS-DOS
Apenas o diretrio raiz

As funes bsicas do MS-DOS so:


Tratar o teclado, carregar programas e gerenciar o sistema de arquivos;

O MS-DOS 1.0, assim como o CP/M, possui apenas um diretrio;


Sistema de Arquivos do MS-DOS
Nomenclatura

A nomenclatura de arquivos tambm foi herdada do ancestral


CP/M:
Nome de at 8 caracteres;
Extenso de at 3 caracteres;

A partir do MS-DOS 2.0 a funcionalidade do sistema de arquivos foi


expandida de forma considervel;
Sistema de Arquivos do MS-DOS
Estrutura

O maior aperfeioamento constituiu na incluso de um sistema


hierrquico de arquivos no qual os diretrios poderiam ser
aninhados em uma profundidade arbitrria;

Tal estrutura recursiva amplamente utilizada em tempos atuais;


Sistema de Arquivos do MS-DOS
Segurana

Diferente do CP/M, o MS-DOS 2.0 no possui acesso de diferentes


usurios;

Aquele que estiver utilizando o sistema, tem acesso a todos os


arquivos;

Ou seja, o S.O. no precisava implementar o controle de


concorrncia.
Sistema de Arquivos do MS-DOS
Entrada dos diretrios

No MS-DOS implementada a entrada de diretrios de tamanho


fixo;
Sistema de Arquivos do MS-DOS
Entrada dos diretrios (estrutura dos arquivos)

Nomeinformaes
Possui e extenso do como:
arquivo.
somente
Se o nome possui
leitura?menos de 8
precisa deo cpia
caracteres, restante
de ser
segurana?
oculto? (entrada fixa).
desperdiado
arquivo
Nome: de 1dea sistema?
8 letras.
etc...
Extenso: de 1 a 3 letras.
Sistema de Arquivos do MS-DOS
Entrada dos diretrios (estrutura dos arquivos)

Possui informaes como:


somente leitura?
precisa de cpia de segurana?
oculto?
arquivo de sistema?
etc...
Sistema de Arquivos do MS-DOS
Entrada dos diretrios (estrutura dos arquivos)

Grande parte da entrada de


diretrios no utilizada!!!

???????????????
Sistema de Arquivos do MS-DOS
Entrada dos diretrios (estrutura dos arquivos)
Data e hora de criao.

Obs.: Reserva poucos bits para


representar o ano. Na prtica o
MS-DOS s funcionar at o
ano de 2107.
Sistema de Arquivos do MS-DOS
Entrada dos diretrios (estrutura dos arquivos)

Apontador para o incio do


arquivo
Sistema de Arquivos do MS-DOS
Entrada dos diretrios (estrutura dos arquivos)

Indica o tamanho do arquivo.


Em teoria, at 4GB.
Sistema de Arquivos do MS-DOS
FAT

O sistema de arquivos FAT existe em 3 verses:


FAT12;
FAT16;
FAT32;

Na verdade, FAT32 no um nome adequado;

Somente os 28 bits menos significativos so utilizados pelo sistema


de arquivos FAT32;
Sistema de Arquivos do MS-DOS
FAT

Fat 12 blocos 512 bytes 2 x 512 bytes => no mximo 2 MB

FAT de 4.096 entradas de 2 bytes cada


Blocos adicionais de 1KB, 2 KB e 4 KB 64 MB no mximo..

Fat 16 blocos at 32 KB
2 GB a maior partio -> 8 GB disco

Fat 32 no mximo 2 TB
2 ^ 28 x 2 ^ 15
Sistema de Arquivos
do Windows
No Windows 95...

A verso original do Windows 95 usava o mesmo sistema de arquivos do


MS-DOS (FAT12 ou FAT16):
Nomes de 8 caracteres;
Extenso de 3 caracteres;

A partir da segunda verso do Windows 95 foram permitidos nomes mais


longos (introduo do FAT32).

Alm disso, o FAT32 possibilitou a utilizao de parties com mais de 2GB


e discos maiores que 8GB.
No Windows 98

No Windows 98, a mesma estrutura da 2 verso do Windows 95 foi


utilizada.
Inclusive o FAT32 ainda foi utilizado no Windows Me.

Ao possibilitar a criao de arquivos com mais de 11 caracteres, um


problema de compatibilidade surgiu com os antigos sistemas
Windows (3.x, e 1 verso do Win95);
No Windows 98

As entradas dos diretrios, referentes aos arquivos, no FAT16


possuam 10 bytes livres, chamados de espao reservado;

A utilizao destes 10 bytes no foi utilizada para os nomes longos


dos arquivos, mas interessante entender algumas mudanas.
Compatibilidade entre Win95 e Win98

Entrada do arquivo no FAT16

Entrada do arquivo no FAT32


Compatibilidade entre Win95 e Win98

As mudanas consistem na adio de 5 novos campos nos antigos 10


bytes reservados;
Compatibilidade entre Win95 e Win98

O campo NT servir para


compatibilidade com o
WinNT; O objetivo mostrar
o nome dos arquivos
corretamente;.
Compatibilidade entre Win95 e Win98

O campo segundos fornece


uma preciso adicional ao
horrio de criao do arquivo.
A preciso passa a ser de
10ms.
Compatibilidade entre Win95 e Win98

Data e horada criao do arquivo;


Compatibilidade entre Win95 e Win98

Armazena a data do ltimo


acesso;
No armazena o horrio;
Compatibilidade entre Win95 e Win98

Com um sistema de 32bits,


precisamos de 32bits para Faz sentido com o
apontar para o bloco inicial do complemento dos 16 bits
arquivo; menos significativos;
Este campo adicional so os
16 bits mais significativos do
apontador para o bloco inicial
do arquivo em disco.
Compatibilidade entre Win95 e Win98
Mas at ento, nenhuma informao adicional foi em relao ao
nome do arquivo, que agora deve suportar mais caracteres;

A soluo encontrada pela MS foi atribuir 2 nomes para cada


arquivo do S.O.:
Um nome potencialmente longo (UNICODE), para ter compatibilidade
com o WinNT;
Um nome de 8+3 caracteres, para compatibilidade com o MS-DOS;
Compatibilidade entre Win95 e Win98

Assim, todo arquivo possui um nome compatvel com o MS-DOS;


Maravilha!!!

Agora vem a gambiarra maior!!! No faa isso em casa ou em algum


trabalho prtico desta disciplina!!!

O nome longo do arquivo armazenado em entradas de diretrio,


que antecedem a entrada do arquivo...
Compatibilidade entre Win95 e Win98
As entradas extras so armazenadas em ordem inversa;
Exemplo de arquivo com o nome:
The quick brown fox jumps over the lazy dog
Compatibilidade entre Win95 e Win98

Nome compatvel com o


MS-DOS;
Compatibilidade entre Win95 e Win98

Imagine agora, se o usurio utilizando o MS-DOS altera o nome do


arquivo...

O que acontece com o nome longo do arquivo que est nas outras
entradas???
Sistema de Arquivos
do UNIX V7
Sistema de Arquivos do UNIX V7

Mesmo as primeiras verses tinham um sistema de arquivos


multiusurio bastante sofisticado, j que ele derivado do
MULTICS;

Aqui, ser discutido o sistema de arquivos V7, implementado na


poca do PDP-11.

O sistema de arquivos existe na forma de uma rvore, iniciando-


se no diretrio raiz /;
Sistema de Arquivos do UNIX V7

Os nomes dos arquivos podem ter at 14 caracteres;

Pode utilizar qualquer caractere ASCII,


exceto /;

Se o tamanho do nome do arquivo for menor que 14 caracteres, NUL


(0) utilizado para preencher os espaos que sobram.
Sistema de Arquivos do UNIX V7

Uma entrada de diretrio do UNIX V7


Sistema de Arquivos do UNIX V7

Limita o nmero de
arquivos do sistema em 64k
Sistema de Arquivos do UNIX V7

Alguns atributos contidos no i-node:


Tamanho do arquivo;
Data e hora de criao;
Data e hora do ltimo acesso;
Data e hora da ltima alterao;
Proprietrio;
Grupo;
Informaes de proteo;
Contador do nmero de entradas de diretrio que aponto para o i-node;
Sistema de Arquivos do UNIX V7
Armazenamento dos dados dos arquivos em disco

Os 8 primeiros endereos de disco do


arquivo so armazenados no prprio i-
node;

Se no for suficiente, o ltimo apontador


indica uma estrutura que contem o
restante dos endereos do contedo do
arquivo;
Sistema de Arquivos do UNIX V7
Armazenamento dos dados dos arquivos em disco
Sistema de Arquivos do UNIX V7
Acesso aos arquivos no UNIX (ou em outro sistema)

Localizando: /usr/ast/mbox
Leitura adicional

O Sistema de Arquivos do UNIX;


Captulo 10.6
Sistemas Operacionais Modernos, 2 edio;

O Sistema de Arquivos do Windows 2000;


Captulo 11.7
Sistemas Operacionais Modernos, 2 edio;
Referncias

TANENBAUM, A. S., Sistemas Operacionais Modernos,


2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.; Sistemas


Operacionais. Conceitos e Aplicaes. Rio de Janeiro:
Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao

Gerncia de Processos
Introduo

Material produzido por Prof. Humberto


Brando
humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Introduo

Relembrando o que j foi discutido:

Em um sistema de multiprogramao, a CPU alterna de um


programa para outro, executando cada um dezenas de
milisegundos, por exemplo;

Tal artifcio, gera no usurio final uma impresso falsa de


paralelismo na execuo dos diferentes programas;

Isso comumente chamado na comunidade de


pseudoparalelismo.
Introduo (2)

Computadores tambm podem trabalhar com o


paralelismo real:

Seja ele em componentes do hardware;


Hardware especial para efetuar operaes em matrizes
como em placas de vdeo;

Seja ele na utilizao de duas ou mais CPUs, compartilhando a


mesma memria fsica.
Monoprogramao
necessrio uma fila, por
D exemplo, para escalonar os
Processos

C processos.
B
Estes so executados por
A completo antes de ceder a
CPU.
Tempo
Multiprogramao
Antes de terminar todo o
D processamento, os
Processos

processos podem ser


C interrompidos para ceder a
B CPU a um outro processo.
A
Isso cria uma falsa
impresso de paralelismo.
Tempo
Introduo (3)

Ao compartilhar a mesma memria fsica, comeam a


aparecer alguns problemas clssicos da disciplina de
Sistemas Operacionais;

Com os anos, projetistas de sistemas operacionais


desenvolveram um modelo que torna o paralelismo mais
fcil de tratar:
Modelo de Processos Seqenciais.
Modelo de Processo

Neste modelo, todo o software, incluindo o prprio sistema


operacional organizado em um conjunto de processos
seqenciais;

Relembrando:

Um processo :
Um programa em execuo;
Um processo inclui:
Registradores;
Contador de programa
Contador de pilha
Variveis estticas;
Variveis dinmicas
E outras informaes necessrias para gerenciar a sua execuo;
Processos
Modelo de Processo

(a) Execuo seqencial


um contador de programa;
(b) Paralelismo: Modelo conceitual de 4 processos seqenciais,
independentes;
Quatro contadores de programa;
(c) Pseudo-paralelismo: Somente um programa est ativo a cada
momento
Um contador de programa para cada processo;
Observaes

Com a CPU alternando entre processos, a velocidade de


execuo de cada processos:

No ser uniforme;

Nem reproduzvel, se os mesmos processos forem executados


novamente;
Isso ocorrer se o quantum for baseado em tempo;
Na prtica.
Isso no ocorrer se o quantum for baseado em instrues
executadas e se os mesmos processos forem iniciados exatamente
da mesma forma;
No existe S.O. assim.
Criao de Processos
Criao de Processos
O S.O. pode ter diferentes polticas para a criao de
processos:
Em um sistema especfico, como um controlador de um foguete,
todos os processos necessrios para o funcionamento do
equipamento podem ser inicializados junto ao sistema, sem a
necessidade de criar processos dinamicamente (on-the-fly).

Isso s possvel quando admitimos que nosso sistema tem total


controle sobre todas as suas operaes;
Criao de Processos

Contudo, em sistemas de uso geral, necessrio algum meio para


criar processos dinamicamente.

Existem 4 meios gerais, onde os processos so criados:


(1) Na inicializao do sistema;

(2) Execuo de uma chamada de sistema de criao de processo,


por um processo em execuo;

(3) Uma requisio do usurio para criar um novo processo;

(4) Execuo de uma tarefa (job) em lote;


Criando um processo...

No UNIX
Existe apenas a chamada de sistema fork para criar um novo
processo no UNIX;

Esta chamada cria um clone do processo que o criou.

Imediatamente aps, invocada a chamada de sistema execve para


mudar o contedo do seu espao de endereamento, adotando as
caractersticas do novo processo;
Criando um processo no UNIX (2)

Por que criar um clone, e depois alterar o espao de endereamento


do processo filho?

Antes de executar a chamada execve, o novo processo consegue


redirecionar sua entrada padro, sada padro, e sada de erros
padro, copiando as configuraes do processo pai;
Criando um processo no Windows

Existe apenas uma chamada de sistema, chamada


CreateProcess;

Esta chamada possui 10 parmetros:


Atributos de segurana;
Bits que controlam se os arquivos abertos so herdados;
Informaes de prioridade;
Especificao de janela (se houver);
Etc...
Criando Processos

Tanto no UNIX, quanto no Windows, o novo processo possui um


espao de endereamento distinto do processo criador;

Ou seja, nenhuma memria de escrita compartilhada;

Tal deciso de projeto garante a consistncia do sistema como um


todo;

A comunicao entre eles limitada:


escrita/leitura do disco;
Envio/recebimento de pacotes na rede (127.0.0.1), por exemplo, via
conexo socket;
O pai pode receber a informao do filho aps o filho terminar sua
execuo (exit(0)... exit(1));
Trmino de Processos
Trmino de Processos

Existem 4 formas gerais de um processo ser finalizado:

(1) Sada normal (voluntria);


(2) Sada por erro (voluntria);
(3) Erro fatal (involuntria);
(4) Cancelamento por outro processo (involuntria).
- O usurio matar processos via terminal (unix: kill, xkill);
- O sistema operacional pode identificar que o processo entrou em
deadlock.
- Nem todos os S.O.s implementam esta poltica;
- Algoritmos em grafos neste caso so utilizados para a deteco.
Trmino de Processos

Trmino voluntrio:
No UNIX, existe a chamada exit;
No Windows, existe a chamada ExitProcess;

Trmino involuntrio:
No UNIX, existe a chamada kill;
No Windows, existe a chamada TerminateProcess;
Hierarquia de Processos
Hierarquia de Processos

Sistemas podem apresentar uma hierarquia na


organizao dos processos vivos no sistema
operacional;

Uma rvore de
processos
A criou dois processos
filhos: B e C
B criou trs processos
filhos: D, E, e F
Hierarquia de Processos
No UNIX

No UNIX a hierarquia existe. Exemplo:

init

login login login

shell
shell

firefox Acrobat reader


Hierarquia de Processos
No Windows

O Windows XP no apresenta nenhum conceito de


hierarquia de processos;

O Windows Vista j conta com esta hierarquia.


Estados de um Processo
Estados de um Processo

Considerando a funcionalidade da multiprogramao,


podemos identificar imediatamente dois estados
fundamentais para cada processo:

Executando (tem a sua vez na CPU);


Aguardando (em espera para continuar a sua execuo);
Estados de um Processo
Diagrama de transio simplificado

Entra Despacho Sai


Pronto Executando
Pausa

D
Processos

C
B
A

Tempo
Estados de um Processo
Diagrama de transio simplificado

Entra Despacho Sai


Pronto Executando
Pausa

Qual uma possvel implementao para este modelo


simplificado?
Estados de um processo
Diagrama de transio simplificado:
Possvel implementao...

Fila
Entra Despacho Sai
CPU

Pausa

Entra Despacho Sai


Pronto Executando
Pausa
Estados de um Processo
Diagrama de transio simplificado

Entra Despacho Sai


Pronto Executando
Pausa

D
Qual o problema
Processos

C
deste modelo B
simplificado? A

Tempo
Estados de um Processo

Se o processo aguarda algum evento externo a sua


execuo, no faz sentido que ele esteja no conjunto dos
processos prontos para executar, pois desta forma, ele
acaba atrapalhando outros processos que tambm tem
a necessidade de executar naquele instante;

Para contornar tal problema, atribudo um novo estado


ao processo:
Estado Bloqueado.
Estados de um processo
Diagrama de transio mais elaborado

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Processos que esto aguardando eventos externos no podem ocupar a CPU


Estados de um processo
Diagrama de transio mais elaborado

Entra Despacho Sai


Pronto Executando
Pausa

Transio causada pelo


O evento Aguardando
escalonador de processos;
ocorreu evento

Bloqueado

Processos que esto aguardando eventos externos no podem ocupar a CPU


Estados de um processo Transio causada
tambm pelo escalonador
Diagrama de transio mais elaborado
de processos;

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Processos que esto aguardando eventos externos no podem ocupar a CPU


Estados de um processo
Diagrama de transio mais elaborado

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Transio ocorre quando


acontece algum
Processos evento
que esto esperado eventos externos no podem ocupar a CPU
aguardando
por aquele processo.
Estados de um processo
Diagrama de transio mais elaborado

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Transio ocorre quando


aconteceno
Processos que esto aguardando eventos externos o processo vai aguardar
podem ocupar a CPU
algum evento.
Estados de um processo
Diagrama de transio mais elaborado:
Possvel implementao...
Fila de prontos
Entra Despacho Sai
CPU

Pausa

Ocorre evento
Lista de bloqueados Espera evento

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado
Leitura da Prxima Aula

Threads

Sistemas Operacionais Modernos

2.2 Threads
2.2.1 O modelo de Thread
2.2.2 O uso de Thread
2.2.3 Implementao de Threads de usurios
2.2.4 Implementao de threads de ncleo
2.2.5 Implementaes hbridas
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.;


Sistemas Operacionais. Conceitos e Aplicaes. Rio de
Janeiro: Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais
Gerncia de Processos
Threads

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
ltima aula

Introduo ao gerenciamento de processos


Modelo de processo;
Criao de processo;
Trmino de processo;
Noes do escalonador de processos;
Noes de comunicao inter-processo.
Threads
O conceito de processo, define que somente o prprio processo tem acesso
ao seu espao de endereamento; FFFF
Pilha

Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos

Texto

Reservado
0000

Esta questo fundamental para segurana e consistncia das aplicaes, de


forma geral.

Contudo, freqentemente existem situaes em que desejvel ter


execues separadas acessando o mesmo bloco de endereos na memria
do computador.

Por questes de eficincia no compartilhamento de informaes, ou para


aproveitar melhor a ociosidade do processador.
Threads
Assim como os processos, os threads possuem:

um contador de programa que indica qual a prxima


instruo a ser executada;

Uma pilha de execuo especfica, que traz a histria da


execuo do thread, para indicar todas as chamadas que ainda
no obtiveram retorno;

Registradores, que indicam suas variveis atuais de trabalho.


FFFF
Pilha

Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos

Texto

Reservado
0000
Threads

Processos so utilizados para agrupar recursos;

Threads so entidades escalonadas, podendo compartilhar


recursos com outros threads irmos;

As vezes, pelas caractersticas semelhantes, threads so


denominados processos leves.

Comumente, encontramos o termo multithread para descrever um


sistema que permite mltiplos threads no mesmo processo;
Threads
(a) 3 threads,
mas habitando 3 processos distintos;
(b) 3 threads,
habitando o mesmo processo;
Threads

Threads distintos em um processo no so to


independentes quanto threads em processos distintos;

Threads compartilham as mesmas variveis globais do


processo, tendo independncia apenas em suas variveis
armazenadas na sua prpria pilha de execuo;
Threads

Alm de compartilhar o
mesmo espao de
endereamento, os threads
compartilham o mesmo
conjunto de arquivos abertos,
processos filhos, etc...
Estados do Thread
Threads

Assim como um processo normal, um thread pode assumir


estados distintos:

Em execuo;
Bloqueado;
Pronto;
Finalizado;

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado
Operaes com Threads
Threads

Este por sua vez, pode criar quantos threads forem


necessrios, de acordo com a necessidade de sua aplicao;

Thread novo = new Thread()

A criao atravs de um procedimento de biblioteca:


thread_create
Threads
Entra Despacho Sai
Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Quando o thread finaliza seu trabalho, ele pode invocar a


chamada thread_exit;

Depois disso ele desaparece e no mais far parte da fila


dos threads escalonveis, passando ao estado finalizado;
Neste caso libera totalmente o seu subespao no espao de
endereamento do processo.

O thread tambm pode se bloquear para esperar outro


thread terminar sua execuo, atravs da chamada
thread_wait;
Threads

O thread pode desistir voluntariamente da utilizao da


CPU, para deixar outro thread executar. Este procedimento
feito atravs da chamada thread_yield;
Mas o escalonador de processos que decide qual o prximo a entrar
no processador. O programador no tem como controlar isso...

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Em Java, a funo que invoca esta chamada de sistema a


yield da classe Thread.
Threads

O thread pode tambm entrar no estado bloqueado,


assumindo assim que aguarda um evento externo para
continuar seu processamento.

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Em Java, a funo que invoca esta chamada de sistema a


wait da classe Object. (bloqueia o thread corrente que
invocou o mtodo) Apenas o prprio thread pode se
bloquear!!!
O Uso dos Threads
O Uso dos Threads

Mas afinal....

Qual (so) a(s) razo(es) de utilizarmos threads?


O Uso dos Threads

1 razo:

Algumas vezes, a execuo em paralelo de atividades, que


poderiam ser implementadas seqencialmente, pode
oferecer um ganho considervel de performance;

Exemplos:

Navegadores. Ao carregar as imagens de um site...

Mquinas de busca requisitando diferentes sites da rede...


O Uso dos Threads

2 razo:

muito mais rpido criar um thread do que criar um


processo;

Em alguns sistemas operacionais, este procedimento chega


a ser 100 vezes mais rpido;
O Uso dos Threads

3 razo (talvez a principal delas):

Em muitas aplicaes, necessria a ocorrncia de


mltiplas atividades distintas, ao mesmo tempo;

O modelo de programao se torna bem mais simples


quando decompomos o processo em vrios threads para o
gerenciamento de todas as atividades;

Exemplo:
Sistema de investimento automatizado na bolsa de valores
O Uso dos Threads Um exemplo
Editor de textos simples
O Uso dos Threads Um exemplo
Editor de textos simples

Um thread fica
responsvel por
capturar a entrada do
teclado
O Uso dos Threads Um exemplo
Editor de textos simples

Outro fica responsvel


pela atualizao visual
da aplicao.
O Uso dos Threads Um exemplo
Editor de textos simples
Outro pelo salvamento
automtico do
documento.
O Uso dos Threads Um exemplo
Editor de textos simples

possvel que 3 processos gerenciem este editor


de textos?
O Uso dos Threads Um exemplo
Editor de textos simples

possvel que 1 processo, com 1 thread gerencie


este editor de textos?
O Uso dos Threads Outro Exemplo
Um servidor web utilizando o conceito de cache

Vamos imaginar um servidor web recebendo dezenas de requisies


por segundo;
O Uso dos Threads Outro Exemplo
Um servidor web utilizando o conceito de cache

O thread despachante
recebe as requisies e
encaminha cada uma
para um thread
operrio...
O Uso dos Threads Outro Exemplo
Um servidor web utilizando o conceito de cache
O thread operrio
consulta se a requisio
est na cache das ltimas
pginas visitadas. Se
no estiver, ela efetua
acesso ao disco (mais
lento).
O Uso dos Threads Outro Exemplo
Um servidor web utilizando o conceito de cache

Faz sentido cada thread operrio invocar a chamada


thread_exit sempre que retornar uma requisio?
Implementao de Threads
Nvel de Usurio vs Nvel Ncleo
Implementao de Threads

Implementao a nvel de usurio

Quais so as
vantagens e as
desvantagens?
Implementao de Threads
Implementao a nvel de
usurio:
Vantagens:
Podemos utilizar o recurso de
threads, mesmo se o S.O. no
suportar;

As operaes so mais rpidas a


nvel de usurio, se comparadas
com o nvel de kernel; Pq???

Cada processo pode ter seu prprio


algoritmo de escalonamento
(customizado);
Implementao de Threads

Implementao a nvel de usurio:

Desvantagens:

O usurio precisa garantir o


funcionamento do sistema;

Cada thread precisa avisar o


supervisor que est passando a sua
vez.
Implementao de Threads

Implementao a nvel de kernel (ncleo)

Quais so as
vantagens e as
desvantagens?
Implementao de Threads
Implementao a nvel de
ncleo:

Vantagens:

Uma vez validado o algoritmo


dentro do S.O., todos os processos
podem utiliz-lo;

O tempo de ocupao na CPU fica


melhor dividido se o kernel conhece
todos os threads ativos;
Implementao de Threads
Implementao a nvel de
ncleo:

Desvantagens:

Operaes so bem mais lentas a


nvel de kernel;

Cada processo fica sujeito a poltica


de escalonamento do prprio
sistema operacional;
Implementao de Threads
Modelo Hbrido
Leitura para prxima aula

Sistemas Operacionais Modernos:

2.3 Comunicao Interprocessos


2.3.1 Condies de disputa
2.3.2 Regies Crticas
2.3.3 Excluso Mtua com Espera Ociosa
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.;


Sistemas Operacionais. Conceitos e Aplicaes. Rio de
Janeiro: Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao
Gerncia de Processos
Comunicao Interprocessos - Introduo

Material produzido por Prof. Humberto


Brando
humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
ltima aula

Threads
Importncia;
Diagrama de estados;
Exemplo de aplicaes que necessitam de threads.
Comunicao Interprocessos

Em muitas situaes desejado/necessrio o


compartilhamento de informaes entre diferentes
processos;

A mesma demanda existe no compartilhamento de


informaes entre diferentes threads.

Alguns problemas (algumas vezes graves) surgem em


virtude do compartilhamento;

Estes so idnticos a nvel de processo e a nvel de threads.


Comunicao Interprocessos

Definio: Condio de Disputa:

Dois ou mais processos/threads disputam a manipulao da(s)


mesma(s) posio(es) de memria;

Vamos imaginar uma instncia da classe Fila que indica a ordem


dos arquivos a serem impressos em uma impressora;

Diferentes processos podem ter acesso a esta fila, para indicar


quais arquivos devem ser impressos;

Todos os processos podem requisitar impresses, a qualquer


instante.
Comunicao Interprocessos

out indica qual o prximo arquivo a ser lido;


in indica o final da fila de impresso;
Comunicao Interprocessos

Dois processos tentam ao mesmo tempo, colocar documentos


na fila de impresso.
Comunicao Interprocessos

O processo B captura a
informao da varivel global in,
e a armazena.

out indica qual o prximo arquivo a ser lido;


in indica o final da fila de impresso;
Comunicao Interprocessos

Em
umoutsegundo momento,
indica qual o
o prximo arquivo a ser lido;
escalonador de proceasso do S.O.
in aindica
ordena sada o
dofinal da fila
processo de impresso;
B do
processador e invoca o processo
A.
Comunicao Interprocessos
O processo A, que tambm
precisa imprimir um documento,
descobre que a entrada da fila
na posio 7, e insere seu
documento no fim da fila.

docA.txt

out indica qual o prximo arquivo a ser lido;


in indica o final da fila de impresso;
Comunicao Interprocessos

docA.txt

Em
um
outquarto
indicamomento, o S.O.
qual o prximo arquivo a ser lido;
ordena a sada do processo A do
in indica
processador o finaloda
e invoca fila de impresso;
processo
B.
Comunicao Interprocessos

docB.txt

O processo B, que havia


armazenado a posio 7, agora
insere seu documento a ser
out indica qual o prximo arquivo a ser lido;
impresso.
in indica o final da fila de impresso;
Comunicao Interprocessos
Repare que a fila de impresso
est consistente!!!

docB.txt

Com isso, o documento do processo B ser impresso, e o processo


A nem desconfiar que algo deu errado, deixando o usurio
esperando na sala de impresso.
Regio Crtica

Neste caso, chamamos a fila da impressora, que armazena


informaes que devem ser compartilhadas, de REGIO CRTICA.

O que devemos fazer para evitar as condies de disputa?

A soluo para este problema denominada excluso mtua.


Excluso mtua entre os processos A e B
Os 4 mandamentos para a
Excluso Mtua

(1) Nunca dois processos podem estar simultaneamente na regio


crtica;

(2) Nada pode ser afirmado sobre a velocidade e/ou nmero de


processadores;

(3) Nenhum processo executando fora da sua regio crtica pode


bloquear outros processos;

(4) Nenhum processo deve esperar eternamente para entrar em sua


regio crtica;
Exemplos relacionados em Cincia da
Computao
Exemplos

Onde est(o) a(s) regio(es) crtica(s)?

Exemplo do Servidor HTTP:


Exemplos

Onde est(o) a(s) regio(es) crtica(s)?

Gerncia de Configurao:

Desenvolvedor Analista

alterar arquivo no servidor

Gerente
Exemplos

Onde est(o) a(s) regio(es) crtica(s)?

Gerncia de Configurao:

Vamos imaginar:

Analista abre o arquivo x.cpp


Desenvolvedor abre o arquivo x.cpp

Analista corrige um bug e salva o x.pp


Desenvolvedor implementa uma nova funcionalidade e salva x.cpp

O sistema continua com o bug.


Exemplos

Onde est(o) a(s) regio(es) crtica(s)?

Gerncia de Configurao:
Excluso Mtua
Utilizando Espera Ociosa
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Desabilitando interrupes

Soluo a nvel de hardware;

Antes de um processo entrar na regio de compartilhamento de


informaes (regio crtica), ele desabilita a interrupo de
relgio (clock);

Isso feito porque os algoritmos de escalonamento de processos


utilizam esta interrupo para preemptar processos;
So avisados a cada interrupo de clock.
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Desabilitando interrupes

Se o algoritmo de escalonamento do SO nunca avisado, ento o


processo ATIVO nunca deixa a CPU;

Ele deve habilitar a interrupo de relgio assim que sair da


regio crtica.

Repare que esta uma responsabilidade do programador, e no do


Sistema Operacional.
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Desabilitando interrupes

Vantagem:
Promove a excluso mtua, garantindo definitivamente o acesso
exclusivo regio crtica;

Desvantagem:
Um processo, desenvolvido por qualquer pessoa, pode bloquear
TODO o sistema operacional.
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Desabilitando interrupes

uma tcnica muito til dentro da implementao do prprio


Sistema Operacional;

Mas de impactos considerveis se disponibilizada a nvel de


usurio;

S.O.s modernos no disponibilizam esta chamada de sistema


para os usurios;
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Variveis de Bloqueio (impedimento)

Tentativa de soluo em software;

Uma varivel utilizada para indicar se algum processo est ou


no na regio crtica:

lock = true //regio crtica ocupada...


lock = false //regio crtica desocupada...
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Variveis de Bloqueio (impedimento)

Causa o mesmo problema visto na aplicao da fila de


impresso;

Exemplo de execuo com erro:

O processo A l a varivel lock, com o valor falso; O processo A


decide que vai entrar na regio crtica;

O S.O. preempta para o processo B, antes do processo A trocar o


valor da varivel lock;

O processo B, verifica a varivel lock, ainda com valor falso, e ambas


acabam invadindo a regio crtica.
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Variveis de Bloqueio (impedimento)

Ou seja, a soluo por variveis de bloqueio pode eventualmente


funcionar, mas no garante a excluso mtua em todas as
situaes;

Combinaes de duas variveis de bloqueio, junto com um sleep


por um tempo aleatrio fornece chances nfimas de dois ou mais
processos entrarem simultaneamente na regio crtica.

Mas, Quanto maior o numero de concorrentes, maior o risco; e o


sleep pode ser indesejado em muitas aplicaes de tempo real.
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Soluo de Peterson

A primeira soluo a nvel de software;

Surgiu na dcada de 60;

Sempre que o mtodo deseja entrar na regio crtica, ele deve


invocar:
enter_region( int process );

Sempre que o mtodo sair da regio crtica, ele deve invocar:


leave_region( int process );
Excluso Mtua Utilizando Espera Ociosa
Tcnica: Soluo de Peterson
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Soluo de Peterson

Apesar da soluo de Peterson resolver por completo o


problema da regio crtica, no deixando nenhuma possibilidade
de acesso indevido, ela possui um defeito considervel...

Qual este problema considervel?


Excluso Mtua Utilizando Espera Ociosa

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado
Excluso Mtua Utilizando Espera Ociosa

Tcnica: Soluo de Peterson

O processo que est aguardando sempre ocupa o processador


(lao while)... Ou seja, tempo desperdiado de CPU...

Alm disso, ele pode causar o problema chamado de inverso


de prioridades. Somente quando o escalonador implementa
poltica de prioridades.
Solues vistas

Desabilitando a interrupo de clock;


Funciona, mas possui desvantagens considerveis.

Variveis de impedimento (de bloqueio):


No garante todos os casos.
Combinaes de variveis de bloqueio aumentam a chance do projeto
funcionar, mas no garante matematicamente.

Soluo de Peterson:
Funciona, mas gasta tempo do processador com um loop que verifica se
o processo bloqueado pode entrar na regio crtica;
Ou seja, o processador perde tempo efetuando esperas desnecessrias.
Dormir e Acordar
Sleep and Wakeup

A partir de agora veremos solues sem a espera


ociosa...
Sleep and wakeup (Conceitos)

Sleep: uma chamada de sistema que o processo/thread pode


invocar;
Com esta chamada seu estado passa a ser bloqueado.
O processo/thread que chamou o mtodo quem dorme.

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado
Sleep and wakeup (Conceitos)

Wakeup: uma chamada de sistema que o processo/thread pode


invocar;
Um parmetro deve ser informado: qual processo/thread deve ser
acordado. Com esta chamada o processo indicado volta para a fila dos
processos prontos.

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado
Problema Clssico

Produtor Consumidor
Um Problema Clssico:
Produtor-Consumidor

Dois processos compartilham um buffer comum de tamanho fixo...


Processos produtor e consumidor
Este problema pode ser encontrado em inmeros casos prticos na
Cincia da Computao e Engenharias.

Quando o produtor quer colocar um novo item no buffer e ele j est


cheio, podemos colocar o processo para dormir (sleep);

De forma equivalente, quando o consumidor quer retirar um item,


mas o buffer est vazio, podemos colocar o processo consumidor
para dormir (sleep);
Um Problema Clssico:
Produtor-Consumidor

Se o buffer est vazio, e o produtor insere um novo item no buffer, o


mesmo pode disparar uma chamada de sistema na tentativa de
acordar consumidores que estavam dormindo...

De forma anloga, quando o buffer est cheio, e o consumidor


remove um tem do buffer, este pode disparar uma chamada de
sistema tentando acordar algum produtor que esteja dormindo.
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

O consumidor tenta
ler um item, mas o
buffer est vazio...

Processo Ativo
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Antes que o
processo entre no
estado bloqueado, o
S.O. efetua o

Processo Ativo
escalonamento...
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

O item produzido

Processo Ativo
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
O buffer est vazio,
ento a condicional
falha...
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
O item inserido no
buffer
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
count recebe 1!!!
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
Se o item foi
produzido, o outro
processo deve
acordar...

Mas repare, ele ainda


no dormiu de fato...
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
O processo produtor
tenta acordar o
processo consumidor,
mas o sinal perdido,
pois o outro processo
ainda no dormiu...
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup
Em loop, O processo
produtor vai produzir
itens at que o buffer
esteja cheio...

Processo Ativo
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Ativo
Se o buffer est cheio,
o processo ir dormir
(estado bloqueado)
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Bloqueado
O processo
consumidor assume o
processador e
tambm dorme...

Processo Ativo
Um Problema Clssico:
Produtor-Consumidor utilizando sleep/wakeup

Processo Bloqueado
Situao indesejvel!!!
Os processos dormem eternamente
DEADLOCK!!!!

Processo Bloqueado
Prxima aula

Sistemas Operacionais Modernos;


2.3.5 Semforos;
2.3.6 Mutexes;
2.3.7 Monitores
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.;


Sistemas Operacionais. Conceitos e Aplicaes. Rio de
Janeiro: Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao

Gerncia de Processos
Comunicao Interprocessos
(Sleep, Weakup, Semforos e Monitores)

Material produzido por Prof. Humberto


Brando
humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Semforos

O Holands Dijkstra alcanou em 1965 uma soluo para a


competio em regies crticas, sem utilizar a espera ocupada;

Sua proposta incluiu um novo tipo de varivel:


O semforo (varivel inteira positiva):
Pode indicar a quantidade de itens utilizados no buffer, por exemplo;

acompanhado de duas operaes bsicas:


down( Semaforo s );
up(Semaforo s );
Semforos
Operao down

public synchronized void down( Semaforo s ) throws Exception{


//garante a atomicidade da execuo do mtodo...
synchronized( this ){
//enquanto nao tem acesso ao semforo... a thread aguarda...
while( s.contador == 0 ){
this.wait();
}
//quando a thread tem acesso,
//o semaforo eh decrementado em uma unidade...
s.contador--;
}
}
Semforos
Operao down

public synchronized void down( Semaforo s ) throws Exception{


//garante a atomicidade da execuo do mtodo...
synchronized( this ){
//enquanto nao tem acesso ao semforo... a thread aguarda...
while( s.contador == 0 ){
this.wait();
}
//quando a thread tem acesso,
//o semaforo eh decrementado em uma unidade...
s.contador--;
}
}

Esta funo deve ser


indivisvel.
Atmica
Semforos
Operao down

public synchronized void down( Semaforo s ) throws Exception{


//garante a atomicidade da execuo do mtodo...
synchronized( this ){
//enquanto nao tem acesso ao semforo... a thread aguarda...
while( s.contador == 0 ){
this.wait();
}
//quando a thread tem acesso,
//o semforo decrementado em uma unidade...
s.contador--;
}
}

Mas ser indivisvel, no cai na


necessidade de desabilitar
interrupo de relgio?????
Semforos
Operao down

public synchronized void down( Semaforo s ) throws Exception{


Mas aquido
//garante a atomicidade da execuo a operao rpida, e
mtodo...
synchronized( this ){ se a interrupo de relgio for
//enquanto no tem acesso ao semforo... a thread aguarda...
while( s.contador == 0 ){ desabilitada por um breve
this.wait(); instante, no haver
} problemas..
//quando a thread tem acesso,
//o semforo decrementado em uma unidade...
s.contador--; A nvel de processo, so
} implementadas como chamadas
} de sistema (up/down);

Assim, processos de usurio


no podem utilizar de qualquer
forma a interrupo de clock
diretamente;
Semforos
Operao up
public synchronized void up( Semaforo num ){
//garante a atomicidade da execuo do mtodo...
synchronized(this){
//quando a thread libera o semforo,
//ele incrementado em uma unidade...
//isso possibilita que outra thread
//(que est dormindo) possa acessar
//a regio critica controlada pelo semforo.
num.contador++;

//acorda todas as outras threads que esto dormindo...


//uma delas vai obter acesso a regio crtica...
this.notifyAll();
}
}
Exemplo...

Um acesso a um arquivo compartilhado por dois


processos...

Vamos pensar...
Estes mecanismos de
Up and Down atualizao de variveis de
forma atmica surgiram pela
1950........................................................................................................
primeira vez na linguagem
Algol-68;
FORTRAN

1960.......................ALGOL-60...........COBOL............LISP......................

SIMULA ALGOL-68 PL/I BASIC


1970..................Pascal............................................................................
Smalltalk C PROLOG
Modula-2 ML
1980....................Ada...........DBASE-II..................................................

Miranda
Eifell C++
1990.....................................................................Haskell..........Godel...
Delphi Java C# Erlang F#

Orientado a objetos Imperativo Funcional Lgico


Soluo do Problema
Produtor-Consumidor Utilizando Semforos

A soluo utiliza 3 semforos:

full: para contar o nmero de elementos do buffer que esto


preenchidos;

empty: para contar o nmero de elementos do buffer que esto


vazios;

mutex: para assegurar que produtor e consumidor no tenham


acesso ao buffer ao mesmo tempo;
Soluo do Problema
Produtor-Consumidor Utilizando Semforos
Soluo do Problema
Produtor-Consumidor Utilizando Semforos

Vamos a um exemplo na execuo...


Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = ???
Fila de prontos N=2
mutex = 1
empty = 2
full = 0

Inicializao das
varievis...
Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = ???
Fila de prontos N=2
mutex = 1
empty = 2
full = 0

Suponha que o
consumidor
assume o
processador.
Na CPU Repare que o buffer
no incio est
vazio...
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = ???
Fila de prontos
=> Na CPU N=2
mutex = 1
empty = 2
full = 0

O semforo full
vale 0, e a operao
de down efetuada
sobre este valor...
Na CPU => Ento, a thread do
dormindo consumidor
dorme!!!
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 46
N=2
Na CPU mutex = 1
empty = 2
full = 0

O produtor produz
o item que ser
armazenado na
memria. Ex: 46
dormindo
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 46
N=2
mutex = 1
Na CPU empty = 2 => 1
full = 0

Down sobre o
semforo empty...

dormindo
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 46
N=2
mutex = 1 => 0
empty = 1
Na CPU
full = 0

Down sobre o
semforo mutex...

dormindo
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 46
N=2
mutex = 0
empty = 1
Na CPU full = 0

O item inserido
no buffer...

dormindo
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 46
N=2
mutex = 0 => 1
empty = 1
full = 0
Na CPU

up no semforo
mutex

dormindo
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 46
N=2
mutex = 1
empty = 1
full = 0 => 1
Na CPU

up no semforo
full. A thread do
consumidor est
aguardando a
dormindo => liberao de full...
fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 46
N=2
mutex = 1
empty = 1
Na CPU => full = 1
Fila de prontos

Suponha que o
escalonador agora
direciona a CPU
Fila de prontos =>
Na CPU
para o consumidor
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 46
N=2
mutex = 1
empty = 1
full = 1 => 0
Fila de prontos

Agora, ele consegue


passar da operao de
down em full, pois sabe
que existe um elemento
Na CPU produzido...
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 46
N=2
mutex = 1 => 0
empty = 1
full = 0
Fila de prontos

down sobre
mutex... Passa
tambm...

Na CPU
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 46
N=2
mutex = 0
empty = 1
full = 0
Fila de Prontos
=> Na CPU

Suponha que antes


de consumir o
item, que o
escalonador d a
vez para o
Na CPU => Fila produtor...
de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 78
N=2
mutex = 0
Na CPU
empty = 1
full = 0

Produz um novo
item.. Ex: 78

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 78
N=2
mutex = 0
Na CPU empty = 1 => 0
full = 0

Down sobre o
semforo empty...

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

46
item = 78
N=2
mutex = 0
Na CPU => empty = 0
dormindo full = 0

Down sobre mutex...


Mas mutex vale 0..
Ento o produtor
dorme... Proteo
necessria para somente
Fila de prontos um alterar o buffer ao
=> Na CPU mesmo tempo.
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 78
N=2
mutex = 0
empty = 0
dormindo
full = 0

Agora sim o item


consumido...

Na CPU
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 78
N=2
mutex = 0 => 1
Dormindo => empty = 0
Fila de prontos full = 0

Up em mutex coloca o
produtor na Fila de
prontos...

Na CPU
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 78
N=2
mutex = 1
empty = 0 => 1
Fila de prontos
full = 0

UP em empty...

Na CPU
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 78
N=2
mutex = 1
Fila de prontos empty = 1
=> Na CPU full = 0

Suponha uma troca feita


pelo escalonador
Na CPU => Fila
de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

item = 78
N=2
mutex = 1 => 0
empty = 1
Na CPU
full = 0

Down sobre mutex...

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

78
item = 78
N=2
mutex = 0
empty = 1
Na CPU full = 0

Agora, 78 inserido no
Buffer...
Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

78
item = 78
N=2
mutex = 0 => 1
empty = 1
full = 0
Na CPU

UP mutex..

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

78
item = 78
N=2
mutex = 1
empty = 1
full = 0 => 1
Na CPU

UP full..

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

78
item = 90
N=2
Na CPU
mutex = 1
empty = 1
full = 1

Produz novo item. Ex:


90.
Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

78
item = 90
N=2
mutex = 1
Na CPU empty = 1 => 0
full = 1

Down empty...

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer

78
item = 90
N=2
mutex = 1 => 0
empty = 0
Na CPU
full = 1

Down mutex...

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer
90

78
item = 90
N=2
mutex = 0
empty = 0
Na CPU full = 1

Insere 90 no buffer...

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer
90

78
item = 90
N=2
mutex = 0 => 1
empty = 0
full = 1
Na CPU

UP mutex...

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer
90

78
item = 90
N=2
mutex = 1
empty = 0
full = 1 => 2
Na CPU

UP full...

Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer
90

78
item = 23
N=2
Na CPU
mutex = 1
empty = 0
full = 2

Produz novo item...


Ex: 23..
Fila de prontos
Soluo do Problema Exemplo com
Produtor-Consumidor Utilizando Semforos N=2
2
Buffer
90

78
item = 23
N=2
mutex = 1
Na CPU =>
dormindo empty = 0
full = 2

Down empty... Ento, o


thread dorme,
Fila de prontos aguardando pelo menos
=> Na CPU 1 item ser consumido...
Exemplo

Assim, a produo e o consumo de itens segue sem que


o sistema entre em deadlock;

importante ressaltar que este algoritmo funciona para


qualquer quantidade de produtores e consumidores;
A quantidade no precisa ser idntica.
Solues vistas...

Quais foram as tcnicas apresentadas para tentar


promover a excluso mtua? (e que no promovem de fato)
Solues vistas...

Quais foram as tcnicas apresentadas para tentar


promover a excluso mtua? (e que no promovem de fato)

Variveis de bloqueio;
Funes Sleep e Wakeup;
Solues vistas...

Quais foram as tcnicas apresentadas que promovem a


excluso mtua? (ou seja, funcionam)
Solues vistas...

Quais foram as tcnicas apresentadas que promovem a


excluso mtua? (ou seja, funcionam)

Desabilitar interrupo de clock;


Algoritmo de Peterson;
Semforos.
Justificativa para Monitores

Semforos fornecem um mecanismo conveniente e eficaz para


a sincronizao de processos/threads;

Seu uso incorreto poder resultar em erros de sincronismo


difceis de detectar;

Esses erros s acontecem se ocorrerem em determinadas


seqncias de execuo, e essas seqncia nem sempre
ocorrem.
O que dificulta validar se o algoritmo est correto ou no.
Monitores

A utilizao de semforos resolve TODOS os problemas de


CIP;
No promove a espera ocupada;
Atinge a excluso mtua;
A interrupo de clock fica desabilitada por um tempo muito
pequeno (apenas dentro das funes de down e up).

A questo fundamental ... Sero simples as solues para os


diversos problemas utilizando semforos???

Programadores com experincia bsica conseguiro


descrever solues eficazes com semforos?
Justificativa para Monitores

Vocs viram as chamadas dos semforos como:


meuSemaforo.down();
meuSemaforo.up();

Mas quando Dijkstra descreveu a tcnica, ele utilizou as chamadas:


meuSemaforo.p();
meuSemaforo.v();

Fazendo referencia provavelmente a palavras de sua lngua ptria


(holands).
Justificativa para Monitores

Um problema comum a utilizao do seguinte cdigo neste


contexto:

Processo A Processo B

mutex.v(); mutex.v();
alteraRegiaoCritica(); alteraRegiaoCritica();
mutex.p();
mutex.p();
Se os processos processos que concorrem a regio crtica estiverem
com este equivoco, a consistncia de toda a rea crtica colocada
xeque.

O que acontece neste caso?


Justificativa para Monitores

Um problema comum a utilizao do seguinte cdigo neste


contexto:

Processo A Processo B

mutex.v(); mutex.v();
alteraRegiaoCritica(); alteraRegiaoCritica();
mutex.p();
mutex.p();
Se os processos processos que concorrem a regio crtica estiverem
com este equivoco, a consistncia de toda a regio crtica colocada
xeque.

O que acontece neste caso? Todos os processos entram e saem da regio


critica. Sempre. A qualquer hora.
Monitores

Pensando em facilidade e corretude, Hoare (1974) e Hansen (1975)


propuseram uma unidade de sincronizao de alto nvel nomeada
monitor;

Monitor a coleo de funes, variveis, estrutura de dados, tudo


isso agrupado em um mdulo ou pacote...
Pode ser visto como um TAD (Tipo Abstrato de Dados).

A idia ampliar o conceito do semforo...


Monitores

Os processos podem chamar os procedimentos em um monitor


quando quiserem;

Mas no podem ter acesso direto s estruturas internas do monitor,


a partir de procedimentos declarados fora do monitor;

Conceito de encapsulamento, visto em P.O.O.


Monitores
Exemplo de um pseudo-cdigo que descreve a sintaxe de um
monitor:

Monitor nomeDoMonitor{
private int x, y, z;

public metodo01(...){
...
}

public metodo01(...){
...
}
}
Monitores

Monitor uma construo da linguagem de


programao;

Compiladores sabem que eles so especiais;

Por isso, tratam as chamadas aos procedimentos do


monitor de forma diferente das outras chamadas de
procedimento;
Monitores

Quando um processo chama um procedimento do monitor, algumas


das primeiras instrues verificaro se outro processo/thread est
atualmente ativo dentro do monitor;

Se no existir nenhum processo concorrente no monitor, o acesso


liberado;

Caso exista, o processo entra em estado bloqueado;


Monitores

de TOTAL responsabilidade do compilador/interpretador


implementar a excluso mtua nas entradas do monitor;

A soluo mais trivial implementada pelos compiladores a


utilizao de um semforo binrio;

Como o compilador, e no o programador que providencia a


excluso mtua, muito menos provvel que algo ocorra de errado;
Monitores

Em C e Pascal, os compiladores no implementam os monitores;

A soluo ento seria:


Adicionar uma biblioteca que implementa as funes up e down;
(linguagem de montagem);
Implementar um semforo binrio utilizando up e down;
E a partir da, controlar logicamente o monitor simulado a nvel
de usurio;
Monitores em Java
Monitores em Java

O uso de monitores em Java uma variao do proposto por Hoare.

Na linguagem Java todo objeto possui um monitor associado.

Para facilitar o entendimento podemos encarar o monitor como um


detentor de um "passe".
Monitores em Java

Toda thread pode pedir "emprestado" o passe ao monitor de um


objeto antes de realizar alguma computao.

Como o monitor possui apenas um passe, apenas um thread pode


adquirir o passe em um determinado instante.

Obviamente, o passe tem que ser devolvido para o monitor para


possibilitar o emprstimo do passe a outro thread.
Monitores em Java

Nos resta saber como solicitar o passe ao monitor em Java:

Isto feito por meio da palavra chave synchronized;

Em java, existem duas formas de se usar a palavra chave


synchronized:
na declarao de mtodos e;
no incio de blocos.
Monitores em Java Declarao de Mtodos
Monitores em Java - Declarao de Mtodos

A palavra chave synchronized na frente dos mtodos significa que o


mtodo ser executado se puder adquirir o monitor do objeto a
quem pertence o mtodo;

Caso contrrio a thread que invocou o mtodo ser bloqueado at


que possa adquirir o monitor.

Como a JVM identifica que ele j pode entrar no mtodo?


Diretamente, ou
Indiretamente.. Sendo acordado por outro thread...
Monitores em Java Incio de blocos
Monitores em Java Incio dos Blocos

A palavra chave synchronized limitando um bloco do cdigo tambm


solicita o passe daquele objeto passado como referncia;

Assim, pode-se atingir a excluso mtua de forma semelhante ao


exemplo anterior;

A vantagem/desvantagem com relao ao outro modelo que no


necessariamente as operaes sobre a regio crtica precisam estar
encapsuladas em funes coesas;

Voc pode utilizar apenas um pedao da funo com o cdigo


sincronizado.
Monitores em Java Incio dos Blocos

De certa forma este segundo mtodo permite a desorganizao do


conceito de monitor;

Um mtodo da classe A pode requisitar o passe da classe B.


Pode ser interessante;
Mas sai um pouco da definio purista que aproxima os monitores dos
TADs;
Deixa o sistema menos coeso, mas fornece mais possibilidades ao
programador;
Inclusive de errar.
Para os curiosos...
Exemplo de Java

Dem uma olhada nas classes ArrayList e Vector em


Java;

O objetivo das duas o mesmo, com basicamente as


mesmas funes;

A diferena bsica que mtodos de Vector so


sincronizados;
Eles utilizam o monitor associado ao objeto;
Enquanto ArrayList no utiliza o monitor em nenhuma chamada
de funo;
Prxima Aula

Escalonamento de Processos
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice Hall,
2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.;


Sistemas Operacionais. Conceitos e Aplicaes. Rio
de Janeiro: Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.;


Sistemas operacionais: projeto e implementao.
2a Ed. Porto Alegre: Ed. Bookman, 2000.

Introduo ao sincronismo e monitores


http://www.guj.com.br/article.show.logic?id=43
Sistemas Operacionais Cincia da Computao
Gerncia de Processos
Escalonamento de Processos

Material produzido por Prof. Humberto Brando


humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.7
Escalonamento
Situao que ocorre sempre que dois ou mais processos esto ao
mesmo tempo no estado pronto;

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Fila de prontos p3
Entra Despacho Sai
p2 p1 CPU

Pausa

Ocorre evento
Lista de bloqueados Espera evento
Introduo ao Escalonamento

Em sistemas de lote, algoritmos de escalonamento eram triviais...

A dificuldade surge quando diferentes usurios aguardam por


um determinado servio...
Sistemas Interativos
Introduo ao Escalonamento

Nas dcadas passadas, o tempo de CPU era um recurso


extremamente escasso;

Conseqentemente, os algoritmos de escalonamento se tornaram


fundamentais para uma performance razovel do sistema;

O que isso quer dizer:


Que os algoritmos de escalonamento de processo implementados para
computadores menos potentes devem efetuar um balanceamento de
carga bom, ou prximo ao timo;
Com os computadores modernos, os algoritmos podem no ser to
rigorosos assim, pois a percepo do usurio inibida pelo clock das
novas mquinas.

Mas historicamente, ambos evoluram (balanceamento e clock).


Introduo ao Escalonamento

Com o passar dos anos, os computadores ganharam poder de


processamento, e a poltica de escalonamento perdeu um pouco
sua grande importncia atribuda no passado;

A maioria dos programas para computadores pessoais limitada


pela velocidade de entrada dos dados, e no pela CPU;
Em computadores pessoais, no muito comum termos vrios processos
requisitando a CPU durante um longo perodo de tempo;

Exemplo: Compiladores gastam alguns segundos para gerar


arquivos executveis;
Depois deste perodo, eles entram no estado bloqueado,
aguardando novas entradas do usurio.
Introduo ao Escalonamento

Em computadores pessoais, tambm existe a caracterstica da


CPU ficar ociosa a maioria do tempo;

O que no deixa de tambm diminuir a importncia dos


algoritmos de escalonamento;

Quando falamos de servidores, o quadro muda


completamente...:

Disponibilizam servios muito requisitados;

Ou, Disponibilizam uma grande quantidade de servios;


Introduo ao Escalonamento

Obrigaes do escalonador:

Escolher o processo que deve ser executado;

Fazer um uso eficiente da CPU:


Alternar entre processos muito caro computacionalmente;
Deve guardar os registradores do processo na tabela de
processos;
O contedo da cache tambm deve ser armazenado;
O novo processo deve ser selecionado;
O novo processo precisa ser iniciado (envolvendo carregar
todas as informaes da tabela de processos na memria, etc...);

Troca de contexto!!!
Quando escalonar

Talvez a mais importante questo no tpico de


escalonamento de processos seja:
Quando escalonar?

Existem algumas situaes triviais;


Quando um processo termina;
Quando um processo bloqueado ao se deparar com um
semforo, por exemplo;
Neste caso, outro processo especfico deve ser escalonado
Quando escalonar

Quando existe um relgio no computador, o


escalonador pode aproveitar as interrupes de clock
para criar polticas de escalonamento;

A deciso de escalonamento pode ser tomada a cada


interrupo de clock, ou depois da k-sima interrupo
de clock;
Categorias de Escalonamento

Existem duas categorias de escalonamento:


No preemptivo:
O processo executado at terminar;
Ou, o processo executado at se bloquear;

Resumindo: nenhuma deciso de escalonamento tomada em


funo das interrupes de relgio;

Preemptivo:
O escalonador escolhe um processo, e este executado at o
momento que o escalonador queira;
Ou o processo deixa a CPU quando se bloqueia;
Ou o processo deixa a CPU quando termina;
Quando escalonar

Se no existir relgio disponvel, o escalonamento no preemptivo


ser a nica opo simples!!!

O projetista pode utilizar de outra interrupo para isso, mas


nenhuma delas est inserida em um contexto temporal.
Categorias de algoritmos de escalonamento

Categorias

1. Lote:
No existem usurios aguardando impacientes por respostas;
Com isso, podem optar por polticas no preemptivas e melhorar o
desempenho do sistema;

2. Interativo:
J nos ambiente interativos, a preempo fundamental;
Objetivos gerais de cada tipo
Escalonamento em Sistemas de Lote
Escalonamento em Sistemas de Lote
Primeiro a chegar, primeiro a ser servido
First come, First served FCFS;
Fcil entendimento;
Fcil implementao;
uma poltica no preemptiva;
Quais so as desvantagens?

Fila de prontos p3
Entra Despacho Sai
p2 p1 CPU

Pausa

Ocorre evento
Lista de bloqueados Espera evento
Escalonamento em Sistemas de Lote
Primeiro a chegar, primeiro a ser servido
Quais so as desvantagens
No pode ser usado para sistemas interativos;
Se o primeiro job for demorado demais, os outros, mesmo sendo
curtos, iro esperar muito tempo!

Fotocopiadoras funcionam assim atualmente.

Fila de prontos
Entra Despacho Sai
p2 p1 CPU
p3
Pausa

Ocorre evento
Lista de bloqueados Espera evento
Escalonamento em Sistemas de Lote
Job mais curto primeiro

Necessita conhecer todos os tempos totais de processamento (ao


menos uma estimativa);

uma poltica no preemptiva;

(a) Execuo na ordem original


(b) Execuo na ordem do job mais curto
Escalonamento em Sistemas de Lote

Prximo de menor tempo restante

Bem parecido com a poltica do Job mais curto primeiro;

A diferena fundamental que este mtodo preemptivo;

Quando um novo job entra no estado pronto, o escalonador


pode interromper a execuo do atual, e fornecer a CPU ao
novo job, bloqueando o job em execuo;
Escalonamento em Sistemas
Interativos

Alternncia Circular
Escalonamento em Sistemas Interativos

Round-Robin (Escalonamento por alternncia circular)

Um dois mais antigos algoritmos;


Considerado justo;
Considerado simples;
Amplamente utilizado;

Conceito
quantum: intervalo de tempo que cada processo pode se ocupar
da CPU sem interrupes;
Escalonamento em Sistemas Interativos
Round-Robin (Escalonamento por alternncia circular)

Existem 3 formas de um processo deixar a CPU no


Round-Robin:

Quando seu tempo acaba (em funo do quantum);


Quando ele se bloqueia (por um semforo);
Quando ele termina;
Escalonamento em Sistemas Interativos
Round-Robin (Escalonamento por alternncia circular)

Implementao necessita de uma lista encadeada, ou


outra estrutura equivalente...

(a) Fila de processos prontos. B est na CPU;


(b) Fila de processos prontos, depois que B deixa
a CPU (fim de seu quantum).
Escalonamento em Sistemas Interativos
Round-Robin (Escalonamento por alternncia circular)

Quais so as implicaes de um quantum curto?

Quais so as implicaes de um quantum muito longo?


Escalonamento em Sistemas Interativos
Round-Robin (Escalonamento por alternncia circular)

Tanenbaum sugere um quantum entre 20ms e 50ms para sistemas


interativos;

Este valor, obviamente, muda com o avano dos processadores e


com a evoluo dos Sistemas Operacionais.

Com a reduo da complexidade dos algoritmos de escalonamento.


Escalonamento em Sistemas
Interativos

Por prioridades
Escalonamento por prioridades
Escalonamento em Sistemas Interativos
Escalonamento por prioridades

Diferentes processos geralmente possuem diferentes


necessidades;

Geralmente, em sistemas interativos, uma ateno maior


dada para processos que comunicam com o usurio;
Exemplo de estrutura

Cada categoria pode ser


Algoritmo: tratada com o algoritmo de
Executa todos de prioridade 4; alternncia circular
Depois executa todos de prioridade 3; (Round Robin)
Depois executa todos de prioridade 2;
Depois executa todos de prioridade 1;
Exemplo de estrutura

Qual o problema deste


algoritmo para um sistema
interativo?

Algoritmo:
Executa todos de prioridade 4;
Depois executa todos de prioridade 3;
Depois executa todos de prioridade 2;
Depois executa todos de prioridade 1;
Escalonamento em Sistemas Interativos
Escalonamento por prioridades

Com o problema starvation, na abordagem apresentada, o sistema


operacional deve regularmente efetuar uma manuteno na
prioridade dos processos ativos, com o objetivo de garantir que
nenhum deles morra de fome:

Exemplo de manuteno:
Se um processo aguardar mais de 3 segundos, sua prioridade
incrementada em uma unidade;
Quando ele voltar para a fila de prontos, volta com sua prioridade
original;
Escalonamento Garantido
Escalonamento em Sistemas Interativos
Escalonamento Garantido

O sistema operacional pode garantir que se existem 10 usurios


conectados, cada um vai receber 10% do tempo de CPU;

De forma equivalente, o S.O. pode fazer esta diviso considerando a


quantidade de processos ativos, e no a quantidade de usurios;

Qual o principal problema deste modelo?


Escalonamento em Sistemas Interativos
Escalonamento Garantido

Algoritmo de difcil implementao, se a GARANTIA for levada


100% a srio;

Possveis mtodos de adaptao on-line devem agir para corrigir os


contra-pesos ao longo da execuo do algoritmo;
Escalonamento por loteria
Escalonamento em Sistemas Interativos
Escalonamento por loteria

Diferente do escalonamento garantido, o escalonamento por loteria


possui implementao trivial;

O S.O. fornece bilhetes a cada processo;

Ele sorteia um bilhete, e o processo que tem aquele bilhete ganha


como prmio, acesso a CPU;
Escalonamento em Sistemas Interativos
Escalonamento por loteria

Aos processos mais importantes podem ser atribudos bilhetes


extras para aumentar sua chance de vitria;
Aumenta naturalmente sua prioridade!!!

A probabilidade do processo ter a CPU a cada escalonamento :


Quantidade de bilhetes do processo/quantidade total de bilhetes.
Escalonamento em Sistemas Interativos
Escalonamento por loteria

Quais so as desvantagens deste mtodo?


Escalonamento em Sistemas Interativos
Escalonamento por loteria

Quais so as desvantagens deste mtodo?

O S.O. perde o controle sobre os processos que eventualmente


morrem de fome;
(embora com uma probabilidade mnima de ocorrer, um
processo pode ficar muito tempo sem receber recursos);

Uma desvantagem a ser considerada a probabilidade


depender diretamente de nmeros aleatrios:

"Qualquer um que considere mtodos aritmticos para produzir


dgitos est, certamente, cometendo um pecado John Von Neumann
Escalonamento
Poltica vs Mecanismo
Poltica vs Mecanismo

Um processo, ao criar processos filhos, pode ter noo da


importncia do processo que est sendo criado;

Exemplo: SGBD
Processo para realizar uma anlise sinttica de uma consulta efetuada
no terminal do SGBD;
Processo para realizar uma anlise sinttica de uma consulta efetuada
em uma aplicao de usurio;
Processo para acesso a disco;
Processo para disparar a resposta de uma consulta na rede (Socket);
Poltica vs Mecanismo

O pai, pode controlar, como seus filhos devem ser escalonados;

Desta forma, dizemos que o mecanismo de escalonamento est no


ncleo;

A poltica estabelecida pelo processo (prioridade passada por


parmetro).
Escalonamento de Threads
Escalonamento de Threads

Vamos relembrar o conceito de Threads implementadas


no nvel do Kernel, e threads implementadas no nvel do
usurio;

Nvel de Kernel: O S.O. tem o conhecimento da existncia das


Threads;

Nvel de Usurio: A aplicao simula as Threads; O S.O. no


precisa implementar suporte as Threads.
Escalonamento de Threads

Nvel de Usurio:

O S.O. no sabe da existncia de Threads;

Desta forma, se existir um processo A com 30 threads simuladas,


e o processo B com apenas 1 linha de execuo, o sistema
operacional no tem como priorizar a execuo do processo A, a
no ser por uma poltica que oferece uma maior probabilidade
de execuo. Exemplos:

Mais bilhetes (escalonamento por loteria);


Maior prioridade (escalonamento por prioridades);
Escalonamento de Threads

Nvel de Kernel:

O S.O. sabe da existncia das Threads, independentemente do


processo que ela est...

Execuo mais lenta que a nvel de usurio

A nvel de usurio, troca entre Threads tende a utilizar mais


instrues;

Porm, o bloqueio de um Thread no bloqueia o processo!

S.O. consegue manter a execuo das Threads dentro do mesmo


processo tambm
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais Modernos,


2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.; Sistemas


Operacionais. Conceitos e Aplicaes. Rio de Janeiro:
Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao

Deadlocks (impasses)

Material produzido por Prof. Humberto


Brando
humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Deadlocks
Os deadlocks acontecem quando um conjunto
de processos/threads disputam por um ou
mais recursos;

Estes recursos podem ser, por exemplo:


Um arquivo;
Uma impressora;
Um pedao da memria;
Vrios arquivos.
Deadlocks
Se no existe o controle de acessos ao recurso
comum, danos irreparveis podem ocorrer;

Exemplos:

Arquivos corrompidos;
Perda de documentos na fila da impressora;
Erros lgicos em programas de usurio (chave
primria incremental em BD, por exemplo);
//inconsistncia nos dados
Deadlocks
Definio formal:
Um conjunto de processos/threads estar em situao de
deadlock se todo processo/threads pertencente ao
conjunto estiver esperando por um evento que somente
um outro processo/threads desse conjunto poder fazer
acontecer.
Recursos Preemptveis e
No Preemptveis
Recursos Preemptveis e
No Preemptveis

Um recurso preemptvel aquele que pode


ser retirado do processo proprietrio sem
nenhum prejuzo;

Exemplo:
CPU;
Memria RAM
Recursos Preemptveis e
No Preemptveis

Um recurso no preemptvel, ao contrrio, aquele


que no pode ser retirado do atual processo
proprietrio sem que a computao apresente falha;

Exemplos:
Se um processo comeou a gravar um CD, fornecer o
acesso a gravadora, a outro processo, gera um CD com
erros;

Deadlocks envolvem necessariamente recursos no preemptveis.


Recursos Preemptveis e
No Preemptveis

Os eventos necessrios para utilizao de recursos


no preemptveis so:

Requisitar o recurso;
Usar o recurso;
Liberar o recurso;
Recursos Preemptveis e
No Preemptveis
Os eventos necessrios para utilizao de
recursos no preemptveis so:

Se o recurso no estiver
Requisitar o recurso; disponvel, o processo
obrigado a esperar
Usar o recurso; (dormindo estado
Liberar o recurso; bloqueado);

Entra Despacho Sai


Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado
Recursos Preemptveis e
No Preemptveis
Os eventos necessrios para utilizao de
recursos no preemptveis so:

Requisitar o recurso;
Usar o recurso;
Liberar o recurso; Aps a confirmao de
acesso individual, o
processo pode efetuar suas
operaes sobre o recurso.
Recursos Preemptveis e
No Preemptveis
Os eventos necessrios para utilizao de
recursos no preemptveis so:

Requisitar o recurso;
Usar o recurso;
Liberar o recurso;
Aps a utilizar o recurso, o
processo deve liberar o
acesso, para outros
processos concorrentes, e
avisar tais processos da
liberao
Recursos Preemptveis e
No Preemptveis
Os eventos necessrios para utilizao de
recursos no preemptveis so:
Alternativamente, o
processo ao receber uma
Requisitar o recurso; negativa ao requisitar um
recurso, pode, ao invs de se
Usar o recurso; bloquear, suspender sua
Liberar o recurso; execuo por um
determinado perodo.
Exemplo: sleep(100).

Logo depois, necessrio


verificar novamente se o
recurso foi liberado.
Recursos Preemptveis e
No Preemptveis
Os eventos necessrios para utilizao de
recursos no preemptveis so:

Requisitar o recurso;
Usar o recurso; Nesta situao (sleep), ao
acabar de utilizar o recurso,
Liberar o recurso; o processo no precisa
avisar aos seus concorrentes
da liberao da regio
crtica, pois o S.O. vai
acord-los periodicamente.
Aquisio de Recursos
Aquisio de Recursos
Como vimos no captulo anterior, uma forma de garantir a excluso mtua
com a utilizao de semforos;

void processoA( ){
down( resource1 ); Utilizao de apenas 1
recurso no
useResource1( );
preemptvel
up( resource1 );
}
void processoA( ){ void processoA( ){
down( resource1 ); down( resource1 );
down( resource2 ); down( resource2 );
useBothResources( ); useBothResources( );
up( resource2 ); up( resource2 );
up( resource1 ); up( resource1 );
} }

void processoB( ){ void processoB( ){


down( resource1 ); down( resource2 );
down( resource2 ); down( resource1 );
useBothResources( ); useBothResources( );
up( resource2 ); up( resource1 );
up( resource1 ); up( resource2 );
} }

Concorrncia por dois recursos Concorrncia por dois recursos


programa (a) programa (b)
void processoA( ){ void processoA( ){
down( resource1 ); down( resource1 );
down( resource2 ); down( resource2 );
useBothResources( ); useBothResources( );
up( resource2 ); up( resource2 );
up( resource1 ); up( resource1 );
} }

void processoB( ){ void processoB( ){


down( resource1 ); down( resource2 );
down( resource2 ); down( resource1 );
useBothResources( ); useBothResources( );
up( resource2 ); up( resource1 );
up( resource1 ); up( resource2 );
} }

Algum dos algoritmos


possui falha visvel?

Concorrncia por dois recursos Concorrncia por dois recursos


programa (a) programa (b)
O Processo A captura o
passeprocessoA(
void do semforo
){do void processoA( ){
resource1;
down( resource1 ); down( resource1 );
down( resource2 ); down( resource2 );
Preempo feita pelo S.O.;
useBothResources( ); useBothResources( );
up( resource2 ); up( resource2 );
up( resource1
O processo B captura);o up( resource1 );
} }
passe do resource2;
void processoB( ){ void processoB( ){
B bloqueado pois o passe
down( resource1 ); down( resource2 );
do resource1 est com o);
down( resource2 down( resource1 );
Processo A;
useBothResources( ); useBothResources( );
up( resource2 ); up( resource1 );
up( resource1 );
Preempo; up( resource2 );
} }

O Processo A bloqueado
porque o passe do resource2
est com o Processo B;

DEADLOCK!
Concorrncia por dois recursos Concorrncia por dois recursos
programa (a) programa (b)
Condies de ocorrncia de
Deadlocks
Condies de ocorrncia de Deadlocks
Existem 4 condies que devem estar presentes
para que um deadlock ocorra:

Condio de excluso mtua: em cada instante, cada


recurso est:
(i) sendo utilizado por um nico processo, ou
(ii) est disponvel;

Condio de posse e espera: processos que, em um


determinado instante, retm recursos concedidos
anteriormente e podem requisitar novos recursos
Condies de ocorrncia de Deadlocks
Existem 4 condies que devem estar presentes
para que um deadlock ocorra:

Condio de No preempo: recursos sendo


utilizados no podem ser tomados para utilizao em
outro processo;

Condio de espera circular: Deve existir um


encadeamento circular de dois ou mais processos.
Cada um deles encontra-se a espera de um recursos
que est sendo utilizado por outro membro desta
cadeia.
Modelagem de um deadlock
Modelagem de um deadlock
Para facilitar a visualizao, podemos utilizar grafos para entender um
deadlock;

a) recurso R alocado ao processo A


b) processo B est solicitando/esperando pelo recurso S
c) processos C e D esto em deadlock sobre recursos T e U
Modelagem de um deadlock
Imagine uma execuo sem preempo de
processos

1 2 3
Modelagem de um deadlock
Agora imagine uma execuo com preempo
Modelagem de um deadlock
Se o S.O., suspende B, o deadlock no acontece!
Anulao dinmica
Modelagem de Deadlock

Estratgias para tratar Deadlocks

1. Ignorar por completo o problema


2. Deteco e recuperao
3. Anulao dinmica
alocao cuidadosa de recursos
4. Preveno
negao de uma das quatro condies necessrias
Deadlocks
Observao:

Deadlocks podem ocorrer tanto na disputa por


recursos de hardware, como na disputa por
recursos de software;
Algoritmo do Avestruz
Ignorar por completo o problema
Algoritmo do Avestruz

Mtodo (se que podemos chamar assim) mais simples;

Finja que nada est acontecendo;

O incrvel que esta pode ser uma sada interessante;

Matemticos consideram totalmente inaceitvel;

Engenheiros perguntam com que freqncia o deadlock ocorre.


Ignorar por completo o problema
Algoritmo do Avestruz

Questionamentos importantes:

Qual importncia do software que est sendo


analisado.

Ele pode parar?

Com que freqncia o deadlock ocorre? (em


mdia)

Isso est relacionado com a concorrncia:


Deteco e Recuperao de
Deadlocks
Deteco e Recuperao de
Deadlocks
Na deteco e recuperao de deadlocks, o sistema no tenta prevenir a
ocorrncia dos deadlocks;

O algoritmo se resume a:

Detectar que um deadlock ocorreu


operaes em grafos;

Detectar quais processos esto envolvidos no deadlock


operaes em grafos;

Corrigir o problema
vrias formas;
Deteco e Recuperao de
Deadlocks
Consideremos um grafo qualquer representando a interao entre
processos e recursos;

Um deadlock existe se somente se o grafo possui ciclo(s);

Todo processo que faz parte do ciclo, est dormindo


sem possibilidade de ser acordado;

Os outros processos do grafo continuam em situao normal de operao;


Estes processos que esto funcionando podem fazer parte a qualquer
momento do ciclo que caracteriza o deadlock.
Deteco e Recuperao de
Deadlocks
Sobre os processos de A a G e recursos de R a W
O deadlock ocorrer?

O processo A possui o recurso R e requisita S;


O processo B requisita T;
O processo C requisita S;
O processo D possui o recurso U e requisita S e T;
O processo E possui o recurso T e requisita V;
O processo F possui o recurso W e requisita S;
O processo G possui o recurso V e requisita U;
Deteco e Recuperao de Deadlocks

Visualizando com um grafo planar:


Observe a posse e solicitaes de recursos
Um ciclo pode ser encontrado dentro do grafo, denotando deadlock
Deteco e Recuperao de
Deadlocks

Utilizando a inspeo
visual fcil detectar
que o grafo possui um
ciclo.

Mas como isso pode


ser detectado
Visualizando com um grafo planar: computacionalmente?
Observe a posse e solicitaes de recursos
Um ciclo pode ser encontrado dentro do grafo, denotando deadlock
Busca em Profundidade

DFS VISIT (u )
DFS (G )
1 cor[u ] CINZA
1 para cada vrtice u V [G ]
2 tempo tempo 1
2 cor[u ] BRANCO
3 d [u ] tempo
3 tempo 0
4 para cada vrtice v Adj (u )
4 para cada vrtice u V [G ]
5 se cor[v] BRANCO
5 se cor[u ] BRANCO
6 DFS VISIT (v)
6 DFS VISIT (u )
7 cor[u ] PRETO
8 f [u ] tempo (tempo 1)
Busca em Profundidade
Adaptado ao problema do deadlock.
DFS VISIT (u )
1 cor[u ] CINZA
DFS (G ) 2 tempo tempo 1
1 para cada vrtice u V [G ] 3 d [u ] tempo
2 cor[u ] BRANCO 4 para cada vrtice v Adj (u )
3 tempo 0 5 se cor[v] CINZA
4 para cada vrtice u V [G ] 6 CICLO _ ENCONTRADO;
5 se cor[u ] BRANCO 7 se cor[v] BRANCO
6 DFS VISIT (u ) 8 DFS VISIT (v)
9 cor[u ] PRETO
10 f [u ] tempo (tempo 1)
Busca em Profundidade
Legenda

a
/ Vrtice desconhecido
b
d/ Vrtice encontrado
c
d/f Vrtice encontrado, com fecho positivo totalmente visitado

d: marcador do instante que o vrtice c foi encontrado;


f: marcador do instante que os fecho transitivo do
vrtice c foi totalmente visitado.
Deteco e Recuperao de
Deadlocks

Aps a deteco de um deadlock, o S.O. deve


restabelecer a normalidade na operao do
sistema;

O que/como pode ser feito?


Deteco e Recuperao de
Deadlocks

O que pode ser feito?

Recuperao por meio de preempo;

Recuperao por meio de reverso de estado;

Recuperao por meio de eliminao de


processos;
Deteco e Recuperao de Deadlocks
Recuperao por meio de preempo

Em alguns casos, pode ser possvel tomar provisoriamente um recurso


de seu proprietrio atual para fornec-lo a outro processo;

Por exemplo:
Se a impressora R for tomada do processo A,
a impressora deve parar a impresso de A,
empilhar o contedo de sua bandeja em outro
compartimento,
para iniciar sua operao com seu novo processo
proprietrio;
Ao final, deve desempilhar as folhas da
impresso de A, e continuar sua impresso;
Deteco e Recuperao de
Deadlocks
Recuperao por meio de preempo

Portanto, a recuperao por meio de preempo est diretamente


relacionada com a natureza do recurso;

Visando eliminar o deadlock, O S.O. deveria conhecer previamente todos


os recursos para efetuar, se possvel, tal operao;

possvel?
Deteco e Recuperao de
Deadlocks
O que pode ser feito?

Recuperao por meio de preempo;

Recuperao por meio de reverso de estado;

Recuperao por meio de eliminao de


processos;
Deteco e Recuperao de Deadlocks
Recuperao por meio de reverso de estado;

Para entender este algoritmo, imagine, via grafo, que o processo possui
um determinado estado em cada instante de tempo;

O S.O. ento controlaria uma Mquina de Estados Finitos.

Sempre, antes de requisitar um recurso, o processo deve armazenar em


um arquivo temporrio seu estado atual;

uma tcnica semelhante a utilizada pelo MS-Windows para restaurar o


sistema;

Ele mantm o estado atual dos arquivos (para o usurio no perder nenhum
arquivo recentemente alterado) e restaura os arquivos de configurao do S.O.
atravs de uma reverso de estados em uma mquina de estados finitos.
Deteco e Recuperao de Deadlocks
Recuperao por meio de reverso de estado;

Sempre que um deadlock ocorrer, o S.O. escolhe um processo para


regredir no tempo, assumindo seu estado anterior ao pedido do
recurso;

Com isso, seu processo concorrente pode utilizar o recurso sem


restries, e o processo que regrediu entra no estado bloqueado,
aguardando a liberao do recurso;
Deteco e Recuperao de Deadlocks
Recuperao por meio de reverso de estado;

Quais so os problemas deste mtodo?


Deteco e Recuperao de Deadlocks
Recuperao por meio de reverso de estado;

Quais so os problemas deste mtodo?

O custo para guardar as imagens pode ser alto demais:


Processo que ocupa muita memria, ou;
Processo que efetua muitas requisies invocar muitas vezes a
funo de imagem no disco;

Processos que interagem com usurios finais:


Imagine perder tudo que digitou no editor de textos nos ltimos
10 minutos;
Deteco e Recuperao de
Deadlocks

O que pode ser feito?

Recuperao por meio de preempo;

Recuperao por meio de reverso de estado;

Recuperao por meio de eliminao de


processos;
Deteco e Recuperao de Deadlocks
Recuperao por meio de eliminao de processos;

Mtodo radical e extremista;

Sempre que um ciclo identificado no grafo, o S.O. mata um processo;

Se o ciclo ainda existir, ele mata outro, at quebrar o ciclo, eliminando


conseqentemente o deadlock;

O S.O. tem que ter o cuidado de no matar processos que no


pertencem ao ciclo;
Deteco e Recuperao de Deadlocks
Recuperao por meio de eliminao de processos;

Amenizando os efeitos da eliminao de processos:

Prioridades podem ser definidas entre processos


grau de importncia entre processos;

Ou seja, indicar a ordem de importncia entre os


processos, para minimizar os efeitos colaterais na
eliminao do deadlock;
Deteco e Recuperao de
Deadlocks
Resumindo a Deteco e Recuperao de
Deadlocks:
Na recuperao de deadlocks, nenhuma
estratgia se mostra interessante para sistemas
operacionais de uso geral...

Recuperao por meio de preempo;

Recuperao por meio de reverso de estado;

Recuperao por meio de eliminao de processos;


Mtodo:
Anulao Dinmica
Anulao Dinmica
Alocao individual de recursos
medida que o processo necessita;

Solues tambm utilizam matrizes;

Escalonamento cuidadoso
alto custo computacional;

Conhecimento prvio dos recursos que sero utilizados;


Algoritmos
Banqueiro para um nico tipo de recurso;
Banqueiro para vrios tipos de recursos;

Definio de Estados:
Seguros
Inseguros;
Anulao Dinmica
Estados seguros:

No provocam deadlocks e h uma maneira de


atender a todas as requisies pendentes
finalizando normalmente todos os processos;

Estados inseguros:

Podem provocar deadlocks, mas no


necessariamente provocam;
Mtodo:
Preveno de Deadlocks
Condies de ocorrncia de
Deadlocks
Existem 4 condies que devem estar
presentes para que um deadlock ocorra:
Condio de excluso mtua: em cada instante,
cada recurso est:
(i) sendo utilizado por um nico processo, ou
(ii) est disponvel;
Condio de posse e espera: processos que, em
um determinado instante, retm recursos
concedidos anteriormente e podem requisitar
novos recursos;
Condies de ocorrncia de
Deadlocks
Existem 4 condies que devem estar
presentes para que um deadlock ocorra:
Condio de No preempo: recursos sendo
utilizados no podem ser tomados para utilizao
em outro processo;
Condio de espera circular: Deve existir um
encadeamento circular de dois ou mais processos.
Cada um deles encontra-se a espera de um
recursos que est sendo utilizado por outro
membro desta cadeia.
Atacando a Condio de
Excluso Mtua

Condio de excluso mtua: em cada instante, cada


recurso est: (i) sendo utilizado por um nico processo,
ou (ii) est disponvel;

Se nunca acontecer de um recurso ser alocado exclusivamente a um nico


processo, nunca teremos deadlock.
Atacando a Condio de
Excluso Mtua

Obviamente, que para alguns recursos a quebra desta


condio levaria a falhas.

Exemplos:
Atacando a Condio de
Excluso Mtua

Obviamente, que para alguns recursos a quebra desta


condio levaria a falhas.

Exemplos:

Utilizao de uma impressora por 3 editores de texto ao


mesmo tempo;
Atacando a Condio de
Posse-e-Espera

Condio de posse-e-espera: processos que, em um


determinado instante, retm recursos concedidos
anteriormente e podem requisitar novos recursos

Se pudermos impedir que processos que j mantm recursos esperem por


mais recursos, seremos capazes de eliminar os deadlocks.
Atacando a Condio de
Posse-e-Espera
Veja o caso:

Suponha que os filsofos (do problema do Jantar


dos Filsofos) pegam os garfos do lado esquerdo,
e no soltam at comer.

Se todos pegarem o garfo do lado esquerdo, todos


os filsofos iro dormir ao tentar pegar os garfos
do lado direito, porque todos os garfos esto
ocupados...
Atacando a Condio de
Posse-e-Espera

Uma soluo seria o processo pegar todos os recursos que vai precisar de
uma s vez.

Suponha um thread que manipula uma regio de memria, imprime um


documento na impressora, e aps a impresso ele deve alterar novamente
o endereo de memria.

Com a soluo proposta, a regio crtica da memria ficaria travada at


todo o processo terminar, no podendo ser alterada por outra thread.
Atacando a Condio de
Posse-e-Espera
Desvantagens:
Este mtodo exige do programador o
conhecimento de todos os recursos que precisam
ser utilizados antes da execuo do
processo/thread;
No utiliza os recursos de forma otimizada;

Vantagem:
Evita os deadlocks.
Atacando a Condio de
No-Preempo

Condio de no-Preempo : recursos sendo utilizados


no podem ser tomados para utilizao em outro
processo;

Se um processo tomar a fora um recurso de


outro processo que tinha posse do mesmo,
evitamos os deadlocks. Ou seja, nenhum
processo precisa aguardar a liberao de
recursos;
Atacando a Condio de
No-Preempo
Parecido com a primeira estratgia (atacando
a excluso mtua) . Mas aqui considerado
que o recurso tomado a fora. E o processo
que tinha a posse do recurso, termina sua
utilizao.

Na primeira estratgia considerado que o


recurso utilizado ao mesmo tempo por
vrios processos.
Atacando a Condio de
No-Preempo
Vantagem:
Acaba com deadlock;

Desvantagem:
Seu processo no tem garantia na utilizao dos
recursos. A qualquer instante o recurso pode lhe
ser tomado;
Atacando a Condio de
Espera Circular
Condio de espera circular: Deve existir um
encadeamento circular de dois ou mais processos. Cada
um deles encontra-se a espera de um recursos que est
sendo utilizado por outro membro desta cadeia.

Este o conceito do ciclo no grafo;

Se no existir ciclo, no existe deadlock;


Atacando a Condio de
Espera Circular

Forma simples de atacar a espera circular:

Se existir a restrio de que um processo pode apenas ter


a posse de um recurso, a cada instante de tempo, este
grafo nunca possuir ciclos;
Atacando a Condio de
Espera Circular

Vantagem:
Acaba com os deadlocks;

Desvantagem:
Em algumas aplicaes tal estratgia pode causar
falhas irreparveis.
Bibliografia
TANENBAUM, A. S., Sistemas Operacionais Modernos,
2. Edio, So Paulo: Prentice Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE, G.; Sistemas


Operacionais. Conceitos e Aplicaes. Rio de Janeiro:
Editora Campus, 2000.

TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementao. 2a Ed. Porto
Alegre: Ed. Bookman, 2000.
Sistemas Operacionais Cincia da Computao
Gerncia de Memria
Introduo
Troca de Processos

Material produzido por Prof. Humberto


Brando
humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Sistemas Operacionais
At agora vimos:

Introduo aos Sistemas Operacionais

Gerencia de Sistemas de Arquivos

Gerncia de Processos;

Deadlocks;

Para completar a nossa ementa falta:

Gerncia de Memria;

Gerncia de Dispositivos;
Gerncia de Memria

Todo programador deseja uma memria infinitamente


grande, rpida e no voltil;

Infelizmente a tecnologia atual no oferece diretamente tais


exigncias;

Atualmente a maioria dos computadores possui uma


hierarquia de memria para tentar sanar o problema.
Gerncia de Memria

Hierarquia de memria:

Uma pequena memria cache, muito rpida e de alto custo;

Uma mdia memria principal (RAM), atualmente com alguns


gigabytes. Velocidade mdia e mdio custo;

E uma grande memria secundria (disco), atualmente com


centenas de gigabytes. Baixa velocidade e baixo custo;
Gerncia de Memria
funo do Gerenciador de Memria controlar quais
partes esto em uso, e quais no esto;

Alocar memria para novos processos;


Espao de endereamento;

Liberar memria dos processos que terminam;

Alocar mais memria para processos que demandam;

Efetuar a troca de processos (swapping), quando a RAM no


suporta todos os processos ao mesmo tempo;
Gerncia Bsica de Memria
Existem duas classes para o gerenciamento de memria:
Sistemas que efetuam o swapping;
Sistemas que no efetuam o swapping;

Se um dia existir tecnologia que disponibiliza mais


memria que os programas podem ocupar, poderemos
seguir para os algoritmos mais simples;

Exemplo de tentativa nesta linha:


Tecnologia a laser permite leitura de discos rgidos 100 mil vezes mais
rpida
http://www1.folha.uol.com.br/folha/informatica/ult124u5748
98.shtml
Gerncia Bsica de Memria

Monoprogramao sem troca de processos


Monoprogramao sem troca de
processos ou paginao
No mximo um processo reside na memria em um
mesmo instante de tempo...
Monoprogramao sem troca de
processos ou paginao
No mximo um processo reside na memria em um
mesmo instante de tempo...

O primeiro modelo foi utilizado


em computadores de grande
porte;

Atualmente no utilizado
Monoprogramao sem troca de
processos ou paginao
No mximo um processo reside na memria em um
mesmo instante de tempo...

Atualmente utilizado em
sistemas embarcados, palmtops,
alguns smartphones.
Monoprogramao sem troca de
processos ou paginao
No mximo um processo reside na memria em um
mesmo instante de tempo...

Utilizado pelo MS-DOS.

A BIOS ocupa a memria ROM.


Monoprogramao sem troca de
processos ou paginao

Quando o programa finaliza, o espao


reservado para o programa de usurio
liberado e o sistema operacional indica no
prompt o termino do processo.

Neste instante ele aguarda uma nova entrada


no terminal para carregar um novo processo
na memria;
Gerncia Bsica de Memria

Multiprogramao com parties fixas


Multiprogramao com parties fixas

Neste modelo vrios processos so


aceitos na memria ao mesmo tempo;
necessrio para a multiprogramao;

A maneira mais simples de suportar a


multiprogramao em memria
dividindo a memria principal em
parties fixas;
Multiprogramao com parties fixas

Quais so as
vantagens e
desvantagens
das parties fixas na memria?
Multiprogramao com parties fixas

Sempre que um novo processo carregado, ele inserido em


uma lista de processos que aguardam um espao na memria
para serem executados;

Basicamente, dois modelos podem ser implementados:

Utilizar uma lista para cada partio de memria;


Utilizar uma lista geral, para todas as parties;
Multiprogramao com parties fixas
Multiprogramao com parties fixas

Quais so as
vantagens e
desvantagens???
Troca de Processos
Troca de Processos

Existem duas formas de gerenciar processos em


memria:

Troca de processos (swapping).


Todo processo precisa estar na memria principal para ser
executado;

Memria virtual.
Permite que programas possam ser executados mesmo que estejam
parcialmente na memria principal
ser detalhado nas prximas aulas;
Troca de Processos
Exemplo de alocao dinmica de processos em
parties de tamanhos variveis:
Espaos sombreados so espaos livres na memria.

Processo A
iniciado.
Troca de Processos
Exemplo de alocao dinmica de processos em
parties de tamanhos variveis:
Espaos sombreados so espaos livres na memria.

Processo B iniciado.
Troca de Processos
Exemplo de alocao dinmica de processos em
parties de tamanhos variveis:
Espaos sombreados so espaos livres na
Processo C memria.
iniciado.
Troca de Processos
Exemplo de alocao dinmica de processos em
parties de tamanhos variveis:
Espaos sombreados so espaos livres na memria.

Processo A
finalizado.
Troca de Processos
Exemplo de alocao dinmica de processos em
parties de tamanhos variveis:
Espaos sombreados so espaos livres na memria.

Processo D
iniciado.
Troca de Processos
Exemplo de alocao dinmica de processos em
parties de tamanhos variveis:
Espaos sombreados so espaos livres na memria.

Processo B
finalizado.
Troca de Processos
Exemplo de alocao dinmica de processos em
parties de tamanhos variveis:
Espaos sombreados so espaos livres na memria.

Processo A
iniciado.
Troca de Processos

A troca de processos pode deixar muitos espaos vazios na


memria;

A soluo efetuar a compactao de memria; Geralmente


no uma prtica S.O.s por gastar muito tempo para realocar
todos os processos;
Troca de Processos

Um ponto importante a quantidade de memria que


deve ser alocada para cada processo;

Se o tamanho fixo, a implementao simples;

FFFF
Contudo, lembre-se do Pilha

espao de endereamento: Lacuna

Dados dinmicos Espao de


endereamento
Dados estticos

Texto

Reservado
0000
Troca de Processos

Na necessidade de mais memria por processo...

Se houver espao disponvel adjacente suficiente ao processo,


o algoritmo simples.

Podemos simplesmente alocar o espao disponvel ao


processo em crescimento;

Se no houver espao livre adjacente, ou espao livre


adjacente suficiente, o processo deve ser realocado na
memria, para uma regio mais promissora;

Mas este espao para realocao pode no existir...


Troca de Processos

Se no existir uma partio onde o processo em crescimento


caiba, o mesmo deve:
Aguardar na memria secundria, ou;
o S.O. deve descart-lo (kill idProcess);

Por qu no deve aguardar na memria primria?


Troca de Processos

Obviamente, os S.O.s modernos alocam uma memria extra para os


processos, devido:
a alocao dinmica de variveis;
ao o crescimento da pilha de execuo;

A JVM, por exemplo, suporta parmetros no momento da


inicializao de um processo java onde o usurio pode informar:
Tamanho inicial do processo;
Tamanho mximo do processo;

Observao (relacionado a eficincia do sistema):


Quando o processo for transferido para o disco, somente a
memria em uso deve ser transportada, economizando na
quantidade de operaes necessrias;
Troca de Processos
(a) Crescimento apenas da heap;
(b) Crescimento da heap e da pilha de execuo.
Gerenciamento de Memria

Representao Computacional
Gerenciamento de Memria
Representao
Suponha a memria abaixo, suportando os processo A,
B, C, D, e E:

Uma possvel implementao por uma lista encadeada:


Gerenciamento de Memria
Processos terminando sua execuo...

Existem quatro possibilidades quando um processo


termina sua execuo...
Algoritmos para Gerncia de
Memria

First-fit, Next-fit, Best-fit, Worst-fit;


Final
Gerenciamento de Memria P1

Algoritmos para Gerncia de Memria


Livre: 40MB

First-Fit: Procura primeiro segmento que P2


couber o processo;
P3

Suponha o processo de tamanho 10MB;


Livre: 30MB
Onde ele ser alocado?
P4
Livre: 10 MB

P5

Livre: 50 MB

Incio
Final
Gerenciamento de Memria P1

Algoritmos para Gerncia de Memria


Livre: 40MB

Next-Fit: com memorizao resultado da P2


ltima alocao; Parecido com o first-fit.
P3

Suponha o processo de tamanho 35MB;


Livre: 30MB
O ltimo processo alocado foi o P4;
P4
Livre: 10 MB
Onde ele ser alocado?
P5

Livre: 50 MB

Incio
Final
Gerenciamento de Memria P1

Algoritmos para Gerncia de Memria


Livre: 40MB

Best-Fit: Procura o menor segmento que P2


caiba o Processo;
Oferece uma sobra mnina dentre as P3
possibilidades;
Livre: 30MB

Suponha o processo de tamanho 28MB; P4


Livre: 10 MB

Onde ele ser alocado? P5

Livre: 50 MB

Incio
Final
Gerenciamento de Memria P1

Algoritmos para Gerncia de Memria


Livre: 40MB

Worst-Fit: Procura o maior segmento P2


disponvel, o restante ainda deve servir;
Oferece uma sobra mxima dentre as P3
possibilidades;
Livre: 30MB

Suponha o processo de tamanho 3MB; P4


Livre: 10 MB

Onde ele ser alocado? P5

Livre: 50 MB

Incio
Gerenciamento de Memria
Algoritmos para Gerncia de Memria

O problema relacionado a fragmentao existente no


Gerenciamento de Sistemas de Arquivos tambm existe na
gerncia de memria;

Experimentos computacionais mostram que no existe uma


estratgia que DEVE ser utilizada na alocao de processos;

Mostram apenas que as polticas mais simples funcionam


muito bem. Como o next-fit;
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice
Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE,


G.; Sistemas Operacionais. Conceitos e
Aplicaes. Rio de Janeiro: Editora Campus,
2000.

TANENBAUM, A. S.; WOODHULL, A.S.;


Sistemas operacionais: projeto e
implementao. 2a Ed. Porto Alegre: Ed.
Bookman, 2000.
Sistemas Operacionais Cincia da Computao
Gerncia de Memria
Memria Virtual, Paginao e
Algoritmos para Substituio de
Pgina

Material produzido por Prof. Humberto


Brando
humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Memria Virtual

Desde os primrdios da computao que comum a


existncias de programas maiores que o tamanho de
memria disponvel;

Programa

40KB

Memria

4KB
Memria Virtual

Como este problema pode ser resolvido???

Programa

40KB

Memria

4KB
Memria Virtual

Uma soluo utilizada com muita freqncia no passado


era a diviso do programa em subprogramas,
denominados overlays (mdulos de sobreposio);
Memria Virtual
Uma soluo utilizada com muita freqncia no passado
era a diviso do programa em subprogramas,
denominados overlays (mdulos de sobreposio);

Programa 2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
40KB 2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
Exemplo com 20 mdulos de 2KB cada
Memria Virtual
O mdulo 0 sempre o primeiro a ser executado e o
programador deve garantir a correta interao entre os
mdulos.

2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB
2KB Memria
2KB
2KB
2KB
2KB 4KB
2KB
Programa dividido em 20 mdulos
Memria Virtual
O S.O. era responsvel apenas pela troca de mdulos na memria,
seguindo as instrues encontradas ao executar cada mdulo;

definidas pelo programador;


responsabilidade do programador;

A diviso do programa em mdulos era um trabalho lento e


totalmente dependente da arquitetura.

Exemplo.:
Se o programa fosse executado em uma mquina com menos memria
se comparado a mquina que o mesmo foi projetado, ele deveria ser
totalmente reorganizado;
Memria Virtual
No demorou muito para a comunidade pensar em
atribuir tal responsabilidade para o S.O.;

Em 1961 aparece pela primeira vez o conceito de


memria virtual;

Idia bsica:
Um programa maior que a memria primria pode ser
executado por meio de uma escolha inteligente sobre qual parte
vai estar na memria em cada instante;
Partes do programa podem ser dinamicamente carregadas para
a memria primria;
Paginao
Memria Virtual
Paginao

Sistemas operacionais modernos utilizam o conceito de


paginao para implementar a memria virtual;

Quando um programa executa a instruo


mov REG, 500

Ele deseja copiar o contedo do endereo de memria


500 para o registrador REG;
Memria Virtual
Paginao

mov REG, 500

Na verdade, 500 um endereo virtual;

No necessariamente 500 do endereo virtual corresponde ao


endereo fsico 500;

Tambm possvel que o endereo virtual requisitado no esteja na


memria principal;
Memria Virtual
Paginao

Em computadores sem memria virtual, o endereo


virtual idntico ao endereo fsico;

Em computadores com memria virtual necessrio um


sistema especial para efetuar as converses de endereos
necessrias;

Este mdulo denominado MMU (memory management


unit) unidade de gerenciamento de memria.
Memria Virtual
Paginao MMU Unidade de Gerenciamento de Memria
Estrutura utilizada pela MMU
Converso efetuada pela MMU

A instruo
mov REG, 0
convertida pela MMU
para
mov REG, 8192

O endereo 0 (virtual)
pertence a pgina 2 da
memria real.
Tamanho da pagina = 4k;
endereo = (1024*2*4)
Converso efetuada pela MMU

J a instruo
mov REG, 8192
convertida pela
MMU para
mov REG, 24576

O endereo 8192
pertence a pgina 6 da
memria real
(24K at 28K)
Converso efetuada pela MMU

Limitao

A memria virtual maior


do que a memria fsica
primria...

O que acontece ao
invocarmos
mov REG, 32780 ?

12 byte da 8 pgina da
memria virtual...
Converso efetuada pela MMU

mov REG, 32780 ?


A MMU encontra um indicador
X. Isso significa que o contedo
no est na memria principal.
Est no disco.

Isso conhecido como page fault


(falta de pgina);

O que a MMU deve fazer?


Converso efetuada pela MMU

Page fault:

A MMU deve trazer a pgina do disco


para a memria primria....

Mas todas as pginas da memria


primria esto sendo referenciadas
pela memria virtual;

O que fazer???
Converso efetuada pela MMU

Page fault:

Neste caso, a MMU deve executar um


algoritmo para substituio de pgina;

Elimina uma das pginas da memria


fsica (mas a armazena no disco) e traz
a pgina requisitada para a posio
liberada.
Algoritmos de Substituio de Pgina

Deciso do S.O.:
Qual pgina deve ser removida?

importante notar que este problema se repete em


diferentes reas da Computao:
Cache de servidores web. Quais pginas devem estar no
cache do servidor Apache?
Cache do proxy;
Cache do Youtube.
Algoritmos de Substituio de Pgina

Diferentes algoritmos podem ser implementados


para manuteno de caches;

Substituio Aleatria:
escolha aleatria de uma moldura de pgina na memria
principal para ser substituda.

Fcil implementao;

Desempenho frustrante;
Algoritmos de Substituio de Pgina

Antes de comentar outros algoritmos devemos


responder:

Existe algoritmo timo para a substituio de pginas?


Algoritmos de Substituio de Pgina

Algoritmo timo:

Existe!
Impossvel de implementar em um S.O. de uso geral!
Ento, como se no existisse!

Algoritmo:
remover a pgina que mais tarde ser referenciada.
Ou seja, evita ao mximo futuras faltas de pgina.
Algoritmos de Substituio de Pgina

300
200
100
50 Instantes que as
10 pginas sero
500 referenciadas...
350
230
Algoritmos de Substituio de Pgina

Escolhendo a pgina
2, o sistema evita ao
mximo a prxima
falta de pgina

300
200
100
50 Instantes que as
10 pginas sero
500 referenciadas...
350
230
No Usada Recentemente (NUR)
Algoritmos de Substituio de Pgina

Algoritmo No Usada Recentemente (NUR)

A tabela de pginas precisa de dois bits para cada registro


de pgina:
R indica se a pgina foi referenciada;
M indica se a pgina foi modificada;

1 indica verdadeiro...
0 indica falso....
Algoritmos de Substituio de Pgina

Algoritmo No Usada Recentemente (NUR)

importante observar que os bits devem ser atualizados a


cada referencia a memria.

A cada referencia a memria, o S.O. separa todas as pginas


em 4 categorias:
Classe 0 No referenciada e no modificada;
Classe 1 No referenciada e modificada;
Classe 2 Referenciada e No modificada;
Classe 3 Referenciada e Modificada;
Algoritmos de Substituio de Pgina

Algoritmo No Usada Recentemente (NUR)

O Algoritmo NUR remove aleatoriamente uma pgina da


classe de mais baixa ordem que no esteja vazia.

As classes embutem informaes sobre as pginas mais


importantes.. Mais utilizadas... E faz uma escolha
inteligente sobre a eliminao de uma pgina.
FIFO
Algoritmos de Substituio de Pgina

Algoritmo FIFO Primeiro a entrar, primeiro a sair:

A primeira pgina da fila a prxima a deixar a memria


principal na prxima falta de pgina...

Fcil Implementao;

Baixo custo computacional


Operaes em (1)
remover e inserir na lista...
Algoritmos de Substituio de Pgina

Algoritmo FIFO Primeiro a entrar, primeiro a sair:

No tem garantia alguma de qualidade...

Sua implementao pura raramente encontrada na


implementao de caches;
Segunda chance
Algoritmos de Substituio de Pgina

Algoritmo Segunda chance (SC):

uma simples modificao do algoritmo FIFO;

Utiliza a Fila, mas evita eliminar uma pgina recentemente


utilizada;

Para analisar esta informao, utilizado o bit R


(referenciada);
Algoritmos de Substituio de Pgina

Algoritmo Segunda chance (SC):

Se a pgina foi lida ou referenciada recentemente, ela no


removida da lista.

Vai para o fim da lista, e seu bit R (recentemente


referenciada) passa a ser 0;

Mescla a idia do FIFO, mas inserindo informaes de


popularidade;
Algoritmos de Substituio de Pgina
Algoritmo Segunda chance (SC):

1 0 1 1 0 1 1 0

0 1 1 0 1 1 0 0

Operao do algoritmo segunda chance


a) lista de pginas em ordem FIFO
b) estado da lista em situao de falta de pgina no instante 20,
com o bit R da pgina A em 1 (nmeros representam instantes
de carregamento das pginas na memria)
Relgio
Algoritmos de Substituio de Pgina

Algoritmo Relgio

Melhoria do Algoritmo de Segunda Chance;

Ao invs de implementar uma fila, implementa uma lista


circular:
Evita remover elementos do inicio da fila, e inserir no fim da
fila; (evita alocao de memria dinmica)
Apenas move seu apontador do primeiro da fila;

S eficiente porque a memria virtual tem um tamanho fixo.


Algoritmos de Substituio de Pgina

Algoritmo Relgio
Algoritmos de Substituio de Pgina

Algoritmo Relgio

Diferencia do algoritmo da Segunda chance somente em


implementao;

No existe nenhuma diferena com relao a quantidade de


pginas substitudas ao final de sua execuo;
Menos Recentemente Usada (MRU)
Algoritmos de Substituio de Pgina

Algoritmo Menos Recentemente Usada (MRU)

Utiliza da hiptese:
Pginas referenciadas intensamente nas ultimas instrues
provavelmente sero de novo referenciadas de maneira intensa
nas prximas instrues.

Obviamente, remove a pgina a mais tempo no


referenciada.

Observe que isso no acontece no algoritmo de segunda


chance;
Algoritmos de Substituio de Pgina

Algoritmo Menos Recentemente Usada (MRU)

Para implementar, necessrio manter uma lista encadeada


de todas as pginas na memria;

Vantagem?

Desvantagem?
Algoritmos de Substituio de Pgina

Algoritmo Menos Recentemente Usada (MRU)

Vantagem:
Na ocorrncia de uma falta de pgina, a pgina a mais tempo
sem utilizao a primeira da lista;

Desvantagem:
A lista tem que ser gerenciada a cada referencia memria;
Algoritmos de Substituio de Pgina

Algoritmo Menos Recentemente Usada (MRU)

Qual estrutura mais adequada?


Vetor ou
Lista Encadeada

Por qu?
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice
Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE,


G.; Sistemas Operacionais. Conceitos e
Aplicaes. Rio de Janeiro: Editora Campus,
2000.

TANENBAUM, A. S.; WOODHULL, A.S.;


Sistemas operacionais: projeto e
implementao. 2a Ed. Porto Alegre: Ed.
Bookman, 2000.
Sistemas Operacionais Cincia da Computao
Gerncia de Entrada e Sada

Material produzido por Prof. Humberto


Brando
humberto@bcc.unifal-mg.edu.br

Prof. Douglas Castilho


douglas@bcc.unifal-mg.edu.br

Universidade Federal de Alfenas


verso da aula: 0.4
Gerncia de Entrada e Sada

Um perifrico qualquer dispositivo conectado a um


computador de forma a possibilitar a interao do
computador com o mundo externo;

O comunicao com o mundo externo inclui:


Pessoas, atravs de:
Teclado, mouse, monitor, caixa de som, joystick, etc;
Outros equipamentos, atravs de:
Modems, placas de rede, etc;
Gerncia de Entrada e Sada

De acordo com o sentido do fluxo de informaes


definimos dispositivos:

De entrada;

De sada;

De entrada e sada;
Gerncia de Entrada e Sada

O papel do Sistema Operacional conversar com


todos estes diferentes dispositivos, de forma eficaz e
eficiente;

Como?

O que seria eficaz?


O que seria eficiente?
Gerncia de Entrada e Sada

Um perifrico conectado ao computador atravs de um


componente de hardware denominado interface;

Para tratar a diversidade, as interfaces utilizam


controladores, que so projetados para perifricos
especficos;

Por exemplo, para um microprocessador enviar o endereo fsico


de dados para um disco rgido. O controlador (placa de circuitos
anexa) traduz esse endereo e aciona os dispositivos mecnicos
especficos do disco para que os dados possam ser enviados para
o processador.
Gerncia de Entrada e Sada
A CPU se comunica com o controlador atravs de um
conjunto de registradores;
Registrador de dados;
Registrador de comando;
Registrador de status;

Exemplo de uma impresso:


A CPU coloca a palavra w no registrador de dados;
A CPU coloca o comando write no registrador de comando;
O controlador aciona os dispositivos eltricos e/ou mecnicos
necessrios;
O controlador escreve no registrador de status se a operao foi
ou no bem sucedida;
Uma interrupo gerada para avisar a CPU do fim da
operao;
Gerncia de Entrada e Sada

A funo bsica do controlador implementar um conjunto de


comandos/operaes para o seu dispositivo especfico;

O controlador traduz cada ordem colocada no registrador de


comandos numa seqncia especfica de acionamentos eletrnicos,
eltricos e mecnicos;

Outras tarefas do controlador:


converter fluxo serial de bits em bloco de bytes;
executar toda correo de erro necessria (se possvel).
Gerncia de Entrada e Sada
Interao entre CPU e os
Controladores de Perifricos
Gerncia de Entrada e Sada

Interao entre a CPU e os Controladores de Perifricos:

Pode acontecer de trs maneira distintas:

E/S programada;
Comunicao via interrupo;
Acesso direto memria.
Gerncia de Entrada e Sada

Interao entre a CPU e os Controladores de Perifricos:

E/S programada:

Tcnica usada quando no existe sistema de interrupo;

Ou seja, no possvel avisar a CPU que uma operao finalizou,


por exemplo;

Toda a interao de responsabilidade exclusiva do programador;


Gerncia de Entrada e Sada

Interao entre a CPU e os Controladores de Perifricos:

E/S programada:

Ex.: O processador envia uma requisio na rede e fica testando


continuamente se os pacotes chegaram;

Famosa ESPERA OCUPADA;


Problema similar a soluo de Peterson, ao garantir apenas um
processo na regio crtica.
Gerncia de Entrada e Sada

Interao entre a CPU e os Controladores de Perifricos:

E/S programada:

A perda de tempo de CPU pode ser minimizada se outras tarefas


so executadas entre um teste e outro (enquanto o perifrico no
responde);

Mas nem toda aplicao possui esta natureza;

Isso acaba retirando o tempo de processamento de outros


processos, pois o processo atual no dorme;
Interao entre CPU e os
Controladores de Perifricos

Comunicao via Interrupo


Gerncia de Entrada e Sada

Interao entre a CPU e os Controladores de Perifricos:

Comunicao via Interrupo:

Neste caso, a CPU responsvel apenas por iniciar uma operao


de E/S;

Quando a operao de E/S termina, o controlador interrompe o


processador para que o mesmo acesse dados, ou verifique o status
da operao;

O processo dorme at o momento exato;


No existe espera ocupada neste caso;
Gerncia de Entrada e Sada

Interao entre a CPU e os Controladores de Perifricos:

A utilizao de interrupes resolve o problema de determinar o


momento exato em que o dispositivo necessita de ateno do
processador;

Mas os processos no iro acessar os registradores dos


dispositivos;
Eles acessam a memria virtual do computador;

Ento necessrio efetuar a transferncia de dados;


O processador precisa levar o dado do registrador da interface para
a memria do computador;
Gerncia de Entrada e Sada

Interao entre a CPU e os Controladores de Perifricos:

Quando o volume de dados considervel, o procedimento de


interrupes se torna ineficiente porque precisa utilizar o
processador para carregar os dados dos registradores para a
memria;

Uma alternativa surgiu...


O acesso direto a memria (feito pelos dispositivos);
Acesso direto Memria
Gerncia de Entrada e Sada

Acesso direto Memria:

Agora possvel transferir diretamente os dados da interface do


dispositivo para a memria virtual;

Este procedimento conhecido como DMA (direct memory


access);
Gerncia de Entrada e Sada

Acesso direto Memria:

Ao terminar a cpia dos dados, pode invocar o processador


atravs de uma interrupo;

Apesar de concorrer com o processador no barramento para


acessar a memria RAM e o disco, esta interao se mostra mais
eficiente de modo geral;
Pois nem sempre o processador est acessando a memria;

Significa uma computao paralela de operaes;


Enquanto o processador resolve outros problemas de outros
processos, a interface insere dados na memria antes de causar uma
interrupo;
Princpio Bsicos de E/S
Princpio Bsicos de E/S

O mdulo do S.O. que implementa o acesso a diferentes


dispositivos deveria ser muito complexo:
devido a diversidade de elementos que ele deve tratar;

Desde o incio, os projetistas se preocuparam em padronizar


ao mximo a forma de acesso aos perifricos;
Princpio Bsicos de E/S

Como primeira melhoria, os programas de usurio deixaram


de ser preocupar com o acesso direto aos dispositivos;

Mas isso no resolveu o problema de acessar diferentes


dispositivos;

Para isso, foi proposto um mdulo de 4 camadas;


Princpio Bsicos de E/S

E/S a nvel de usurio

E/S independente de dispositivo


Interface padro S.O.
Driver Driver Driver Driver
...
rede floppy teclado disco
Hardware
Princpio Bsicos de E/S

Drivers de dispositivo:
Responsveis por implementar um acesso especfico;
Seu objetivo ocultar a diferena entre vrios dispositivos;
Geralmente disponibilizados pelos fabricantes;
O S.O. disponibiliza alguns drivers por padro, mas que no
garantem a utilizao de todos os recursos do hardware;
Princpio Bsicos de E/S

E/S independente de dispositivo:


Contem funes genricas, que funcionaro at para dispositivos
ainda no inventados!!!
Exemplo:
Ler 512KB de um volume de dados... No interessa qual o tipo de
volume... Disco, usb, cd-rom...
Quem deve se preocupar com isso seu driver na camada
inferior;
Princpio Bsicos de E/S

E/S nvel de Usurio:


Tem acesso apenas aos recursos disponibilizados pelos
compiladores;
Exemplo: printf;
O programador no se preocupa se o arquivo vai ser escrito na
USB, no HD ou no CD;
As camadas mais internas fazem o redirecionamento e os
devidos tratamentos;
Princpio Bsicos de E/S

E/S nvel de Usurio:


O compilador responsvel em oferecer uma biblioteca de E/S
para cada sistema em que seu compilador v ser utilizado;
Esta biblioteca que faz as chamadas ao S.O.
Bibliografia

TANENBAUM, A. S., Sistemas Operacionais


Modernos, 2. Edio, So Paulo: Prentice
Hall, 2003.

SILBERSCHATZ, A; GALVIN, P e GAGNE,


G.; Sistemas Operacionais. Conceitos e
Aplicaes. Rio de Janeiro: Editora Campus,
2000.

TANENBAUM, A. S.; WOODHULL, A.S.;


Sistemas operacionais: projeto e
implementao. 2a Ed. Porto Alegre: Ed.
Bookman, 2000.