Escolar Documentos
Profissional Documentos
Cultura Documentos
Slides de Aula Unidade III
Slides de Aula Unidade III
Fundamentos de Sistemas
Operacionais
Prof. Marcelo Santos
Gerenciamento de processos
Introdução a processos
Os sistemas computacionais atuais são capazes de desenvolver uma grande
variedade de tarefas simultaneamente.
Muitas vezes, isso passa despercebido para nós e só nos lembramos dessa
extraordinária capacidade quando ela falha, ou quando o sistema já está
sobrecarregado e notamos a degradação de desempenho em alguma das tarefas
que lhe demos e da qual não estamos tendo o nível de serviço esperado.
Introdução a processos
Essa sequência continuará até termos todos os processos concluídos, porém
não podemos esquecer que outros processos podem estar entrando na fila
a todo o momento.
Devido à rapidez dos ciclos, esse cenário de suposto paralelismo irá gerar para a
percepção humana a sensação de que o ambiente está processando as
requisições, atendendo às diversas aplicações de forma simultânea.
Somente nos casos de sistemas com múltiplos processadores é que teremos de
fato múltiplos programas sendo atendidos no mesmo instante. Controlar
múltiplas atividades em paralelo é algo que vem sendo
desenvolvido e aprimorado com base num modelo
conceitual de processos sequenciais que facilita o
paralelismo que estudaremos nesta unidade.
Gerenciamento de processos
Fonte: http://livrozilla.com/doc/11160/processo
Processo
Fonte: livro-texto
Processo A
Processo D
Processo B
Figura 31 – CPU 1 core
e 2 processos Figura 31 – CPU 2 cores
e 4 processos
Processo
Fonte:
https://www.hardware.com.br/comunidade/gerenciador-tarefas/1365176/
Criação de processos
Teremos nos sistemas quatro eventos que fazem que processos sejam criados: no
início do sistema, um processo em execução procedendo a
uma chamada de sistema de criação de um processo,
requisição do usuário para criar um novo processo e
gerenciar a tarefa em lote (bacth job) que está
sendo iniciada.
Criação de processos
Criar processos é indicado quando a tarefa a ser executada puder ser facilmente
dividida em vários processos relacionados, interagindo, entretanto, de maneira
independente.
Os usuários podem iniciar um novo processo começando um programa no
ambiente GUI ou no ambiente Shell.
No caso de sistemas em lote, tipicamente encontrados em computadores de
grande porte, o usuário, administrador ou até mesmo um alinhamento prévio, pode
submeter tarefa em lote para o sistema.
O sistema operacional criará um novo processo e o
executará quando tiver recurso disponível e/ou
redefinindo prioridades e executando o processo no
momento determinado.
Criação de processos
núcleo núcleo
a. b.
Fonte: livro-texto
Criação de processos
Após o término, o processo é finalizado com base nas quatro condições típicas:
normal, por erro, erro fatal e cancelado por terceiros – sendo as duas primeiras
voluntárias e as duas últimas involuntárias.
Processos terminados de forma involuntária não são comuns num sistema em
perfeito funcionamento (verificaremos as quatro condições e notaremos por qual
motivo essa afirmação é um fato).
O primeiro caso, que é a condição normal de se encerrar um processo, é
verificado pela chamada exit no Unix ou ExitProcess no Windows. Nesses casos, o
processo termina após finalizar as tarefas que estavam previstas, mesmo que seja
um usuário finalizando um programa, fechando a janela no
ambiente GUI ou pela opção relativa no ambiente Shell.
Término de processos
Num ambiente Unix, a chamada de sistema exit serve para informar ao núcleo do
sistema operacional que o processo em questão não é mais necessário e pode ser
eliminado, liberando todos os recursos a ele empregados.
Processos podem solicitar ao núcleo o encerramento de outros processos, mas
essa operação só é aplicável a processos do mesmo usuário ou se o processo
solicitante pertencer ao administrador do sistema.
Os processos que interagem com outros não podem ser concluídos quando algum
parâmetro errado é fornecido.
Vamos considerar o caso de um usuário tentando colocar o nome duplicado entre
dois arquivos no sistema, então, uma caixa de diálogo
emerge e pergunta ao usuário se ele quer tentar
novamente; desta forma, teremos por consequência a
segunda condição que é a saída por erro.
Término de processos
II. Para os sistemas de propósitos gerais, é necessário algum mecanismo para criar
e terminar processos durante a operação quando for necessário.
III. Temos nos sistemas quatro eventos que fazem que processos sejam criados: no
início do sistema, um processo em execução procedendo a uma chamada de
sistema de criação de um processo, requisição do usuário
para criar um novo processo e uma tarefa em lote
sendo iniciada.
Interatividade
a) Apenas a I afirmação.
b) Apenas a II afirmação.
c) Apenas a III afirmação.
d) Todas as afirmações.
e) Nenhuma das afirmações.
Resposta
a) Apenas a I afirmação.
b) Apenas a II afirmação.
c) Apenas a III afirmação.
d) Todas as afirmações.
e) Nenhuma das afirmações.
Programa x processo
Fonte: http://livrozilla.com/doc/11160/processo
Comunicações entre processos
Fonte:
http://www.maxquality.com.br/o-que-e-bilhetagem-de-impressao/
Condição de corrida
Agora, imagine que temos dois processos X e Y que decidem quase que
simultaneamente colocar, cada um deles, um arquivo, sendo X = ArquivoX e
Y = ArquivoY, na fila de impressão.
Y entra na Y deixa a
região crítica região crítica
Fonte: livro-texto
Processo X Região Crítica Core 2
X Bloqueado
Quando estamos usando os sistemas mais antigos que possuíam somente uma
CPU com um único core, a forma mais trivial e segura para evitarmos que mais de
um processo entre na região crítica é aplicada com a desativação das interrupções
assim que o primeiro processo entrar na região crítica e consecutivamente
reabilitá-las assim que sair dessa região.
Portanto, quando se desativa a interrupção, a CPU não poderá chavear
para outro processo, com isso não tem como ocorrer a condição de corrida
apresentada anteriormente.
Podemos concluir que a desativação das interrupções é
uma técnica coerente para o próprio sistema operacional,
porém com alto nível de risco para os processos dos
usuários que necessitem de exclusão mútua.
Semáforos
Caso isso seja mesmo um fato, subtrairá um sinal de up (V) que estiver na variável
e prosseguirá com as tarefas.
O monitor tem um papel fundamental para realizar a exclusão mútua pelo fato de que
somente um processo pode estar ativo em um monitor num determinado tempo x.
Tipicamente, quando um processo executa uma chamada a uma determinada rotina
do monitor, algumas das primeiras instruções da rotina deverão realizar qual
verificação?
a) Verificar se existe um processo inativo dentro do monitor.
b) Verificar se existe outro processo ativo dentro do monitor.
c) Verificar se existe outro processo inativo dentro do semáforo.
d) Verificar se existe outro processo ativo
dentro do semáforo.
e) Verificar se existe outro processo a partir
da condição de corrida.
Resposta
O monitor tem um papel fundamental para realizar a exclusão mútua pelo fato de que
somente um processo pode estar ativo em um monitor num determinado tempo x.
Tipicamente, quando um processo executa uma chamada a uma determinada rotina
do monitor, algumas das primeiras instruções da rotina deverão realizar qual
verificação?
a) Verificar se existe um processo inativo dentro do monitor.
b) Verificar se existe outro processo ativo dentro do monitor.
c) Verificar se existe outro processo inativo dentro do semáforo.
d) Verificar se existe outro processo ativo
dentro do semáforo.
e) Verificar se existe outro processo a partir
da condição de corrida.
Troca de mensagens
Quando temos uma única CPU, ou uma única CPU disponível entre as diversas
existentes no sistema, e mais de um processo estiver competindo para ser
executado, então, caberá ao sistema operacional escolher qual dos processos
será privilegiado e essa escolha chama-se algoritmo de escalonamento.
Em linhas gerais, o escalonamento é importante porque, dentre vários processos,
é saudável que o sistema priorize aqueles que vão gerar mais impacto ao
ambiente e seus usuários, caso não forem privilegiados durante a escolha de
quem deve ser o próximo a ser processado.
Entre os processos, temos aqueles que passam a maior
parte do tempo computando, computer bound (limitados
pela CPU), enquanto outros passam a maior parte do
tempo esperando por entrada e saída, I/O bound
(limitados a entrada e a saída).
Escalonamento
Por isso, o programador, tipicamente, tinha de “tirar leite de pedra”. A outra parte
da resposta é que não tínhamos as múltiplas interfaces entre aplicações em rede,
nem ambientes de trabalho com tanta qualidade gráfica, nem mesmo a
complexidade que os programas atuais possuem.
Com o passar do tempo, a hierarquia de memória contribuiu para atender a
demanda exponencialmente crescente por memória. Podemos comparar os
programas atuais com um camelo que, depois de atravessar o deserto por dias
sem beber nenhum gole de qualquer coisa líquida e de uma exaustiva jornada,
encontra um tanque d’água (a água seria a memória).
Não é necessário concluir que, enquanto houver água
disponível, o camelo estará consumindo – as aplicações
atuais são cada vez mais cedentes por memória.
Introdução a gerenciamento de memória
Memória RAM
Programa
do
usuário
Sistema
operacional
c
Fonte: livro-texto
Introdução a gerenciamento de memória
Observação
Nos sistemas precursores não era possível mais que um programa ocupando a
memória. Se isso ocorresse, causaria problemas aos dois programas, ao que estava
na memória e àquele que tentasse fazer uso.
a) Apenas a I afirmação.
b) Apenas a II afirmação.
c) Apenas a III afirmação.
d) Todas as afirmações.
e) Nenhuma das afirmações.
Resposta
d) Todas as afirmações.
Abstração – espaços de endereçamento da memória
Expor a memória física aos processos pode trazer problemas, chegando até a
ocasionar o travamento do sistema operacional.
Entretanto, hoje, depois da história toda ter acontecido, sabemos que existe um
método para tratar essa situação, caso contrário, não seria possível estarmos com
o nosso computador conectado à internet, acessando o editor de texto e/ou
diversas combinações que fazem parte do nosso dia a dia. Para isso, temos de
entender o processo de abstração da memória.
Com a abstração da memória e a implantação do espaço de endereçamento,
cria-se uma memória abstrata para abrigar os programas.
Esta, por sua vez, possui um conjunto de endereços
usado para que o processo realize endereçamento à
memória (os processos possuem seu próprio espaço de
endereçamento, diferente para cada processo).
Permuta de memória
Processo X
Fonte: livro-texto
Permuta de memória
Sistema
Fonte: livro-texto operacional
d.
Permuta de memória
a.
Processo Z
Processo O
Processo T
Processo X Sistema Processo X
operacional
Sistema Sistema
operacional f.
e. operacional
Processo Z
Fonte: livro-texto
Processo Y Processo Y
Processo Z
Processo X
Processo Y Sistema
Sistema
operacional operacional
d. Processo X b.
Sistema
operacional c.
Memória virtual
Observação
Analisando pela perspectiva do programa, temos cada um com seu próprio
espaçamento de endereços adjacentes que chamamos de páginas.
Paginação
Observação
Enquanto o espaço de endereçamento virtual é dividido em unidades chamadas
páginas (pages), temos as unidades correspondentes na memória física que são
denominadas molduras de página (frames). Tanto as
páginas quanto as molduras possuem o mesmo tamanho.
Paginação
Na figura 38a, o fluxo de envio do endereço virtual, passando pelo MMU e envio do
endereço físico para o barramento, e na figura 38b é demonstrado como é feito o
mapeamento do endereço virtual para o endereço físico.
CPU
CPU enviando endereço
virtual à MMU Memória Controlador
MMU principal de disco
Barramento
MMU enviando endereço a.
físico à memória
Fonte: livro-texto
Paginação
24576-32767 Moldura de
página 4
8192-16383 página virtual 1
CPU MMU
b.
Figura 38 – Fluxo do endereço virtual versus endereço físico
Fonte: livro-texto
Segmentação
Fonte: livro-texto
Resumo
Estas correspondem a unidades das memórias que são chamadas por qual termo?
a) Segmentação.
b) Memória principal (RAM).
c) Paginação.
d) Memória virtual.
e) Frames.
Resposta
Estas correspondem a unidades das memórias que são chamadas por qual termo?
a) Segmentação.
b) Memória principal (RAM).
c) Paginação.
d) Memória virtual.
e) Frames.
ATÉ A PRÓXIMA!