Buscar

Super Resumo de Sistemas Operacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Super Resumo de SO
 
Créditos: 
Resumo do capítulo 1: Mario Monteiro 
Resumo do capítulo 2: Eduardo Franca 
Resumo do capítulo 3 parte 1: Guilherme Bezerra 
Resumo do capítulo 3 parte 2: Rennê Lira 
Resumo do capítulo 4: Devon Seale 
Resumo do capítulo 5: Bernardo Bheckmann 
Fontes: Livro básico de SO, transparências, aulas de revisão 
CAPÍTULO 1:
 
SISTEMA OPERACIONAL
 
* Propósito - Fornecer um ambiente no qual o usuário possa executar programas. Uma vez que o hardware 
por si só não é particularmente fácil de usar, programas e aplicativos são desenvolvidos, e são controlados 
pelo sistema operacional, já que eles exigem certas operações comuns(I/O, CPU, Memória), essas funções 
comuns de controle e alocação de recursos são reunidas em um único software(SO). 
*Principal Objetivo - Tornar o uso do sistema de computação conveniente. Executar programas de usuário 
e tornar fácil a resolução dos problemas de usuário. Sua missão e tornar a tarefa computacional mais fácil. 
* Meta secundaria - Usar o hardware do computador de forma eficiente. Importante principalmente para 
sistemas multiusuário compartilhados e de grande porte. 
DEFINICOES 
1- Programa que atua como intermediário entre o usuário e o hardware de um computador. 
2- Componente importante de praticamente todo sistema de computação. 
3- Alocador de recursos. 
4- Programa de controle(controlar a execução de programas de usuário para evitar erro e uso indevido do 
computador) 
5 - Programa que esta sempre executando no computador(núcleo ou kernel). 
PRINCIPAIS TAREFAS DO SISTEMA OPERACIONAL 
1 - Controlar e coordenar o uso do hardware entre os vários programas aplicativos para os vários 
usuários(processadores de texto, planilhas eletrônicas, compiladores e navegadores Web). 
2 - Fornecer o meio para o uso adequado desses recursos(uso do hardware) na operação do sistema de 
computador. O sistema operacional não executa nenhuma função útil por si só mesma, fornece um ambiente 
no qual outros programas podem realizar tarefas úteis. 
3 - Alocar recursos tais como: tempo de CPU, espaço na memória, espaço de armazenamento de arquivos, 
dispositivos de entrada/saída(I/O).e assim por diante. O sistema operacional gerencia esses recursos e os 
aloca a programas e usuários específicos de acordo com a necessidade para execução de tarefas. Caso haja 
conflitos entre os pedidos, cabe ao sistema operacional gerenciar que pedidos serão atendidos. 
SISTEMAS EM LOTE(BATCH) 
Sistema operacional usado geralmente nos primeiros computadores os quais eram maquinas 
exageradamente grandes(em termos físicos), operados a partir de um console. 
Funcionalidade - 
* Dispositivos de entrada: leitoras de cartões e unidades de fita. 
* Dispositivos de saída: impressoras de linhas, unidades de fita e perfuradoras de cartões. 
Interação do usuário - O usuário não interagia diretamente com os sistemas de computação, em vez disso, 
ele preparava um job(tarefa), que consistia no programa, e dava para o operador do computador. 
Principal tarefa - Transferir controle automaticamente de um job para o próximo. O sistema operacional 
estava sempre residente na memória. 
Vantagens - Simplicidade. 
Desvantagens - 
1- CPU muitas vezes fica ociosa porque as velocidades dos dispositivos mecânicos de I/O são mais 
lentas do que a dos dispositivos eletrônicos. 
EVOLUCAO DOS SISTEMAS EM LOTE(BATCH) 
Escalonamento - A introdução da tecnologia de disco permitiu que o sistema operacional mantivesse todos 
os jobs em um disco,. Com acesso direto a vários jobs, o escalonamento de jobs e executado para usar 
recursos e realizar tarefas de forma eficiente. 
Funcionalidade - O sistema operacional escolhe e começa a executar um dos jobs na memória. Em alguns 
momentos, o job terá de esperar a conclusão de alguma tarefa(I/O), logo depois ele simplesmente passa para 
outro job e o executa. Quando esse job precisa esperar, a CPU passa para outro job e assim por diante. Com 
a finalidade de não manter a CPU ociosa. 
Vantagem - Possibilita a multiprogramação, o qual aumenta a utilização da CPU organizando jobs de forma 
que a CPU sempre tenha um job pra executar. 
Desvantagem - Difícil implementação, pois exige tomadas de decisões inteligentes(caso de vários jobs 
estarem prontos para executar ao mesmo tempo). 
SISTEMAS DE TEMPO COMPARTILHADO 
Tempo compartilhado ou Multitarefa - Extensão lógica da multiprogramação, onde a CPU executa 
vários jobs alternando entre eles, mas as trocas ocorrem com tanta freqüência que os usuários podem 
interagir com cada programa durante sua execução. 
Principal Vantagem - Permitir a comunicação direta entre o usuário e o sistema. O usuário passa instruções 
ao sistema operacional ou a um programa diretamente, usando um teclado ou um mouse, e espera por 
resultados imediatos. 
Funcionalidade - O escalonamento de CPU e a multiprogramação e usado para fornecer a cada usuário uma 
pequena parte de um computador de tempo compartilhado. Cada usuário tem pelo menos um programa 
separado na memória. Um programa carregado na memória e em execução e normalmente chamado de 
processo. Quando um processo executa, geralmente executa durante um curto espaço de tempo antes de 
terminar ou de precisar realizar uma operação de I/O A operação de entrada/saída pode ser interativa, ou 
seja, a saída para o usuário e feita em um monitor e a entrada e a partir de um teclado, mouse e outro 
dispositivo. 
 
Desvantagem - O sistemas operacionais de tempo compartilhado são ainda mais complexos do que os 
sistemas operacionais multiprogramados. Muitos recursos devem ser implementados. São difíceis e caros de 
construir. 
Recursos implementados: 
1 - Memória Virtual - Recurso implementado em sistemas de tempo compartilhado em virtude da busca 
por eficiência em termos de tempo de resposta (já que vários jobs são mantidos na memória ao mesmo 
tempo). E preciso, em geral, transferir rapidamente jobs da memória principal para o disco que serve de 
extensão da memória principal. 
Vantagem do uso da Memória Virtual - Programas podem ser maiores do que a memória física; abstrair 
a memória principal em um vetor grande e uniforme de armazenamento, separando a memória lógica 
conforme vista pelo usuário da memória física; Liberar programadores da preocupação relativa aos limites 
da memória. 
2 - Gerencia de Arquivos - O sistema de arquivos reside em uma coleção de discos; portanto, o 
gerenciamento de disco deve ser realizado. 
3 - Mecanismo de execução concorrente - requer esquemas sofisticados de escalonamento de CPU. Para 
garantir a execução correta, o sistema deve fornecer mecanismos para a comunicação e sincronização de 
jobs, e pode garantir que os jobs não fiquem presos em deadlocks, eternamente esperando uns pelos outros. 
SISTEMAS DE COMPUTADORES PESSOAIS(PCs) 
Surgimento - anos 70. No inicio a CPU não tinha os recursos necessários para proteger um sistema 
operacional dos programas de usuário. Os sistemas operacionais para PC, não eram nem multiusuário nem 
multitarefa. 
Evolução - As metas desses sistemas operacionais para PC procuravam buscar a conveniência e a 
capacidade de resposta ao usuário, ao invés de tentar maximizar a utilização de CPU e periféricos. 
SISTEMAS PARALELOS: 
Definição: Sistemas que tem mais de um processador em comunicação ativa, compartilhando o 
barramento, o clock e, as vezes, a memória e os dispositivos periféricos. chamados SISTEMAS 
FORTEMENTE ACOPLADOS(tightly coupled). 
Vantagens: 
1 - : Maior produção(throughput). Aumentando o numero de processadores, espera-se realizar mais trabalho 
em menos tempo. 
2 - Economizar dinheiro em comparação com vários sistemas de um único processador, porque os 
processadores podem compartilhar periféricos, armazenamento de massa e fontes de alimentação. Se vários 
programasforem processar o mesmo conjunto de dados, fica mais barato armazenar esses dados em um 
disco e fazer com que todos os processadores os compartilhem, em vez de ter muitos computadores com 
discos locais e muitas copias dos dados. 
3 - Aumento da confiabilidade. Se as funções puderem ser distribuídas adequadamente entre vários 
processadores, a falha de um processador não vai interromper o sistema, apenas reduzira sua velocidade. 
Sistemas projetados para degradação normal também são chamados de tolerantes a falhas. 
Tipos de multiprocessamento: 
1- simétrico - Cada processador executa uma copia idêntica do sistema operacional, e essas copias se 
comunicam entre si conforme necessário. 
2 - assimétrico - Cada processador e atribuída uma tarefa especifica. Um processador mestre controla o 
sistema; os outros processadores procuram o mestre para receber instruções ou tem tarefas predefinidas. 
Esse esquema define uma relação mestre-escravo. O processador mestre escalona e aloca trabalho para os 
processadores escravos. 
principal diferença - O resultado de hardware ou software. Hardware especial pode diferenciar os 
múltiplos processadores, ou o software pode ser escrito para permitir apenas um mestre e vários escravos. 
SISTEMAS DE TEMPO REAL 
Definição: Sistema de propósito especial em que e usado quando existem requisitos rígidos de tempo na 
operação de um processador ou no fluxo de dados; assim, ele geralmente e usado como um dispositivo de 
controle em uma aplicação dedicada. 
Funcionalidade: Os sensores levam dados ao computador que deve analisar os dados e talvez ajustar os 
controles para modificar as entradas dos sensores. Tem limitações de tempo bem definidas e fixas. O 
processamento tem de ser feito dentro dos limites definidos ou o sistema falhara. 
Utilização: Controlar experimentos científicos, sistemas de imagens medicas, sistemas de controle 
industrial, sistemas de injeção de combustível em motores de veículos, controladores de eletrodomésticos e 
sistemas de armas. 
Tipos de sistema de tempo real: 
1 - Critico: Garante que as tarefas críticas sejam executadas a tempo. Essa meta requer que todos os atrasos 
no sistema sejam limitados, desde a recuperação de dados armazenados ate o tempo que o sistema 
operacional precisa para terminar qualquer solicitação realizada. 
2 - Não Critico - Uma tarefa critica de tempo real recebe prioridade sobre as demais tarefas e retém essa 
prioridade ate ser concluída. Como ocorre com os sistemas de tempo real critico, os atrasos do kernel 
precisam ser limitados: uma tarefa de tempo real não pode ficar esperando indefinidamente para execução 
pelo kernel. O tempo real não-critico e uma meta alcançável que pode ser combinada com outros tipos de 
sistemas. Os sistemas de tempo real não-critico, no entanto, tem utilidade mais limitada do que os sistemas 
de tempo real crítico. 
SISTEMAS DISTRIBUIDOS 
Definição: 
1 - Coleção de processadores que não compartilham memória ou clock. Em vez disso, cada processador tem 
sua própria memória local. Os processadores se comunicam entre si através de varias linhas de 
comunicação, tais como barramentos ou linhas telefônicas de alta velocidade. Geralmente chamados de 
sistemas fracamente acoplados(loosely coupled systems). 
Sistema operacional distribuído - Um sistema operacional distribuído e um ambiente menos autônomo: os 
diferentes sistemas operacionais interagem o suficiente para dar a impressão de que existe um único sistema 
operacional controlando a rede. 
Funcionalidade: Um sistema operacional de rede e um sistema operacional que fornece recursos como 
compartilhamento de arquivos através da rede e isso inclui um esquema de comunicação que permite a 
processos diferentes em computadores diferentes trocarem mensagens. Um computador que executa um 
sistema operacional de rede atua independentemente de todos os outros computadores na rede, embora 
esteja ciente da rede e seja capaz de se comunicar com outros computadores ligados na rede. 
Tópico Extra: Conceito de Spool 
Spool é uma técnica usada por sistemas batch na qual o sistema sobrepõe o uso de I/O de um job pelo 
processamento de outro job. Isto é enquanto um job fica esperando pelo resultado de um I/O podemos 
processar outro job em seu lugar e posteriormente retomar a execução do primeiro job. É uma aplicação do 
conceito de multiprogramação em sistemas batch para impedir que a CPU fique ociosa durante operações de 
I/O 
CAPÍTULO 2:
 
1.Introdução 
O sistema operacional precisa garantir a operação correta do sistema de computação. Para que os programas 
de usuário não interfiram na operação adequada do sistema, o hardware deve fornecer os mecanismos 
apropriados para garantir o comportamento correto. Mais adiante vamos descrever a arquitetura de 
computação básica que torna possível a criação de um sistema operacional funcional. 
Operação dos sistemas de computação: 
Um sistema de computação de uso geral moderno consiste em uma CPU e uma série de controladoras de 
dispositivos que estão conectadas através de um barramento comum que fornece acesso à memória 
compartilhada. A CPU e as controladoras de dispositivos podem executar de modo concorrente, competindo 
pelos ciclos de memória. 
Para que um computador comece a funcionar ele precisa ter um programa inicial para executar. Esse 
programa deve saber como carregar o sistema operacional e iniciar a execução do sistema. O SO inicia a 
execução do primeiro processo e espera que algum evento ocorra. 
A ocorrência de um evento é geralmente assinalada por uma interrupção de hardware ou software. O 
hardware pode disparar uma interrupção a qualquer momento enquanto que o software dispara uma 
interrupção através de uma operação especial denominada chamada ao sistema ou system call. 
As primeiras 100 posições de memória, mais ou menos, 
são reservadas para as rotinas de serviço de interrupção para os vários dispositivos. Esse vetor de memória é 
chamado de vetor de interrupção. Os sistemas operacionais são baseados em interrupções. Se não houver 
processos para executar, nenhum dispositivo de I/O ao qual fornecer serviço e nenhum usuário a ser 
atendido, um SO ficará parado esperando que algo aconteça. Os eventos são quase sempre sinalizados por 
uma interrupção ou um trap que é uma exceção gerada por software causada por um erro ou por um pedido 
específico de um programa de usuário para que um serviço de SO seja executado. 
Estrutura de I/O: 
Cada controladora de dispositivo está encarregada por um tipo específico de dispositivo. Uma controladora 
de dispositivo mantém algum armazenamento em buffer local e um conjunto de registradores de propósito 
especial e é responsável pela passagem dos dados entre os dispositivos periféricos que ela controla e o 
buffer local. O tamanho do buffer local em uma controladora varia, dependendo do dispositivo específico 
sendo controlado. 
Interrupções de I/O: 
Para começar uma operação de I/O, a CPU carrega os registradores adequados dentro da controladora de 
dispositivo que por sua vez examina o conteúdo desses registradores para determinar que ação deve ser 
tomada. Se ocorrer um pedido de leitura, a controladora começará a transferir dados do dispositivo para o 
seu buffer local. Posteriormente, a controladora informa a CPU que terminou a operação disparando uma 
interrupção.Uma vez iniciada a operação de I/O, dois roteiros são possíveis. No caso mais simples, a I/O é 
iniciada; em seguida, quando tiver sido concluída, o controle é devolvido para o processo de usuário. Esse 
caso é denominado I/O síncrona.A outra possibilidade é a I/O assíncrona que devolve o controle ao 
programa de usuário sem esperar que a I/O termine. A I/O continua enquanto outras operações de sistema 
ocorrem. 
A tabela de status de dispositivo contém uma entrada para cada dispositivo de I/O e cada entrada indicao 
tipo, endereço e estado do dispositivo( não funciona, ocioso ou ocupado). 
Se o dispositivo estiver ocupado com um pedido, o tipo de pedido e outros parâmetros serão armazenados 
na entrada da tabela para aquele dispositivo, podendo outros processos emitirem pedidos ao mesmo 
dispositivo. Logo o SO mantém uma fila de espera para cada dispositivo de I/O. 
DMA: 
Para resolver o problema de transferência de dados entre o buffer da controladora de um dispositivo e a 
memória com a CPU interferindo nesse processo foi criado o acesso direto a memória (DMA). 
O DMA é usado para dispositivos de alta velocidade e transfere um bloco inteiro de dados entre o próprio 
buffer de armazenamento e memória gerando apenas uma interrupção por bloco, ao invés de uma 
interrupção por palavra. A controladora de DMA rouba ciclos de memória da CPU diminuindo a 
velocidade de execução da mesma. 
Estrutura de armazenamento: 
A memória principal ou RAM dinâmica(DRAM) é um dispositivo de armazenamento volátil que perde seu 
conteúdo quando há falta de energia ou esta é desligada. Assim a maioria dos sistemas de computação 
fornece armazenamento secundário como uma extensão da memória principal. 
Memória principal: 
A memória principal e os registradores incorporados ao próprio processador são o único tipo de memória 
que a CPU pode acessar diretamente. Logo, quaisquer instruções em execução, e quaisquer dados sendo 
usados pelas instruções, devem estar em um desses dispositivos de armazenamento de acesso direto. 
A I/O mapeada em memória fornece acessos mais convenientes aos dispositivos de I/O . Nesse caso, faixas 
de endereços de memória são reservadas e mapeadas nos registradores de dispositivos. Leituras e escritas 
nesses endereços de memória fazem com que os dados sejam transferidos de e para os registradores de 
dispositivos. 
O acesso à memória pode levar muitos ciclos até ser concluído e o processador aguarda até que os dados 
necessários para uma determinada instrução estejam disponíveis. 
Discos magnéticos: 
Os discos magnéticos fornecem uma boa parte do armazenamento secundário para os sistemas de 
computação modernos. Cada lâmina de disco tem uma forma plana circular, como um CD e as informações 
são armazenadas por meio da escrita magnética nas lâminas. 
Braço de disco, que move todas cabeças como uma unidade; trilhas, que são subdivisões das lâminas, são 
subdivididas em setores; cilindro, que é um conjunto de trilhas que está em uma posição do braço; todos 
esses elementos formam o mecanismo do disco magnético. 
A capacidade de armazenamento dos discos magnéticos comuns é medida em gigabytes. 
Fitas magnéticas: 
 A fita magnética foi usada como um meio inicial do armazenamento secundário, sendo relativamente 
permanente e podendo armazenar grandes quantidades de dados. Seu tempo de acesso é lento em relação à 
memória principal e mil vezes mais lento do que a dos discos magnéticos, sendo usadas basicamente para 
backup, para o armazenamento de informações usadas com pouca freqüência e como meio de transferir 
informações de um sistema para outro. 
 
Hierarquia de armazenamento: 
A grande variedade de sistemas de armazenamento em um sistema de computação pode ser organizada em 
uma hierarquia de acordo com a velocidade e custo. Os níveis mais altos são caros e rápidos. Descendo na 
hierarquia o custo por bit diminui, enquanto o tempo de acesso aumenta. 
Cache: 
Cache é um sistema de armazenamento mais rápido onde informações são copiadas temporariamente as 
quais são acessadas posteriormente visando um melhor desempenho do sistema computacional. 
Como caches têm tamanho limitado, a gerência de caches é um importante problema de projeto. A memória 
funciona como um cache rápido para a memória secundária, já que os dados no armazenamento secundário 
devem ser copiados para a memória principal para o uso e os dados devem estar na memória principal antes 
de serem removidos para o armazenamento secundário por segurança. 
 
Coerência e consistência: 
Em uma estrutura de armazenamento hierárquico, os mesmos dados podem aparecer em diferentes níveis do 
sistema de armazenamento. 
Em ambientes multitarefa deve-se tomar muito cuidado para garantir que, se vários processos desejam 
acessar um dado A, cada um desses processos obterá o valor atualizado de A mais recente. Logo, se o valor 
de A for alterado, esse valor deverá ser imediatamente refletido em todos os outros caches nos quais A 
reside. Essa situação é chamada de coerência de cache dando uma certa consistência ao sistema 
computacional. 
Proteção de Hardware: 
Os sistemas de computação eram sistemas operados por programador com usuário único. À medida que os 
sistemas operacionais se desenvolveram o controle passou para o sistema operacional. O SO fazia um 
compartilhamento de recursos e adotava a multiprogramação melhorando a utilização do SO, mas 
aumentando os problemas. Muitos processos poderiam ser afetados negativamente por um bug em um dos 
programas, logo sistemas de proteção ( modo dual, proteção de I/O, memória, CPU) surgiram visando 
acabar com esse tipo de problema. 
Operação modo dual: 
Para garantir a operação adequada, devemos proteger o sistema operacional e todos os outros programas e 
seus dados de qualquer programa funcionando mal. Para isso dois modos de operação foram criados: modo 
usuário e modo supervisor. Um bit de modo é acrescentado ao hardware do computador para indicar o modo 
correto: (0) monitor, (1) usuário. 
Com isso é possível distinguir entre uma tarefa executa da em nome do SO ou em nome do usuário. O modo 
dual de operação fornece uma forma de proteger o SO contra usuários errantes, protegendo também usuários 
errantes uns dos outros. Essa proteção é alcançada através do uso de instruções privilegiadas, que são 
instruções de máquina que só podem ser executadas no modo monitor. 
Proteção de I/O: 
Para evitar que um usuário execute uma operação ilegal de I/O definimos todas as instruções de I/O como 
sendo privilegiadas. Para que a proteção de I/O seja completa, é preciso Ter certeza de que um programa de 
usuário nunca terá o controle do computador no modo monitor. Pois se isso ocorrer o programa de usuário 
pode fazer operações de I/O ilegais, acessando posições de memória no próprio SO ou recusando-se a 
liberar a CPU. 
 
Proteção de memória: 
Para garantir a operação correta é preciso fornecer proteção de memória pelo menos para o vetor de 
interrupção e as rotinas de serviço de interrupção do SO. 
Em geral, é preciso proteger o SO do acesso por programas de usuário e também proteger os programas dos 
usuários uns dos outros. 
Para separar o espaço de memória de cada programa é preciso Ter a capacidade de determinar a faixa de 
endereços que o programa pode acessar e proteger a memória que estiver válida fora desse espaço. É 
possível fornecer essa proteção usando dois registradores: o de base e o de limite. O registrador base 
mantém o menor endereço de memória física válida e o registrador limite o tamanho da faixa de 
endereçamento. 
Proteção de CPU: 
A proteção de CPU garante que o SO mantenha o controle evitando que um programa de usuário fique 
tempo demais utilizando a CPU. O timer(temporizador) registra o tempo em que cada programa deve 
utilizar a CPU. O timer possui vários usos, entre os quais destacam-se o compartilhamento de tempo e a 
computação da hora atual. 
Arquitetura geral do sistema: 
Para melhorar o sistema de computação, a multiprogramação e o tempo compartilhado são técnicas que 
levaram a modificações na arquitetura básica do computador, permitindo ao SO manter controle sobre o 
sistema de computação. O controle deve ser mantido para fornecer operação contínua e correta. 
Uma instrução de I/O é sempre privilegiada e cabe a qualquer programa de usuário solicitar ao monitorque 
faça I/O em nome do usuário através chamadas ao sistema. 
Uma chamada ao sistema é feita de várias formas e em todas elas um método é usado por processo para 
solicitar ação pelo SO. Uma chamada ao sistema é uma espécie de exceção para uma posição específica no 
vetor de interrupção com essa exceção executada por uma instrução chamada trap. 
Quando uma chamada ao sistema é executada, ela é tratada pelo hardware como uma interrupção de 
software. O controle passa pelo vetor de interrupção para a rotina de serviço no SO, e o bit de modo é 
definido para o modo monitor. O monitor examina a instrução de interrupção, determinando qual chamada 
ao sistema ocorreu, verifica se os parâmetros(tipo de serviço, informações adicionais, etc) estão corretos e 
válidos, executa o pedido e devolve o controle para a instrução após a chamada ao sistema. 
Alguns exercícios de prova: 
1. Existem nos ambientes computacionais mecanismos de proteção implementados pelo próprio 
hardware. Identifique dois destes e explique os seus próprios e de que forma são implementados 
Base de resposta: ver seção Proteção de Hardware 
2. O que são instruções privilegiadas e não privilegiadas? Qual a relação dessas instruções com os 
modos de execução? 
Base de resposta: ver seção Modo Dual. 
 
CAPÍTULO 3:
 
Gerência de processos: 
Processo é um programa em execução 
Processo precisa de recursos (tempo de CPU, memória,arquivos, dispositivos de I/O) 
Recursos são dados ao processo quando ele é criado ou alocado na sua execução 
Ao término do processo o SO solicitará de volta quaisquer recursos reutilizáveis 
Programa Processo. 
Programa é uma entidade passiva, como o conteúdo de um arquivo em disco. 
Processo é uma entidade ativa, que possui um contador de programa especificando a próxima instrução. 
A execução de um processo dever ser seqüencial: A CPU executa uma instrução do processo após a outra 
até o processo terminar. 
Além disso a qualquer momento no máximo uma instrução é executada em nome do processo. 
Conseqüência: Embora dois processos possam ser associados com o mesmo programa, eles são 
considerados duas seqüências de execução separadas. 
Em um sistema existem processos de sistema operacional(aqueles que executam código do sistema) e 
processos de usuário(que executam código de usuário). 
Esses processos (usuário e de sistema) executam concorrentemente, multiplexando a CPU entre eles. 
Atividades em relação a gerência de processos:
 
Criar e excluir processos de usuário e de sistema. 
Suspender e retomar processos. 
Fornecer mecanismos para a sincronização de processos. 
Fornecer mecanismos para a comunicação de processos. 
Fornecer mecanismos para o tratamento de deadlocks. 
Gerência da memória principal: 
A memória principal é um repositório de dados rapidamente acessíveis compartilhados pela CPU e 
dispositivos de I/O. 
A CPU lê as instruções da memória principal no ciclo de busca de instruções, e lê e grava dados da memória 
principal durante o ciclo de busca de dados. 
As operações de I/O implementadas via DMA também fazem a leitura e escrita na memória principal. A 
memória principal geralmente é o único dispositivo de armazenamento grande que a CPU pode endereçar e 
acessar diretamente. Para que a CPU processe os dados do disco, esses dados devem primeiro ser 
transferidos para a memória principal por chamadas de I/O geradas pela CPU.Do mesmo modo, as 
instruções devem estar na memória principal para que a CPU as execute. É preciso manter vários programa 
na memória para melhorar a utilização da CPU e a velocidade da resposta do computador aos seus usuários. 
Atividades em relação a gerência de memória principal:
 
Manter registro das partes da memória que estão sendo usadas no momento e por quem 
Decidir que processos deverão ser carregados na memória quando houver espaço disponível. 
Alocar e desalocar espaço na memória, conforme necessário. 
Gerência de arquivos: 
Para uso conveniente do sistema de computação, o sistema operacional fornece uma visão lógica uniforme 
do armazenamento de informações. 
O sistema operacional abstrai as propriedades físicas de seus dispositivos de armazenamento para definir 
uma unidade lógica de armazenamento, o arquivo. 
O sistema operacional mapeia os arquivos nos meios físicos e acessa esses arquivos através dos dispositivos 
de armazenamento. 
Atividades em relação a gerência de arquivos:
 
Criar e excluir arquivos 
Criar e excluir diretórios 
Fornecer suporte a primitivas para manipular arquivos e diretórios 
Mapear arquivos no armazenamento secundário 
Fazer backup de arquivos em meios de armazenamento estáveis(não-voláteis) 
Gerência do sistema de I/O: 
Um dos objetivos de um sistema operacional é ocultar as peculiaridades de dispositivos de hardware 
específicos do usuário. 
Consiste de: 
Um componente de gerência de memória que inclui buffering, armazenamento em cachê e spooling. 
Uma interface geral de driver de dispositivo. 
Drivers para dispositivos de hardware específicos. 
Apenas o driver de dispositivos conhece as peculiaridades do dispositivo específico ao qual foi atribuído. 
Gerência de armazenamento secundário: 
Gerência de espaço livre 
Alocação de espaço (armazenamento) 
Escalonamento de disco 
Redes: 
Um sistema distribuído reúne sistemas fisicamente separados e possivelmente heterogêneos em um único 
sistema coerente, fornecendo ao usuário acesso aos vários recursos mantidos pelo sistema. 
Os sistema operacionais geralmente generalizam o acesso à rede como uma forma de acesso a arquivos, 
com os detalhes da rede estando contidos no driver de dispositivo de interface da rede. 
Sistemas de Proteção: 
Se um sistema tiver vários usuários e permitir a execução concorrente de múltiplos processos, esses 
processos deverão ser protegidos das atividades uns dos outros 
O hardware de endereçamento de memória garante que um processo só pode executar dentro do seu próprio 
espaço de endereçamento. 
O timer garante que nenhum processo pode obter controle da CPU sem mais tarde ceder esse controle. 
Os registradores de controle de dispositivo não são acessíveis aos usuários, de modo que a integridade dos 
vários dispositivos periféricos é protegida. 
A proteção é qualquer mecanismo para controlar o acesso de programas, processos ou usuários aos recursos 
definidos por um sistema de computação. 
 
Sistema interpretador de comandos: 
É a interface entre o usuário e o sistema operacional 
Sua função é obter a instrução de controle seguinte e executa-la 
Serviços de sistemas operacionais:
 
Execução de programa: 
O sistema deve ser capaz de carregar um programa na memória e executar esse programa. 
O programa deve ser capaz de encerrar a sua execução, quer de forma normal ou anormal (indicando erro). 
Operações de I/O: 
Para fins de eficiência e proteção, os usuários em geral não podem controlar os dispositivos de I/O 
diretamente. 
Portanto, o sistema operacional deve fornecer os meios para realizar as operações de entrada e saída. 
Manipulação do sistema de arquivos: 
O SO deve dar suporte para que os programas possam ler,gravar, criar e excluir arquivos. 
Comunicações: 
Existem muitas circunstâncias nas quais um processo precisa trocar informações com outro processo. 
Entre processos executando no mesmo computador: se dá através de memória compartilhada. 
Entre processos executando em computadores diferentes: se dá através da troca de mensagens na qual 
pacotes de informações são movidos entre processos pelo sistema operacional 
Detecção de erros: 
O sistema operacional precisa estar constantemente ciente de possíveis erros.Para cada tipo de erro o 
sistema operacional deve tomar a medida adequada para garantir uma computação correta e consistente 
Funções auxiliares
 
Alocaçãode recursos 
O sistema deve alocar os diversos recursos necessários para os múltiplos processo dos múltiplos usuários 
levando em conta certos fatores como o fato de que alguns recursos tem um gerenciamento especial (CPU, 
memória, arquivos) 
Contabilização: 
É preciso manter um registro dos usuários que utilizam os recursos do computador, em que quantidade e que 
tipos de recursos. 
Esse registro pode ser usado para contabilização (para que os usuários possam ser faturados) ou 
simplesmente para acumular estatística de uso. 
As estatísticas podem ser uma ferramenta valiosa para os pesquisadores que desejam reconfigurar o sistema 
para melhorar os serviços de computação 
 
Proteção: 
Os proprietários das informações armazenadas em um sistema de computação multiusuário podem desejar 
controlar o uso dessas informações. A proteção visa garantir que todo acesso aos recursos do sistema seja 
controlado. 
Chamadas ao Sistema (System calls): 
As chamadas ao sistema (system calls) fornecem a interface entre um processo e o sistema operacional. 
Geralmente estão disponíveis como instruções em linguagem assembly.Certos sistemas permitem que as 
chamadas sejam feitas diretamente de um programa de linguagem de nível mais alto, lembrando chamadas a 
sub-rotinas. Nas chamadas aos sistemas geralmente se passam algumas informações necessárias além de 
simplesmente identificar ao chamada ao sistema operacional. 
Três métodos gerais são usados para passar parâmetros para o sistema operacional:
 
Passar os parâmetros em registradores 
Abordagem simples 
Mas em alguns casos pode haver mais parâmetros do que registradores 
Armazenar em um bloco ou tabela na memória e o endereço da tabela é passado como parâmetro ao 
registrador. 
Os parâmetros podem ser alocados, ou inseridos, na pilha pelo programa e lidos e retirados da pilha pelo 
sistema operacional. 
Alguns sistemas operacionais preferem os métodos de bloco ou pilha, porque essas abordagens não limitam 
o número ou tamanho dos parâmetros sendo passados. 
As chamadas ao sistema podem ser agrupadas basicamente em cinco categorias:
 
Controle de processos 
Manipulação de arquivos 
Manipulação de dispositivos 
Manutenção de informações 
Comunicações 
Programas de Sistema: 
Um aspecto de um sistema moderno é a coleção de programas de sistema. Os programas de sistema 
fornecem um ambiente conveniente para o desenvolvimento e a execução de programas. 
Podem ser divididos nestas categorias: 
Gerência de arquivos: Manipulação de arquivos e diretórios. 
Informações de status: Fornecem informações relativas à data, hora quantidade de memória ou espaço em 
disco disponível, números de usuários ou informações semelhantes. 
Modificação de arquivo: Editores de texto para criar e modificar o conteúdo dos arquivos armazenados em 
disco ou fita. 
Suporte à linguagem de programação: Compiladores, montadores e interpretadores para linguagens de 
programação comuns são geralmente fornecidos ao usuário com o sistema operacional. A maioria desses 
programas agora são pagos e fornecidos à parte. 
Carregamento e execução de programas: Um programa precisa ser carregado na memória para ser 
executado, o sistema pode oferecer utilitários de carga absolutos, utilitários de carga relocável, linkeditores 
e utilitários de carga em overlay. 
Comunicações: Oferecem o mecanismo para criar conexões virtuais entre processos, usuários e diferentes 
sistemas de computação. 
Estruturas de sistemas: 
Estrutura simples(Monolítica):
 
Sistemas implementados dessa maneira não possuem uma estrutura bem definida, O MS-DOS é um 
exemplo de um sistema assim, foi escrito para fornecer funcionalidade máxima ao menor espaço possível. O 
MS-DOS também foi limitado pelo hardware da época, o hardware para o qual foi escrito não possuía o 
modo dual, ocasionando em problemas de segurança. 
Vantagem:
 
Fornece o máximo de funcionalidades no menor espaço possível. 
Desvantagens:
 
Não possui interfaces bem definidas.(As interfaces e níveis de funcionalidade não são bem separados). 
Depuração e manutenção são mais difíceis. 
Abordagem em camadas:
 
Na abordagem em camadas o SO é dividido em uma séries de camadas(níveis), cada qual construída 
sobre camadas inferiores. Cada camada é implementada apenas com as operações fornecidas pelas camadas 
de nível inferior. Uma camada não precisa saber como essas operações são implementadas, só precisa saber 
o que essas operações fazem. 
Vantagens:
 
Modularidade; simplifica a depuração e verificação do sistema.(Principal vantagem) 
Projeto e implementação do sistema é mais simplificado. 
Desvantagem:
 
Desempenho prejudicado pela demora ocasionada na comunicação entre as camadas. 
Microkernels:
 
Estrutura o sistema operacional removendo do kernel todos os componentes não-essenciais e 
implementando-os como programas de sistema e de nível de usuário. Os microkernels geralmente fornecem 
gerência mínima de memória e processos, além de um recurso de comunicação. A principal função de um 
microkernel é fornecer um recurso de comunicação entre o programa cliente e os vários serviços que 
também estão em execução no espaço de usuário. A comunicação é feita por troca de mensagens. 
Vantagens:
 
Facilidade de expandir o sistema operacional. 
Segurança e confiabilidade, pois a maior parte dos serviços estão sendo executados como processos de 
usuário, em vez de kernel. Se um serviço falhar, o resto do sistema permanece inalterado. 
Desvantagem:
 
 - Overhead(demora) causada pela troca de mensagens entre o kernel e os seus módulos.(Semelhante à 
desvantagem da abordagem em camadas). 
Máquinas virtuais: 
Fornecem uma interface que é idêntica ao hardware subjacente. Quando carregados, cada processo 
recebe uma cópia(virtual) do computador subjacente. O computador físico compartilha recursos para criar 
máquinas virtuais. O escalonamento de CPU pode compartilhar a CPU para criar a ilusão de que os usuários 
tem seus próprios processadores. 
Implementação de Máquina Virtual: 
Embora o conceito de máquina virtual seja útil, ele é difícil de implementar. Muito trabalho é 
necessário para fornecer uma duplicata exata da máquina subjacente. A máquina subjacente tem dois 
modos: o modo usuário e o modo monitor. A máquina virtual propriamente dita só pode executar no modo 
usuário. Assim como a máquina física tem dois modos, no entanto, máquina virtual também precisa tê-los. 
Conseqüentemente, é preciso ter um modo usuário virtual e um modo monitor virtual, ambos executando 
em um modo usuário físico. 
Vantagens:
 
Segurança, pois existe proteção total dos recursos do sistema. Cada máquina virtual é completamente 
isolada de todas as outras máquinas virtuais. 
Veículo de desenvolvimento e pesquisa; pois realizações de testes, aplicações de correções, essas atividades 
podem ser feitas em ambiente isolado, sem prejudicar o sistema de operação normal(SO original). 
Desvantagem:
 
Difícil implementação, é exigido um esforço muito grande para uma exata duplicação do hardware da 
máquina subjacente. 
Objetivos de um projeto de SO: 
Ao nível de usuário: Para o usuário um SO deve ser conveniente e fácil de usar, fácil de aprender, 
confiável, seguro e rápido. 
Ao nível de sistema: Deve ser fácil de projetar, implementar e manter, como também ser flexível, 
confiável, livre de erros e eficiente. 
Alguns exercícios de prova: 
3. Compare as estruturas de SO modelo monolítico e microkernel, mostre vantagens e desvantagens 
entre esses modelos 
Base de resposta: ver seção Microkernels e seção Estrutura Simples(Monolítica) 
CAPÍTULO 4
 
O que é um processo
 
 Um processo é um programa em execução. 
Diferença entre um processo e um programa
 
A diferença entre umprocesso e um programa é que, um processo é uma entidade ativa (tem um contador 
do programa PC especificando a próxima instrução para executar e também um conjunto de recursos 
associados) portanto um programa é uma entidade passiva (o conteúdo de um arquivo armazenado no 
disco). 
 
Status do Processo: 
 Novo, Executando, Esperando, Pronto, Encerrado 
Blocos de Controle de Processo(PCB) 
Cada processo é representado no SO pelo PCB. É um repositório das informações que pode varia entre 
processo de processo. Consiste de várias informações sobre um processo. 
1. Status do Processo 
2. Contador do Programa(PC) 
3. Registradores do CPU 
4. Informações sobre o escalonamento do CPU 
5. Informações sobre o Gerenciador da Memória 
6. Informações sobre a Utilização dos Recursos. 
7. Informações sobre o Status do IO 
Escalonamento dos Processos 
Num sistema com um único processador, só pode ter um processo executando, caso tiver mais processos 
para executar, os processos teriam de esperar até o CPU é disponível e pode ser re-escalonado. 
Filas de Escalonamento 
1. Job queue 
2. Ready queue 
3. Device queue 
Classes de Escalonamento: 
O processo da seleção de um processo num queue é feito por um escalonador. 
1. Longo Prazo ou nível alto 
2. Médio Prazo ou nível intermediário 
3. Curto Prazo ou nível baixo 
Diferença entre o prazo longo e prazo curto é a frequência da execução. 
T= 1 F 
O escalonador de prazo curto selecionar o novo processo para o CPU mais frequente. Olha a equação 
 
Frequência aumenta, tempo diminui , então mais rápido. Contrário para o escalonador de prazo longo que 
pode levar mais tempo para decidir que processo deve ser selecionado para a execução. 
Processos podem ser categorizados como
 
I/O bound 
CPU bound 
Troca de Contexto: 
Chaveando o CPU para um outro processo, o sistema precisa salvar o contexto de processo velho e carregar 
o contexto salvo do processo novo. Essa tarefa é conhecida como a troca de contexto. 
Criação de Processo: 
 
O processo de criar um processo é chamado o processo pai e o novo processo é chamado o processo 
filho.Os filhos podem criar mais processos formando uma árvore de processos. 
Terminação de Processo: 
O processo termina quando o último comando é executado e o processo pede o SO para deletá-lo usando a 
chamada do sistema (exit). 
Neste ponto o processo deve retornar dados de saída para o processo pai usando a chamada do sistema 
(wait). 
Processos Cooperativos: 
Um processo é independente quando o processo não pode afetar ou ser afetado pela execução de outros 
processos. 
Caso contrário Processo Cooperativo. 
Vantagens: 
Compartilhamento de Informação muitos usuários são interessados na mesma informação. 
Aceleração da velocidade de computação Se quiser uma tarefa particular para executar mais rápido, deve 
quebrar em sub tarefas, e cada uma estarão executando em paralelo com os outros. 
Modularidade Se quiser construir um sistema em modularidade, precisa dividr as funções do sistema em 
processos separados. 
Conveniência um usuário pode ter várias tarefas para realizar no mesmo tempo. 
Problema do Produtor-Consumidor: 
Para permitir um produtor e consumidor executar simultâneo deve ter um buffer de itens, que pode ser 
enchido pelo produtor esvaziado pelo consumidor.Tem que ter uma sincronização entre os dois, o 
consumidor não vai tentar consumir um item que ainda não foi produzido. O consumidor deve esperar ate 
um item foi produzido. 
Estratégias 
Buffer ilimitado e Buffer limitado 
Comunicação InterProcessos(IPC): 
IPC fornece um mecanismo para permitir que os processos comuniquem e sincronizem as ações deles. 
 Diferença entre Comunicação Direita e Indireta 
 
 Direta 
Cada processo deve identificar um ao outro explicitamente. 
Indireta 
Mensagens são direcionadas e recebidas de mailboxes. 
Bufferização: 
Um link tem a capacidade para determinar o numero de mensagens que pode ficar por um tempo 
temporário.Essa propriedade pode ser vista como uma fila de mensagens associada ao link. 
Implementadas de três modos: 
a) Capacidade zero 
b) Capacidade limitada 
c) Capacidade ilimitada 
CAPÍTULO 5
 
THREADS 
Visão Geral 
THREAD ou Processo leve é uma unidade básica de utilização de CPU; compreende um ID de thread: um 
contador de programa, um conjunto de registradores e uma pilha. Compartilha com outros threads 
pertencentes ao mesmo processo sua seção de código, seção de dados e outros recursos do sistema 
operacional, tais como arquivos abertos e sinais. 
Processo tradicional ou processo pesado tem um ÚNICO fluxo de controle. 
Processos com múltiplos threads podem realizar mais de uma tarefa de cada vez. 
Benefícios:
 
Obs: já caiu em prova! 
1. Capacidade de resposta: o MULTITHREADING de uma aplicação interativa pode permitir que 
um programa continue executando mesmo se parte dele estiver bloqueada ou executando uma 
operação demorada, aumentando assim, a capacidade de resposta para o usuário. Por exemplo, um 
navegador Web pode permitir a interação do usuário em um thread enquanto uma imagem está 
sendo exibida. 
2. Compartilhamento de recursos: por default, os threads compartilham memória e os recursos do 
processo aos quais pertencem. O benefício do compartilhamento do código permite que uma 
aplicação tenha vários threads diferentes de atividade todos dentro do mesmo espaço de 
endereçamento. 
3. Economia: alocar memória e recursos para a criação de processos é caro. Como alternativa, os 
threads compartilham recursos do processo aos quais pertencem, é mais econômico criar e realizar 
troca de contexto de threads. Pode ser difícil avaliar empiricamente a diferença em custo de criar e 
manter um processo em vez de um thread, mas em geral é muito mais demorado criar e gerenciar 
processos do que threads. No Solaris, criar um processo é aproximadamente 30 vezes mais lento do 
que criar um thread, e a troca de contexto é cinco vezes mais lenta. 
4. Utilização de arquiteturas multiprocessador: os benefícios do multithreading podem ser muito 
aumentados em uma arquitetura multiprocessador, na qual cada thread pode estar executando em 
paralelo em um processador diferente. Em uma arquitetura no processador, a CPU geralmente move-
se entre cada thread de forma tão rápida que existe a ilusão de paralelismo, mas na verdade apenas 
um thread está sendo executado de cada vez. 
Threads de usuário e de kernel:
 
Os threads podem ser fornecidos tanto no nível do kernel, quanto no nível do usuário. 
 
Thread de usuário: 
Conceito: são suportados acima do kernel e são implementados por uma biblioteca de threads no 
nível do usuário. Essa biblioteca fornece suporte à criação, escalonamento e gerência de threads, sem 
suporte do kernel. 
Vantagens: são rápidos de criar (pois não necessitam da intervenção do kernel). 
Desvantagens: se o kernel tiver um único thread, qualquer thread de usuário realizando uma 
chamada bloqueante ao sistema causará o bloqueio de todo o processo, mesmo se houver outros 
threads disponíveis para a execução na aplicação. 
Exemplos: Pthreads POSIX, C-threads Mach e threads Solaris. 
Thread de kernel: 
Conceito: são suportados diretamente pelo SO 
 
criação, escalonamento e gerência são feitos pelo 
kernel em seu espaço. Permite que o conceito de threads seja completo. (por que?) 
Vantagens: não bloqueará o sistema, caso um thread realize uma chamada bloqueante ao sistema, 
pois o kernel poderá escalonar outro thread na aplicação de execução. Além disso, em um ambiente 
multiprocessador, o kernel pode escalonar threads em processadores diferentes. 
Desvantagens: são geralmente mais lentos para criar e gerenciar do que os threads do usuário. 
Exemplos: Windows NT, Solarise Digital Unix. 
Modelos de MULTITHREADING:
 
Obs.: já caiu em prova! 
Muitos sistemas fornecem suporte a threads de usuário e de kernel, resultando em diferentes modelos de 
multithreading. 
Modelo muitos-para-um: 
Conceito: mapeia muitos threads do usuário em um thread de kernel. 
Vantagens: é eficiente, pois a gerência de threads é feita no espaço do usuário 
Desvantagens: o sistema bloqueará se um thread efetuar uma chamada bloqueante ao sistema. Além 
disso, como apenas um thread pode acessar o kernel de cada vez, não é possível executar múltiplos 
threads em multiprocessadores. 
Exemplos: é usado em ambientes que não oferecem threads a nível de kernel. 
Modelo um-para-um: 
Conceito: mapeia cada thread de usuário em um thread de kernel. 
Vantagens: fornece mais concorrência do que o modelo muitos-para-um, permitindo que outro 
thread execute, caso uma chamada bloqueante ao sistema seja feita. Permite também que múltiplos 
threads executem em paralelo com multiprocessadores. 
Desvantagens: a única desvantagem é que criar um thread de usuário requer criar um thread de 
kernel, podendo prejudicar o desempenho de uma aplicação. A maior parte das implementações 
desse modelo restringem o número de threads suportados pelo sistema. O desenvolvedor precisa ter 
cuidado para não criar um número excessivo de threads em uma aplicação. 
Exemplos: Windows NT e OS/2. 
Modelo muitos-para-muitos: 
Conceito: multiplexa múltiplos threads do usuário em um número menor ou igual de threads de 
kernel. 
Vantagens: os desenvolvedores podem criar tantos threads quantos forem necessários, e os threads 
de kernel correspondentes podem executar em paralelo em um multiprocessador. Além disso, 
quando um kernel realiza uma chamada bloqueante ao sistema, o kernel pode escalonar outro thread 
para execução. 
Desvantagens: (é um modelo perfeito?) 
Exemplos: Solaris, IRIX e Digital UNIX. 
Threads e a JVM: 
Além de um programa Java que contém vários threads de controle distintos, existem muitos threads 
executando assincronamente para a JVM que tratam de tarefas ao nível de sistema, tais como gerência de 
memória e controles gráficos. 
A JVM e o SO host: 
A implementação típica da JVM normalmente pe feita sobre um SO host. Essa configuração permite que a 
JVM oculte os detalhes da implementação do SO subjacente e forneça um ambiente consistente e abstrato 
que permite aos programas Java operar em qualquer plataforma que suporte uma JVM. A especificação da 
JVM não indica como os threads Java serão mapeados no SO subjacente, deixando essa decisão para cada 
implementação particular da JVM. Em geral, um thread Java é considerado um thread de usuário, e a JVM é 
responsável pela gerência de threads. O Windows NT utiliza o modelo um-para-um; portanto, cada thread 
Java para uma JVM executando no NT é mapeado em um thread de kernel. O Solaris 2 inicialmente 
implementou a JVM usando o modelo muitos-para-um (chamados threads verdes pela Sun). No entanto, já 
na versão 1.1 da JVM com o Solaris 2.6, a JVM foi implementada usando o modelo muitos-para-muitos. 
Alguns exercícios de prova: 
4. Em relação ao conceito de threads, comente seus benefícios no que diz respeito à capacidade de 
resposta e economia. 
Base de resposta: ver seção Benefícios. 
5. Defina quais são os modelos de multithreading, caracterizando cada um desses. 
Base de resposta: ver seção modelos de multithreding. 
6. Cite as vantagens da utilização de multithreads. 
Base de resposta: novamente, ver seção Benefícios. 
This document was created with Win2PDF available at http://www.daneprairie.com.
The unregistered version of Win2PDF is for evaluation or non-commercial use only.

Outros materiais