Escolar Documentos
Profissional Documentos
Cultura Documentos
Tcnica em camada:
- O SO dividido em uma srie de camadas. A camada mais baixa o
hardware, a mais alta a interface com o usurio.
- Modularidade: as camadas so selecionadas de modo que cada uma use
funes e servios apenas de camadas de nvel inferior.
Microkernel:
- Move o mximo do kernel para o espao do usurio.
- A comunicao ocorre entre os mdulos do usurio usando a passagem de
mensagens.
- Benefcios: mais fcil de estender um microkernel, mais fcil de portar o SO
para novas arquiteturas, mais confivel e mais seguro.
- Prejuzos: Overhead de desempenho da comunicao entre o espao de
usurio e o espao do kernel.
Mdulos:
- A maioria dos SO modernos implementa mdulos do kernel.
- Em geral, so semelhantes ideia de camadas, mas possuem mais
flexibilidade.
Mquinas virtuais:
- Trata o hardware e o kernel do SO como se fossem tudo hardware.
- Oferece uma interface idntica ao hardware bsico.
- O SO cria a iluso de mltiplos processos, cada um executando em seu
prprio processador com sua prpria memria.
- Os recursos do computador fsico so compartilhados para criar as mquinas
virtuais.
Gerao do SO:
- Os sistemas operacionais so projetados para executar em uma determinada
classe de mquinas, mas o SO ainda precisa ser configurado para cada
computador especfico.
- O programa SYSGEN obtm informaes relacionadas ao hardware.
- Botting: inicia um computador carregando o kernel.
- Programa de bootstrap - cdigo armazenado na ROM, capaz de localizar o
kernel, carreg-lo na memria e iniciar sua execuo.
Captulo 3: Processos
Sistemas batch - Executam jobs
Sistemas compartilhados no tempo - Executam programas ou tarefas do usurio
O que um processo?
Processo um programa em execuo. A execuo do processo progride de modo
sequencial. Um processo inclui um contador de programa, uma pilha, e uma seo
de dados.
Quais so os estados de um processo?
Novo: quando o processo est sendo criado.
Executando: quando instrues esto sendo executadas.
Esperando: quando o processo est esperando que ocorra algum evento, como
uma operao de E/S.
Pronto: quando o processo est esperando para ser atribudo a um processador.
Terminado: quando o processo termina sua execuo.
O que o PCB?
O Process Control Block se refere s informaes associadas a cada processo.
Entre elas esto o estado do processo, o PC, os registradores da CPU, e
informaes sobre o escalonamento da CPU, o gerenciamento da memria, a
contabilidade e o status de E/S.
Cite a trs filas de escalonamento de processo e explique cada uma delas.
Fila de job - Conjunto de todos os processos no sistema.
Fila de pronto - Conjunto de todos os processo que esto na memria principal,
pronto e esperando para serem executados.
Filas de dispositivo - Conjunto dos processos que esto esperando por um
dispositivo de E/S.
Os processo podem migrar de uma fila para outra.
Cite e explique os dois tipos de escalonadores de processos.
Escalonador de longo prazo (ou escalonador de job) - Seleciona quais
processos da devem ser trazidos para a fila de pronto. Esse escalonador
executado com pouca frequncia, portanto, pode ser lento. Ele tambm o
responsvel por controlar o grau de multiprogramao.
Escalonador a curto prazo (ou escalonador de CPU) - Seleciona qual processo
da fila de pronto deve ser executado em seguida e aloca a CPU para o processo.
Esse escalonador executado com muita frequncia, portanto, deve ser rpido.
Captulo 4: Threads
Thread - Unidade bsica de utilizao de CPU.
Existem processos de uma s thread e processos de vrias threads. Nos processos
multithreaded, cada thread possui uma pilha e um conjunto de registradores, e
compartilham o cdigo, os dados e os arquivos do processo do qual fazem parte.
Os benefcios da programao multithreaded podem ser divididos em 4 categorias:
- Responsividade: Permite que um programa continue funcionando mesmo
que parte dele esteja bloqueada ou realizando uma operao longa.
- Compartilhamento de recursos: Permite que uma aplicao tenha vrias
thread de atividades diferentes dentro do mesmo espao de endereos.
- Economia: mais econmico criar e trocar o contexto de threads do que de
processos.
- Utilizao de arquiteturas multiprocessadas: As threads podem ser
executadas em paralelo nos diferentes processadores, aumentando a
concorrncia.
Existem dois tipos de threads: thread de usurio e threads de kernel.
Existem trs tipos de mapeamento entre thread de usurio e threads de kernel:
- Muitos-para-um: Muitas threads de usurios so mapeadas para uma nica
thread de kernel.
- Um-para-um: Cada thread de usurio mapeada para uma thread de kernel.
- Muitos-para-muitos: Muitas threads de usurios so mapeadas para muitas
threads de kernel.
- Modelo de dois nveis: Semelhante ao modelo muitos-para-muitos, com a
diferena que permite que uma thread de usurio seja mapeada para uma
thread de kernel.
Estados de threads em Java:
- Novo: quando um objeto para a thread criado
- Executvel: quando a chamada do mtodo start() aloca memria para a
nova thread na JVM e chama o mtodo run() para o objeto de thread. O Java
no distingue entre uma thread que est sendo executa e uma thread
elegvel para execuo.
- Bloqueado: quando uma thread realiza uma instruo de bloqueio
- Morto: quando o mtodo run() termina.
Existem duas verses de fork(): uma que duplica todas as threads e outra que
duplica apenas a thread que invocou a chamada de sistema fork().
entre as filas. O escalonamento pode ter prioridade fixa, ou seja, serve tudo na fila
de primeiro plano, e depois tudo na fila de segundo plano. Ou cada fila recebe uma
certa quantidade de tempo de CPU, para evitar estagnao.
Fila de feedback multinvel - Muito semelhante ao algoritmo de fila multinvel
convencional, com a diferena que os processo podem mover entre as diversas
filas. O envelhecimento pode ser implementado dessa forma. O escalonador de fila
de feedback multinvel tem vrios parmetros, entre eles:
- Nmero de filas
- Algoritmos de escalonamento para cada fila
- Mtodo usado para determinar quando fazer o upgrade de um processo ou
rebaix-lo
- Mtodo usado para determinar em qual fila um processo entrar
Escalonamento de mltiplos processadores - Quando mltiplas CPUs esto
disponveis, o escalonamento se torna relativamente mais complexo.
Compartilhamento de carga - Todos os processadores compartilham uma fila de
prontos comum, todos os processos entram nessa nica fila e so escalonado para
qualquer processador disponvel.
Multiprocessamento assimtrico - Todas as decises de escalonamento,
processamento de E/S e outras atividades do sistema tratadas por um nico
processador, somente esse processador acessa as estruturas de dados do sistema,
aliviando o compartilhamento de dados.
Multiprocessamento simtrico - Cada processador auto-escalonado, ou seja,
cada processador examina a fila de prontos e seleciona um processo para executar,
cada processador ter que ser programado com mais cuidado.
Escalonamento de tempo real
Sistemas de tempo real rgido - Exigidos para completar uma tarefa crtica dentro
de um perodo de tempo garantido.
Sistemas de tempo real flexvel - Exige que processo crticos recebam prioridade
em relao aos menos favorecidos.
Escalonamento de thread
Escalonamento local - Como a biblioteca de threads decide qual thread colocar em
um LWP.
Escalonamento global - Como o kernel decide qual thread executar em seguida.
Avaliao de algoritmo
Modelagem determinstica - Seleciona uma carga de trabalho predeterminada em
particular e define o desempenho de cada algoritmo para essa carga de trabalho.
Sincronismo em Java:
- Java oferece sincronismo em nvel de linguagem
- Cada objeto possui um lock associado
- O lock adquirido pela invocao de um mtodo sincronizado e liberado na
sada do mtodo
- As threads esperando para adquirir o lock do objeto so colocadas no
conjunto de entrada para o lock do objeto.
- Quando uma thread invoca wait(): a thread libera o lock do objeto, o estado
da thread definido como blocked e a thread colocada no conjunto de
espera para o objeto.
- Quando uma thread invoca notify(): Uma thread qualquer T do conjunto de
espera selecionada, movida do conjunto de espera para o de entrada, e o
seu estado definido como runnable.
- A chamada notify() seleciona uma thread qualquer do conjunto de espera.
- A chamada notifyAll() seleciona todas as threads no conjunto de espera e as
move para o conjunto de entrada - mais conservadora.
- Ao invs de sincronizar um mtodo inteiro, podemos declarar blocos de
cdigo como sincronizados.
Transaes indivisveis
Modelo do sistema:
- Garante que as operaes aconteam como uma nica unidade lgica de
trabalho, em sua inteireza, ou no aconteam.
- Transao - Coleo de instrues ou operaes que realiza uma nica
funo lgica.
Recuperao baseada em log:
- Registro de informaes em armazenamento estvel sobre todas as
modificaes feitas por uma transao.
- Undo e Redo.
- Pontos de verificao: servem para encurtar o log e o tempo de
recuperao.
Transaes concorrentes:
- Serializao: A execuo concorrente de transaes precisa ser equivalente
ao caso em que essas transaes so executadas em srie, em alguma
ordem qualquer.
Protocolo de lock:
- Garante a serializao pela associao de um a lock a cada item de dados e
a exigncia de que cada transao siga um protocolo de lock.
- Modo compartilhado: Se T tem lock de modo compartilhado no item Q,
ento T pode ler Q mas no pode escrever em Q.
- Modo exclusivo: Se T tem lock de modo exclusivo no item Q, ento T pode
ler e escrever em Q.
Protocolo de lock em duas fases:
- Garante a serializao, ao exigir que cada transao emita requisies de
lock e unlock em duas fases.
- Fase de crescimento: Uma transao s pode obter locks
- Fase de encolhimento: Uma transao s pode liberar locks.
- No impede deadlock.
Protocolos baseados em estampa de tempo:
- Seleciona uma ordenao entre transaes com antecedncia
- Associa uma estampa de tempo fixa e exclusiva cada transao
- Garante a serializao e a ausncia de deadlocks.
Captulo 7: Deadlocks
Deadlock: Um conjunto de processos est em um estado de deadlock quando cada
processo no conjunto est esperando por um evento que s pode ser causado por
outro processo no conjunto.
Quando temos um conjunto de processo bloqueados, cada um mantendo um
recurso e esperando para adquirir um recurso mantido por outro processo no
conjunto, dizemos que esse conjunto est em um estado de deadlock.
Tipos de recurso: ciclos de CPU, espao de memria, dispositivos de E/S.
Cada tipo de recurso possui instncias.
Cada processo utiliza um recurso da seguinte forma: requisio do recurso - uso do
recurso - liberao do recurso.
Um deadlock pode surgir se quatro condies forem atendidas simultaneamente em
um sistema:
1) Excluso mtua: apenas um processo de cada vez pode usar um recurso
2) Manter e esperar: um processo mantendo pelo menos um recurso est
esperando para adquirir outros recursos mantidos por outros processos
3) No preempo: um recurso s pode ser liberado voluntariamente pelo
processo que o mantm, depois que esse processo tiver terminado sua tarefa
4) Espera circular: existe um conjunto {P1, P2, , Pn} de processos
esperando, tal que P1 est esperando por um recurso que mantido por P2,
P2 est esperando por P3, , Pn-1 est esperando por Pn e Pn est
esperando por P1.
Grafo de alocao de recursos:
Grafo consistindo em um conjunto de vrtices V e um conjunto de arestas E. Onde
V particionado em dois tipos: P = {P1, P2, , Pn} que consiste no conjunto de
todos os processos ativos no sistema; e R = {R1, R2, , Rm} que consiste no
conjunto de todos os tipos de recursos no sistema.
Uma aresta de requisio uma aresta direcionado Pi -> Rj;
Uma aresta de atribuio uma aresta direcionada Rj -> Pi.
Processo so representados por um crculo e recursos por um quadrado.
Se o grafo no contm ciclos, ento no h deadlock.
Se o grafo contm um ciclo e cada recurso possui apenas uma instncia, ento h
deadlock.
Se o grafo contm um ciclo, mas os recursos possuem vrias instncias, ento h a
possibilidade de haver deadlock.
Mtodos para tratamento de deadlocks:
- Garantir que o sistema nunca entrar em um estado de deadlock
- Permitir que o sistema entre em um estado de deadlock e depois se recupere
- Ignorar o problema e fingir que os deadlocks nunca ocorrem no sistema
Preveno de deadlock: Garante que pelo menos uma das condies necessrias
para ocorrer deadlock no seja satisfeita.
- Excluso mtua: precisa ser mantida para recursos no compartilhveis.
- Manter e esperar: garantir que sempre que um processo requisitar um
recurso, ele no mantm quaisquer outros recursos. O que pode ser feito
exigindo que o processo solicite e tenha todos os seus recursos alocados
antes de iniciar sua execuo, ou exigindo que o processo solicite recursos
somente quando o processo no tiver recursos. A utilizao de recursos pode
ser baixa, e h a possibilidade de starvation.
- No preempo: se um processo estiver mantendo alguns recursos e
requisitar outro recurso que no possa ser alocado imediatamente a ele,
ento todos os recursos retidos so preemptados e acrescentados lista de
recursos que o processo est esperando. O processo s poder ser
reiniciado quando reaver seus antigos recursos, assim como os novos que
solicitou.
- Espera circular: Impe uma ordenao total de todos os tipos de recursos e
exige que cada processo requisite recursos em ordem crescente de
enumerao.
Evitando deadlock: Exige que o SO receba com antecedncia informaes
adicionais com relao a quais recursos um processo requisitar e usar durante
seu tempo de vida.
Estado seguro: Quando um processo solicita um recurso disponvel, o sistema
deve decidir se a alocao imediata deixa o sistema em um estado seguro. O
sistema est em um estado seguro se houver uma sequncia <P1, P2, , Pn> de
todos os processos nos sistemas tal que, para cada Pi, os recursos que Pi ainda
pode solicitar possam ser satisfeitos pelos recursos atualmente disponveis mais os
recursos mantidos por todo Pj, com j < i.
Se o sistema est em um estado seguro, ento no h deadlock.
Se um sistema est em um estado inseguro, ento pode haver deadlock.