1) Quais as duas principais funções de um Sistema Operacional? Gerenciar Recursos – O sistema operacional deve gerenciar a utilização dos recursos fornecidos pelo hardware, como processadores, memória, dispositivos de E/S, de modo que mantenha o controle sobre qual usuário/programa utiliza qual recurso, compartilhando os recursos entre os usuários/programas de modo seguro e sem conflitos. Estender a máquina - O sistema operacional deve oferecer ao usuário uma maneira mais acessível de programar/utilizar o hardware do que as próprias instruções que este oferece. Por exemplo: o usuário não precisa saber qual a trilha e o setor do disco se deseja gravar alguma informação, apenas faz uma chamada ao sistema que estende as instruções de E/S, disponibilizando instruções mais amigáveis para estas e outras tarefas. Ou seja, o sistema operacional atua como uma interface entre o hardware e o ambiente de software. 2) O que é multiprogramação? Cite duas razões para se ter multiprogramação? Multiprogramação é uma técnica utilizada em sistemas operacionais para maximizar o uso da CPU. Nesta técnica, a memória é dividida em várias partes que contém um job cada. Enquanto um job está fazendo uma operação de E/S, a CPU passa a executar outro job que esteja em outra parte da memória, evitando a ociosidade da CPU. Uma razão para se ter multiprogramação é a maximização do uso da CPU obtida por esta técnica. Outra razão é o uso mais inteligente dos recursos de hardware (CPU, memória, E/S) que na época em que a técnica surgiu eram caros e não podiam ser desperdiçados. Uma outra razão é o fato de aumentar o número de jobs concluídos por unidade de tempo, melhorando a performance do sistema como um todo. 3) O que é Spooling? È uma técnica que permite que os jobs fiquem armazenados em um buffer (no disco magnético) para uso do CPU. Quando um job que está na memória termina de executar, um outro é lido deste buffer e colocado na partição onde este (o que acabou) estava. Esta técnica automatizou parte do processo de entrar com programas a serem executados (antes eram fitas que eram gravadas e levadas de um equipamento para outro). A técnica de Spooling (simultaneous peripheral operations on-line) é muito utilizada em impressão, onde há um buffer (fila) onde os arquivos a serem impressos ficam armazenados e a impressora os lê sequencialmente, liberando o PC para outro tipo de uso. 4) Defina as propriedades essenciais dos seguintes tipos de Sistemas Operacionais: a. Batch Execução contínua até o fim do processamento de um lote, ou até o uso de E/S; Uso para aplicações CPU-Bound; Maximizar o uso da CPU é o fator fundamental; b. Time-Sharing Compartilhamento da CPU entre os jobs (processos) ao longo do tempo; Uso em sistemas multiusuários/multiprocessos; Escalonamento de recursos; c. Tempo-real Tempo é o fator fundamental; Prazos rígidos para o processamento das tarefas, nem antes, nem depois (críticos) ou com uma certa folga (não crítico). Controle de máquinas, áudio digital, multimídia. d. Distribuído Distribui a computação entre vários processadores físicos; Compartilhamento de recursos; Uso de redes; 5) Descreva as diferenças entre multiprocessamento simétrico e assimétrico. Quais as vantagens e desvantagens dos sistemas multiprocessador? Multiprocessamento assimétrico é uma técnica para sistemas multiprocessados, onde somente um processador tem acesso ao núcleo (e suas estruturas) e realiza o papel de escalonador dos outros processadores, formando uma estrutura mestre-escravo. Já no multiprocessamento simétrico, cada processador executa uma cópia idêntica do SO e muitos processos podem executar de uma vez sem deterioração do desempenho, porém surgem problemas de sincronismo entre cada cópia do SO de cada processador. A grande vantagem dos sistemas multiprocessador é o ganho de desempenho, ao processar mais de uma tarefa ao mesmo tempo, além da confiabilidade e economia. Suas desvantagens são os inconvenientes na gerência da execução paralela. 6) Porque sistemas distribuídos são desejáveis? Para solucionar complexos problemas computacionais, no entanto atualmente vem sendo largamente utilizado com outras finalidades, como em um sistema distribuído conectando vários computadores pela internet o qual está tipicamente envolvido com comunicação de dados. 7) Qual é a diferença entre um trap e uma interrupção? Qual é o uso de cada uma das funções? Ambas são exceções, ou seja, ambas desviam a CPU do fluxo de execução atual. A principal diferença é que as interrupções caracterizam eventos assíncronos gerados normalmente por algum dispositivo de hardware (I/O, relógio...) que interrompe a ativividade atual da CPU para que este evento seja tratado, isto é feito normalmente, através de rotinas pré-definidas no sistema operacional. Já a trap é gerada por software e indica algum evento de erro ou exceção, é normalmente utilizada para mudar o modo de execução do modo usuário para o modo kernel. 8) Para que tipos de operações o DMA é útil? Quais as implicações de uma organização sem DMA na multiprogramação? O DMA é útil para operações em que haja a necessidade da transferência de informação em blocos de algum dispositivo para a memória principal, com o intuito do uso posterior dos dados pela CPU. O DMA permite que os dados sejam transferidos sem a necessidade do gasto de computação durante a transferência, liberando a CPU para outro processamento durante este período. Após a conclusão da transferência, o chip DMA manda um sinal de interrupção para a CPU, informando-a do fim. Uma organização sem DMA na multiprogramação, torna mais lenta a transferência de dados presente em uma operação de E/S, pois sempre que houver a transferência de dados entre a memória e o dispositivo, haverá utilização da CPU; enquanto que através do DMA, a configuração da transferência de vários blocos é feita somente no início da transação. 9) Quais das seguintes instruções deveriam ser privilegiados? a. Set valor do relógio X b. Ler o relógio c. Limpar memória X d. Desligar interrupções X e. Chavear modo usuário/sistema 10) Que características de hardware (máquina) são necessárias para suportar proteção para o kernel do SO ? Explique brevemente cada característica e como elas permitem o kernel controlar os programas de usuário. Proteção de memória – não deixa uma área de memória ser afetada por programas de outra área de memória. O kernel pode alocar os processos do usuário cada um com sua área de memória, não permitindo a invasão de um processo à área do outro ou à área do sistema. É feita através de registradores base e limite e do mapeamento de endereços físicos para endereços virtuais através da MMU. Modos de operação – Restringe algumas instruções da CPU ao sistema. A operação em modo kernel tem acesso a todas as instruções do hardware, enquanto que em modo usuário, boa parte das instruções, principalmente de E/S e configuração, não estão disponíveis. Permite que somente o kernel tenha controle sobre os dispositivos de E/S, bem como a outras configurações. Timer e Interrupções – Não deixa que um único job tenha monopólio sobre o sistema. Permite a execução de operações nos dispositivos de E/S em paralelo com o processamento de outro job na CPU. 11) Qual é o propósito das chamadas de sistema? Permitir a programas aplicativos o acesso a recursos e operações do sistema, dentre os quais: operações de entrada e saída, comunicação inter-processos, leitura do relógio interno, manipulação de arquivos em disco, serviços de impressão, etc. 12) Usando registrador de base e registrador limite, faça um desenho da unidade de gerencia de memória (MMU) que possa prover proteção de memória entre processos? 13) O modelo cliente-servidor é popular em sistemas distribuídos. Ele pode ser usado em um sistema single-computer? Pode, pois este modelo apenas especifica a estrutura do sistema através de processos clientes e processos servidores (que detém as funcionalidades do sistema) e ambos são executados em modo usuário. Nesse modelo, o sistema apenas trataria da comunicação entre estes processos e das políticas envolvidas nessa comunicação. Portanto, essa estrutura pode ser implementada em modo local, e em sistemas distribuídos, apenas diferenciando-se o modo de comunicação entre os processos.