Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Créditos:
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 - 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.
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).
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.
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:
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
programas forem 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.
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.
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).
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.
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 indica o
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:
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:
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.
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.
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 monitor que
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.
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:
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.
Consiste de:
Apenas o driver de dispositivos conhece as peculiaridades do dispositivo específico ao qual foi atribuído.
Redes:
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:
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.
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ção de 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:
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:
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.
Controle de processos
Manipulação de arquivos
Manipulação de dispositivos
Manutenção de informações
Comunicações
Programas de Sistema:
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:
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:
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.
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.
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.
CAPÍTULO 4
O que é um processo
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 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.
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.
Vantagens:
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.
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.
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.
Processos com múltiplos threads podem realizar mais de uma tarefa de cada vez.
Benefícios:
Obs: já caiu em prova!
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, Solaris e 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:
Modelo um-para-um:
Modelo muitos-para-muitos:
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.
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.