SlideShare uma empresa Scribd logo
1 de 125
Baixar para ler offline
Curso Superior de
Sistemas para Internet
Márcia de Oliveira Alves
Cuiabá 2011
Sistemas
Operacionais
GOVERNO FEDERAL
Dilma Rousseff
Presidente do Brasil
Fernando Haddad
Ministro da Educação
Jorge Almeida Guimarães
Presidente da Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES)
José Carlos Teatini Climaco
Diretor de Educação a Distância da Universidade Aberta do Brasil (UAB) na CAPES
IFMT - INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO GROSSO
José Bispo Barbosa
Reitor
Willian Silva de Paula
Pró Reitor de Ensino
Alexandre José Schumacher
Coordenador Geral UAB/IFMT
Claudete Galvão de Alencar Pedroso
Coordenadora Adjunta UAB/IFMT
Alexandro Uguccioni Romão
Editoração eletrônica
Luisa do Amparo Carvalho Patatas
Revisão de português
Coordenação da UAB/IFMT
Instituto Federal de Educação, Ciência e Tecnologia do Mato Grosso (IFMT) - Campus Bela Vista -
AvenidaJulianoCostaMarquesS/N,CEP:78.050-560,BelaVista,Cuiabá/MT-Brasil
A produção deste material didático obteve financiamento no âmbito do Programa Universidade
AbertadoBrasil,CAPES/FNDE/MEC.
Autoriza-se o uso e a reprodução da obra no âmbito do Sistema UAB e o IFMT desde que citada a
fonte.Évedadoousodestaobraparafinsdecomercialização.
Ficha Catalográfica
Alves, Márcia de Oliveira.
Márcia de Oliveira Alves.
Cuiabá: Publicação do IFMT, 2011.
123p.; 21 x 29,7 cm.
Sistemas Operacionais.
Sistemas Operacionais 2
Unidade I – Fundamentos de Sistemas Operacionais
Introdução aos Sistemas Operacionais
Estrutura do Sistema Operacional
Evolução dos Sistemas Operacionais
Tipos de Sistema Operacional
[Objetivos Específicos da Unidade I]
Propomos, nesta UNIDADE, levar você a:
• Compreender o papel de um Sistema Operacional no
gerenciamento dos dispositivos dos computadores.
• Discutir principais conceitos de Sistemas Operacionais
Sistemas Operacionais 3
Fundamentos de Sistemas Operacionais
O que e mais importante o hardware ou o software? Olhe para o seu
microcomputador, como é possível essa caixa, cheio de componentes, ser capaz de
realizar tantas ações. Sem um software básico, isto e, um sistema operacional, essa caixa
não funciona, e sem um sistema operacional adequado, todos os recursos disponíveis
nesta caixa não serão aproveitados da melhor forma possível.
À medida que vamos conhecendo a função e a estrutura interna de um sistema
operacional, podemos relacionar esse conhecimento as situações que diariamente
vivenciamos ao utilizarmos um microcomputador.
Esta unidade trata de assuntos que vão conduzi-lo a um entendimento mais
analítico e criterioso sobre o funcionamento de um sistema computacional. O sistema
Operacional responsável pelo funcionamento desse sistema e composto de módulos que
determinam e classificam sua função.
Os tópicos serão apresentados de forma que você apreenda o conceito de
sistemas operacionais, sua função e seus módulos. E, para facilitar a sua aprendizagem,
serão propostas questões e orientações de estudo ao longo do texto.
Objetivamos que você adquira um conhecimento aprofundado da estrutura de um
sistema operacional. Para que isso ocorra, é fundamental que você seja capaz de
entender lógica de programação, bem como as várias técnicas utilizadas em estruturas de
dados.
Portanto, sugerimos
questões ao longo do texto para
apreensão de determinados
conceitos e, ao final da unidade,
você está convidado a verificar
seus conhecimentos por meio da
auto-avaliação, que deverá ser
enviada ao seu tutor.
Então, mãos à obra!
Introdução aos Sistemas
Operacionais:
Este assunto irá contribuir
para que você possa entender o
que e um sistema operacional
qual a sua função e seus
principais componentes.
Sistemas Operacionais 4
Observe a figura abaixo.
Você poderia a partir dessa imagem, formular um conceito para Sistemas
Operacionais?
Vamos supor que você tenha respondido que um sistema operacional e o elemento
que interliga o hardware e usuário tendo em vista que o usuário não sabe falar a
linguagem de maquina. Se foi essa a sua resposta, esta parcialmente certa. Para
fazermos jus a um Sistema Operacional podemos conceituá-lo como?
Para entendermos esse conceito temos que ter bem definido duas funções básicas
de um Sistema Operacional.
• Facilidade de acesso aos recursos de um sistema
• Compartilhamento de recursos de forma organizada e segura.
Um computador normalmente possui diversos componentes, como monitor,
impressora, som e scanner. Quando utilizamos um desse dispositivo, não nos
preocupamos com a maneira como e realizada esta comunicação, bem como os inúmeros
detalhes envolvidos neste processo. Essa e uma das funções do Sistema Operacional.
Quando utilizamos o computador de forma compartilhada, disponibilizando
recursos com outros usuários, fica também a cargo do Sistema Operacional gerenciar
esse compartilhamento de forma segura e organizada.
Após esse conceito qual a sua visão de um Sistema Computacional?
Um computador visto somente como um gabinete composto de circuitos
eletrônicos, cabos e fontes de alimentação, ou seja, visto somente como o hardware, não
tem nenhuma utilizada. O sistema Operacional e um elemento vital para o funcionamento
do hardware.
A imagem abaixo poderia representar a sua visão de um Sistema Computacional?
Hardware
Sistema Operacional
usuários
Bem, acredito que sim.
Software responsável pela interface entre a máquina e o usuário e entre a maquina e
os aplicativos, exercendo funções que permitam o acesso seguro às informações contidas na
memória do computador.
Sistemas Operacionais 5
Partindo desta visão podemos considerar o computador como uma maquina de
níveis ou camada.
Logicamente um computador não possui apenas dois níveis, e sim tantos níveis
forem necessários para adequar os usuários as suas diversas aplicações.
Uma estrutura padrão dos possíveis níveis de um sistema computacional pode ser
representada da seguinte forma:
Estrutura do Sistema Operacional
Bem, podemos explicar isso através dos
conceitos que envolvem a estrutura de um sistema
operacional.
O Sistema operacional é formado por um conjunto de rotinas que oferecem
serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A
esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel.
É importante entender que os procedimentos de um sistema operacional são
referentes ao tratamento processos1 que são executados de forma concorrente ou
simultaneamente, ou seja, sem uma ordem específica ou predeterminada.
As principais funções do núcleo encontradas na
maioria dos sistemas comerciais são as seguintes:
Tratamento de interrupções e exceções:
função responsável por tratar alguns
eventos inesperados que podem ocorrer,
ocasionando um desvio forçado no seu
fluxo normal de execução. Criação e
eliminação de processos: função
responsável por alocar em memória todos
os recursos necessários à execução do processo.
1
É basicamente um programa em execução, sendo constituído de código executável do dado.
Utilitários
Circuitos Eletrônicos
Microprogramação
Linguagem de Máquina
Sistema Operacional
Aplicativos
Maquina de níveis
Você pode imaginar como são
realizadas as operações pelo sistema
operacional?
Você faz idéia de como o sistema
operacional resolve os conflitos de
informações que são manipuladas?
Sistemas Operacionais 6
Escalonamento e controle de processos: função responsável por organizar a
fila de acesso ao processador.
Gerência de memória: função responsável por fornecer à função de
criação/eliminação de processos os endereços em memória disponíveis para
alocação;
Gerência de sistemas de arquivos: responsável pelo gerenciamento dos
arquivos, bem como seu compartilhamento pelos diversos usuários,
implementando mecanismos de controle da segurança e direitos de acesso
às áreas utilizadas pelos usuários nos diversos dispositivos;
Gerência de dispositivos de E/S: responsável por gerenciar os dispositivos,
prestando auxílio à criação/eliminação de processos e á gerência de
sistemas de arquivos no que diz respeito ao endereçamento e associação
de arquivos em periféricos;
Suporte a redes e teleprocessamento: é esta função que executa todos os
serviços de rede, fazendo o empacotamento das mensagens vindas dos
terminais para a CPU central e vice-versa, além de controlar e confirmar o
envio e recebimento de todas as mensagens que trafegam pela rede;
Contabilização de uso do sistema: responsável por contabilizar o uso de
todos os recursos do sistema consumidos pelos usuários e suas aplicações.
Auditoria e segurança do sistema: função extremamente importante, pois
detecta e registra (num arquivo especial de LOG) todas as ocorrências de
erro e violação de direitos de acesso ao sistema, aos arquivos, à memória e
a todos os recursos do sistema.
Você poderia responder por que existe esta preocupação?
Se a sua resposta está relacionada com o fato de que uma vez corrompido o
sistema poderá não funcionar, então você está correto.
“Uma grande preocupação no projeto de sistemas operacionais se refere à implementação de
mecanismos de proteção ao núcleo do sistema e também o controle de acesso aos serviços
oferecidos pelo sistema.”
Sistemas Operacionais 7
Evolução dos Sistemas Operacionais:
Bom, diante desse conceito podemos concluir que o Sistema Operacional é
totalmente interligado com o hardware. Sendo assim, como eram os sistemas
operacionais dos primeiros computadores?
Ou melhor, como seriam os primeiros computadores?
“Para cada serviço disponível existe uma system call associada, e cada sistema
operacional possui seu próprio conjunto de chamadas.”
Sistemas Operacionais 8
O ENIAC e considerado o primeiro computador digital e
eletrônico, foi desenvolvido por J. Presper Eckert e John
W. Mauchly, da Universidade da Pensilvânia. Este
computador realizou cálculos balísticos e foi utilizado no
projeto da bomba de hidrogênio. Possuía 17 mil
válvulas, 10 mil capacitores, 70 mil resistores, pesava
30 toneladas, consumia 140 quilowatts e era capaz de
executar 5 mil adições por segundo. Seu painel de
programação continha 6 mil conectores.
Curiosidade?
Vocês notaram que o processo de evolução apresenta categoria diferente de
software de gerenciamento e manipulação do hardware. Bem isso significa que em
cada uma dessas fases surgiu um tipo de Sistema Operacional.
Tipos de Sistema Operacional
Os Sistemas operacionais podem ser classificados em tres tipos:
Ultra-LSI
Arquiteturas Paralelas
Circuito Integrado 3-D
Sistemas Operacionais 9
Tipos de Sistema Operacional
Os Sistemas Operacionais Monoprogramaveis/monotarefa eram voltados
tipicamente para a execução de um
único programa. Qualquer outra
aplicação, para ser executada,
deveria aguardar o término do
programa corrente. Neste tipo de
sistema, o processador, a memória e
os periféricos permanecem
exclusivamente dedicados à
execução de um único programa.
Os Sistemas Operacionais
Multiprogramaveis/Multitarefa
constituíram de uma evolução dos
sistemas monoprogramáveis, neste tipo de sistema os recursos computacionais são
compartilhados entre os diversos usuários e aplicações: enquanto um programa espera
por um evento, outros programas podem estar processando neste mesmo intervalo de
tempo.
Curiosidade
Memória
Principal
Dispositivos
de E/S
UCP
programa/
tarefa
Modo de execução dos sistemas monotarefa
Um dos cientistas da Bell Labs, Ken Thompson,
descobriu um pequeno microcomputador que
ninguém.
Estava usando e começou a escrever uma versão
simplificada monousuária que evoluiu para o SO
UNIX, que se tornou popular no mundo acadêmico,
entre órgãos do governo e entre muitas empresas
(Fonte:
http://www.geocities.com/geologo_1999/oquee.htm)
Sistemas Operacionais 10
Tipos de Sistemas Multiprogramáveis/Multitarefa
Os Sistemas Operacionais com Múltiplos Processadores são caracterizados
por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A
vantagem deste tipo de sistema é permitir que vários programas sejam
executados ao mesmo tempo ou que um mesmo programa seja subdividido
em várias partes para serem executadas simultaneamente em mais de um
processador
Tipos de sistemas com múltiplos processadores
Sistemas Operacionais 11
Sistemas Fortemente Acoplados
UCP UCP
Memória
Principal
Dispositivos
de E/ S
Dispositivos
de E/ S
Sistemas Fracamente Acoplados
UCP UCP
Memória
Principal
Memória
Principal
Dispositivos
de E/S
link de comunicação
Dispositivos
de E/ S
Os sistemas Fortemente acoplados podem ser divididos, quanto a sua organização
em: Assimétricos e Simétricos.
Sistema assimétricos
Nos sistemas assimétricos somente um processador pode executar os serviços do
sistema Operacional.
Exemplo:
Nos sistemas simétricos todos os processadores executam os serviços do sistema
Operacional.
Cada sistema tem sua
própria memória
individual.
Possui apenas uma memória a
ser compartilhada pelos
processadores do conjunto.
Se uma solicitação de Entrada é solicitada pelo usuário na UCP Slave (escrava) esse serviço será
requisitado a UCP Master (mestre)
Sistemas Operacionais 12
Sistema Simétrico
NOTA:
Os sistemas Fracamente Acoplados podem ser divididos, quanto a sua
organização em: Redes e distribuídos.
Em um sistema em rede, existem vários computadores com seu próprio sistema
operacional, além de software que possibilitam ter acesso a outros componentes da rede.
O que define sistema distribuído é a existência
de um relacionamento mais forte entre os seus
componentes, em geral os sistemas operacionais são
os mesmo. Para o usuário e para suas aplicação é
como se não existisse uma rede, mas sim um único
sistema centralizado.
Sistema Distribuído
Síntese da Unidade:
Sistemas operacionais consiste em um software responsável pela
comunicação entre o hardware com os usuários e os aplicativos.
As duas principais funções de um sistema operacional e: facilidade de
acesso aos recursos computacionais e gerenciamento desses recursos.
Em sua estrutura interna, o sistema operacional possui o núcleo também
chamado de Kernel, que por sua vez é protegido pelos System Call.
A evolução de um sistema operacional esta diretamente ligada à evolução
do hardware. A cronologia de evolução foi estabelecida em cinco fases
Sistema de rede
Algumas funções de controle ficam a cargo de um único processador, dentre elas o BOOT.
Sistemas Operacionais 13
distintas: 1ª fase (1645 – 1956), 2ª fase (1956 – 1965), 3ª fase (1966 –
1980), 4ª fase (1981 – 1990), 5ª fase (1991 - ).
De acordo com a evolução dos sistemas operacionais os mesmos foram
divididos em três tipos: Monoprogramáveis/monosuario,
multiprogramáveis/multarefa e múltiplos processadores.
Os Sistemas multiprogramáveis/multitarefa são subdivididos em Sistemas
em batch, sistema de tempo compartilhado e sistemas de tempo real.
Os sistemas para múltiplos processadores podem ser classificados em
sistemas fortemente acoplados e sistemas fracamente acoplados.
Os sistemas fortemente acoplados são classificados em: sistemas
assimétricos e sistemas simétricos.
Os sistemas fracamente acoplados. São classificados em: sistemas de
redes e sistema distribuído.
[ Auto-Avaliação ]
1. Como seria utilizar um computador sem um S.O. Quais são as duas principais
funções de um S.O?
2. Qual a relação da visão do usuário de um Sistema Computacional e o conceito
de uma máquina de níveis ou camadas?
3. Todos os sistemas operacionais possuem uma mesmo System Call?
4. Quais os tipos de S.O. existentes?
5. Assinale a Alternativa correta cujo conceito se caracteriza por: “possuir duas ou
mais CPUs interligadas e trabalhando em conjunto”.
a) ( ) Sistema monotarefa
b) ( ) Sistema Multiprogramaveis
c) ( ) Sistema Múltiplos processadores
d) ( ) Sistema monousuario
6. Qual a grande diferença entre sistemas mono e multiprogramáveis?
7. Quais as vantagens de sistemas multiprogramáveis?
8. Um sistema monousuário pode ser um sistema multiprogramável? Dê um
exemplo.
9. Quais são os tipos de sistemas multiprogramáveis?
10. Assinale a alternativa que corresponda ao conceito de “sistema batch”.
a)( ) voltados tipicamente para a execução de um único programa.
b)( ) Nesta modalidade, os programas eram submetidos para execução
através de cartões perfurados e armazenados em disco ou fita, para posterior
execução.
Sistemas Operacionais 14
c)( ) permitem que diversos programas sejam executados a partir da divisão
de tempo do processador em pequenos intervalos.
d)( ) Um programa ocupa o processador o tempo que for necessário ou até
que apareça um outro com um nível de prioridade maior.
11. Como funcionam os sistemas de tempo compartilhado? Quais as vantagens em
utilizá-los?
12. Qual a grande diferença entre sistemas de tempo compartilhado e tempo real?
Quais aplicações são indicadas para sistemas de tempo real.
13. O que são sistemas com múltiplos processadores e quais as vantagens em
utilizá-los?
14. Qual a grande diferença entre sistemas fortemente acoplados e fracamente
acoplados?
[ Referências Bibliográficas ]
MACHADO, Francis Berenger ; MAIA, Luiz Paulo. “Arquitetura de Sistemas
Operacionais”, 2ª Edição, Ed. LCT, 1997.
SILBERSCHATZ, Abraham; GALVIN, Peter Baer. "Sistemas Operacionais:
Conceitos", quinta edição. Pearson Brasil, 2000.
TANENBAUM, Andrew S., WOODHULL, Albert S.. "Sistemas Operacionais -
Projeto e Implementação", segunda edição. Prentice-Hall, 2000.
Sistemas Operacionais 15
Unidade II – Conceitos de Processos
Estado de um processo
Hierarquia entre os processos
Mecanismos de Interrupções
Programação Paralela
Especificação da concorrência em programas
Comunicação entre processos e seção Crítica
Starvation e Deadlock
[Objetivos Específicos da Unidade II]
Propomos, nesta UNIDADE, levar você a:
• Compreender o papel de um Sistema Operacional no gerenciamento
dos dispositivos dos computadores.
• Discutir principais conceitos de Sistemas Operacionais
Sistemas Operacionais 16
Gerência de Processos
O módulo anterior destacou as funcionalidades de um sistema operacional. Neste
módulo apresentaremos a unidade de trabalho de um sistema operacional: o processo, ou
seja, trataremos das requisições do usuário de do hardware.
À medida que vamos conhecendo a estrutura interna de um sistema operacional,
podemos relacionar esse conhecimento as situações que diariamente vivenciamos ao
utilizarmos um microcomputador.
Esta unidade trata de assuntos que vão conduzi-lo a um entendimento mais
profundo sobre o funcionamento de um sistema operacional, sobre como o sistema
manipula as ações que norteiam o funcionamento de um sistema computacional.
Os tópicos serão apresentados de forma que você apreenda o conceito de
processo, sua estrutura e as questões que envolvem a sua manipulação. E, para facilitar
a sua aprendizagem, serão propostas questões e orientações de estudo ao longo do
texto.
Objetivamos que você adquira um conhecimento que lhe permita identificar os
processos, as formas com que eles se comunicam e os principais problemas encontrados
em sua comunicação. Para que isso ocorra, é fundamental que você seja capaz de
entender lógica de programação, bem como as várias técnicas utilizadas em estruturas de
dados.
Portanto, sugerimos questões ao longo do texto para apreensão de determinados
conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por
meio da auto-
avaliação, que
deverá ser enviada
ao seu tutor.
Então, mãos à
obra!
Processos:
Este assunto
irá contribuir para que
você possa entender
como um sistema
operacional funciona
internamente.
Você poderia a partir dessa imagem, formular um conceito sobre processo?
Sistemas Operacionais 17
Acredito que não.
Então tentaremos explicar a figura acima:
Um processador é projetado apenas para executar instruções, não sendo capaz de
distinguir qual programa se encontra em execução. Um processo representará um
programa em execução, que tem suas informações mantidas pelo sistema operacional,
informações referentes ao próprio programa, tais como o nome do proprietário do mesmo
(contexto de software), informações referentes ao conteúdo dos registradores (contexto
de hardware), informações referentes à área de armazenamento (espaço de
endereçamento).
Dessa forma, a figura acima poderia ser vista da seguinte forma:
Vamos agora detalhar melhor cada um desses elementos:
Contexto de Software: neste contexto são especificados características e limites
dos recursos que podem ser alocados pelo processo, como número máximo de arquivos
abertos, prioridade de execução, número máximo de linhas impressas, etc. Muitas destas
características são criadas no momento da criação do processo, quando da sua alocação.
O contexto de software é composto por três grupos de informações:
Contexto de Hardware: armazena o conteúdo dos registradores gerais da CPU,
além dos registradores de uso específico. Quando um processo está em execução, o seu
Sistemas Operacionais 18
contexto de hardware está armazenado nos registradores da CPU. No momento em que o
processo perde a utilização da CPU, o sistema salva as informações no contexto de
hardware do processo.
Espaço de endereçamento: é a área de memória pertencente a um processo
onde a instrução e os dados do programa são armazenados para execução. Cada
processo possui seu próprio espaço de endereçamento, que deve ser devidamente
protegido do acesso dos demais processos. Os contextos de software e de hardware não
fazem parte do espaço de endereçamento.
Depois desse detalhamento você deve estar se fazendo pelo menos duas
perguntas básicas:
Como todas esses informações são controlados pelo sistema Operacional?
Aonde essas informações são guardadas?
Eis a resposta:
Bloco de controle do processo (PCB): é a estrutura de dados que compõe o
processo, contendo os contextos de software e de hardware e o espaço de
endereçamento.
Sistemas Operacionais 19
Estado de um processo
Num sistema multiprogramável, um processo não deve alocar a CPU com
exclusividade, de forma que possa existir um compartilhamento no uso do processador.
Os processos passam por diferentes estados ao longo do processamento, em função de
eventos gerados pelo sistema operacional, pelo hardware, ou pelo próprio programa. São
estados possíveis de um processo:
Mudanças de estado do processo
Um
processo muda
de estado
diversas vezes
durante sua
permanência no
sistema, devido
aos eventos
ocorridos durante
sua execução. As
possíveis mudanças de um estado são:
Sistemas Operacionais 20
Hierarquia entre os processos
Um processo pode criar outros processos e que podem, por sua vez, criarem
também outros processos de maneira hierárquica. Quando um processo (Processo pai)
cria um outro processo, a este chamamos de subprocesso ou processo filho, e este
subprocesso poderá criar subprocessos que podem criar outros subprocessos etc...
gerando uma arvore hierárquica de processos.
Vantagens: evita que o usuário tenha que esperar que um processo termine para
que sua requisição seja processada melhorando o desempenho do sistema
Desvantagens: a)Este tipo de recurso somente está disponível para alguns tipos de
Sistemas Operacionais; b) a limitação do hardware pode depois de um certo
numero de subprocessos tornar crítica a situação gerando erros no sistema.
Sistemas Operacionais 21
Para Refletir:
Subprocessos & Threads
Os Subprocessos possuem cada, um endereçamento
protegido já as threads compartilham o mesmo
endereçamento sem proteção permitindo que uma
altere os dados de outra. As threads trabalham
cooperativamente, desempenhando tarefas em
conjunto.
Sistemas Operacionais 22
Tipos de Thread:
Monothread - para ambiente que permita apenas uma thread.
Multithread - usada em ambiente que permite várias threads, cada processo pode
responder a várias solicitações. Havendo mais de um processador as threads podem
operar simultaneamente.
Tipos de Processos
Processos do Sistema: São processos que oferecem os serviços do sistema
operacional aos usuários
• Auditoria e segurança
• Serviços de rede
• Contabilização do uso de recursos
• Contabilização de erros
• Gerência de impressão
• Gerência de jobs batch
• Temporização
• Comunicação de eventos
Processos do
Usuário: São processos
que representam as tarefas
programadas pelo usuário.
Os processos em
execução, do usuário,
podem assumir dois tipos
diferentes, de acordo com
suas características de uso
de CPU e periféricos:
Classificação dos
Processos quanto o
relacionamento
Independentes: caso
a sua execução não
afete e não seja
afetada pela
execução de um
outro processo.
Sistemas Operacionais 23
Cooperantes: quando interage (troca de informações) com outros processos
presentes no sistema.
Classificação dos Processos quanto o Canal de Comunicação
Processos Foregroud: é aquele que permite a comunicação direta do usuário
com o processo durante o processamento.
Processos Background: é aquele que não possui um canal de comunicação com
o usuário durante o processo.
Mecanismos de Interrupções
Durante a execução de um programa, alguns eventos inesperados podem ocorrer,
ocasionando um desvio forçado no seu fluxo de execução. Estes tipos de eventos são
conhecidos por interrupção ou exceção e podem ser conseqüência da sinalização de
algum dispositivo de hardware externo ao processador ou da execução de instruções do
próprio programa.
Esse mecanismo é realizado tanto por hardware quanto por software.
Sistemas Operacionais 24
Programação Paralela
A possibilidade de o processador executar instruções em paralelo com operações
de E/S permitem que diversas tarefas sejam executadas concorrentemente. O conceito de
concorrência é o principio básico para o projeto e a implementação dos sistemas
multiprogramáveis.
A utilização concorrente da UCP deve ser implementada de maneira que, quando
um programa perde o uso do processador e depois retorna para continuar sua execução,
seu estado deve ser idêntico ao do momento em que foi interrompido. O programa deverá
continuar sua execução exatamente na instrução seguinte àquela em que havia parado,
aparentando ao usuário que nada aconteceu.
Sistemas Operacionais 25
Especificação da concorrência em programas
A especificação da concorrência em programas pode ser expressa em diversas
notações. As mais utilizadas são os comandos FORK e JOIN (Conway, 1963 e Dennis e
Van Horn, 1966) e os comandos PARBEGIN e PAREND (Dijkstra, 1965).
FORK e JOIN: O processo pai executa concorrentemente com o processo filho. O
programa A começa a ser processado e, ao encontrar o comando FORK, cria outro
processo (ou subprocesso, ou filho) para a execução do programa B. O comando JOIN
determina o ponto onde A sincroniza com B, isto é, o programa A só prossegue, a partir
do comando JOIN, quando B terminar.
PARBEGIN e
PAREND: O processo pai
espera que o processo filho
termine. Os subprocessos
contidos após o comando
PARBEGIN serão
executados
concorrentemente, numa
ordem imprevisível. O
ponto de sincronização é definido pelo comando PAREND, sendo que os comandos a
Sistemas Operacionais 26
partir dele somente serão executados quando todos os outros já tiverem terminado.
Devido à sua facilidade de compreensão e simplicidade podem ser facilmente adicionados
em uma linguagem de alto nível.
Comunicação entre processos e seção Crítica
Muitas vezes podemos ter processos trabalhando juntos na solução de um
problema, utilizando para tanto recursos comuns, tais como: (a) posição da memória; (b)
arquivo comum.
Bom, esse acesso concorrente a dados compartilhados pode resultar em
inconsistências.
Diante dessa situação é extremamente importante a existência de mecanismos que
garantam a comunicação entre processos. Esses mecanismos são denominados de
mecanismo de sincronização.
Como primeiro método para controlar o acesso a um recurso compartilhado
propõe-se declarar uma seção de código como sendo crítica, para em seguida controlar o
acesso a essa região.
Essa seção foi denominada de:
• Região Crítica: parte do código do programa onde é feito o acesso ao
recurso compartilhado, ou seja, é à parte do programa cujo processamento
pode levar à ocorrência de condições de corrida.
Ou seja,
Condição de corrida
A situação onde diversos
Processos acessam e
manipulam recursos
Compartilhados de forma
concorrente.
Sistemas Operacionais 27
O segundo método propõe um acesso mutuamente exclusivo, ou seja, o
impedimento de dois ou mais processos a variáveis de memória ao mesmo tempo.
Solução de Hardware para o problema da exclusão mútua
As características do hardware podem tornar a tarefa de programação mais fácil e
melhorar a eficiência do sistema. O problema de seção crítica pode ser resolvido em um
ambiente monoprocessador bastando desabilitar a ocorrência de interrupções. Em
algumas máquinas existem instruções especiais que evitam este problema. Dentre estas
instruções pode-se destacar: Desabilitação de interrupções e instrução Test-And-Set.
Desabilitação de interrupções:
Consiste na inibição das interrupções na
entrada da seção crítica e a sua ativação na saída
da seção crítica.
Test-And-Set: Essa instrução lê uma
locação de memória (lock) e atualiza o valor do
registrador (R1), em seguida escreve a locação de memória (lock) com o conteúdo de um
registrador (R1) e realiza a leitura e a escrita atomicamente, em um único ciclo de
barramento (ciclo readmodify-write), ou seja, as instruções executam sem interrupção
(indivisíveis).
Exemplo:
Sistemas Operacionais 28
A implementação da exclusão mútua entre produtor e consumidor com a instrução TAS
Solução de Software para o problema da exclusão mútua
As soluções para problemas de seção crítica não são fáceis de generalizar em
problemas complexos. Para superar esta dificuldade podemos usar algumas ferramentas
de sincronização, tais como: Semáforos e
Monitores.
SEMÁFOROS: Um semáforo S
consiste em uma variável inteira que,
alem da inicialização, só é acessada
através de duas operações-padrão: P e V
Estas operações receberam seus nomes
dos termos holandeses P de poberen, que
significa testar e V de verhogen, que
significa incrementar.
Importante Saber
Monitores: Consiste de um módulo contendo: rotinas, estruturas de dados e
variáveis de condição, que a cada instante permite que apenas um processo pode estar
executando uma rotina do monitor.
Exemplo de utilização de semáforo
Uma das vantagens de se utilizar os semáforo esta na irrelevância da a
ordem de execução das operações. Pois uma primitiva V dispara antes
de um P, “guarda” sua ocorrência no valor do semáforo.
Sistemas Operacionais 29
Estrutura de um monitor
Nota
Fluxo de um monitor: As variáveis de condição são estruturas do tipo fila, onde os
processos esperam por algum evento. Duas operações se realizam sobre as variáveis de
condição:
wait(c): processo passa a esperar na fila da condição c, quando esta impede a
continuação da execução;
signal(c): desperta o processo esperando na fila da condição c. A instrução signal
deve ser a última do procedimento, de modo que o processo abandone imediatamente o
procedimento.
Fluxo de um monitor
Starvation – Deadlock
Alguns problemas surgem na implementação de soluções para os problemas de
comunicação e devem ser resolvidos antes destes. Os mais comuns são: Starvation e
DeadLock.
Starvation (inanição): ocorre quando dois ou mais processos esperam por um
recurso alocado. Na decisão de qual processo ganhará o acesso ao recurso
compartilhado, se o Sistema Operacional o fizer de modo aleatório ou através de
Esse tipo de solução implementa automaticamente, a exclusão mútua entre seus
procedimentos. Cabe notar que o monitor permite a execução de um procedimento
seu, mesmo que um ou mais processos estejam no estado de espera.
Sistemas Operacionais 30
prioridades, pode ser que um processo nunca seja escolhido. Para resolver este problema
utiliza-se um mecanismo de fila, aonde o primeiro a chegar é o primeiro a ser atendido
(FIFO).
Deadlock (bloqueio total)
Um conjunto de processos
bloqueados cada um utilizando um
recurso e esperando que outro libere
um outro recurso para dar
continuidade ao seu trabalho.
Exemplo 01:
Sistemas Operacionais 31
Exemplo 02:
Sintese da Unidade:
Processo representa um programa em execução que tem suas informações
mantidas pelo sistema operacional, informações referentes ao próprio programa, tais
como o nome do proprietário, conteúdo dos registradores e espaço de endereçamento.
Um processo é composto de três partes: Contexto de Software, Contexto de
Hardware e espaço de endereçamento.
O processo é implementado através de um Bloco de Controle de Processo (PCB)
Os processos passam por diferentes estados ao longo do processamento: criação,
execução, pronto e espera.
Um processo muda de estado diversas vezes durante a sua permanência no
sistema: criação->pronto; pronto->execução, execução->pronto, execução->espera,
espera->pronto e execução->saída.
Um processo pode hierarquicamente ser dividido em subprocessos.
Threads. Consistem um uma unidade básica de utilização da CPU, ou seja, uma
linha de execução de um processo.
Os Processos se dividem em dois tipos: Processos do sistema e Processo do
usuário.
Interrupções e exceções consistem em eventos inesperados que podem que
podem ocorrer durante a execução de um programa.
O conceito de programação paralela é o principio básico para o projeto e a
implementação dos sistemas multiprogramáveis.
Para a especificação da concorrência em programas são utilizadas as notações:
FORK e JOIN, PARBEGIN e PAREND.
Região Crítica: parte do código do programa onde é feito o acesso ao recurso
compartilhado.
Exclusão mútua consiste no impedimento de dois ou mais processos a variáveis de
memória ao mesmo tempo.
Desativação de Interrupções e Instrução Test-And-Set consistem em Solução de
hardware para o problema de exclusão mútua.
Semáforos e Monitor consistem em Solução de Software para o problema de
exclusão mútua.
Starvation ocorre quando dois ou mais processos esperam por um recurso alocado.
Um sistema tem duas unidades de gravação. P1 e p2,
possuem um recurso e estão aguardando a liberação do
outro.
Sistemas Operacionais 32
Deadlock é conjunto de processos bloqueados cada um utilizando um recurso e
esperando que outro libere um outro recurso para dar continuidade ao seu trabalho
[ Auto-Avaliação ]
1) Explique em que consiste um processo.
2) Qual função de um processo?
3) Como é formado um processo?
4) Como o processo é implementado pelo Sistema Operacional?
5) quais os estados possíveis de um processo?
6) explique a diferença entre um subprocesso e uma thread.
7) Explique a classificação dos processos quanto o canal de comunicação.
8) Exemplifique uma exceção.
9) Qual o contexto do método que fundamenta a região crítica?
10) Que solução é necessária para garantir a implementação da região
crítica?
11) Defina semáforo?
12) Explique a vantagem de se utilizar o mecanismo monitor como solução
para os problemas de sincronização?
13) Explique a diferença entre Starvation e Deadlock?
[ Referências Bibliográficas ]
MACHADO, Francis Berenger ; MAIA, Luiz Paulo. “Arquitetura de Sistemas
Operacionais”, 2ª Edição, Ed. LCT, 1997.
SILBERSCHATZ, Abraham; GALVIN, Peter Baer. "Sistemas Operacionais:
Conceitos", quinta edição. Pearson Brasil, 2000.
TANENBAUM, Andrew S., WOODHULL, Albert S.. "Sistemas Operacionais -
Projeto e Implementação", segunda edição. Prentice-Hall, 2000.
Sistemas Operacionais 33
Unidade III – Gerência do Processador
Gerência do Processador
O bloco descritor de processo
Coordenação do chaveamento de contexto
Processos Versos Threads
Escalonadores
Gerência de Dispositivos de Entrada e Saída (E/S)
Operações de E/S
Subsistema de E/S
Controladores de periféricos
[Objetivos Específicos da Unidade III]
Propomos, nesta UNIDADE, levar você a:
• Compreender as implicações arquiteturais de um sistema
multiprogramável.
• Identificar os mecanismos de comunicação entre processos.
• Conhecer os mecanismos de escalonamento entre processos.
• Caracterizar os gerenciadores de dispositivos de E/S.
Sistemas Operacionais 34
Gerencia do Processador
O módulo anterior destacou a unidade de trabalho de um sistema operacional.
Neste módulo apresentaremos os elementos necessários para operacionalizar essa
unidade de trabalho, ou seja, os elementos que manipularam e gerenciaram a execução
de um processo.
Todos os conceitos e exemplos apresentados nesta unidade, simplesmente nos
permitirão compreender situações quase imperceptíveis ao usuário final.
Esta unidade trata de assuntos que vão conduzi-lo a um entendimento mais
profundo sobre a execução de mais de um programa em um mesmo intervalo de tempo,
bem como o gerenciamento dos dispositivos de Entrada e Saída por mais de um usuário
ou uma aplicação.
Os tópicos serão apresentados de forma que você apreenda a função do módulo
de gerência do processador e da gerencia dos dispositivos de Entrada e Saída. E, para
facilitar a sua aprendizagem, serão propostas questões e orientações de estudo ao longo
do texto.
Objetivamos que você adquira um conhecimento que lhe permita identificar as
funções de um gerenciador de processos e as características do processo de
gerenciamento de dispositivos de entrada e saída. Para que isso ocorra, é fundamental
que você seja capaz de entender lógica de programação, bem como as várias técnicas
utilizadas em estruturas de dados.
Portanto, sugerimos questões ao longo do texto para apreensão de determinados
conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por
meio da auto-avaliação, que deverá ser enviada ao seu tutor.
Então, mãos à obra!
Gerencia do Processador
Este assunto irá contribuir para que você possa entender como um sistema
operacional trata a existência e a execução de vários processos em um mesmo intervalo
de tempo, bem como simultaneamente.
Observe a imagem abaixo:
Sistemas Operacionais 35
Você Sabia?
Diante deste contexto você pode definir qual seria a função da gerência do
processador?
Podemos dar uma idéia:
Para tanto esse módulo do Sistema Operacional deverá disponibilizar Algoritmos
de escalonamento capazes de gerenciar essa ação.
Algoritmos de escalonamento ?????
Bom, Algoritmos de escalonamento é ......
Espere aí,
Antes de tratarmos desse assunto, vamos recapitular alguns
conceitos importantes para compreensão desse novo conceito.
Bloco Descritor de um Processo ou Bloco de Controle do Processo
Na unidade anterior vimos o conceito de Processo como um programa em
execução que possui uma série de estados (criação, pronto, execução, espera, etc).
Para representar sua evolução no tempo, gerenciar processos quanto à
organização de filas de processos nos diferentes estados, quanto a determinação de
eventos que realizam a transição entre os estados e quanto a determinar de quando e
como um processo tem direito a “utilizar” o processador para sua execução, o Sistema
operacional necessita manter uma série de informações a respeito do processo.
Para possibilitar essas tarefas, teremos:
Que o uso da multiprogramação pressupõe a existência de
simultânea de vários processos disputando o processador
“intermediar” a disputa dos processos pelo direito de
processamento de forma justa e eficiente.
Sistemas Operacionais 36
Importante saber
Bem, sabemos que um processo pode assumir pelo mesmo quatro estados
básicos:
Já vimos também que Um processo muda de estado diversas vezes durante sua
permanência no sistema, devido aos eventos ocorridos durante sua execução:
Sistemas Operacionais 37
Coordenação do chaveamento de contexto
Esta Coordenação consiste em uma ação realizada pelo sistema operacional que
do ponto de vista do processo é como se ele nunca tivesse deixado de ser executado.
Características:
Salva o contexto do processo;
Atualiza o estado do processo que está em execução no seu descritor do processo;
Insere o descritor do processo na fila apropriada (pronto, espera);
Seleciona outro processo para execução;
Atualiza descritor de processos do processo selecionado;
Atualiza estruturas de dados
associadas com gerência de memória e
de dispositivos de entrada e saída;
Restaura contexto do processo
selecionado;
Quando se deve chavear
Quando houver qualquer tipo de
interrupções (falta de memória,
Operação de E/S, relógio)
Quando houver traps (condições
anormais)
Quando houver alguma chamada ao sistema (operação de E/S)
Processos Versos Threads
O Processo: Conforme vimos na unidade anterior, o processo utiliza um espaço de
endereço e uma única linha de controle
O Modelo do Processo
Sistemas Operacionais 38
Agrupamento de recursos (espaço de endereço com texto e dados do programa;
arquivos abertos, processos filhos, tratadores de sinais, alarmes pendentes etc);
Execução
Threads: No conceito de thread trabalhado até o momento, caracteriza a thread
como uma unidade básica de utilização da CPU que utiliza um espaço de endereço e
múltiplas linhas de controle.
O Modelo da Thread
Recursos particulares (PC, registradores, pilha)
Recursos compartilhados (espaço de endereço – variáveis globais, arquivos
etc)
Múltiplas execuções no mesmo ambiente do processo – com certa
Os Processos possuem cada, um endereçamento protegido já as threads
compartilham o mesmo endereçamento sem proteção permitindo que uma altere os
dados de outra. As threads trabalham cooperativamente, desempenhando tarefas em
conjunto.
Tipos de Processos
Processos do Sistema: São
processos que oferecem os serviços
do sistema operacional aos usuários
Auditoria e segurança
Serviços de rede
Contabilização do uso
de recursos
Contabilização de erros
Gerência de impressão
Gerência de jobs batch
Temporização
Comunicação de eventos
Processos do Usuário: São processos que representam as tarefas programadas
pelo usuário. Os processos em execução, do usuário, podem assumir dois tipos
diferentes, de acordo com suas características de uso de CPU e periféricos:
CPU Bound: Um processo limitado por UCP (CPU-bound) gera
pedidos de E/S com pouca freqüência
Sistemas Operacionais 39
Tipos de Thread:
Monothread - para ambiente que permita apenas uma thread.
Multithread - usada em ambiente que permite várias threads, cada processo pode
responder a várias solicitações. Havendo mais de um processador as threads podem
operar simultaneamente.
Depois de todos esses conceitos, você é capaz de apresentar alguns
exemplos de thread?
Bom segue abaixo alguns exemplos. Espero que você tenha pensado em pelo
menos um deles.
Sistemas Operacionais 40
Escalonadores
Conforme comentamos, em alguns momentos podemos ter dois ou mais processos
aptos a utilizar o processador para ser executado. Nesse instante, o sistema operacional
deve decidir qual dos processos aptos, armazenados em uma fila, será escolhido para
rodar primeiro. Essa tarefa e a tomada de decisão é feita pelo escalonador de processos
(parte do sistema operacional) através da implementação de alguns algoritmos de
seleção, denominados algoritmos de escalonamento.
Então podemos definir escalonador como:
Objetivos do escalonamento:
Maximizar a utilização do processador
Maximizar a produção do sistema (throughput)
Número de processos executados por unidade de tempo
Minimizar o tempo de execução (turnaround)
Tempo total para executar um determinado processo
Acredito que depois das situações, ações apresentadas você já deva fazer idéia do que vem
a ser um escalonador.
Uma a entidade do sistema operacional responsável por selecionar um
processo pronto para ser executado pelo processador, dividir o tempo do
processador de forma justa entre os processos prontos a serem
executados
Sistemas Operacionais 41
Minimizar o tempo de espera
Tempo que um processo permanece na lista de aptos
Minimizar o tempo de resposta
Tempo decorrido entre uma requisição e a sua realização
Níveis de escalonamento:
Longo prazo
Médio prazo
Curto prazo
Escalonador longo prazo:
Executado quando um novo processo é criado
Determina quando um processo novo passa a ser considerado no
sistema, isto é, quando após sua criação ele passa a ser apto;
Controla o grau de multiprogramação do sistema
Quanto maior o número de processos ativos, menor a porcentagem de
tempo de uso do processador por processo
Escalonador médio prazo:
Associado a gerência de memória
Participa do mecanismo de swapping
Suporte a multiprogramação
Grau de multiprogramação
Escalonador de curto prazo
Determina qual processo apto deverá utilizar o processador
Executado sempre que ocorrem eventos importantes:
Interrupção de relógio
Interrupção de entrada/saída
Chamadas de sistemas
Sinais (interrupção software)
Sistemas Operacionais 42
Tipos de escalonador: Uma vez escalonado, o processo utiliza o processador até
que:
Não preemptivo:
Término de execução do processo
Execução de uma requisição de entrada/saída ou sincronização
Liberação voluntária do processador a outro processo (yield)
Preemptivo:
Término de execução do processo
Execução de uma requisição de entrada/saída ou sincronização
Liberação voluntária do processador a outro processo (yield)
Interrupção de relógio
Processo de mais alta prioridade esteja pronto para executar
Importante saber:
Tipos de Algoritmos não preemptivos - escalonadores que permitem que os
processos rodem até o fim de sua execução sem ser interrompidos por eventos externos.
FIFO
SJF
Tipos de Algoritmos preemptivos - escalonadores que são capazes de
suspender processos que poderiam continuar executando.
Os algoritmo de escalonamento seleciona qual processo deve executar em um determinado instante de
tempo, para tanto, existem vários algoritmos para atingir os objetivos do escalonamento que buscam
obter bons tempos médios invés de maximizar ou minimizar um determinado critério e privilegiar a
variância em relação a tempos médios.
Sistemas Operacionais 43
Round robin (circular)
Múltiplas filas
Segue a seguir características e funcionamento de cada um desses algoritmos:
FIFO - First In First Out : É o algoritmo mais simples de implementar, onde o
processador possui uma fila associada para armazenar os processos que estão aptos a
executar.
Funcionamento:
Processos que se tornam aptos são inseridos no final da fila
Processo que está no início da fila é o próximo a executar
Processo executa até que:
Libere explicitamente o processador
Realize uma chamada de sistema (bloqueado)
Termine sua execução
Desvantagem:
Prejudica processos I/O bound
Tempo médio de espera na fila de execução, varia de acordo com a ordem do
processo:
Ordem A-B-C-D = (0 + 12 + 20 + 35 ) / 4 = 16.75 u.t.
Ordem D-A-B-C = (0 + 5 + 17 + 25 ) / 4 = 11.7 u.t.
SJF - Shortest Job First: Para usar este algoritmo precisamos conhecer
antecipadamente o tempo de execução de cada processo, o que é difícil. A idéia é alocar
o processador para o menor job da fila. O fato é que o menor tempo médio é obtido
Sistemas Operacionais 44
quando se executa primeiro os processos de menor ciclo de processador (I/O bound).
Portanto, os processos I/O bound são favorecidos.
RR - Round Robin : A cada processo atribuímos um tempo durante o qual ele
poderá utilizar o processador. Denominamos este intervalo de tempo de quantum. Além
disso, este algoritmo é similar ao algoritmo FIFO, pois também mantemos uma fila, agora
circular, para armazenar os processos.
Para a execução existe a necessidade de um relógio para delimitar as fatias de
tempo.
O processo perde o processador quando:
Libera explicitamente o processador
Realize uma chamada de sistema (bloqueado)
Termina sua execução
Sistemas Operacionais 45
Quando sua fatia de tempo é esgotada
Escalonadores por prioridades: A cada processo pode ser atribuída uma
prioridade, associar prioridades a processos I/O bound pode compensar o tempo gasto
em estado de espera. Sempre que um processo de maior prioridade que o processo
atualmente em execução entrar no estado espera deve ocorrer uma preempção.
Prioridade estática: Um processo é criado com uma determinada prioridade e esta
prioridade é mantida durante todo o tempo de vida do processo
Sistemas Operacionais 46
Prioridade dinâmica: Prioridade do processo é ajustada de acordo com o estado
de execução do processo e/ou do sistema Ex.: ajustar a prioridade em função da fração
do quantum que foi realmente utilizada pelo processo q = 100 ms
Implementação de escalonador com prioridade estática (Múltiplas filas): Neste
tipo de algoritmo as prioridades são atribuídas à classes de processos (de acordo com o
tipo de processamento), cada qual com sua própria fila de prontos com seu mecanismo
de seleção. Os Processos das classes de maior prioridade recebem o processador e os
processos das classes de menor prioridade só receberá o processador se as filas de
prontos das outras classes (de maior prioridade) estiverem vazias.
Sistemas Operacionais 47
Implementação de escalonador com prioridade dinâmica (Múltiplas filas com
realimentação)
Neste tipo de algoritmo de escalonamento os p processos podem migrar entre as
classes (adaptabilidade) de acordo com seu comportamento, identificado pelo sistema
O processo entra na fila de maior prioridade, a qual também possui a maior fatia de
tempo
Se o processo perde o processador para um de uma fila de maior prioridade,
permanece na mesma fila de prontos. Se perder por preempção, é direcionada para a fila
seguinte, de menor prioridade;
As filas de maior prioridade implementam políticas FIFO, enquanto que a de menor
prioridade implementa um mecanismo circular (round robin)
Gerência de Dispositivos de Entrada e Saída (E/S)
A gerência de dispositivos de entrada/saída é uma das principais e mais complexas
funções de um sistema operacional. Sua implementação é estruturada através de
camadas em um modelo semelhante ao apresentado para o sistema operacional como
um todo.
Sistemas Operacionais 48
Operações de Entrada/Saída :
Você Sabia?
A implementação de um dispositivo chamado controlador ou interface permitiu a
UCP agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, a
UCP não se comunicava mais diretamente com os periféricos, mas sim através do
controlador. Isso significa as
instruções de E/S, por não ser mais
preciso especificar detalhes de
operação dos periféricos, tarefa
esta realizada pelo controlador.
Com a implementação do
mecanismo de interrupção no
hardware dos computadores, as
Sistemas Operacionais 49
operações de E/S puderam ser realizadas de uma forma mais eficiente. Em vez de o
sistema periodicamente verificar o estado de uma operação pendente, o próprio
controlador interrompia a UCP para avisar do término da operação.
Funcionamento:
Com esse mecanismo, denominado E/S controlada por interrupção, a UCP, após a
execução de um comando de leitura ou gravação, fica livre para o processamento de
outras tarefas.
O controlador por sua vez, ao receber, por exemplo, um sinal de leitura, fica
encarregado de ler os blocos dos discos e armazená-los em memória ou registradores
próprios.
Em seguida, o controlador, através de uma linha de controle, sinaliza uma
interrupção ao processador.
Quando a UCP atende a interrupção, a rotina responsável pelo tratamento desse
tipo de interrupção transfere os dados dos registradores do controlador para a memória
principal.
Ao término da transferência, a UCP volta a executar o programa interrompido e o
controlador fica novamente disponível para outra operação.
Vantagem:
A operação de E/S controlada por interrupção é muito mais eficiente que a
operação de E/S controlada por programa, já que elimina a necessidade de a UCP
esperar pelo término da operação;
Permitir que várias operações de E/S sejam executadas simultaneamente.
Desvantagem:
sobrecarregava a UCP, uma vez que toda transferência de dados entre memória e
periféricos exigia a intervenção da UCP.
A técnica de DMA: Permite que bloco de dados seja transferido entre memória e
periféricos, sem a intervenção da UCP, exceto no início e no final da transferência.
Quando o sistema deseja ler ou gravar um bloco de dados, são passadas da UCP para o
controlador informações como: onde o dado está localizado, qual o dispositivo de E/S
Sistemas Operacionais 50
envolvido na operação, posição inicial da memória de onde os dados serão lidos ou
gravados e o tamanho do bloco de dados. Com estas informações, o controlador realiza a
transferência entre o periférico e a memória principal, e a UCP é somente interrompida no
final da operação. A área de memória utilizada pelo controlador na técnica de DMA é
chamada buffer, sendo reservada exclusivamente para este propósito.
Funcionamento: O canal de E/S é um processador com capacidade de executar
programas de E/S, permitindo o controle total sobre operações de entrada e saída. As
instruções de E/S são armazenadas na memória principal pela UCP, porém o canal é
responsável pela sua execução. Assim, a UCP realiza uma operação de E/S, instruindo o
canal para executar um programa localizado na memória (programa de canal). Um canal
de E/S pode controlar múltiplos dispositivos através de diversos controladores. Cada
dispositivo, ou conjunto de dispositivos, é manipulado por um único controlador. O canal
atua como um elo de ligação entre a UCP e o controlador.
Técnicas para gerenciamento das operações de E/S:
Buffering – O buffering é outra implementação para minimizar o problema da
disparidade da velocidade de processamento existente entre a UCP e os dispositivos de
E/S. O objetivo do buffering é manter, na maior parte do tempo, UCP e dispositivos
ocupados. Esta técnica consiste na utilização de uma área de memória para a
transferência entre os periféricos e a memória principal denominada buffer.
Sistemas Operacionais 51
Spooling – A técnica de spooling (simultaneos peripheral operation on-line) foi
introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos SOs. O
objetivo dessa técnica era armazenar os vários programas e seus dados, também
chamados de jobs, em um meio magnético e, em seguida submetê-los a processamento.
Desta forma, a UCP poderia processar seqüencialmente cada job, diminuindo o tempo de
execução dos jobs e o tempo de transição entre eles.
A técnica de buffering permite que um job utilize
um buffer concorrentemente com um dispositivo de
E/S. O spooling, basicamente, utiliza os disco como um
grande buffer, permitindo que dados sejam lidos e
gravados em disco, enquanto outros jobs são
processados.
Sistemas Operacionais 52
Subsistema de E/S
O sistema operacional deve tornar as operações de e/s o mais simples possível
para o usuário e suas aplicações. Para isso, o sistema possui um conjunto de rotinas que
possibilita a comunicação com qualquer dispositivo que possa ser conectado ao
computador.
O subsistema de E/S é responsável por realizar as funções comuns a todos os
tipos de dispositivos, ficando os aspectos específicos de cada periférico como
responsabilidade dos device drivers. Dessa forma, o subsistema de e/s é a parte do
sistema operacional que oferece uma interface uniforme com as camadas superiores.
Reentrância – É comum, em sistemas multiprogramáveis,
vários usuários executarem os mesmos utilitários do SO
simultaneamente, como, por exemplo, um editor de textos.
Se cada usuário que utilizasse o editor trouxesse o código
do utilitário para a memória, haveria diversas cópias de um
mesmo programa na memória principal, o que ocasionaria um desperdício de espaço.
Reentrância é a capacidade de um código de programa (código reentrante) poder ser
compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja
na memória. Uma característica da reentrância é que o código não pode ser modificado
por nenhum usuário no momento em que está sendo executado.
Proteção do Sistema – Nos sistemas multiprogramáveis, onde diversos usuários
compartilham os mesmos recursos, deve existir uma preocupação, por parte do SO, de
garantir a integridade dos dados pertencentes a cada usuário. Problemas como um
programa acessar (acidentalmente ou não) a área de memória pertencente a outro
programa ou ao próprio SO tornariam o sistema pouco confiável. Para isso, todo sistema
implementa algum tipo de proteção aos diversos recursos que são compartilhados, como
memória, dispositivos de E/S e UCP.
Sistemas Operacionais 53
Controladores de periféricos
Os controladores são componentes de hardware responsáveis por manipular
diretamente os dispositivos de E/S. O sistema operacional, mais exatamente o device
driver, comunica-se com os dispositivos através dos controladores. Em geral, o
controlador pode ser uma placa independente conectada a um slot do computador ou
implementado na mesma placa do processador.
Os dispositivos de entrada e saída são utilizados para permitir a comunicação entre
o sistema computacional e o mundo externo. Os dispositivos de E/S podem ser
classificados, como de entrada de dados, como cd-rom, teclado e mouse, ou de saída de
dados. Como impressoras. Também é possível que um dispositivo realize tanto entrada
quanto saída de dados, como modems, discos e cd-rw.
As principais responsabilidades do SO nesta área estão diretamente ligadas a
características dos próprios periféricos. Ou seja:
O sub-sistema de I/O é normalmente partilhado por vários utilizadores e/ou
aplicações, exigindo, portanto um acesso devidamente controlado para garantir
segurança da informação e partilha adequada dos recursos;
O sub-sistema de I/O recorre normalmente à utilização de mecanismos de
interrupção do processador, os quais quando ativados e aceites pelo processador,
transferem o modo de operação do processador (de modo "utilizador", quase sem
privilégios, para modo de "supervisão" ou "super-utilizador" ou "kernel"); este modo de
operação do processador está reservado a funções do SO;
Ativação da seqüência adequada de ações/tarefas (baixo nível) a executar, que
permitam: (i) uma configuração correta do controlador de I/O para executar as operações
pretendidas neste sistema de computação; e (ii) a operação do controlador de I/O sempre
Sistemas Operacionais 54
que a sua utilização for necessária (inclui o envio de comandos de operação, a
transferência de dados memória <-> periférico e a leitura do estado do controlador).
Só para Constar
Discos magnéticos
Entre os diversos dispositivos de e/s, os discos magnéticos merecem atenção
especial, por serem o principal repositório de dados utilizado pela maioria das aplicações
e pelo próprio sistema operacional. Fatores como desempenho e segurança devem ser
considerados na arquitetura de discos magnéticos.
No final da década de 1980, pesquisadores de Universidade de Califórnia em
Berkeley desenvolveram técnicas de gerenciamento de discos que otimizavam as
operações de e/s e implementavam redundância e proteção de dados conhecidas como
Raid (Redundant Arrays of Inexpensive Disk). As diferentes técnicas, utilizando múltiplos
discos, foram publicadas em seis níveis
(Raid 1-6). Estas técnicas tiveram grande
aceitação no mercado e, posteriormente, um
novo nível foi introduzido e denominado
Raid 0.
Síntese da Unidade:
O módulo gerência do processador é
responsável por intermediar a disputa dos
processos pelo direito de processamento de
forma justa e eficiente.
Para gerenciar essa disputa,
necessitará utilizar dentre outros elementos, o Bloco de controle de Processo que lhe
proporcionará informações sobre o processo.
O conhecimento do mecanismo de chaveamento de contexto é necessário para
implementação do módulo de gerência do processador, pois o chaveamento na ação que
torna implícita a execução de um processo.
Um processo pode hierarquicamente ser dividido em subprocessos.
Threads. Consistem um uma unidade básica de utilização da CPU, ou seja, uma
linha de execução de um processo.
A vantagem de se utilizar uma thread é que enquanto uma aguarda operação de
E/S (no estado de espera), a outra thread pode utilizar a CPU.
Sistemas Operacionais 55
Os Processos se dividem em dois tipos: Processos do sistema e Processo do
usuário.
As threads podem ser de dois tipos: Monothread e multithread;
Uma a entidade do sistema operacional responsável por selecionar um processo
pronto para ser executado pelo processador, dividir o tempo do processador de forma
justa entre os processos prontos a serem executados.
Existem três Níveis de escalonamento: Longo prazo, Médio prazo, Curto prazo.
O escalonador pode ser classificado em dois tipos: Não preemptivo e Preemptivo
OS Algoritmos FIFO e SJF são classificados em não preemptivos
Os Algoritmos Round robin (circular) e Múltiplas filas são classificados em
preemptivos
A Gerência de dispositivos de Entrada e Saída (E/S) consiste um módulo que
Permiti que várias operações de E/S sejam executadas simultaneamente.
A implementação de um dispositivo chamado controlador ou interface permitiu a
UCP agir de maneira independente dos dispositivos de E/S
A técnica de DMA permite a transferência de dados entre a memória e os
periféricos necessários nas operações de E/S evitando com isso uma sobrecarregava a
UCP, uma vez que toda transferência de dados entre memória e periféricos exigia a
intervenção da UCP
O canal de E/S é um processador com capacidade de executar programas de E/S,
permitindo o controle total sobre operações de entrada e saída.
Buffering e Spooling são técnicas para implementação das operações de E/S.
O subsistema de E/S é responsável por realizar as funções comuns a todos os
tipos de dispositivos
Os devices drivers tem como função de implementar a comunicação do subsistema
de e/s com os dispositivos, através de controladores.
Os controladores são componentes de hardware responsáveis por manipular
diretamente os dispositivos de E/S.
[ Auto-Avaliação ]
1. Que conceitos preliminares devemos possuir para entender a função do
módulo de gerência do processador?
2. Qual é a função básica do módulo de gerência do processador?
3. Qual a função de um escalonador?
4. Quais são os objetivos de um gerenciamento dos dispositivos de E/S ?
5. Qual a função do canal de E/S ?
Sistemas Operacionais 56
6. Explique a função dos controladores.
7. Cite os 4 principais objetivos do escalonador de processos.
8. Porque os escalonamentos FIFOS e SJF não podem ser aplicados em
sistemas de tempo compartilhado?
9. Alguns livros comentam sobre três níveis de escalonadores, comente a
respeito de cada um:
a)Escalonador longo prazo
b)Escalonador médio prazo
c)Escalonador curto prazo
10.Para que tipos de operações o DMA é útil? Quais as implicações de uma
organização sem DMA na multiprogramação?
Sistemas Operacionais 57
Unidade IV – Gerência de Memória
Gerência de Memória
Partições fixas e variáveis
Swapping
Paginação
Segmentação
Segmentação paginada
Memória Virtual
Paginação por demanda
Realocação de página
Thrashing
[Objetivos Específicos da Unidade IV]
Propomos, nesta UNIDADE, levar você a:
• Compreender os conceitos e técnicas utilizadas para o
gerenciamento de memória pelo sistema operacional.
Sistemas Operacionais 58
Gerenciamento de Memória
No módulo anterior vimos como é execução dos processos pelo processador, neste
módulo basicamente irá estender o entendimento da execução de um processo, sob a
ótica do armazenamento do mesmo nas memórias.
É interessante notar como a simples execução de um processo pode desencadear
diversas operações e envolver diversos conceitos e funções totalmente imperceptíveis ao
usuário de um microcomputador.
Esta unidade é bem simples e esta organizada de forma a conduzi-lo à um
entendimento do funcionamento das memórias. Para tanto os tópicos serão apresentados
de forma que você consiga construir o conhecimento sobre a função de gerenciamento de
memória. E, para facilitar a sua aprendizagem, serão propostas orientações de estudo ao
longo do texto.
Portanto, sugerimos questões ao longo do texto para apreensão de determinados
conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por
meio da auto-avaliação, que deverá ser enviada ao seu tutor. Então, mãos à obra!
Gerência de Memória
Qual a relação do Sistema Operacional e as Memórias?
Como sabemos
Os computadores utilizam uma hierarquia de memória em sua organização,
combinando memórias voláteis e não-voláteis, tais como: memória cache, memória
principal e memória secundária.
O que cabe ao Sistema Operacional?
Ao sistema operacional é destinada a função de coordenar e gerenciar a utilização
dessas memórias de forma eficiente. Este serviço é implementado pelo sistema
operacional através do gerenciador de memória.
O gerenciador de memória controla quais partes da memória serão utilizadas e
quais não serão. Além disso, ele aloca nova área de memória aos processos que
necessitam e também libera espaço de memória quando os processos terminam.
Diante disso, podemos destacar alguns pontos que resumiriam a função do módulo
de gerência de memória:
o Manter o maior número de processos na memória
o Maximizar o compartilhamento da UCP e demais recursos
Sistemas Operacionais 59
o Implementar técnicas de Swapping
o Executar de programas maiores que memória disponível
o Implementar mecanismo de proteção
o Permitir o compartilhamento da memória pelos processos
Partições Fixas e variáveis
Os sistemas operacionais modernos permitem que mais de um processo seja
carregado em memória, de modo que quando um fica bloqueado esperando por uma
operação de E/S outro, que esteja carregado em memória, poderá usar a CPU. Dessa
forma, a multiprogramação ajuda a melhorar a utilização da CPU evitando desperdícios
de ciclo de processamento.
Partições Fixas
Para que seja possível a multiprogramação, podemos dividir a memória em n
partições (provavelmente de tamanhos diferentes). Os jobs serão colocados em filas de
entrada associadas à menor partição capaz de armazená-lo.
Será que essa solução é a mais apropriada?
Problemas desse tipo de solução.
Pelo fato de usarmos partições de tamanho fixo, todo o restante de espaço de
memória não utilizado pelo job será perdido. Este desperdício de memória é chamado de
Você é capaz de imaginar uma solução de memória para permitir o
armazenamento de mais de um programa viabilizando com isso a
multiprogramação?
A Solução pode ser o que chamamos de partição Fixa
Sistemas Operacionais 60
fragmentação interna (espaço de memória perdido dentro da área alocada ao processo).
Por outro lado, imagine que exista duas partições livres, uma de 25 e outra de 100
Kbytes, não contíguas. Nesse instante é criado um processo de 110 Kbytes que não
poderá ser carregado em memória pela forma como ela é gerenciada. Este problema
ocasiona o que chamamos de fragmentação externa (memória perdida fora da área
ocupada por um processo).
A estratégia de criar partições fixa pode contar com dois tipos de entradas:
Entradas com múltiplas filas e entrada com fila única.
O problema da organização em múltiplas filas, organização (a), é que jobs
pequenos podem precisar esperar pela liberação de memória (partição mais adequada
para o mesmo), embora exista memória disponível (partição grande), como é o caso da
partição 1 e 3.
Por outro lado, isso não ocorre no esquema de uma única fila. Nesta organização
(b) sempre que uma nova partição é liberada o job mais próximo do início da fila e que
caiba nessa partição pode ser carregado nela para ser executado pela CPU.
Qual o problema dessa solução? (Discriminar jobs pequenos!)
Qual a solução? (Ter pelo menos uma partição pequena!).
No entanto, esta estratégia pode desperdiçar muito espaço ao armazenar um job
pequeno em uma partição grande. Assim, uma opção mais interessante seria
Sistemas Operacionais 61
Bem, Existe uma outra possibilidade consiste em estabelecer uma quantidade
máxima k de vezes que um job pudesse ser excluído da escolha de receber uma partição.
Assim, sempre que ele fosse preterido teria seu contador incrementado e, ao chegar em k
vezes, ele teria que receber uma partição.
Partições Variáveis
Neste esquema de organização a quantidade e o tamanho dos processos na
memória podem variar dinamicamente com o passar do tempo, o tamanho das partições é
ajustado dinamicamente às necessidades exatas dos processos.
Diferentemente do esquema de partição fixa, na multiprogramação com partições
variáveis a o tamanho e a localização dos processos variam à medida que o mesmo deixa
e retorna à memória.
Uma das grandes vantagens desta estratégia é que a flexibilidade obtida que
melhora bastante a utilização da memória, evitando desperdícios de espaço.
Neste tipo de partição, o sistema operacional mantém uma lista de espaços livres
na memória física. Sempre que um novo processo é criado esta lista é percorrida e será
usada uma lacuna maior ou igual ao tamanho do processo em questão. O espaço que
ultrapassar o tamanho do processo pode dar origem a uma nova partição.
Existem algumas formas de percorrer esta lista:
1. first-fit: utiliza a primeira lacuna encontrada com tamanho suficiente.
Sistemas Operacionais 62
2. best-fit: utiliza a lacuna que resulta em menor sobra de espaço.
3. worst-fit: utiliza a lacuna que resulta em maior sobra de espaço.
Sistemas Operacionais 63
Para solucionar esse tipo de problema, foi proposta uma técnica denominada
Swapping. Nesse tipo de técnica caso não haja espaço para aumentar o tamanho da
partição ou não tenha uma partição grande o suficiente para realocar o processo, então
um ou mais processos deverão ser removidos para o disco (swapping). Se não for
possível realizar o swapping (área de swapping cheia) o processo que deseja crescer
deverá esperar ou ser eliminado.
Sistemas Operacionais 64
Paginação
Como uma nova abordagem de gerenciamento da memória, a Paginação consiste
em um espaço de Endereçamento lógico de um processo divididos em blocos do mesmo
tamanho.
Neste tipo de abordagem divide-se a memória física em blocos de tamanho fixo
chamados frames (o tamanho é uma
potência de 2, entre 512 bytes e 8192
bytes), divide a memória lógica em blocos
do mesmo tamanho chamados de páginas
e se mantém o registro de todos os frames
livres.
Para rodar um programa de tamanho
n páginas, é preciso encontrar-se n frames
livres para carregar o programa. Para
tanto, define-se uma tabela de página (page
table) para traduzir o endereço lógico em físico.
Sistemas Operacionais 65
Bom, um Bit Válido – Inválido é anexado a cada entrada na tabela de página:
_ “válido” indica que a página associada está no espaço de endereçamento lógico
do processo, e assim, é a uma página legal.
_ “inválido” indica que a página não está no espaço de endereçamento lógico do
processo.
Segmentação
A
segmentação
consiste em uma
técnica de gerência de
memória onde
programas são
divididos em
segmentos de
tamanhos variados cada
um com seu próprio
espaço de
endereçamento.
Segmentação
Sistemas Operacionais 66
Nesta técnica um programa é uma coleção de segmentos e um segmento é uma
unidade lógica, tal como:
programa principal
procedimento
função
método
objeto
variáveis locais, variáveis globais
bloco comum
pilha
tabela de simbolos, arrays
Segmentação & Paginação
A principal diferença entre a paginação e a segmentação é a alocação da memória
de maneira não fixa, a alocação depende da lógica do programa e o mapeamento é feito
através das tabelas de mapeamento de segmentos. Nesse caso, os endereços são
compostos pelo número do segmento e por um deslocamento dentro do segmento. Cada
entrada na tabela mantém informações sobre o endereço físico do segmento, o tamanho
do segmento, se ele está ou não na memória e sua proteção.
Note que:
Segmentação Paginada
Nesse tipo de técnica onde cada segmento é dividido fisicamente em páginas.
Sendo assim, o endereço é formado pelo número do segmento, número da página
localizado dentro no segmento e o deslocamento localizado dentro na página.
O mecanismo de proteção da segmentação tem que ser diferente que
da paginação. Neste caso a cada entrada na tabela de segmentos
associa-se: _ bit de validação = (0) segmento ilegal privilégios de
leitura/gravação/execução
Sistemas Operacionais 67
Técnica de gerenciamento que combina a memória principal e a secundária dando
ao usuário a idéia de existir uma memória maior que a memória principal.
O principal objetivo da memória virtual é disponibilizar aos usuários uma
capacidade de memória independente da quantidade de memória física (RAM) instalada
em um computador.
Para cumprir esse objetivo, o SO, através da implementação do suporte à memória
virtual, cria a ilusão de que cada processo possui um espaço de endereçamento contíguo
em memória e, em princípio, sem restrição de tamanho.
Segmentação paginada
Sistemas Operacionais 68
Dessa forma, a memória virtual elimina duas limitações impostas pela memória
física (real): um processo ter seu tamanho máximo determinado pela capacidade de
memória física instalada e, o somatório do espaço de memória ocupado por n processos
não exceder essa mesma capacidade. Essa segunda limitação restringe o grau de
multiprogramação, ou seja, o número de processos ativos em um sistema.
Paginação por Demanda
A paginação sob demanda é a implementação de memória virtual baseada no
mecanismo de paginação simples, isto é, cada processo possui uma memória lógica,
contígua, a qual é dividida em páginas lógicas de mesmo tamanho. As páginas lógicas
são carregadas em páginas físicas, que são áreas de igual tamanho na memória física
(RAM). A associação (mapeamento) de qual página física corresponde a uma
determinada página lógica é feita através da tabela de páginas.
Na paginação simples, todas as páginas lógicas de um processo são sempre
carregadas para a memória física, resultando em uma entrada válida na tabela de páginas
para cada página lógica do processo. O bit de válido/inválido é usado para indicar quais
páginas estão fora da memória lógica. Quando uma página marcada como inválida é
acessada, o processo é abortado por acesso ilegal à memória.
Na paginação por demanda, um acesso à memória pode ter dois tratamentos
distintos.
Quando a página lógica acessada pelo processo está marcada como válida
na tabela de páginas,
Quando o endereço lógico é transformado em endereço físico e o acesso
transcorre normalmente.
Caso ocorra um erro e, por conseqüência uma interrupção de proteção, temos uma
falta de página (page fault). Quando o SO é acionado em função de uma falta de página,
as seguintes ações são realizadas:
O processo que gerou a interrupção de falta de página é suspenso e seu
descritor de processo é inserido em uma fila especial, a “dos processos
esperando página lógica”
Uma página física livre deve ser alocada
A página lógica acessada deve ser localizada no disco
Uma operação de leitura do disco deve ser solicitada, indicando o endereço
da página alógica no disco e o endereço de página alocada.
Quando a operação de leitura do disco for concluída, a gerência de memória
concluirá o atendimento à falta de página realizando as seguintes ações:
Sistemas Operacionais 69
A tabela de páginas do processo é corrigida para indicar que a página lógica
causadora da interrupção é agora válida e está na página física que fora
alocado antes
O descritor do processo é retirado da “fila dos processos esperando página
lógica” e reinserido na fila de aptos do escalonador.
Realocação de Página
A medida que os processos vão sendo carregados para a memória, é possível que
todas as páginas físicas acabem ocupadas. Nesse caso, para atender à falta de página,
é necessário antes liberar uma página física ocupada. Isso significa escolher uma página
lógica que está na memória, copiar seu conteúdo de volta para o disco e marca-la como
inválida na tabela de páginas do seu processo. A página escolhida para ser copiada de
volta ao disco é chamada de página vítima.
O algoritmo de substituição de páginas é responsável pela escolha da página
vítima. Ele é muito importante para a eficiência do mecanismo como um todo. Um escolha
errada significa que a página removida será novamente acessada em seguida, gerando
uma nova falta de página. É importante que o algoritmo usado seja capaz de remover da
memória física páginas que provavelmente não serão necessárias logo em seguida.
Vários bits auxiliares são normalmente adicionados às tabelas de páginas.
O bit de sujeira (dirty bit) indica quando uma página foi
alterada durante a execução do processo. Esse bit é
zerado pelo SO quando a página é carregada para a
memória.
O bit de referência (reference bit) indica quando uma
página foi acessada pelo processo. Esse bit é feito igual a
zero pelo sistema operacional quando a página é
carregada para a memória. Ele também será zerado em
determinadas situações, ditadas pelo algoritmo de
substituição de página empregado
O bit de tranca (lock bit) serve para o SO “trancar” uma
página lógica na memória física. Existem situações nas
quais uma determinada página lógica não deve ser
escolhida como vítima. Então, quando o SO envia ao
controlador de disco um comando de leitura informando
como destino uma página de processo, ele também liga o
bit de tranca da respectiva página.
Algoritmos de substituição de páginas na memória
Em um sistema multiprogramado a memória é compartilhada por um certo número
de processos, a determinação da página a ser substituída é feita por um algoritmo de
substituição de páginas que recai em uma de duas classes genéricas possíveis: classe
global e classe local. Independente de classe, global ou local, o ideal é selecionar uma
página que não seja mais útil ou que, pelo menos, não venha a ser necessária em um
Sistemas Operacionais 70
curto intervalo de tempo. Logo, o algoritmo ótimo de substituição é aquele que escolhe
uma página lógica que já foi utilizada por um programa e que não será mais necessária
ou aquela página que será utilizada no futuro mais distante.
A implementação do algoritmo ótimo não é viável por exigir o conhecimento prévio
do comportamento dos processos.
Algoritmos globais:
FIFO (First In – First Out) – Escolhe para substituição a página que está a
mais tempo residente em memória. A principal vantagem do FIFO é sua
implementação simples: basta uma lista de até M posições e um ponteiro para
indicar a frente da fila. Entretanto, essa estratégia peca por não considerar a
utilização de uma página, ou seja, a página apontada como primeira da fila pode
ser uma página acessada muito frequentemente ou que será necessária em breve.
LRU (Least Recently Used) – Escolhe como página vítima aquela que foi
acessada a mais tempo, isto é, a que foi “menos recentemente usada”. O LRU parte da
premissa que as páginas acessadas recentemente por um processo continuarão a ser
necessárias em um futuro próximo.
Segunda chance – Também baseado em bit de referência, porém mais simples
que o histórico de bits. Nesse caso, a gerência de memória considera que todas as
páginas lógicas presentes na memória formam uma lista circular. Um apontador percorre
a lista circular formada por todas as páginas e indica qual a próxima página a ser usada
como vítima. Quando uma página vítima é necessária, o algoritmo verifica o bit de
referência da página indicada pelo apontador. Caso este bit esteja desligado, essa página
é efetivamente escolhida como vítima, e o apontador avança uma posição na lista circular.
Caso o bit de referência da página apontada esteja ligado, o bit de referência é desligado,
e ela recebe uma segunda chance.
Algoritmos Locais
Uma outra abordagem para o problema da substituição de páginas vem da análise
de dois comportamentos apresentados durante a execução de processos.
Sistemas Operacionais 71
Algoritmo ótimo
Considerando isso, o ideal é manter em memória, para cada processo, um conjunto
ótimo de páginas necessárias a sua execução. Com esse raciocínio, a determinação de
quais páginas lógicas de um processo devem permanecer em memória é dado pela sua
própria execução e não deve afetar a política de páginas de outro processo.
O algoritmo ótimo, então, ajusta o número de páginas em memória de acordo com
as suas futuras referências. A idéia consiste em verificar se uma página lógica P
acessada em instante de tempo T, será ou não acessada futuramente dentro de TT
unidades de tempo. Caso a página lógica P venha a ser acessada dentro desse intervalo
futuro de tempo, ela é considerada necessária e é mantida em memória, caso contrário, o
espaço em memória que ocupa (página física) pode ser liberado. O intervalo de tempo
dado por T+TT fornece uma janela temporal definindo, por processo, quais páginas
devem ser mantidas em memória.
Importante:
Modelo de working set
O Modelo de working set é uma aproximação do algoritmo ótimo que estimam
quais as páginas serão necessárias no futuro com base em quais páginas goram
acessadas no passado. O principio é manter em memória, em um instante T, conjunto de
páginas P, acessadas por um processo durante o intervalo de tempo (T-TT; T). Sua lógica
é considerar que se uma página foi acessada em um passado recente (T-TT), ela tem boa
chance de continuar sendo utilizada em um futuro próximo. O problema do modelo
working set é estimar o valor adequado para a constante TT (largura da janela temporal).
Um valor pequeno para TT pode não englobar toda a localidade de referência de um
processo, provocando faltas de páginas. Por outro lado, um valor muito grande para TT,
tende a manter em memória páginas que não são mais referenciadas, provocando um
Devido a impossibilidade de se conhecer previamente as páginas de um processo,
esse algoritmo serve apenas para estimativas.
Sistemas Operacionais 72
desperdício de memória, e conseqüentemente, reduzindo o número de processos aptos a
executar.
Outra desvantagem do working set é a necessidade de reavaliá-lo a cada unidade
de tempo (acesso), o que representa um custo de processamento elevado.
Trashing
Você já se perguntou por que ocorre situações de “congelamento do sistema”,
ou se já, por que o sistema as vezes fica parado não liberando para
nenhuma ação?
Bom o tratamento de uma falta de página é várias ordens de grandeza mais lento
que um processo normal à memória. Logo, o impacto da taxa de falta de página sobre o
tempo de execução de um processo é muito grande. Quando um processo possui um
número muito pequeno de páginas físicas para executar, a sua taxa de falta de página
aumenta. Á medida que a taxa de falta de página aumenta o processo pára de realizar
qualquer trabalho útil. Tudo que o processo faz é esperar pelo atendimento de faltas de
páginas. Nesse momento, é dito que está ocorrendo Thrashing.
Para retirar o sistema do estado de thrashing é necessário suspender
temporariamente alguns processos, librando suas páginas físicas. O mecanismo natural
para isso é o swapping.
Obviamente, a gerência de memória realiza um revezamento entre os processos
suspensos e aqueles executando. O swapping não é algo desejável, pois aumenta o
tempo de resposta dos processos. Em condições normais, ele não deve ser usado.
Formas de prevenção do Thrahing
A solução normalmente empregada para solucionar o problema de thrashing é a
prevenção: o sistema de gerência virtual deve agir de forma pró-ativa e evitar que o
sistema entre em thrashing. Um sistema entrará em thrashing sempre que o somatório
das páginas lógicas necessárias pelos processos do sistema for superior ao número de
páginas físicas disponíveis no sistema.
O modelo de working set, por exemplo, pode ser empregado para controlar o
thrashing mantendo a soma dos tamanhos dos working sets (cardinalidade do conjunto)
de todos os processos inferior a quantidade de páginas físicas disponíveis no sistema.
Outra forma de prevenir o thrashing é empregar o método de frequência de falta de
páginas. Nesse caso, se muitos processos apresentarem uma alta taxa de falta de
páginas, isso significa que há mais demanda de memória, por parte dos processos que
executam, que memória disponível. Novamente, através do escalonador de médio prazo,
Sistemas Operacionais 73
o SO seleciona um ou mais processos para suspender, evitando assim a situação de
thrashing.
Síntese da Unidade:
O gerenciador de memória controla quais as partes da memória serão utilizadas
e quais não serão e como serão utilizadas.
O controle de uso da memória é feito através de técnicas de particionamento da
memória.
Partição fixa é uma técnica que consiste na divisão da memória em N partições
de diferentes tamanhos.
Partições variáveis é uma técnica que consiste na divisão da memória em N
partições de acordo com a necessidades dos processo, isto é, o tamanho das
partições é ajustado dinamicamente às necessidades exatas dos processos.
First-fit, best-fit, worst-fit e circular-fit são algumas formas de se percorrer uma
lista de segmentos.
Swapping consiste em uma técnica de remoção do processo da memória para
uma área do disco (swap out) e vice-versa (swap in).
Paginação consiste em uma nova abordagem de gerenciamento de memória,
caracterizado por trabalhar com espaços de endereçamento lógico de um
processo divididos em blocos do mesmo tamanho.
Segmentação consiste em uma nova abordagem de gerenciamento de
memória, caracterizado por trabalhar com segmentos de tamanhos variados
cad um com seu próprio espaço de endereçamento
Segmentação Paginada consiste em uma técnica onde cada onde cada
segmento é dividido fisicamente em páginas.
Memória Virtual consiste em uma técnica que combina a memória principal e a
secundária, dando ao usuário a idéia de existir uma memória maior que a
memória principal.
A Paginação por demanda é a implementação de memória virtual baseada no
mecanismo de paginação simples, isto é, cada processo possui uma memória
lógica, contígua, a qual é dividida em páginas lógicas do mesmo tamanho.
Thrashing é conseqüência da excessiva paginação/segmentação em sistemas
que implementam memória virtual, levando o sistema a dedicar mais tempo com
operações relacionadas à gerência da memória do que no processamento das
aplicações dos usuários.
Sistemas Operacionais 74
[ Auto-avaliação ]
1. Relacione as funções do módulo de gerenciamento de memória.
2. Qual a diferença básica entre paginação e segmentação?
3. Suponha que um computador possui uma área de memória de usuário de 500K
bytes. Suponha também que há duas opções de gerência de memória: a primeira usa
páginas (regiões) de tamanho fixo de 50 K bytes e a segunda usa segmentos (região) de
4 K bytes. Considerando que 95% dos programas possuem em média menos que 30 K
bytes, a técnica de gerência de memória que permite a menor fragmentação interna
(memória interna a uma região, mas não usada) da memória principal é:
(A) segmentação;
(B) paginação;
(C) memória com intercalação ("interleaved");
(D) memória organizada em bancos;
(E) memória "Cache".
4) Quando ocorre a fragmentação interna em um sistema que utiliza a técnica de
paginação?
5) Suponha que o esquema adotado para gerenciamento de memória de um
determinado computador seja baseado na estratégia de working sets - W(t,∆), com
política de re-alocação de página do tipo LRU – Least Recently Used e ∆ = 3. Nessas
condições, se um determinado processo apresentar a seguinte seqüência de referências
a páginas virtuais: 24, 15, 18, 23, 24, 18, 17, 18, 24, 17, 17, 15 o número de ocorrências
de page faults será de:
(A) 11
(B) 9
(C) 5
(D) 13
(E) 7
6) A Memória Virtual por Paginação é uma técnica de gerência de memória onde o
espaço de endereçamento virtual e o espaço de endereçamento real são divididos em
blocos do mesmo tamanho chamados páginas. Pode-se dizer dessa técnica que:
I - todo o mapeamento de endereço virtual em real é realizado através de tabelas
de páginas;
II - um programa é dividido logicamente em sub-rotinas e estruturas de dados, que
são alocadas em páginas na memória principal;
Sistemas Operacionais 75
III - o maior problema na gerência de memória virtual por paginação não é decidir
quais páginas carregar para a memória principal, mas sim quais liberar.
Est(ão) correta(s) a(s) afirmativa(s):
(A) I, apenas.
(B) I e II, apenas.
(C) I e III, apenas.
(D) II e III, apenas.
(E) I, II e III.
7) Explique a técnica de paginação por demanda
8) O que é Trashing?
[ Referência Bibliográfica ]
MACHADO, Francis Berenger ; MAIA, Luiz Paulo. “Arquitetura de Sistemas
Operacionais”, 4ª Edição, Ed. LCT, 2007.
SILBERSCHATZ, Abraham; GALVIN, Peter Baer. "Sistemas Operacionais:
Conceitos", quinta edição. Pearson Brasil, 2000.
TANENBAUM, Andrew S., WOODHULL, Albert S.. "Sistemas Operacionais -
Projeto e Implementação", segunda edição. Prentice-Hall, 2000.
Sistemas Operacionais 76
Unidade V – Sistemas de Arquivos
Sistemas de arquivos
Estrutura dos arquivos
Diferentes sistemas de arquivos
Coordenação do espaço disponível para os arquivos
Organização de uma partição
[Objetivos Específicos da Unidade V]
Propomos, nesta UNIDADE, levar você a:
• Compreender como ocorre a implementação de sistema de
arquivo.
• Comparar os tipos de sistema de arquivos disponível no
mercado.
Sistemas Operacionais 77
Sistema de Arquivos
Esta unidade irá apresentar o módulo sistema de arquivos. Esse módulo é a parte
mais visível do sistema operacional. Quando utilizamos um computador, basicamente
utilizamos o sistema operacional para realizar várias operações com os arquivos: criar;
copiar, renomear, proteger, esconder, entre outras. Todas essas ações explícitas a nós
usuários e outras implícitas ao nosso manuseio, fazem parte do módulo sistema de
arquivos.
Os tópicos serão apresentados de forma que você compreenda de maneira lógica
como cada uma dessas operações são implementadas e as técnicas utilizadas nessa
implementação. E, para facilitar a sua compreensão, será necessário que você tenha
pleno domínio das unidades anteriores.
Objetivamos que você adquira um conhecimento que lhe permita entender a
implementação e o funcionamento de um sistema de arquivo. Para que isso ocorra, é
fundamental que você seja capaz de entender lógica de programação, bem como as
várias técnicas para implementação de um sistema operacional.
Portanto, sugerimos questões ao longo do texto para apreensão de determinados
conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por
meio da auto-avaliação, que deverá ser enviada ao seu tutor.
Então, mãos à obra!
Você consegue relacionar algumas funções para o sistema de arquivo?
• Fornecer mecanismos para os usuários manipular arquivos e diretórios
• Garantir a validade e coerência dos dados
• Otimizar o acesso
• Fornecer suporte a outros sistemas de arquivos
• Gerenciar o suporte a vários usuários através do uso compartilhado de
arquivo.
Vocês notaram que dentre as funções do sistema de arquivos uma palavra
apareceu com
muita freqüência ?
É isso ai:
Bom... Espero que sim, pois constantemente utilizamos essas
funções.
Um arquivo é um conjunto de registros definidos pelo sistema de
arquivos, tornando seu conceito abstrato e generalista Um arquivo é
constituído por informações logicamente relacionadas, podendo
representar instruções ou dados. Arquivos são gerenciados pelo sistema
operacional de maneira a facilitar o acesso dos usuários ao seu
conteúdo.
Sistemas Operacionais 78
Os arquivos Possuem:
Nome;
Atributos;
Estrutura interna;
Tipo;
Método de acesso operações.
A atribuição de nomes a arquivos é feita no momento de sua criação. As regras a
serem adotadas para a confecção do nome de um arquivo variam de acordo com o SO.
O servidor de arquivos deve implementar a abstração de arquivo para o restante do
sistema. Para tanto, ele deve determinar como o arquivo será estruturado internamente.
As estruturas de arquivos mais comuns são:
• sequência de bytes
• sequência de registros
• árvore de registros
Estruturação como sequência de bytes: Neste caso, não há estrutura. O arquivo
é simplesmente enxergado como uma sequência de bytes. O SO não tem conhecimento
do significado e da estruturação dos campos que compõem um arquivo.
Estruturação como sequência de registros: Neste caso, o arquivo é estruturado
pelo SO como uma sequência de registros de tamanho fixo. As operações de leitura e
escrita retornam um registro.
Sistemas Operacionais 79
Estruturação como árvore de registros: Neste caso, o arquivo é uma árvore de
registros de tamanho variável. Cada registro é composto por um campo chave, contido
em uma posição fixa. A árvore é ordenada
pelo campo chave. – Esta estruturação visa
otimizar o acesso randômico a registros.
Método de Acesso
Os métodos de acesso determinam
como os dados contidos no arquivo serão recuperados pelo usuário.
Sistemas Operacionais 80
Acesso seqüencial: Este método de acesso utiliza basicamente as operações de
leitura e escrita. a) Operação de leitura (read next): lê a próxima posição do arquivo
e avança o ponteiro; b) Operação de escrita (write next): coloca odado no final do
arquivo e avança o end-offile (EOF).
Acesso direto (ou aleatório): Este método de acesso utiliza basicamente as
operações de leitura e escrita: a) Operação de leitura (read n): lê a posição do
arquivo apontada por n. Geralmente, n é o número do bloco. b) Operação de escrita (write
n): coloca o dado no bloco n.
Os sistemas de arquivos podem oferecer simultaneamente os dois métodos de
acesso e o usuário determina o método a ser utilizado na criação do arquivo. A maioria
dos SO modernos oferece somente o método de acesso direto
Operações sobre o arquivo
As operações sobre arquivos geralmente levam em consideração um conjunto de
entidades de um sistema de arquivos.
• tabela de arquivos: possui uma entrada para cada arquivo. Contem as
informações referentes aos arquivos.
• diretório: caminho que leva ao arquivo. Ao ser criado, o arquivo é
posicionado em um diretório e a tabela de arquivos deste diretório deve
conter uma entrada para o novo arquivo.
• posição corrente do arquivo: ponteiro que diz qual a posição do arquivo
será acessada na próxima vez. As operações de leitura e escrita
incrementam o valor da posição corrente do arquivo do número de bytes
lidos/escritos.
As operações feitas sobre um arquivo vão depender do sistema de arquivos de
cada SO. Existe, no entanto, um conjunto de operações que constam na maioria dos
sistemas de arquivos:
1) CREATE: cria um arquivo. Deve-se criar uma entrada para o novo arquivo no
diretório especificado. Além disso, deve-se criar uma entrada na tabela de arquivos com o
nome do criador, data de criação e permissões de acesso. O arquivo recem-criado não
possui dado nenhum.
2) DELETE: Libera o espaço ocupado pelo arquivo, deleta a entrada do diretório
que aponta para o arquivo e deleta a entrada na tabela de arquivos.
3) OPEN: Antes de ser utilizado, o arquivo precisa ser aberto. Essa chamada traz a
entrada da tabela de arquivos referente ao arquivo a ser aberto para a tabela de
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais
Sistemas operacionais

Mais conteúdo relacionado

Mais procurados

Criação do pendrive bootável
Criação do pendrive bootávelCriação do pendrive bootável
Criação do pendrive bootávelFrancis Torres
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10LucasMansueto
 
Sistemas operativos 10º
Sistemas operativos 10ºSistemas operativos 10º
Sistemas operativos 10ºteacherpereira
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandoskamatozza
 
Sistemas Operacionais - Aula 9 (Gerencia do Processador)
Sistemas Operacionais - Aula 9 (Gerencia do Processador)Sistemas Operacionais - Aula 9 (Gerencia do Processador)
Sistemas Operacionais - Aula 9 (Gerencia do Processador)Leinylson Fontinele
 
Aula 09 - Memórias do Computador
Aula 09 - Memórias do ComputadorAula 09 - Memórias do Computador
Aula 09 - Memórias do ComputadorSuzana Viana Mota
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Leinylson Fontinele
 
Linux Como Tudo Começou
Linux Como Tudo ComeçouLinux Como Tudo Começou
Linux Como Tudo Começouguestaa94fe
 
Apresentação fedora linux
Apresentação fedora linux Apresentação fedora linux
Apresentação fedora linux José Nascimento
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfFChico2
 
Aula 1 sistema operacional linux
Aula 1 sistema operacional linuxAula 1 sistema operacional linux
Aula 1 sistema operacional linuxRogério Cardoso
 

Mais procurados (20)

Trabalho linux
Trabalho linuxTrabalho linux
Trabalho linux
 
Criação do pendrive bootável
Criação do pendrive bootávelCriação do pendrive bootável
Criação do pendrive bootável
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10
 
Sistemas operativos 10º
Sistemas operativos 10ºSistemas operativos 10º
Sistemas operativos 10º
 
Informatica basica
Informatica basicaInformatica basica
Informatica basica
 
Linux para leigos
Linux para leigos Linux para leigos
Linux para leigos
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Sistemas Operacionais - Aula 9 (Gerencia do Processador)
Sistemas Operacionais - Aula 9 (Gerencia do Processador)Sistemas Operacionais - Aula 9 (Gerencia do Processador)
Sistemas Operacionais - Aula 9 (Gerencia do Processador)
 
Android
AndroidAndroid
Android
 
Conhecendo Melhor O Linux
Conhecendo Melhor O LinuxConhecendo Melhor O Linux
Conhecendo Melhor O Linux
 
Sistemas de arquivos
Sistemas de arquivosSistemas de arquivos
Sistemas de arquivos
 
Linux
LinuxLinux
Linux
 
Aula 09 - Memórias do Computador
Aula 09 - Memórias do ComputadorAula 09 - Memórias do Computador
Aula 09 - Memórias do Computador
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
 
Introducao a informatica
Introducao a informaticaIntroducao a informatica
Introducao a informatica
 
Linux Como Tudo Começou
Linux Como Tudo ComeçouLinux Como Tudo Começou
Linux Como Tudo Começou
 
Apresentação fedora linux
Apresentação fedora linux Apresentação fedora linux
Apresentação fedora linux
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdf
 
Aula 1 sistema operacional linux
Aula 1 sistema operacional linuxAula 1 sistema operacional linux
Aula 1 sistema operacional linux
 

Destaque

Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoLuiz Arthur
 
Cap05 processos e threads
Cap05   processos e threadsCap05   processos e threads
Cap05 processos e threadsfernandao777
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisLuciano Crecente
 
Sistemas operacionais lista de exercicios
Sistemas operacionais lista de exerciciosSistemas operacionais lista de exercicios
Sistemas operacionais lista de exerciciosCarlos Melo
 
Sistemas operacionais escalonamento de processos
Sistemas operacionais  escalonamento de processosSistemas operacionais  escalonamento de processos
Sistemas operacionais escalonamento de processosTalles Nascimento Rodrigues
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introduçãoCleber Ramos
 
Sistemas operacionais pronatec- prof. manoel
Sistemas operacionais   pronatec- prof. manoelSistemas operacionais   pronatec- prof. manoel
Sistemas operacionais pronatec- prof. manoelManoel Rufino Neto
 
Resumo sistemas operacionais
Resumo sistemas operacionaisResumo sistemas operacionais
Resumo sistemas operacionaisDaniel Brandão
 
Introdução a computação e suas aplicações seminário
Introdução a computação e suas aplicações seminárioIntrodução a computação e suas aplicações seminário
Introdução a computação e suas aplicações seminárioRobson Ferreira
 
Resolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisResolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisRonildo Oliveira
 
Sistemas operativos distribuidos e de redes
Sistemas operativos distribuidos e de redesSistemas operativos distribuidos e de redes
Sistemas operativos distribuidos e de redesPortal_do_Estudante_SD
 
Gerência de processos
Gerência de processosGerência de processos
Gerência de processosVirgínia
 
fundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.Ofundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.OPablo Lopes
 
Introdução a Sistemas Operacionais
Introdução a Sistemas OperacionaisIntrodução a Sistemas Operacionais
Introdução a Sistemas OperacionaisLabin2bpm
 
Visão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema OperacionalVisão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema OperacionalAlexandre Duarte
 
História dos Sistemas Operativos
História dos Sistemas OperativosHistória dos Sistemas Operativos
História dos Sistemas OperativosTROLITO LALALAL
 

Destaque (20)

Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - Introducao
 
Cap05 processos e threads
Cap05   processos e threadsCap05   processos e threads
Cap05 processos e threads
 
Tipos de Sistemas Operacionais
Tipos de Sistemas OperacionaisTipos de Sistemas Operacionais
Tipos de Sistemas Operacionais
 
Sistemas operacionais lista de exercicios
Sistemas operacionais lista de exerciciosSistemas operacionais lista de exercicios
Sistemas operacionais lista de exercicios
 
Sistemas operacionais escalonamento de processos
Sistemas operacionais  escalonamento de processosSistemas operacionais  escalonamento de processos
Sistemas operacionais escalonamento de processos
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
 
Sistemas operacionais pronatec- prof. manoel
Sistemas operacionais   pronatec- prof. manoelSistemas operacionais   pronatec- prof. manoel
Sistemas operacionais pronatec- prof. manoel
 
Resumo sistemas operacionais
Resumo sistemas operacionaisResumo sistemas operacionais
Resumo sistemas operacionais
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Introdução a computação e suas aplicações seminário
Introdução a computação e suas aplicações seminárioIntrodução a computação e suas aplicações seminário
Introdução a computação e suas aplicações seminário
 
Resolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas OperacionaisResolução de Problemas - Sistemas Operacionais
Resolução de Problemas - Sistemas Operacionais
 
Sistemas operativos distribuidos e de redes
Sistemas operativos distribuidos e de redesSistemas operativos distribuidos e de redes
Sistemas operativos distribuidos e de redes
 
Gerência de processos
Gerência de processosGerência de processos
Gerência de processos
 
fundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.Ofundamentos de sistema operacional- S.O
fundamentos de sistema operacional- S.O
 
Introdução a Sistemas Operacionais
Introdução a Sistemas OperacionaisIntrodução a Sistemas Operacionais
Introdução a Sistemas Operacionais
 
Visão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema OperacionalVisão Geral: Estruturas do Sistema Operacional
Visão Geral: Estruturas do Sistema Operacional
 
História dos Sistemas Operativos
História dos Sistemas OperativosHistória dos Sistemas Operativos
História dos Sistemas Operativos
 
Tipos de Sistema operacional
Tipos de Sistema operacionalTipos de Sistema operacional
Tipos de Sistema operacional
 

Semelhante a Sistemas operacionais

Sistema operacional
Sistema operacionalSistema operacional
Sistema operacionalMichael Soto
 
Sistemas Operacionais parte 2
Sistemas Operacionais  parte 2Sistemas Operacionais  parte 2
Sistemas Operacionais parte 2Matheus Brito
 
Apostila Aplicativos informatizados
Apostila Aplicativos informatizadosApostila Aplicativos informatizados
Apostila Aplicativos informatizadosAndréia Santos
 
Apostila win linux revisada unidade i
Apostila win  linux revisada unidade iApostila win  linux revisada unidade i
Apostila win linux revisada unidade iJosiane Silva
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fsopaulocsm
 
TA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfTA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfSandroPolizelLaurent
 
Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011afranio47
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelPablo Mariano
 
Silberschatz sistemas operacionais
Silberschatz   sistemas operacionaisSilberschatz   sistemas operacionais
Silberschatz sistemas operacionaisDeryk Sedlak
 
Aula 00 sistemas operacionais
Aula 00   sistemas operacionaisAula 00   sistemas operacionais
Aula 00 sistemas operacionaisGiovanni Oliveira
 
Noções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisNoções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisLuciano Crecente
 

Semelhante a Sistemas operacionais (20)

Analise - Aula 1
Analise - Aula 1Analise - Aula 1
Analise - Aula 1
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacional
 
Sistemas_Operacionais_web.pdf
Sistemas_Operacionais_web.pdfSistemas_Operacionais_web.pdf
Sistemas_Operacionais_web.pdf
 
Aula2 so
Aula2 soAula2 so
Aula2 so
 
Sistemas Operacionais parte 2
Sistemas Operacionais  parte 2Sistemas Operacionais  parte 2
Sistemas Operacionais parte 2
 
Apostila Aplicativos informatizados
Apostila Aplicativos informatizadosApostila Aplicativos informatizados
Apostila Aplicativos informatizados
 
Progeto pim ii
Progeto pim iiProgeto pim ii
Progeto pim ii
 
Apostila win linux revisada unidade i
Apostila win  linux revisada unidade iApostila win  linux revisada unidade i
Apostila win linux revisada unidade i
 
Questoesde fso
Questoesde fsoQuestoesde fso
Questoesde fso
 
TA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfTA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdf
 
Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011Artigo sistemas embarcados 2011
Artigo sistemas embarcados 2011
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
Apostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgelApostila de sistemas operacionais emi mario gurgel
Apostila de sistemas operacionais emi mario gurgel
 
Silberschatz sistemas operacionais
Silberschatz   sistemas operacionaisSilberschatz   sistemas operacionais
Silberschatz sistemas operacionais
 
Aula 00 sistemas operacionais
Aula 00   sistemas operacionaisAula 00   sistemas operacionais
Aula 00 sistemas operacionais
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Noções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisNoções básicas de Sistemas Operacionais
Noções básicas de Sistemas Operacionais
 
S.o aula 5678
S.o aula 5678S.o aula 5678
S.o aula 5678
 
So cap01
So cap01So cap01
So cap01
 

Sistemas operacionais

  • 1. Curso Superior de Sistemas para Internet Márcia de Oliveira Alves Cuiabá 2011 Sistemas Operacionais
  • 2. GOVERNO FEDERAL Dilma Rousseff Presidente do Brasil Fernando Haddad Ministro da Educação Jorge Almeida Guimarães Presidente da Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES) José Carlos Teatini Climaco Diretor de Educação a Distância da Universidade Aberta do Brasil (UAB) na CAPES IFMT - INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO GROSSO José Bispo Barbosa Reitor Willian Silva de Paula Pró Reitor de Ensino Alexandre José Schumacher Coordenador Geral UAB/IFMT Claudete Galvão de Alencar Pedroso Coordenadora Adjunta UAB/IFMT Alexandro Uguccioni Romão Editoração eletrônica Luisa do Amparo Carvalho Patatas Revisão de português Coordenação da UAB/IFMT Instituto Federal de Educação, Ciência e Tecnologia do Mato Grosso (IFMT) - Campus Bela Vista - AvenidaJulianoCostaMarquesS/N,CEP:78.050-560,BelaVista,Cuiabá/MT-Brasil A produção deste material didático obteve financiamento no âmbito do Programa Universidade AbertadoBrasil,CAPES/FNDE/MEC. Autoriza-se o uso e a reprodução da obra no âmbito do Sistema UAB e o IFMT desde que citada a fonte.Évedadoousodestaobraparafinsdecomercialização. Ficha Catalográfica Alves, Márcia de Oliveira. Márcia de Oliveira Alves. Cuiabá: Publicação do IFMT, 2011. 123p.; 21 x 29,7 cm. Sistemas Operacionais.
  • 3. Sistemas Operacionais 2 Unidade I – Fundamentos de Sistemas Operacionais Introdução aos Sistemas Operacionais Estrutura do Sistema Operacional Evolução dos Sistemas Operacionais Tipos de Sistema Operacional [Objetivos Específicos da Unidade I] Propomos, nesta UNIDADE, levar você a: • Compreender o papel de um Sistema Operacional no gerenciamento dos dispositivos dos computadores. • Discutir principais conceitos de Sistemas Operacionais
  • 4. Sistemas Operacionais 3 Fundamentos de Sistemas Operacionais O que e mais importante o hardware ou o software? Olhe para o seu microcomputador, como é possível essa caixa, cheio de componentes, ser capaz de realizar tantas ações. Sem um software básico, isto e, um sistema operacional, essa caixa não funciona, e sem um sistema operacional adequado, todos os recursos disponíveis nesta caixa não serão aproveitados da melhor forma possível. À medida que vamos conhecendo a função e a estrutura interna de um sistema operacional, podemos relacionar esse conhecimento as situações que diariamente vivenciamos ao utilizarmos um microcomputador. Esta unidade trata de assuntos que vão conduzi-lo a um entendimento mais analítico e criterioso sobre o funcionamento de um sistema computacional. O sistema Operacional responsável pelo funcionamento desse sistema e composto de módulos que determinam e classificam sua função. Os tópicos serão apresentados de forma que você apreenda o conceito de sistemas operacionais, sua função e seus módulos. E, para facilitar a sua aprendizagem, serão propostas questões e orientações de estudo ao longo do texto. Objetivamos que você adquira um conhecimento aprofundado da estrutura de um sistema operacional. Para que isso ocorra, é fundamental que você seja capaz de entender lógica de programação, bem como as várias técnicas utilizadas em estruturas de dados. Portanto, sugerimos questões ao longo do texto para apreensão de determinados conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por meio da auto-avaliação, que deverá ser enviada ao seu tutor. Então, mãos à obra! Introdução aos Sistemas Operacionais: Este assunto irá contribuir para que você possa entender o que e um sistema operacional qual a sua função e seus principais componentes.
  • 5. Sistemas Operacionais 4 Observe a figura abaixo. Você poderia a partir dessa imagem, formular um conceito para Sistemas Operacionais? Vamos supor que você tenha respondido que um sistema operacional e o elemento que interliga o hardware e usuário tendo em vista que o usuário não sabe falar a linguagem de maquina. Se foi essa a sua resposta, esta parcialmente certa. Para fazermos jus a um Sistema Operacional podemos conceituá-lo como? Para entendermos esse conceito temos que ter bem definido duas funções básicas de um Sistema Operacional. • Facilidade de acesso aos recursos de um sistema • Compartilhamento de recursos de forma organizada e segura. Um computador normalmente possui diversos componentes, como monitor, impressora, som e scanner. Quando utilizamos um desse dispositivo, não nos preocupamos com a maneira como e realizada esta comunicação, bem como os inúmeros detalhes envolvidos neste processo. Essa e uma das funções do Sistema Operacional. Quando utilizamos o computador de forma compartilhada, disponibilizando recursos com outros usuários, fica também a cargo do Sistema Operacional gerenciar esse compartilhamento de forma segura e organizada. Após esse conceito qual a sua visão de um Sistema Computacional? Um computador visto somente como um gabinete composto de circuitos eletrônicos, cabos e fontes de alimentação, ou seja, visto somente como o hardware, não tem nenhuma utilizada. O sistema Operacional e um elemento vital para o funcionamento do hardware. A imagem abaixo poderia representar a sua visão de um Sistema Computacional? Hardware Sistema Operacional usuários Bem, acredito que sim. Software responsável pela interface entre a máquina e o usuário e entre a maquina e os aplicativos, exercendo funções que permitam o acesso seguro às informações contidas na memória do computador.
  • 6. Sistemas Operacionais 5 Partindo desta visão podemos considerar o computador como uma maquina de níveis ou camada. Logicamente um computador não possui apenas dois níveis, e sim tantos níveis forem necessários para adequar os usuários as suas diversas aplicações. Uma estrutura padrão dos possíveis níveis de um sistema computacional pode ser representada da seguinte forma: Estrutura do Sistema Operacional Bem, podemos explicar isso através dos conceitos que envolvem a estrutura de um sistema operacional. O Sistema operacional é formado por um conjunto de rotinas que oferecem serviços essenciais aos usuários, às suas aplicações, e também ao próprio sistema. A esse conjunto de rotinas dá-se o nome de núcleo do sistema ou kernel. É importante entender que os procedimentos de um sistema operacional são referentes ao tratamento processos1 que são executados de forma concorrente ou simultaneamente, ou seja, sem uma ordem específica ou predeterminada. As principais funções do núcleo encontradas na maioria dos sistemas comerciais são as seguintes: Tratamento de interrupções e exceções: função responsável por tratar alguns eventos inesperados que podem ocorrer, ocasionando um desvio forçado no seu fluxo normal de execução. Criação e eliminação de processos: função responsável por alocar em memória todos os recursos necessários à execução do processo. 1 É basicamente um programa em execução, sendo constituído de código executável do dado. Utilitários Circuitos Eletrônicos Microprogramação Linguagem de Máquina Sistema Operacional Aplicativos Maquina de níveis Você pode imaginar como são realizadas as operações pelo sistema operacional? Você faz idéia de como o sistema operacional resolve os conflitos de informações que são manipuladas?
  • 7. Sistemas Operacionais 6 Escalonamento e controle de processos: função responsável por organizar a fila de acesso ao processador. Gerência de memória: função responsável por fornecer à função de criação/eliminação de processos os endereços em memória disponíveis para alocação; Gerência de sistemas de arquivos: responsável pelo gerenciamento dos arquivos, bem como seu compartilhamento pelos diversos usuários, implementando mecanismos de controle da segurança e direitos de acesso às áreas utilizadas pelos usuários nos diversos dispositivos; Gerência de dispositivos de E/S: responsável por gerenciar os dispositivos, prestando auxílio à criação/eliminação de processos e á gerência de sistemas de arquivos no que diz respeito ao endereçamento e associação de arquivos em periféricos; Suporte a redes e teleprocessamento: é esta função que executa todos os serviços de rede, fazendo o empacotamento das mensagens vindas dos terminais para a CPU central e vice-versa, além de controlar e confirmar o envio e recebimento de todas as mensagens que trafegam pela rede; Contabilização de uso do sistema: responsável por contabilizar o uso de todos os recursos do sistema consumidos pelos usuários e suas aplicações. Auditoria e segurança do sistema: função extremamente importante, pois detecta e registra (num arquivo especial de LOG) todas as ocorrências de erro e violação de direitos de acesso ao sistema, aos arquivos, à memória e a todos os recursos do sistema. Você poderia responder por que existe esta preocupação? Se a sua resposta está relacionada com o fato de que uma vez corrompido o sistema poderá não funcionar, então você está correto. “Uma grande preocupação no projeto de sistemas operacionais se refere à implementação de mecanismos de proteção ao núcleo do sistema e também o controle de acesso aos serviços oferecidos pelo sistema.”
  • 8. Sistemas Operacionais 7 Evolução dos Sistemas Operacionais: Bom, diante desse conceito podemos concluir que o Sistema Operacional é totalmente interligado com o hardware. Sendo assim, como eram os sistemas operacionais dos primeiros computadores? Ou melhor, como seriam os primeiros computadores? “Para cada serviço disponível existe uma system call associada, e cada sistema operacional possui seu próprio conjunto de chamadas.”
  • 9. Sistemas Operacionais 8 O ENIAC e considerado o primeiro computador digital e eletrônico, foi desenvolvido por J. Presper Eckert e John W. Mauchly, da Universidade da Pensilvânia. Este computador realizou cálculos balísticos e foi utilizado no projeto da bomba de hidrogênio. Possuía 17 mil válvulas, 10 mil capacitores, 70 mil resistores, pesava 30 toneladas, consumia 140 quilowatts e era capaz de executar 5 mil adições por segundo. Seu painel de programação continha 6 mil conectores. Curiosidade? Vocês notaram que o processo de evolução apresenta categoria diferente de software de gerenciamento e manipulação do hardware. Bem isso significa que em cada uma dessas fases surgiu um tipo de Sistema Operacional. Tipos de Sistema Operacional Os Sistemas operacionais podem ser classificados em tres tipos: Ultra-LSI Arquiteturas Paralelas Circuito Integrado 3-D
  • 10. Sistemas Operacionais 9 Tipos de Sistema Operacional Os Sistemas Operacionais Monoprogramaveis/monotarefa eram voltados tipicamente para a execução de um único programa. Qualquer outra aplicação, para ser executada, deveria aguardar o término do programa corrente. Neste tipo de sistema, o processador, a memória e os periféricos permanecem exclusivamente dedicados à execução de um único programa. Os Sistemas Operacionais Multiprogramaveis/Multitarefa constituíram de uma evolução dos sistemas monoprogramáveis, neste tipo de sistema os recursos computacionais são compartilhados entre os diversos usuários e aplicações: enquanto um programa espera por um evento, outros programas podem estar processando neste mesmo intervalo de tempo. Curiosidade Memória Principal Dispositivos de E/S UCP programa/ tarefa Modo de execução dos sistemas monotarefa Um dos cientistas da Bell Labs, Ken Thompson, descobriu um pequeno microcomputador que ninguém. Estava usando e começou a escrever uma versão simplificada monousuária que evoluiu para o SO UNIX, que se tornou popular no mundo acadêmico, entre órgãos do governo e entre muitas empresas (Fonte: http://www.geocities.com/geologo_1999/oquee.htm)
  • 11. Sistemas Operacionais 10 Tipos de Sistemas Multiprogramáveis/Multitarefa Os Sistemas Operacionais com Múltiplos Processadores são caracterizados por possuir duas ou mais CPUs interligadas e trabalhando em conjunto. A vantagem deste tipo de sistema é permitir que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em várias partes para serem executadas simultaneamente em mais de um processador Tipos de sistemas com múltiplos processadores
  • 12. Sistemas Operacionais 11 Sistemas Fortemente Acoplados UCP UCP Memória Principal Dispositivos de E/ S Dispositivos de E/ S Sistemas Fracamente Acoplados UCP UCP Memória Principal Memória Principal Dispositivos de E/S link de comunicação Dispositivos de E/ S Os sistemas Fortemente acoplados podem ser divididos, quanto a sua organização em: Assimétricos e Simétricos. Sistema assimétricos Nos sistemas assimétricos somente um processador pode executar os serviços do sistema Operacional. Exemplo: Nos sistemas simétricos todos os processadores executam os serviços do sistema Operacional. Cada sistema tem sua própria memória individual. Possui apenas uma memória a ser compartilhada pelos processadores do conjunto. Se uma solicitação de Entrada é solicitada pelo usuário na UCP Slave (escrava) esse serviço será requisitado a UCP Master (mestre)
  • 13. Sistemas Operacionais 12 Sistema Simétrico NOTA: Os sistemas Fracamente Acoplados podem ser divididos, quanto a sua organização em: Redes e distribuídos. Em um sistema em rede, existem vários computadores com seu próprio sistema operacional, além de software que possibilitam ter acesso a outros componentes da rede. O que define sistema distribuído é a existência de um relacionamento mais forte entre os seus componentes, em geral os sistemas operacionais são os mesmo. Para o usuário e para suas aplicação é como se não existisse uma rede, mas sim um único sistema centralizado. Sistema Distribuído Síntese da Unidade: Sistemas operacionais consiste em um software responsável pela comunicação entre o hardware com os usuários e os aplicativos. As duas principais funções de um sistema operacional e: facilidade de acesso aos recursos computacionais e gerenciamento desses recursos. Em sua estrutura interna, o sistema operacional possui o núcleo também chamado de Kernel, que por sua vez é protegido pelos System Call. A evolução de um sistema operacional esta diretamente ligada à evolução do hardware. A cronologia de evolução foi estabelecida em cinco fases Sistema de rede Algumas funções de controle ficam a cargo de um único processador, dentre elas o BOOT.
  • 14. Sistemas Operacionais 13 distintas: 1ª fase (1645 – 1956), 2ª fase (1956 – 1965), 3ª fase (1966 – 1980), 4ª fase (1981 – 1990), 5ª fase (1991 - ). De acordo com a evolução dos sistemas operacionais os mesmos foram divididos em três tipos: Monoprogramáveis/monosuario, multiprogramáveis/multarefa e múltiplos processadores. Os Sistemas multiprogramáveis/multitarefa são subdivididos em Sistemas em batch, sistema de tempo compartilhado e sistemas de tempo real. Os sistemas para múltiplos processadores podem ser classificados em sistemas fortemente acoplados e sistemas fracamente acoplados. Os sistemas fortemente acoplados são classificados em: sistemas assimétricos e sistemas simétricos. Os sistemas fracamente acoplados. São classificados em: sistemas de redes e sistema distribuído. [ Auto-Avaliação ] 1. Como seria utilizar um computador sem um S.O. Quais são as duas principais funções de um S.O? 2. Qual a relação da visão do usuário de um Sistema Computacional e o conceito de uma máquina de níveis ou camadas? 3. Todos os sistemas operacionais possuem uma mesmo System Call? 4. Quais os tipos de S.O. existentes? 5. Assinale a Alternativa correta cujo conceito se caracteriza por: “possuir duas ou mais CPUs interligadas e trabalhando em conjunto”. a) ( ) Sistema monotarefa b) ( ) Sistema Multiprogramaveis c) ( ) Sistema Múltiplos processadores d) ( ) Sistema monousuario 6. Qual a grande diferença entre sistemas mono e multiprogramáveis? 7. Quais as vantagens de sistemas multiprogramáveis? 8. Um sistema monousuário pode ser um sistema multiprogramável? Dê um exemplo. 9. Quais são os tipos de sistemas multiprogramáveis? 10. Assinale a alternativa que corresponda ao conceito de “sistema batch”. a)( ) voltados tipicamente para a execução de um único programa. b)( ) Nesta modalidade, os programas eram submetidos para execução através de cartões perfurados e armazenados em disco ou fita, para posterior execução.
  • 15. Sistemas Operacionais 14 c)( ) permitem que diversos programas sejam executados a partir da divisão de tempo do processador em pequenos intervalos. d)( ) Um programa ocupa o processador o tempo que for necessário ou até que apareça um outro com um nível de prioridade maior. 11. Como funcionam os sistemas de tempo compartilhado? Quais as vantagens em utilizá-los? 12. Qual a grande diferença entre sistemas de tempo compartilhado e tempo real? Quais aplicações são indicadas para sistemas de tempo real. 13. O que são sistemas com múltiplos processadores e quais as vantagens em utilizá-los? 14. Qual a grande diferença entre sistemas fortemente acoplados e fracamente acoplados? [ Referências Bibliográficas ] MACHADO, Francis Berenger ; MAIA, Luiz Paulo. “Arquitetura de Sistemas Operacionais”, 2ª Edição, Ed. LCT, 1997. SILBERSCHATZ, Abraham; GALVIN, Peter Baer. "Sistemas Operacionais: Conceitos", quinta edição. Pearson Brasil, 2000. TANENBAUM, Andrew S., WOODHULL, Albert S.. "Sistemas Operacionais - Projeto e Implementação", segunda edição. Prentice-Hall, 2000.
  • 16. Sistemas Operacionais 15 Unidade II – Conceitos de Processos Estado de um processo Hierarquia entre os processos Mecanismos de Interrupções Programação Paralela Especificação da concorrência em programas Comunicação entre processos e seção Crítica Starvation e Deadlock [Objetivos Específicos da Unidade II] Propomos, nesta UNIDADE, levar você a: • Compreender o papel de um Sistema Operacional no gerenciamento dos dispositivos dos computadores. • Discutir principais conceitos de Sistemas Operacionais
  • 17. Sistemas Operacionais 16 Gerência de Processos O módulo anterior destacou as funcionalidades de um sistema operacional. Neste módulo apresentaremos a unidade de trabalho de um sistema operacional: o processo, ou seja, trataremos das requisições do usuário de do hardware. À medida que vamos conhecendo a estrutura interna de um sistema operacional, podemos relacionar esse conhecimento as situações que diariamente vivenciamos ao utilizarmos um microcomputador. Esta unidade trata de assuntos que vão conduzi-lo a um entendimento mais profundo sobre o funcionamento de um sistema operacional, sobre como o sistema manipula as ações que norteiam o funcionamento de um sistema computacional. Os tópicos serão apresentados de forma que você apreenda o conceito de processo, sua estrutura e as questões que envolvem a sua manipulação. E, para facilitar a sua aprendizagem, serão propostas questões e orientações de estudo ao longo do texto. Objetivamos que você adquira um conhecimento que lhe permita identificar os processos, as formas com que eles se comunicam e os principais problemas encontrados em sua comunicação. Para que isso ocorra, é fundamental que você seja capaz de entender lógica de programação, bem como as várias técnicas utilizadas em estruturas de dados. Portanto, sugerimos questões ao longo do texto para apreensão de determinados conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por meio da auto- avaliação, que deverá ser enviada ao seu tutor. Então, mãos à obra! Processos: Este assunto irá contribuir para que você possa entender como um sistema operacional funciona internamente. Você poderia a partir dessa imagem, formular um conceito sobre processo?
  • 18. Sistemas Operacionais 17 Acredito que não. Então tentaremos explicar a figura acima: Um processador é projetado apenas para executar instruções, não sendo capaz de distinguir qual programa se encontra em execução. Um processo representará um programa em execução, que tem suas informações mantidas pelo sistema operacional, informações referentes ao próprio programa, tais como o nome do proprietário do mesmo (contexto de software), informações referentes ao conteúdo dos registradores (contexto de hardware), informações referentes à área de armazenamento (espaço de endereçamento). Dessa forma, a figura acima poderia ser vista da seguinte forma: Vamos agora detalhar melhor cada um desses elementos: Contexto de Software: neste contexto são especificados características e limites dos recursos que podem ser alocados pelo processo, como número máximo de arquivos abertos, prioridade de execução, número máximo de linhas impressas, etc. Muitas destas características são criadas no momento da criação do processo, quando da sua alocação. O contexto de software é composto por três grupos de informações: Contexto de Hardware: armazena o conteúdo dos registradores gerais da CPU, além dos registradores de uso específico. Quando um processo está em execução, o seu
  • 19. Sistemas Operacionais 18 contexto de hardware está armazenado nos registradores da CPU. No momento em que o processo perde a utilização da CPU, o sistema salva as informações no contexto de hardware do processo. Espaço de endereçamento: é a área de memória pertencente a um processo onde a instrução e os dados do programa são armazenados para execução. Cada processo possui seu próprio espaço de endereçamento, que deve ser devidamente protegido do acesso dos demais processos. Os contextos de software e de hardware não fazem parte do espaço de endereçamento. Depois desse detalhamento você deve estar se fazendo pelo menos duas perguntas básicas: Como todas esses informações são controlados pelo sistema Operacional? Aonde essas informações são guardadas? Eis a resposta: Bloco de controle do processo (PCB): é a estrutura de dados que compõe o processo, contendo os contextos de software e de hardware e o espaço de endereçamento.
  • 20. Sistemas Operacionais 19 Estado de um processo Num sistema multiprogramável, um processo não deve alocar a CPU com exclusividade, de forma que possa existir um compartilhamento no uso do processador. Os processos passam por diferentes estados ao longo do processamento, em função de eventos gerados pelo sistema operacional, pelo hardware, ou pelo próprio programa. São estados possíveis de um processo: Mudanças de estado do processo Um processo muda de estado diversas vezes durante sua permanência no sistema, devido aos eventos ocorridos durante sua execução. As possíveis mudanças de um estado são:
  • 21. Sistemas Operacionais 20 Hierarquia entre os processos Um processo pode criar outros processos e que podem, por sua vez, criarem também outros processos de maneira hierárquica. Quando um processo (Processo pai) cria um outro processo, a este chamamos de subprocesso ou processo filho, e este subprocesso poderá criar subprocessos que podem criar outros subprocessos etc... gerando uma arvore hierárquica de processos. Vantagens: evita que o usuário tenha que esperar que um processo termine para que sua requisição seja processada melhorando o desempenho do sistema Desvantagens: a)Este tipo de recurso somente está disponível para alguns tipos de Sistemas Operacionais; b) a limitação do hardware pode depois de um certo numero de subprocessos tornar crítica a situação gerando erros no sistema.
  • 22. Sistemas Operacionais 21 Para Refletir: Subprocessos & Threads Os Subprocessos possuem cada, um endereçamento protegido já as threads compartilham o mesmo endereçamento sem proteção permitindo que uma altere os dados de outra. As threads trabalham cooperativamente, desempenhando tarefas em conjunto.
  • 23. Sistemas Operacionais 22 Tipos de Thread: Monothread - para ambiente que permita apenas uma thread. Multithread - usada em ambiente que permite várias threads, cada processo pode responder a várias solicitações. Havendo mais de um processador as threads podem operar simultaneamente. Tipos de Processos Processos do Sistema: São processos que oferecem os serviços do sistema operacional aos usuários • Auditoria e segurança • Serviços de rede • Contabilização do uso de recursos • Contabilização de erros • Gerência de impressão • Gerência de jobs batch • Temporização • Comunicação de eventos Processos do Usuário: São processos que representam as tarefas programadas pelo usuário. Os processos em execução, do usuário, podem assumir dois tipos diferentes, de acordo com suas características de uso de CPU e periféricos: Classificação dos Processos quanto o relacionamento Independentes: caso a sua execução não afete e não seja afetada pela execução de um outro processo.
  • 24. Sistemas Operacionais 23 Cooperantes: quando interage (troca de informações) com outros processos presentes no sistema. Classificação dos Processos quanto o Canal de Comunicação Processos Foregroud: é aquele que permite a comunicação direta do usuário com o processo durante o processamento. Processos Background: é aquele que não possui um canal de comunicação com o usuário durante o processo. Mecanismos de Interrupções Durante a execução de um programa, alguns eventos inesperados podem ocorrer, ocasionando um desvio forçado no seu fluxo de execução. Estes tipos de eventos são conhecidos por interrupção ou exceção e podem ser conseqüência da sinalização de algum dispositivo de hardware externo ao processador ou da execução de instruções do próprio programa. Esse mecanismo é realizado tanto por hardware quanto por software.
  • 25. Sistemas Operacionais 24 Programação Paralela A possibilidade de o processador executar instruções em paralelo com operações de E/S permitem que diversas tarefas sejam executadas concorrentemente. O conceito de concorrência é o principio básico para o projeto e a implementação dos sistemas multiprogramáveis. A utilização concorrente da UCP deve ser implementada de maneira que, quando um programa perde o uso do processador e depois retorna para continuar sua execução, seu estado deve ser idêntico ao do momento em que foi interrompido. O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia parado, aparentando ao usuário que nada aconteceu.
  • 26. Sistemas Operacionais 25 Especificação da concorrência em programas A especificação da concorrência em programas pode ser expressa em diversas notações. As mais utilizadas são os comandos FORK e JOIN (Conway, 1963 e Dennis e Van Horn, 1966) e os comandos PARBEGIN e PAREND (Dijkstra, 1965). FORK e JOIN: O processo pai executa concorrentemente com o processo filho. O programa A começa a ser processado e, ao encontrar o comando FORK, cria outro processo (ou subprocesso, ou filho) para a execução do programa B. O comando JOIN determina o ponto onde A sincroniza com B, isto é, o programa A só prossegue, a partir do comando JOIN, quando B terminar. PARBEGIN e PAREND: O processo pai espera que o processo filho termine. Os subprocessos contidos após o comando PARBEGIN serão executados concorrentemente, numa ordem imprevisível. O ponto de sincronização é definido pelo comando PAREND, sendo que os comandos a
  • 27. Sistemas Operacionais 26 partir dele somente serão executados quando todos os outros já tiverem terminado. Devido à sua facilidade de compreensão e simplicidade podem ser facilmente adicionados em uma linguagem de alto nível. Comunicação entre processos e seção Crítica Muitas vezes podemos ter processos trabalhando juntos na solução de um problema, utilizando para tanto recursos comuns, tais como: (a) posição da memória; (b) arquivo comum. Bom, esse acesso concorrente a dados compartilhados pode resultar em inconsistências. Diante dessa situação é extremamente importante a existência de mecanismos que garantam a comunicação entre processos. Esses mecanismos são denominados de mecanismo de sincronização. Como primeiro método para controlar o acesso a um recurso compartilhado propõe-se declarar uma seção de código como sendo crítica, para em seguida controlar o acesso a essa região. Essa seção foi denominada de: • Região Crítica: parte do código do programa onde é feito o acesso ao recurso compartilhado, ou seja, é à parte do programa cujo processamento pode levar à ocorrência de condições de corrida. Ou seja, Condição de corrida A situação onde diversos Processos acessam e manipulam recursos Compartilhados de forma concorrente.
  • 28. Sistemas Operacionais 27 O segundo método propõe um acesso mutuamente exclusivo, ou seja, o impedimento de dois ou mais processos a variáveis de memória ao mesmo tempo. Solução de Hardware para o problema da exclusão mútua As características do hardware podem tornar a tarefa de programação mais fácil e melhorar a eficiência do sistema. O problema de seção crítica pode ser resolvido em um ambiente monoprocessador bastando desabilitar a ocorrência de interrupções. Em algumas máquinas existem instruções especiais que evitam este problema. Dentre estas instruções pode-se destacar: Desabilitação de interrupções e instrução Test-And-Set. Desabilitação de interrupções: Consiste na inibição das interrupções na entrada da seção crítica e a sua ativação na saída da seção crítica. Test-And-Set: Essa instrução lê uma locação de memória (lock) e atualiza o valor do registrador (R1), em seguida escreve a locação de memória (lock) com o conteúdo de um registrador (R1) e realiza a leitura e a escrita atomicamente, em um único ciclo de barramento (ciclo readmodify-write), ou seja, as instruções executam sem interrupção (indivisíveis). Exemplo:
  • 29. Sistemas Operacionais 28 A implementação da exclusão mútua entre produtor e consumidor com a instrução TAS Solução de Software para o problema da exclusão mútua As soluções para problemas de seção crítica não são fáceis de generalizar em problemas complexos. Para superar esta dificuldade podemos usar algumas ferramentas de sincronização, tais como: Semáforos e Monitores. SEMÁFOROS: Um semáforo S consiste em uma variável inteira que, alem da inicialização, só é acessada através de duas operações-padrão: P e V Estas operações receberam seus nomes dos termos holandeses P de poberen, que significa testar e V de verhogen, que significa incrementar. Importante Saber Monitores: Consiste de um módulo contendo: rotinas, estruturas de dados e variáveis de condição, que a cada instante permite que apenas um processo pode estar executando uma rotina do monitor. Exemplo de utilização de semáforo Uma das vantagens de se utilizar os semáforo esta na irrelevância da a ordem de execução das operações. Pois uma primitiva V dispara antes de um P, “guarda” sua ocorrência no valor do semáforo.
  • 30. Sistemas Operacionais 29 Estrutura de um monitor Nota Fluxo de um monitor: As variáveis de condição são estruturas do tipo fila, onde os processos esperam por algum evento. Duas operações se realizam sobre as variáveis de condição: wait(c): processo passa a esperar na fila da condição c, quando esta impede a continuação da execução; signal(c): desperta o processo esperando na fila da condição c. A instrução signal deve ser a última do procedimento, de modo que o processo abandone imediatamente o procedimento. Fluxo de um monitor Starvation – Deadlock Alguns problemas surgem na implementação de soluções para os problemas de comunicação e devem ser resolvidos antes destes. Os mais comuns são: Starvation e DeadLock. Starvation (inanição): ocorre quando dois ou mais processos esperam por um recurso alocado. Na decisão de qual processo ganhará o acesso ao recurso compartilhado, se o Sistema Operacional o fizer de modo aleatório ou através de Esse tipo de solução implementa automaticamente, a exclusão mútua entre seus procedimentos. Cabe notar que o monitor permite a execução de um procedimento seu, mesmo que um ou mais processos estejam no estado de espera.
  • 31. Sistemas Operacionais 30 prioridades, pode ser que um processo nunca seja escolhido. Para resolver este problema utiliza-se um mecanismo de fila, aonde o primeiro a chegar é o primeiro a ser atendido (FIFO). Deadlock (bloqueio total) Um conjunto de processos bloqueados cada um utilizando um recurso e esperando que outro libere um outro recurso para dar continuidade ao seu trabalho. Exemplo 01:
  • 32. Sistemas Operacionais 31 Exemplo 02: Sintese da Unidade: Processo representa um programa em execução que tem suas informações mantidas pelo sistema operacional, informações referentes ao próprio programa, tais como o nome do proprietário, conteúdo dos registradores e espaço de endereçamento. Um processo é composto de três partes: Contexto de Software, Contexto de Hardware e espaço de endereçamento. O processo é implementado através de um Bloco de Controle de Processo (PCB) Os processos passam por diferentes estados ao longo do processamento: criação, execução, pronto e espera. Um processo muda de estado diversas vezes durante a sua permanência no sistema: criação->pronto; pronto->execução, execução->pronto, execução->espera, espera->pronto e execução->saída. Um processo pode hierarquicamente ser dividido em subprocessos. Threads. Consistem um uma unidade básica de utilização da CPU, ou seja, uma linha de execução de um processo. Os Processos se dividem em dois tipos: Processos do sistema e Processo do usuário. Interrupções e exceções consistem em eventos inesperados que podem que podem ocorrer durante a execução de um programa. O conceito de programação paralela é o principio básico para o projeto e a implementação dos sistemas multiprogramáveis. Para a especificação da concorrência em programas são utilizadas as notações: FORK e JOIN, PARBEGIN e PAREND. Região Crítica: parte do código do programa onde é feito o acesso ao recurso compartilhado. Exclusão mútua consiste no impedimento de dois ou mais processos a variáveis de memória ao mesmo tempo. Desativação de Interrupções e Instrução Test-And-Set consistem em Solução de hardware para o problema de exclusão mútua. Semáforos e Monitor consistem em Solução de Software para o problema de exclusão mútua. Starvation ocorre quando dois ou mais processos esperam por um recurso alocado. Um sistema tem duas unidades de gravação. P1 e p2, possuem um recurso e estão aguardando a liberação do outro.
  • 33. Sistemas Operacionais 32 Deadlock é conjunto de processos bloqueados cada um utilizando um recurso e esperando que outro libere um outro recurso para dar continuidade ao seu trabalho [ Auto-Avaliação ] 1) Explique em que consiste um processo. 2) Qual função de um processo? 3) Como é formado um processo? 4) Como o processo é implementado pelo Sistema Operacional? 5) quais os estados possíveis de um processo? 6) explique a diferença entre um subprocesso e uma thread. 7) Explique a classificação dos processos quanto o canal de comunicação. 8) Exemplifique uma exceção. 9) Qual o contexto do método que fundamenta a região crítica? 10) Que solução é necessária para garantir a implementação da região crítica? 11) Defina semáforo? 12) Explique a vantagem de se utilizar o mecanismo monitor como solução para os problemas de sincronização? 13) Explique a diferença entre Starvation e Deadlock? [ Referências Bibliográficas ] MACHADO, Francis Berenger ; MAIA, Luiz Paulo. “Arquitetura de Sistemas Operacionais”, 2ª Edição, Ed. LCT, 1997. SILBERSCHATZ, Abraham; GALVIN, Peter Baer. "Sistemas Operacionais: Conceitos", quinta edição. Pearson Brasil, 2000. TANENBAUM, Andrew S., WOODHULL, Albert S.. "Sistemas Operacionais - Projeto e Implementação", segunda edição. Prentice-Hall, 2000.
  • 34. Sistemas Operacionais 33 Unidade III – Gerência do Processador Gerência do Processador O bloco descritor de processo Coordenação do chaveamento de contexto Processos Versos Threads Escalonadores Gerência de Dispositivos de Entrada e Saída (E/S) Operações de E/S Subsistema de E/S Controladores de periféricos [Objetivos Específicos da Unidade III] Propomos, nesta UNIDADE, levar você a: • Compreender as implicações arquiteturais de um sistema multiprogramável. • Identificar os mecanismos de comunicação entre processos. • Conhecer os mecanismos de escalonamento entre processos. • Caracterizar os gerenciadores de dispositivos de E/S.
  • 35. Sistemas Operacionais 34 Gerencia do Processador O módulo anterior destacou a unidade de trabalho de um sistema operacional. Neste módulo apresentaremos os elementos necessários para operacionalizar essa unidade de trabalho, ou seja, os elementos que manipularam e gerenciaram a execução de um processo. Todos os conceitos e exemplos apresentados nesta unidade, simplesmente nos permitirão compreender situações quase imperceptíveis ao usuário final. Esta unidade trata de assuntos que vão conduzi-lo a um entendimento mais profundo sobre a execução de mais de um programa em um mesmo intervalo de tempo, bem como o gerenciamento dos dispositivos de Entrada e Saída por mais de um usuário ou uma aplicação. Os tópicos serão apresentados de forma que você apreenda a função do módulo de gerência do processador e da gerencia dos dispositivos de Entrada e Saída. E, para facilitar a sua aprendizagem, serão propostas questões e orientações de estudo ao longo do texto. Objetivamos que você adquira um conhecimento que lhe permita identificar as funções de um gerenciador de processos e as características do processo de gerenciamento de dispositivos de entrada e saída. Para que isso ocorra, é fundamental que você seja capaz de entender lógica de programação, bem como as várias técnicas utilizadas em estruturas de dados. Portanto, sugerimos questões ao longo do texto para apreensão de determinados conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por meio da auto-avaliação, que deverá ser enviada ao seu tutor. Então, mãos à obra! Gerencia do Processador Este assunto irá contribuir para que você possa entender como um sistema operacional trata a existência e a execução de vários processos em um mesmo intervalo de tempo, bem como simultaneamente. Observe a imagem abaixo:
  • 36. Sistemas Operacionais 35 Você Sabia? Diante deste contexto você pode definir qual seria a função da gerência do processador? Podemos dar uma idéia: Para tanto esse módulo do Sistema Operacional deverá disponibilizar Algoritmos de escalonamento capazes de gerenciar essa ação. Algoritmos de escalonamento ????? Bom, Algoritmos de escalonamento é ...... Espere aí, Antes de tratarmos desse assunto, vamos recapitular alguns conceitos importantes para compreensão desse novo conceito. Bloco Descritor de um Processo ou Bloco de Controle do Processo Na unidade anterior vimos o conceito de Processo como um programa em execução que possui uma série de estados (criação, pronto, execução, espera, etc). Para representar sua evolução no tempo, gerenciar processos quanto à organização de filas de processos nos diferentes estados, quanto a determinação de eventos que realizam a transição entre os estados e quanto a determinar de quando e como um processo tem direito a “utilizar” o processador para sua execução, o Sistema operacional necessita manter uma série de informações a respeito do processo. Para possibilitar essas tarefas, teremos: Que o uso da multiprogramação pressupõe a existência de simultânea de vários processos disputando o processador “intermediar” a disputa dos processos pelo direito de processamento de forma justa e eficiente.
  • 37. Sistemas Operacionais 36 Importante saber Bem, sabemos que um processo pode assumir pelo mesmo quatro estados básicos: Já vimos também que Um processo muda de estado diversas vezes durante sua permanência no sistema, devido aos eventos ocorridos durante sua execução:
  • 38. Sistemas Operacionais 37 Coordenação do chaveamento de contexto Esta Coordenação consiste em uma ação realizada pelo sistema operacional que do ponto de vista do processo é como se ele nunca tivesse deixado de ser executado. Características: Salva o contexto do processo; Atualiza o estado do processo que está em execução no seu descritor do processo; Insere o descritor do processo na fila apropriada (pronto, espera); Seleciona outro processo para execução; Atualiza descritor de processos do processo selecionado; Atualiza estruturas de dados associadas com gerência de memória e de dispositivos de entrada e saída; Restaura contexto do processo selecionado; Quando se deve chavear Quando houver qualquer tipo de interrupções (falta de memória, Operação de E/S, relógio) Quando houver traps (condições anormais) Quando houver alguma chamada ao sistema (operação de E/S) Processos Versos Threads O Processo: Conforme vimos na unidade anterior, o processo utiliza um espaço de endereço e uma única linha de controle O Modelo do Processo
  • 39. Sistemas Operacionais 38 Agrupamento de recursos (espaço de endereço com texto e dados do programa; arquivos abertos, processos filhos, tratadores de sinais, alarmes pendentes etc); Execução Threads: No conceito de thread trabalhado até o momento, caracteriza a thread como uma unidade básica de utilização da CPU que utiliza um espaço de endereço e múltiplas linhas de controle. O Modelo da Thread Recursos particulares (PC, registradores, pilha) Recursos compartilhados (espaço de endereço – variáveis globais, arquivos etc) Múltiplas execuções no mesmo ambiente do processo – com certa Os Processos possuem cada, um endereçamento protegido já as threads compartilham o mesmo endereçamento sem proteção permitindo que uma altere os dados de outra. As threads trabalham cooperativamente, desempenhando tarefas em conjunto. Tipos de Processos Processos do Sistema: São processos que oferecem os serviços do sistema operacional aos usuários Auditoria e segurança Serviços de rede Contabilização do uso de recursos Contabilização de erros Gerência de impressão Gerência de jobs batch Temporização Comunicação de eventos Processos do Usuário: São processos que representam as tarefas programadas pelo usuário. Os processos em execução, do usuário, podem assumir dois tipos diferentes, de acordo com suas características de uso de CPU e periféricos: CPU Bound: Um processo limitado por UCP (CPU-bound) gera pedidos de E/S com pouca freqüência
  • 40. Sistemas Operacionais 39 Tipos de Thread: Monothread - para ambiente que permita apenas uma thread. Multithread - usada em ambiente que permite várias threads, cada processo pode responder a várias solicitações. Havendo mais de um processador as threads podem operar simultaneamente. Depois de todos esses conceitos, você é capaz de apresentar alguns exemplos de thread? Bom segue abaixo alguns exemplos. Espero que você tenha pensado em pelo menos um deles.
  • 41. Sistemas Operacionais 40 Escalonadores Conforme comentamos, em alguns momentos podemos ter dois ou mais processos aptos a utilizar o processador para ser executado. Nesse instante, o sistema operacional deve decidir qual dos processos aptos, armazenados em uma fila, será escolhido para rodar primeiro. Essa tarefa e a tomada de decisão é feita pelo escalonador de processos (parte do sistema operacional) através da implementação de alguns algoritmos de seleção, denominados algoritmos de escalonamento. Então podemos definir escalonador como: Objetivos do escalonamento: Maximizar a utilização do processador Maximizar a produção do sistema (throughput) Número de processos executados por unidade de tempo Minimizar o tempo de execução (turnaround) Tempo total para executar um determinado processo Acredito que depois das situações, ações apresentadas você já deva fazer idéia do que vem a ser um escalonador. Uma a entidade do sistema operacional responsável por selecionar um processo pronto para ser executado pelo processador, dividir o tempo do processador de forma justa entre os processos prontos a serem executados
  • 42. Sistemas Operacionais 41 Minimizar o tempo de espera Tempo que um processo permanece na lista de aptos Minimizar o tempo de resposta Tempo decorrido entre uma requisição e a sua realização Níveis de escalonamento: Longo prazo Médio prazo Curto prazo Escalonador longo prazo: Executado quando um novo processo é criado Determina quando um processo novo passa a ser considerado no sistema, isto é, quando após sua criação ele passa a ser apto; Controla o grau de multiprogramação do sistema Quanto maior o número de processos ativos, menor a porcentagem de tempo de uso do processador por processo Escalonador médio prazo: Associado a gerência de memória Participa do mecanismo de swapping Suporte a multiprogramação Grau de multiprogramação Escalonador de curto prazo Determina qual processo apto deverá utilizar o processador Executado sempre que ocorrem eventos importantes: Interrupção de relógio Interrupção de entrada/saída Chamadas de sistemas Sinais (interrupção software)
  • 43. Sistemas Operacionais 42 Tipos de escalonador: Uma vez escalonado, o processo utiliza o processador até que: Não preemptivo: Término de execução do processo Execução de uma requisição de entrada/saída ou sincronização Liberação voluntária do processador a outro processo (yield) Preemptivo: Término de execução do processo Execução de uma requisição de entrada/saída ou sincronização Liberação voluntária do processador a outro processo (yield) Interrupção de relógio Processo de mais alta prioridade esteja pronto para executar Importante saber: Tipos de Algoritmos não preemptivos - escalonadores que permitem que os processos rodem até o fim de sua execução sem ser interrompidos por eventos externos. FIFO SJF Tipos de Algoritmos preemptivos - escalonadores que são capazes de suspender processos que poderiam continuar executando. Os algoritmo de escalonamento seleciona qual processo deve executar em um determinado instante de tempo, para tanto, existem vários algoritmos para atingir os objetivos do escalonamento que buscam obter bons tempos médios invés de maximizar ou minimizar um determinado critério e privilegiar a variância em relação a tempos médios.
  • 44. Sistemas Operacionais 43 Round robin (circular) Múltiplas filas Segue a seguir características e funcionamento de cada um desses algoritmos: FIFO - First In First Out : É o algoritmo mais simples de implementar, onde o processador possui uma fila associada para armazenar os processos que estão aptos a executar. Funcionamento: Processos que se tornam aptos são inseridos no final da fila Processo que está no início da fila é o próximo a executar Processo executa até que: Libere explicitamente o processador Realize uma chamada de sistema (bloqueado) Termine sua execução Desvantagem: Prejudica processos I/O bound Tempo médio de espera na fila de execução, varia de acordo com a ordem do processo: Ordem A-B-C-D = (0 + 12 + 20 + 35 ) / 4 = 16.75 u.t. Ordem D-A-B-C = (0 + 5 + 17 + 25 ) / 4 = 11.7 u.t. SJF - Shortest Job First: Para usar este algoritmo precisamos conhecer antecipadamente o tempo de execução de cada processo, o que é difícil. A idéia é alocar o processador para o menor job da fila. O fato é que o menor tempo médio é obtido
  • 45. Sistemas Operacionais 44 quando se executa primeiro os processos de menor ciclo de processador (I/O bound). Portanto, os processos I/O bound são favorecidos. RR - Round Robin : A cada processo atribuímos um tempo durante o qual ele poderá utilizar o processador. Denominamos este intervalo de tempo de quantum. Além disso, este algoritmo é similar ao algoritmo FIFO, pois também mantemos uma fila, agora circular, para armazenar os processos. Para a execução existe a necessidade de um relógio para delimitar as fatias de tempo. O processo perde o processador quando: Libera explicitamente o processador Realize uma chamada de sistema (bloqueado) Termina sua execução
  • 46. Sistemas Operacionais 45 Quando sua fatia de tempo é esgotada Escalonadores por prioridades: A cada processo pode ser atribuída uma prioridade, associar prioridades a processos I/O bound pode compensar o tempo gasto em estado de espera. Sempre que um processo de maior prioridade que o processo atualmente em execução entrar no estado espera deve ocorrer uma preempção. Prioridade estática: Um processo é criado com uma determinada prioridade e esta prioridade é mantida durante todo o tempo de vida do processo
  • 47. Sistemas Operacionais 46 Prioridade dinâmica: Prioridade do processo é ajustada de acordo com o estado de execução do processo e/ou do sistema Ex.: ajustar a prioridade em função da fração do quantum que foi realmente utilizada pelo processo q = 100 ms Implementação de escalonador com prioridade estática (Múltiplas filas): Neste tipo de algoritmo as prioridades são atribuídas à classes de processos (de acordo com o tipo de processamento), cada qual com sua própria fila de prontos com seu mecanismo de seleção. Os Processos das classes de maior prioridade recebem o processador e os processos das classes de menor prioridade só receberá o processador se as filas de prontos das outras classes (de maior prioridade) estiverem vazias.
  • 48. Sistemas Operacionais 47 Implementação de escalonador com prioridade dinâmica (Múltiplas filas com realimentação) Neste tipo de algoritmo de escalonamento os p processos podem migrar entre as classes (adaptabilidade) de acordo com seu comportamento, identificado pelo sistema O processo entra na fila de maior prioridade, a qual também possui a maior fatia de tempo Se o processo perde o processador para um de uma fila de maior prioridade, permanece na mesma fila de prontos. Se perder por preempção, é direcionada para a fila seguinte, de menor prioridade; As filas de maior prioridade implementam políticas FIFO, enquanto que a de menor prioridade implementa um mecanismo circular (round robin) Gerência de Dispositivos de Entrada e Saída (E/S) A gerência de dispositivos de entrada/saída é uma das principais e mais complexas funções de um sistema operacional. Sua implementação é estruturada através de camadas em um modelo semelhante ao apresentado para o sistema operacional como um todo.
  • 49. Sistemas Operacionais 48 Operações de Entrada/Saída : Você Sabia? A implementação de um dispositivo chamado controlador ou interface permitiu a UCP agir de maneira independente dos dispositivos de E/S. Com esse novo elemento, a UCP não se comunicava mais diretamente com os periféricos, mas sim através do controlador. Isso significa as instruções de E/S, por não ser mais preciso especificar detalhes de operação dos periféricos, tarefa esta realizada pelo controlador. Com a implementação do mecanismo de interrupção no hardware dos computadores, as
  • 50. Sistemas Operacionais 49 operações de E/S puderam ser realizadas de uma forma mais eficiente. Em vez de o sistema periodicamente verificar o estado de uma operação pendente, o próprio controlador interrompia a UCP para avisar do término da operação. Funcionamento: Com esse mecanismo, denominado E/S controlada por interrupção, a UCP, após a execução de um comando de leitura ou gravação, fica livre para o processamento de outras tarefas. O controlador por sua vez, ao receber, por exemplo, um sinal de leitura, fica encarregado de ler os blocos dos discos e armazená-los em memória ou registradores próprios. Em seguida, o controlador, através de uma linha de controle, sinaliza uma interrupção ao processador. Quando a UCP atende a interrupção, a rotina responsável pelo tratamento desse tipo de interrupção transfere os dados dos registradores do controlador para a memória principal. Ao término da transferência, a UCP volta a executar o programa interrompido e o controlador fica novamente disponível para outra operação. Vantagem: A operação de E/S controlada por interrupção é muito mais eficiente que a operação de E/S controlada por programa, já que elimina a necessidade de a UCP esperar pelo término da operação; Permitir que várias operações de E/S sejam executadas simultaneamente. Desvantagem: sobrecarregava a UCP, uma vez que toda transferência de dados entre memória e periféricos exigia a intervenção da UCP. A técnica de DMA: Permite que bloco de dados seja transferido entre memória e periféricos, sem a intervenção da UCP, exceto no início e no final da transferência. Quando o sistema deseja ler ou gravar um bloco de dados, são passadas da UCP para o controlador informações como: onde o dado está localizado, qual o dispositivo de E/S
  • 51. Sistemas Operacionais 50 envolvido na operação, posição inicial da memória de onde os dados serão lidos ou gravados e o tamanho do bloco de dados. Com estas informações, o controlador realiza a transferência entre o periférico e a memória principal, e a UCP é somente interrompida no final da operação. A área de memória utilizada pelo controlador na técnica de DMA é chamada buffer, sendo reservada exclusivamente para este propósito. Funcionamento: O canal de E/S é um processador com capacidade de executar programas de E/S, permitindo o controle total sobre operações de entrada e saída. As instruções de E/S são armazenadas na memória principal pela UCP, porém o canal é responsável pela sua execução. Assim, a UCP realiza uma operação de E/S, instruindo o canal para executar um programa localizado na memória (programa de canal). Um canal de E/S pode controlar múltiplos dispositivos através de diversos controladores. Cada dispositivo, ou conjunto de dispositivos, é manipulado por um único controlador. O canal atua como um elo de ligação entre a UCP e o controlador. Técnicas para gerenciamento das operações de E/S: Buffering – O buffering é outra implementação para minimizar o problema da disparidade da velocidade de processamento existente entre a UCP e os dispositivos de E/S. O objetivo do buffering é manter, na maior parte do tempo, UCP e dispositivos ocupados. Esta técnica consiste na utilização de uma área de memória para a transferência entre os periféricos e a memória principal denominada buffer.
  • 52. Sistemas Operacionais 51 Spooling – A técnica de spooling (simultaneos peripheral operation on-line) foi introduzida no final dos anos 50 para aumentar a produtividade e a eficiência dos SOs. O objetivo dessa técnica era armazenar os vários programas e seus dados, também chamados de jobs, em um meio magnético e, em seguida submetê-los a processamento. Desta forma, a UCP poderia processar seqüencialmente cada job, diminuindo o tempo de execução dos jobs e o tempo de transição entre eles. A técnica de buffering permite que um job utilize um buffer concorrentemente com um dispositivo de E/S. O spooling, basicamente, utiliza os disco como um grande buffer, permitindo que dados sejam lidos e gravados em disco, enquanto outros jobs são processados.
  • 53. Sistemas Operacionais 52 Subsistema de E/S O sistema operacional deve tornar as operações de e/s o mais simples possível para o usuário e suas aplicações. Para isso, o sistema possui um conjunto de rotinas que possibilita a comunicação com qualquer dispositivo que possa ser conectado ao computador. O subsistema de E/S é responsável por realizar as funções comuns a todos os tipos de dispositivos, ficando os aspectos específicos de cada periférico como responsabilidade dos device drivers. Dessa forma, o subsistema de e/s é a parte do sistema operacional que oferece uma interface uniforme com as camadas superiores. Reentrância – É comum, em sistemas multiprogramáveis, vários usuários executarem os mesmos utilitários do SO simultaneamente, como, por exemplo, um editor de textos. Se cada usuário que utilizasse o editor trouxesse o código do utilitário para a memória, haveria diversas cópias de um mesmo programa na memória principal, o que ocasionaria um desperdício de espaço. Reentrância é a capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória. Uma característica da reentrância é que o código não pode ser modificado por nenhum usuário no momento em que está sendo executado. Proteção do Sistema – Nos sistemas multiprogramáveis, onde diversos usuários compartilham os mesmos recursos, deve existir uma preocupação, por parte do SO, de garantir a integridade dos dados pertencentes a cada usuário. Problemas como um programa acessar (acidentalmente ou não) a área de memória pertencente a outro programa ou ao próprio SO tornariam o sistema pouco confiável. Para isso, todo sistema implementa algum tipo de proteção aos diversos recursos que são compartilhados, como memória, dispositivos de E/S e UCP.
  • 54. Sistemas Operacionais 53 Controladores de periféricos Os controladores são componentes de hardware responsáveis por manipular diretamente os dispositivos de E/S. O sistema operacional, mais exatamente o device driver, comunica-se com os dispositivos através dos controladores. Em geral, o controlador pode ser uma placa independente conectada a um slot do computador ou implementado na mesma placa do processador. Os dispositivos de entrada e saída são utilizados para permitir a comunicação entre o sistema computacional e o mundo externo. Os dispositivos de E/S podem ser classificados, como de entrada de dados, como cd-rom, teclado e mouse, ou de saída de dados. Como impressoras. Também é possível que um dispositivo realize tanto entrada quanto saída de dados, como modems, discos e cd-rw. As principais responsabilidades do SO nesta área estão diretamente ligadas a características dos próprios periféricos. Ou seja: O sub-sistema de I/O é normalmente partilhado por vários utilizadores e/ou aplicações, exigindo, portanto um acesso devidamente controlado para garantir segurança da informação e partilha adequada dos recursos; O sub-sistema de I/O recorre normalmente à utilização de mecanismos de interrupção do processador, os quais quando ativados e aceites pelo processador, transferem o modo de operação do processador (de modo "utilizador", quase sem privilégios, para modo de "supervisão" ou "super-utilizador" ou "kernel"); este modo de operação do processador está reservado a funções do SO; Ativação da seqüência adequada de ações/tarefas (baixo nível) a executar, que permitam: (i) uma configuração correta do controlador de I/O para executar as operações pretendidas neste sistema de computação; e (ii) a operação do controlador de I/O sempre
  • 55. Sistemas Operacionais 54 que a sua utilização for necessária (inclui o envio de comandos de operação, a transferência de dados memória <-> periférico e a leitura do estado do controlador). Só para Constar Discos magnéticos Entre os diversos dispositivos de e/s, os discos magnéticos merecem atenção especial, por serem o principal repositório de dados utilizado pela maioria das aplicações e pelo próprio sistema operacional. Fatores como desempenho e segurança devem ser considerados na arquitetura de discos magnéticos. No final da década de 1980, pesquisadores de Universidade de Califórnia em Berkeley desenvolveram técnicas de gerenciamento de discos que otimizavam as operações de e/s e implementavam redundância e proteção de dados conhecidas como Raid (Redundant Arrays of Inexpensive Disk). As diferentes técnicas, utilizando múltiplos discos, foram publicadas em seis níveis (Raid 1-6). Estas técnicas tiveram grande aceitação no mercado e, posteriormente, um novo nível foi introduzido e denominado Raid 0. Síntese da Unidade: O módulo gerência do processador é responsável por intermediar a disputa dos processos pelo direito de processamento de forma justa e eficiente. Para gerenciar essa disputa, necessitará utilizar dentre outros elementos, o Bloco de controle de Processo que lhe proporcionará informações sobre o processo. O conhecimento do mecanismo de chaveamento de contexto é necessário para implementação do módulo de gerência do processador, pois o chaveamento na ação que torna implícita a execução de um processo. Um processo pode hierarquicamente ser dividido em subprocessos. Threads. Consistem um uma unidade básica de utilização da CPU, ou seja, uma linha de execução de um processo. A vantagem de se utilizar uma thread é que enquanto uma aguarda operação de E/S (no estado de espera), a outra thread pode utilizar a CPU.
  • 56. Sistemas Operacionais 55 Os Processos se dividem em dois tipos: Processos do sistema e Processo do usuário. As threads podem ser de dois tipos: Monothread e multithread; Uma a entidade do sistema operacional responsável por selecionar um processo pronto para ser executado pelo processador, dividir o tempo do processador de forma justa entre os processos prontos a serem executados. Existem três Níveis de escalonamento: Longo prazo, Médio prazo, Curto prazo. O escalonador pode ser classificado em dois tipos: Não preemptivo e Preemptivo OS Algoritmos FIFO e SJF são classificados em não preemptivos Os Algoritmos Round robin (circular) e Múltiplas filas são classificados em preemptivos A Gerência de dispositivos de Entrada e Saída (E/S) consiste um módulo que Permiti que várias operações de E/S sejam executadas simultaneamente. A implementação de um dispositivo chamado controlador ou interface permitiu a UCP agir de maneira independente dos dispositivos de E/S A técnica de DMA permite a transferência de dados entre a memória e os periféricos necessários nas operações de E/S evitando com isso uma sobrecarregava a UCP, uma vez que toda transferência de dados entre memória e periféricos exigia a intervenção da UCP O canal de E/S é um processador com capacidade de executar programas de E/S, permitindo o controle total sobre operações de entrada e saída. Buffering e Spooling são técnicas para implementação das operações de E/S. O subsistema de E/S é responsável por realizar as funções comuns a todos os tipos de dispositivos Os devices drivers tem como função de implementar a comunicação do subsistema de e/s com os dispositivos, através de controladores. Os controladores são componentes de hardware responsáveis por manipular diretamente os dispositivos de E/S. [ Auto-Avaliação ] 1. Que conceitos preliminares devemos possuir para entender a função do módulo de gerência do processador? 2. Qual é a função básica do módulo de gerência do processador? 3. Qual a função de um escalonador? 4. Quais são os objetivos de um gerenciamento dos dispositivos de E/S ? 5. Qual a função do canal de E/S ?
  • 57. Sistemas Operacionais 56 6. Explique a função dos controladores. 7. Cite os 4 principais objetivos do escalonador de processos. 8. Porque os escalonamentos FIFOS e SJF não podem ser aplicados em sistemas de tempo compartilhado? 9. Alguns livros comentam sobre três níveis de escalonadores, comente a respeito de cada um: a)Escalonador longo prazo b)Escalonador médio prazo c)Escalonador curto prazo 10.Para que tipos de operações o DMA é útil? Quais as implicações de uma organização sem DMA na multiprogramação?
  • 58. Sistemas Operacionais 57 Unidade IV – Gerência de Memória Gerência de Memória Partições fixas e variáveis Swapping Paginação Segmentação Segmentação paginada Memória Virtual Paginação por demanda Realocação de página Thrashing [Objetivos Específicos da Unidade IV] Propomos, nesta UNIDADE, levar você a: • Compreender os conceitos e técnicas utilizadas para o gerenciamento de memória pelo sistema operacional.
  • 59. Sistemas Operacionais 58 Gerenciamento de Memória No módulo anterior vimos como é execução dos processos pelo processador, neste módulo basicamente irá estender o entendimento da execução de um processo, sob a ótica do armazenamento do mesmo nas memórias. É interessante notar como a simples execução de um processo pode desencadear diversas operações e envolver diversos conceitos e funções totalmente imperceptíveis ao usuário de um microcomputador. Esta unidade é bem simples e esta organizada de forma a conduzi-lo à um entendimento do funcionamento das memórias. Para tanto os tópicos serão apresentados de forma que você consiga construir o conhecimento sobre a função de gerenciamento de memória. E, para facilitar a sua aprendizagem, serão propostas orientações de estudo ao longo do texto. Portanto, sugerimos questões ao longo do texto para apreensão de determinados conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por meio da auto-avaliação, que deverá ser enviada ao seu tutor. Então, mãos à obra! Gerência de Memória Qual a relação do Sistema Operacional e as Memórias? Como sabemos Os computadores utilizam uma hierarquia de memória em sua organização, combinando memórias voláteis e não-voláteis, tais como: memória cache, memória principal e memória secundária. O que cabe ao Sistema Operacional? Ao sistema operacional é destinada a função de coordenar e gerenciar a utilização dessas memórias de forma eficiente. Este serviço é implementado pelo sistema operacional através do gerenciador de memória. O gerenciador de memória controla quais partes da memória serão utilizadas e quais não serão. Além disso, ele aloca nova área de memória aos processos que necessitam e também libera espaço de memória quando os processos terminam. Diante disso, podemos destacar alguns pontos que resumiriam a função do módulo de gerência de memória: o Manter o maior número de processos na memória o Maximizar o compartilhamento da UCP e demais recursos
  • 60. Sistemas Operacionais 59 o Implementar técnicas de Swapping o Executar de programas maiores que memória disponível o Implementar mecanismo de proteção o Permitir o compartilhamento da memória pelos processos Partições Fixas e variáveis Os sistemas operacionais modernos permitem que mais de um processo seja carregado em memória, de modo que quando um fica bloqueado esperando por uma operação de E/S outro, que esteja carregado em memória, poderá usar a CPU. Dessa forma, a multiprogramação ajuda a melhorar a utilização da CPU evitando desperdícios de ciclo de processamento. Partições Fixas Para que seja possível a multiprogramação, podemos dividir a memória em n partições (provavelmente de tamanhos diferentes). Os jobs serão colocados em filas de entrada associadas à menor partição capaz de armazená-lo. Será que essa solução é a mais apropriada? Problemas desse tipo de solução. Pelo fato de usarmos partições de tamanho fixo, todo o restante de espaço de memória não utilizado pelo job será perdido. Este desperdício de memória é chamado de Você é capaz de imaginar uma solução de memória para permitir o armazenamento de mais de um programa viabilizando com isso a multiprogramação? A Solução pode ser o que chamamos de partição Fixa
  • 61. Sistemas Operacionais 60 fragmentação interna (espaço de memória perdido dentro da área alocada ao processo). Por outro lado, imagine que exista duas partições livres, uma de 25 e outra de 100 Kbytes, não contíguas. Nesse instante é criado um processo de 110 Kbytes que não poderá ser carregado em memória pela forma como ela é gerenciada. Este problema ocasiona o que chamamos de fragmentação externa (memória perdida fora da área ocupada por um processo). A estratégia de criar partições fixa pode contar com dois tipos de entradas: Entradas com múltiplas filas e entrada com fila única. O problema da organização em múltiplas filas, organização (a), é que jobs pequenos podem precisar esperar pela liberação de memória (partição mais adequada para o mesmo), embora exista memória disponível (partição grande), como é o caso da partição 1 e 3. Por outro lado, isso não ocorre no esquema de uma única fila. Nesta organização (b) sempre que uma nova partição é liberada o job mais próximo do início da fila e que caiba nessa partição pode ser carregado nela para ser executado pela CPU. Qual o problema dessa solução? (Discriminar jobs pequenos!) Qual a solução? (Ter pelo menos uma partição pequena!). No entanto, esta estratégia pode desperdiçar muito espaço ao armazenar um job pequeno em uma partição grande. Assim, uma opção mais interessante seria
  • 62. Sistemas Operacionais 61 Bem, Existe uma outra possibilidade consiste em estabelecer uma quantidade máxima k de vezes que um job pudesse ser excluído da escolha de receber uma partição. Assim, sempre que ele fosse preterido teria seu contador incrementado e, ao chegar em k vezes, ele teria que receber uma partição. Partições Variáveis Neste esquema de organização a quantidade e o tamanho dos processos na memória podem variar dinamicamente com o passar do tempo, o tamanho das partições é ajustado dinamicamente às necessidades exatas dos processos. Diferentemente do esquema de partição fixa, na multiprogramação com partições variáveis a o tamanho e a localização dos processos variam à medida que o mesmo deixa e retorna à memória. Uma das grandes vantagens desta estratégia é que a flexibilidade obtida que melhora bastante a utilização da memória, evitando desperdícios de espaço. Neste tipo de partição, o sistema operacional mantém uma lista de espaços livres na memória física. Sempre que um novo processo é criado esta lista é percorrida e será usada uma lacuna maior ou igual ao tamanho do processo em questão. O espaço que ultrapassar o tamanho do processo pode dar origem a uma nova partição. Existem algumas formas de percorrer esta lista: 1. first-fit: utiliza a primeira lacuna encontrada com tamanho suficiente.
  • 63. Sistemas Operacionais 62 2. best-fit: utiliza a lacuna que resulta em menor sobra de espaço. 3. worst-fit: utiliza a lacuna que resulta em maior sobra de espaço.
  • 64. Sistemas Operacionais 63 Para solucionar esse tipo de problema, foi proposta uma técnica denominada Swapping. Nesse tipo de técnica caso não haja espaço para aumentar o tamanho da partição ou não tenha uma partição grande o suficiente para realocar o processo, então um ou mais processos deverão ser removidos para o disco (swapping). Se não for possível realizar o swapping (área de swapping cheia) o processo que deseja crescer deverá esperar ou ser eliminado.
  • 65. Sistemas Operacionais 64 Paginação Como uma nova abordagem de gerenciamento da memória, a Paginação consiste em um espaço de Endereçamento lógico de um processo divididos em blocos do mesmo tamanho. Neste tipo de abordagem divide-se a memória física em blocos de tamanho fixo chamados frames (o tamanho é uma potência de 2, entre 512 bytes e 8192 bytes), divide a memória lógica em blocos do mesmo tamanho chamados de páginas e se mantém o registro de todos os frames livres. Para rodar um programa de tamanho n páginas, é preciso encontrar-se n frames livres para carregar o programa. Para tanto, define-se uma tabela de página (page table) para traduzir o endereço lógico em físico.
  • 66. Sistemas Operacionais 65 Bom, um Bit Válido – Inválido é anexado a cada entrada na tabela de página: _ “válido” indica que a página associada está no espaço de endereçamento lógico do processo, e assim, é a uma página legal. _ “inválido” indica que a página não está no espaço de endereçamento lógico do processo. Segmentação A segmentação consiste em uma técnica de gerência de memória onde programas são divididos em segmentos de tamanhos variados cada um com seu próprio espaço de endereçamento. Segmentação
  • 67. Sistemas Operacionais 66 Nesta técnica um programa é uma coleção de segmentos e um segmento é uma unidade lógica, tal como: programa principal procedimento função método objeto variáveis locais, variáveis globais bloco comum pilha tabela de simbolos, arrays Segmentação & Paginação A principal diferença entre a paginação e a segmentação é a alocação da memória de maneira não fixa, a alocação depende da lógica do programa e o mapeamento é feito através das tabelas de mapeamento de segmentos. Nesse caso, os endereços são compostos pelo número do segmento e por um deslocamento dentro do segmento. Cada entrada na tabela mantém informações sobre o endereço físico do segmento, o tamanho do segmento, se ele está ou não na memória e sua proteção. Note que: Segmentação Paginada Nesse tipo de técnica onde cada segmento é dividido fisicamente em páginas. Sendo assim, o endereço é formado pelo número do segmento, número da página localizado dentro no segmento e o deslocamento localizado dentro na página. O mecanismo de proteção da segmentação tem que ser diferente que da paginação. Neste caso a cada entrada na tabela de segmentos associa-se: _ bit de validação = (0) segmento ilegal privilégios de leitura/gravação/execução
  • 68. Sistemas Operacionais 67 Técnica de gerenciamento que combina a memória principal e a secundária dando ao usuário a idéia de existir uma memória maior que a memória principal. O principal objetivo da memória virtual é disponibilizar aos usuários uma capacidade de memória independente da quantidade de memória física (RAM) instalada em um computador. Para cumprir esse objetivo, o SO, através da implementação do suporte à memória virtual, cria a ilusão de que cada processo possui um espaço de endereçamento contíguo em memória e, em princípio, sem restrição de tamanho. Segmentação paginada
  • 69. Sistemas Operacionais 68 Dessa forma, a memória virtual elimina duas limitações impostas pela memória física (real): um processo ter seu tamanho máximo determinado pela capacidade de memória física instalada e, o somatório do espaço de memória ocupado por n processos não exceder essa mesma capacidade. Essa segunda limitação restringe o grau de multiprogramação, ou seja, o número de processos ativos em um sistema. Paginação por Demanda A paginação sob demanda é a implementação de memória virtual baseada no mecanismo de paginação simples, isto é, cada processo possui uma memória lógica, contígua, a qual é dividida em páginas lógicas de mesmo tamanho. As páginas lógicas são carregadas em páginas físicas, que são áreas de igual tamanho na memória física (RAM). A associação (mapeamento) de qual página física corresponde a uma determinada página lógica é feita através da tabela de páginas. Na paginação simples, todas as páginas lógicas de um processo são sempre carregadas para a memória física, resultando em uma entrada válida na tabela de páginas para cada página lógica do processo. O bit de válido/inválido é usado para indicar quais páginas estão fora da memória lógica. Quando uma página marcada como inválida é acessada, o processo é abortado por acesso ilegal à memória. Na paginação por demanda, um acesso à memória pode ter dois tratamentos distintos. Quando a página lógica acessada pelo processo está marcada como válida na tabela de páginas, Quando o endereço lógico é transformado em endereço físico e o acesso transcorre normalmente. Caso ocorra um erro e, por conseqüência uma interrupção de proteção, temos uma falta de página (page fault). Quando o SO é acionado em função de uma falta de página, as seguintes ações são realizadas: O processo que gerou a interrupção de falta de página é suspenso e seu descritor de processo é inserido em uma fila especial, a “dos processos esperando página lógica” Uma página física livre deve ser alocada A página lógica acessada deve ser localizada no disco Uma operação de leitura do disco deve ser solicitada, indicando o endereço da página alógica no disco e o endereço de página alocada. Quando a operação de leitura do disco for concluída, a gerência de memória concluirá o atendimento à falta de página realizando as seguintes ações:
  • 70. Sistemas Operacionais 69 A tabela de páginas do processo é corrigida para indicar que a página lógica causadora da interrupção é agora válida e está na página física que fora alocado antes O descritor do processo é retirado da “fila dos processos esperando página lógica” e reinserido na fila de aptos do escalonador. Realocação de Página A medida que os processos vão sendo carregados para a memória, é possível que todas as páginas físicas acabem ocupadas. Nesse caso, para atender à falta de página, é necessário antes liberar uma página física ocupada. Isso significa escolher uma página lógica que está na memória, copiar seu conteúdo de volta para o disco e marca-la como inválida na tabela de páginas do seu processo. A página escolhida para ser copiada de volta ao disco é chamada de página vítima. O algoritmo de substituição de páginas é responsável pela escolha da página vítima. Ele é muito importante para a eficiência do mecanismo como um todo. Um escolha errada significa que a página removida será novamente acessada em seguida, gerando uma nova falta de página. É importante que o algoritmo usado seja capaz de remover da memória física páginas que provavelmente não serão necessárias logo em seguida. Vários bits auxiliares são normalmente adicionados às tabelas de páginas. O bit de sujeira (dirty bit) indica quando uma página foi alterada durante a execução do processo. Esse bit é zerado pelo SO quando a página é carregada para a memória. O bit de referência (reference bit) indica quando uma página foi acessada pelo processo. Esse bit é feito igual a zero pelo sistema operacional quando a página é carregada para a memória. Ele também será zerado em determinadas situações, ditadas pelo algoritmo de substituição de página empregado O bit de tranca (lock bit) serve para o SO “trancar” uma página lógica na memória física. Existem situações nas quais uma determinada página lógica não deve ser escolhida como vítima. Então, quando o SO envia ao controlador de disco um comando de leitura informando como destino uma página de processo, ele também liga o bit de tranca da respectiva página. Algoritmos de substituição de páginas na memória Em um sistema multiprogramado a memória é compartilhada por um certo número de processos, a determinação da página a ser substituída é feita por um algoritmo de substituição de páginas que recai em uma de duas classes genéricas possíveis: classe global e classe local. Independente de classe, global ou local, o ideal é selecionar uma página que não seja mais útil ou que, pelo menos, não venha a ser necessária em um
  • 71. Sistemas Operacionais 70 curto intervalo de tempo. Logo, o algoritmo ótimo de substituição é aquele que escolhe uma página lógica que já foi utilizada por um programa e que não será mais necessária ou aquela página que será utilizada no futuro mais distante. A implementação do algoritmo ótimo não é viável por exigir o conhecimento prévio do comportamento dos processos. Algoritmos globais: FIFO (First In – First Out) – Escolhe para substituição a página que está a mais tempo residente em memória. A principal vantagem do FIFO é sua implementação simples: basta uma lista de até M posições e um ponteiro para indicar a frente da fila. Entretanto, essa estratégia peca por não considerar a utilização de uma página, ou seja, a página apontada como primeira da fila pode ser uma página acessada muito frequentemente ou que será necessária em breve. LRU (Least Recently Used) – Escolhe como página vítima aquela que foi acessada a mais tempo, isto é, a que foi “menos recentemente usada”. O LRU parte da premissa que as páginas acessadas recentemente por um processo continuarão a ser necessárias em um futuro próximo. Segunda chance – Também baseado em bit de referência, porém mais simples que o histórico de bits. Nesse caso, a gerência de memória considera que todas as páginas lógicas presentes na memória formam uma lista circular. Um apontador percorre a lista circular formada por todas as páginas e indica qual a próxima página a ser usada como vítima. Quando uma página vítima é necessária, o algoritmo verifica o bit de referência da página indicada pelo apontador. Caso este bit esteja desligado, essa página é efetivamente escolhida como vítima, e o apontador avança uma posição na lista circular. Caso o bit de referência da página apontada esteja ligado, o bit de referência é desligado, e ela recebe uma segunda chance. Algoritmos Locais Uma outra abordagem para o problema da substituição de páginas vem da análise de dois comportamentos apresentados durante a execução de processos.
  • 72. Sistemas Operacionais 71 Algoritmo ótimo Considerando isso, o ideal é manter em memória, para cada processo, um conjunto ótimo de páginas necessárias a sua execução. Com esse raciocínio, a determinação de quais páginas lógicas de um processo devem permanecer em memória é dado pela sua própria execução e não deve afetar a política de páginas de outro processo. O algoritmo ótimo, então, ajusta o número de páginas em memória de acordo com as suas futuras referências. A idéia consiste em verificar se uma página lógica P acessada em instante de tempo T, será ou não acessada futuramente dentro de TT unidades de tempo. Caso a página lógica P venha a ser acessada dentro desse intervalo futuro de tempo, ela é considerada necessária e é mantida em memória, caso contrário, o espaço em memória que ocupa (página física) pode ser liberado. O intervalo de tempo dado por T+TT fornece uma janela temporal definindo, por processo, quais páginas devem ser mantidas em memória. Importante: Modelo de working set O Modelo de working set é uma aproximação do algoritmo ótimo que estimam quais as páginas serão necessárias no futuro com base em quais páginas goram acessadas no passado. O principio é manter em memória, em um instante T, conjunto de páginas P, acessadas por um processo durante o intervalo de tempo (T-TT; T). Sua lógica é considerar que se uma página foi acessada em um passado recente (T-TT), ela tem boa chance de continuar sendo utilizada em um futuro próximo. O problema do modelo working set é estimar o valor adequado para a constante TT (largura da janela temporal). Um valor pequeno para TT pode não englobar toda a localidade de referência de um processo, provocando faltas de páginas. Por outro lado, um valor muito grande para TT, tende a manter em memória páginas que não são mais referenciadas, provocando um Devido a impossibilidade de se conhecer previamente as páginas de um processo, esse algoritmo serve apenas para estimativas.
  • 73. Sistemas Operacionais 72 desperdício de memória, e conseqüentemente, reduzindo o número de processos aptos a executar. Outra desvantagem do working set é a necessidade de reavaliá-lo a cada unidade de tempo (acesso), o que representa um custo de processamento elevado. Trashing Você já se perguntou por que ocorre situações de “congelamento do sistema”, ou se já, por que o sistema as vezes fica parado não liberando para nenhuma ação? Bom o tratamento de uma falta de página é várias ordens de grandeza mais lento que um processo normal à memória. Logo, o impacto da taxa de falta de página sobre o tempo de execução de um processo é muito grande. Quando um processo possui um número muito pequeno de páginas físicas para executar, a sua taxa de falta de página aumenta. Á medida que a taxa de falta de página aumenta o processo pára de realizar qualquer trabalho útil. Tudo que o processo faz é esperar pelo atendimento de faltas de páginas. Nesse momento, é dito que está ocorrendo Thrashing. Para retirar o sistema do estado de thrashing é necessário suspender temporariamente alguns processos, librando suas páginas físicas. O mecanismo natural para isso é o swapping. Obviamente, a gerência de memória realiza um revezamento entre os processos suspensos e aqueles executando. O swapping não é algo desejável, pois aumenta o tempo de resposta dos processos. Em condições normais, ele não deve ser usado. Formas de prevenção do Thrahing A solução normalmente empregada para solucionar o problema de thrashing é a prevenção: o sistema de gerência virtual deve agir de forma pró-ativa e evitar que o sistema entre em thrashing. Um sistema entrará em thrashing sempre que o somatório das páginas lógicas necessárias pelos processos do sistema for superior ao número de páginas físicas disponíveis no sistema. O modelo de working set, por exemplo, pode ser empregado para controlar o thrashing mantendo a soma dos tamanhos dos working sets (cardinalidade do conjunto) de todos os processos inferior a quantidade de páginas físicas disponíveis no sistema. Outra forma de prevenir o thrashing é empregar o método de frequência de falta de páginas. Nesse caso, se muitos processos apresentarem uma alta taxa de falta de páginas, isso significa que há mais demanda de memória, por parte dos processos que executam, que memória disponível. Novamente, através do escalonador de médio prazo,
  • 74. Sistemas Operacionais 73 o SO seleciona um ou mais processos para suspender, evitando assim a situação de thrashing. Síntese da Unidade: O gerenciador de memória controla quais as partes da memória serão utilizadas e quais não serão e como serão utilizadas. O controle de uso da memória é feito através de técnicas de particionamento da memória. Partição fixa é uma técnica que consiste na divisão da memória em N partições de diferentes tamanhos. Partições variáveis é uma técnica que consiste na divisão da memória em N partições de acordo com a necessidades dos processo, isto é, o tamanho das partições é ajustado dinamicamente às necessidades exatas dos processos. First-fit, best-fit, worst-fit e circular-fit são algumas formas de se percorrer uma lista de segmentos. Swapping consiste em uma técnica de remoção do processo da memória para uma área do disco (swap out) e vice-versa (swap in). Paginação consiste em uma nova abordagem de gerenciamento de memória, caracterizado por trabalhar com espaços de endereçamento lógico de um processo divididos em blocos do mesmo tamanho. Segmentação consiste em uma nova abordagem de gerenciamento de memória, caracterizado por trabalhar com segmentos de tamanhos variados cad um com seu próprio espaço de endereçamento Segmentação Paginada consiste em uma técnica onde cada onde cada segmento é dividido fisicamente em páginas. Memória Virtual consiste em uma técnica que combina a memória principal e a secundária, dando ao usuário a idéia de existir uma memória maior que a memória principal. A Paginação por demanda é a implementação de memória virtual baseada no mecanismo de paginação simples, isto é, cada processo possui uma memória lógica, contígua, a qual é dividida em páginas lógicas do mesmo tamanho. Thrashing é conseqüência da excessiva paginação/segmentação em sistemas que implementam memória virtual, levando o sistema a dedicar mais tempo com operações relacionadas à gerência da memória do que no processamento das aplicações dos usuários.
  • 75. Sistemas Operacionais 74 [ Auto-avaliação ] 1. Relacione as funções do módulo de gerenciamento de memória. 2. Qual a diferença básica entre paginação e segmentação? 3. Suponha que um computador possui uma área de memória de usuário de 500K bytes. Suponha também que há duas opções de gerência de memória: a primeira usa páginas (regiões) de tamanho fixo de 50 K bytes e a segunda usa segmentos (região) de 4 K bytes. Considerando que 95% dos programas possuem em média menos que 30 K bytes, a técnica de gerência de memória que permite a menor fragmentação interna (memória interna a uma região, mas não usada) da memória principal é: (A) segmentação; (B) paginação; (C) memória com intercalação ("interleaved"); (D) memória organizada em bancos; (E) memória "Cache". 4) Quando ocorre a fragmentação interna em um sistema que utiliza a técnica de paginação? 5) Suponha que o esquema adotado para gerenciamento de memória de um determinado computador seja baseado na estratégia de working sets - W(t,∆), com política de re-alocação de página do tipo LRU – Least Recently Used e ∆ = 3. Nessas condições, se um determinado processo apresentar a seguinte seqüência de referências a páginas virtuais: 24, 15, 18, 23, 24, 18, 17, 18, 24, 17, 17, 15 o número de ocorrências de page faults será de: (A) 11 (B) 9 (C) 5 (D) 13 (E) 7 6) A Memória Virtual por Paginação é uma técnica de gerência de memória onde o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos do mesmo tamanho chamados páginas. Pode-se dizer dessa técnica que: I - todo o mapeamento de endereço virtual em real é realizado através de tabelas de páginas; II - um programa é dividido logicamente em sub-rotinas e estruturas de dados, que são alocadas em páginas na memória principal;
  • 76. Sistemas Operacionais 75 III - o maior problema na gerência de memória virtual por paginação não é decidir quais páginas carregar para a memória principal, mas sim quais liberar. Est(ão) correta(s) a(s) afirmativa(s): (A) I, apenas. (B) I e II, apenas. (C) I e III, apenas. (D) II e III, apenas. (E) I, II e III. 7) Explique a técnica de paginação por demanda 8) O que é Trashing? [ Referência Bibliográfica ] MACHADO, Francis Berenger ; MAIA, Luiz Paulo. “Arquitetura de Sistemas Operacionais”, 4ª Edição, Ed. LCT, 2007. SILBERSCHATZ, Abraham; GALVIN, Peter Baer. "Sistemas Operacionais: Conceitos", quinta edição. Pearson Brasil, 2000. TANENBAUM, Andrew S., WOODHULL, Albert S.. "Sistemas Operacionais - Projeto e Implementação", segunda edição. Prentice-Hall, 2000.
  • 77. Sistemas Operacionais 76 Unidade V – Sistemas de Arquivos Sistemas de arquivos Estrutura dos arquivos Diferentes sistemas de arquivos Coordenação do espaço disponível para os arquivos Organização de uma partição [Objetivos Específicos da Unidade V] Propomos, nesta UNIDADE, levar você a: • Compreender como ocorre a implementação de sistema de arquivo. • Comparar os tipos de sistema de arquivos disponível no mercado.
  • 78. Sistemas Operacionais 77 Sistema de Arquivos Esta unidade irá apresentar o módulo sistema de arquivos. Esse módulo é a parte mais visível do sistema operacional. Quando utilizamos um computador, basicamente utilizamos o sistema operacional para realizar várias operações com os arquivos: criar; copiar, renomear, proteger, esconder, entre outras. Todas essas ações explícitas a nós usuários e outras implícitas ao nosso manuseio, fazem parte do módulo sistema de arquivos. Os tópicos serão apresentados de forma que você compreenda de maneira lógica como cada uma dessas operações são implementadas e as técnicas utilizadas nessa implementação. E, para facilitar a sua compreensão, será necessário que você tenha pleno domínio das unidades anteriores. Objetivamos que você adquira um conhecimento que lhe permita entender a implementação e o funcionamento de um sistema de arquivo. Para que isso ocorra, é fundamental que você seja capaz de entender lógica de programação, bem como as várias técnicas para implementação de um sistema operacional. Portanto, sugerimos questões ao longo do texto para apreensão de determinados conceitos e, ao final da unidade, você está convidado a verificar seus conhecimentos por meio da auto-avaliação, que deverá ser enviada ao seu tutor. Então, mãos à obra! Você consegue relacionar algumas funções para o sistema de arquivo? • Fornecer mecanismos para os usuários manipular arquivos e diretórios • Garantir a validade e coerência dos dados • Otimizar o acesso • Fornecer suporte a outros sistemas de arquivos • Gerenciar o suporte a vários usuários através do uso compartilhado de arquivo. Vocês notaram que dentre as funções do sistema de arquivos uma palavra apareceu com muita freqüência ? É isso ai: Bom... Espero que sim, pois constantemente utilizamos essas funções. Um arquivo é um conjunto de registros definidos pelo sistema de arquivos, tornando seu conceito abstrato e generalista Um arquivo é constituído por informações logicamente relacionadas, podendo representar instruções ou dados. Arquivos são gerenciados pelo sistema operacional de maneira a facilitar o acesso dos usuários ao seu conteúdo.
  • 79. Sistemas Operacionais 78 Os arquivos Possuem: Nome; Atributos; Estrutura interna; Tipo; Método de acesso operações. A atribuição de nomes a arquivos é feita no momento de sua criação. As regras a serem adotadas para a confecção do nome de um arquivo variam de acordo com o SO. O servidor de arquivos deve implementar a abstração de arquivo para o restante do sistema. Para tanto, ele deve determinar como o arquivo será estruturado internamente. As estruturas de arquivos mais comuns são: • sequência de bytes • sequência de registros • árvore de registros Estruturação como sequência de bytes: Neste caso, não há estrutura. O arquivo é simplesmente enxergado como uma sequência de bytes. O SO não tem conhecimento do significado e da estruturação dos campos que compõem um arquivo. Estruturação como sequência de registros: Neste caso, o arquivo é estruturado pelo SO como uma sequência de registros de tamanho fixo. As operações de leitura e escrita retornam um registro.
  • 80. Sistemas Operacionais 79 Estruturação como árvore de registros: Neste caso, o arquivo é uma árvore de registros de tamanho variável. Cada registro é composto por um campo chave, contido em uma posição fixa. A árvore é ordenada pelo campo chave. – Esta estruturação visa otimizar o acesso randômico a registros. Método de Acesso Os métodos de acesso determinam como os dados contidos no arquivo serão recuperados pelo usuário.
  • 81. Sistemas Operacionais 80 Acesso seqüencial: Este método de acesso utiliza basicamente as operações de leitura e escrita. a) Operação de leitura (read next): lê a próxima posição do arquivo e avança o ponteiro; b) Operação de escrita (write next): coloca odado no final do arquivo e avança o end-offile (EOF). Acesso direto (ou aleatório): Este método de acesso utiliza basicamente as operações de leitura e escrita: a) Operação de leitura (read n): lê a posição do arquivo apontada por n. Geralmente, n é o número do bloco. b) Operação de escrita (write n): coloca o dado no bloco n. Os sistemas de arquivos podem oferecer simultaneamente os dois métodos de acesso e o usuário determina o método a ser utilizado na criação do arquivo. A maioria dos SO modernos oferece somente o método de acesso direto Operações sobre o arquivo As operações sobre arquivos geralmente levam em consideração um conjunto de entidades de um sistema de arquivos. • tabela de arquivos: possui uma entrada para cada arquivo. Contem as informações referentes aos arquivos. • diretório: caminho que leva ao arquivo. Ao ser criado, o arquivo é posicionado em um diretório e a tabela de arquivos deste diretório deve conter uma entrada para o novo arquivo. • posição corrente do arquivo: ponteiro que diz qual a posição do arquivo será acessada na próxima vez. As operações de leitura e escrita incrementam o valor da posição corrente do arquivo do número de bytes lidos/escritos. As operações feitas sobre um arquivo vão depender do sistema de arquivos de cada SO. Existe, no entanto, um conjunto de operações que constam na maioria dos sistemas de arquivos: 1) CREATE: cria um arquivo. Deve-se criar uma entrada para o novo arquivo no diretório especificado. Além disso, deve-se criar uma entrada na tabela de arquivos com o nome do criador, data de criação e permissões de acesso. O arquivo recem-criado não possui dado nenhum. 2) DELETE: Libera o espaço ocupado pelo arquivo, deleta a entrada do diretório que aponta para o arquivo e deleta a entrada na tabela de arquivos. 3) OPEN: Antes de ser utilizado, o arquivo precisa ser aberto. Essa chamada traz a entrada da tabela de arquivos referente ao arquivo a ser aberto para a tabela de