ARQUITETURA DE SISTEMAS OPERACIONAIS VISÃO GERAL DE UM SISTEMA OPERACIONAL Prof. André Luís Alves E. M. DR. LEANDRO FRANCESCHINI INTRODUÇÃO Programas computacionais (ou software) constituem o elo entre o aparato eletrônico (ou hardware) e o ser humano. Tal elo se faz necessário dada a discrepância entre o tipo de informação manipulada pelo homem e pela máquina. A máquina opera com cadeias de códigos binários enquanto o homem opera com estruturas mais abstratas como conjuntos, arquivos, algoritmos, etc. É aí que entra o sistema operacional, o mais importantes do softwares, que controla todos os recursos do computador e proporciona a base de sustentação para a execução de programas aplicativos. O que é um Sistema Operacional? • Software ✓Função ₋ Controlar o funcionamento do computador; ₋ Gerenciar a utilização e o compartilhamento de recursos (processador, memória e dispositivos de E/S). ✓Objetivo ₋ Interface entre o usuário e o computador (utilização simples, rápida e segura). • Sistemas Operacionais x Aplicações convencionais ₋ O Sistema Operacional não é executado de forma linear (início, meio e fim); ₋ Rotinas são executadas concorrentemente em função de eventos assíncronos. Funções Básicas 1. Facilitar o acesso aos recursos do sistema • Serve de interface entre os usuários e recursos disponíveis na máquina • Comunicação transparente • Trabalho eficiente e com menores chances de erro 2. Compartilhar os recursos de forma organizada e protegida • Controle de acesso concorrente (Ex.: impressora compartilhada) ₊ O controle de acesso concorrente leva à diminuição de custos por favorecer o compartilhamento de recursos. VISÃO DE UM SISTEMA OPERACIONAL (Máquina Virtual) Máquina de camadas O computador pode ser compreendido como uma máquina de níveis, é o que chamamos de visão modular. Dessa forma, um computador possui tantos níveis quanto forem necessários para adequar o usuário às suas diversas aplicações: ▪ Hardware: nível 0 ▪ Software: nível 1 Histórico Processamento batch Tipos de Sistemas Operacionais Sistema Operacional => Diretamente ligado à evolução do hardware. Tipos de Sistemas Operacionais: •Monoprogramáveis/Monotarefa •Multiprogramáveis/Multitarefa •Múltiplos Processadores Monoprogramáveis/Monotarefa SISTEMA OPERACIONAL Monoprogramáveis/Monotarefa Características: • Primeiros Sistemas Operacionais (1960) • Executam um único programa • Permitem que o processador, a memória e os periféricos fiquem dedicados à execução de um único programa Funcionamento: enquanto um programa aguarda por um evento (exemplo, digitação de um dado), o processador permanece ocioso. A memória é subutilizada caso o programa não a preencha totalmente e os periféricos estão dedicados a um único usuário, nem sempre utilizados de forma integral. Monoprogramáveis/Monotarefa Vantagens: • Simples implementação; • Sem problemas decorrentes do compartilhamento de recursos (memória, processador e periféricos). Desvantagens: • Subutilização de recursos (memória, processador e periféricos) Multiprogramáveis/Multitarefa Multiprogramáveis/Multitarefa Características: • Evolução dos Monoprogramáveis; • Recursos computacionais compartilhados entre os usuários e aplicações. Gerência de acesso concorrente: enquanto um programa espera por uma operação de leitura ou gravação em disco, outros programas podem estar sendo processados nesse mesmo intervalo de tempo (memória e processador). Multiprogramáveis/Multitarefa Vantagens: • redução custos pelo compartilhamento de recursos entre as diferentes aplicações; • redução total do tempo de execução das aplicações. Desvantagem: • apesar de mais eficientes que os monoprogramáveis, implementação muito mais complexa são de Multiprogramáveis (Monousuário/Multiusuário) Tipos de sistemas multiprogramáveis em função do número de usuários: • Monousuário: ₋ Apenas um usuário interage com o sistema; ₋ Encontrados em computadores pessoais (Workstation1). e estações de trabalho • Multiusuário: ₋ Ambientes interativos que possibilitam a diversos usuários conectarem-se ao sistema simultaneamente. 1Workstation: nome genérico dado a computadores situados, em termos de potência de cálculo, entre o computador pessoal e o computador de grande porte, ou mainframe. Classificação dos Sistemas Multiprogramáveis Os sistemas multiprogramáveis ou multitarefa podem ser classificados pela forma com que suas aplicações são gerenciadas. SISTEMAS BATCH • Primeiros sistemas multiprogramáveis a serem implementados na década de 1960; • Usavam cartão perfurado para execução dos programas (Jobs) e armazenavam o resultado em discos ou fitas para posterior execução; • Não exigiam a interação do usuário com a aplicação; • Aplicados a cálculos numéricos, compilações, ordenações e backups; • Atualmente, Sistemas Operacionais implementam ou simulam o processamento em batch, não existindo sistemas exclusivamente dedicados a este tipo de processamento. Sistemas de Tempo Compartilhado (time-sharing) • Permitem que diversos programas sejam executados a partir da divisão do tempo do processador em fatias de tempo (time-slice) • Cada usuário tem um ambiente de trabalho, dando a impressão de que o sistema é dedicado • Permitem interação dos usuários através de terminais (vídeo, teclado, mouse, etc) • Linguagem de controle (comunicação através de comandos – sistemas online) • A maioria das aplicações comerciais é processada em sistemas timesharing (tempo de resposta curto menores custos devido ao compartilhamento de recursos) Sistemas de Tempo Real (Real Time) • Critério de execução: prioridade • Um programa utiliza o processador o tempo que for necessário ou até que apareça outro mais prioritário, no entanto, a importância ou prioridade de execução é definida pela própria aplicação • Presentes em controle de processos (monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas termoelétricas, ou em qualquer aplicação onde o tempo de processamento é fator fundamental Sistemas com Múltiplos Processadores Sistemas com Múltiplos Processadores Sistemas Fortemente Acoplados Sistemas Fracamente Acoplados Sistemas Operacionais de Rede Sistemas Distribuídos Sistemas com Múltiplos Processadores • Duas ou mais UCPs (Unidades Centrais de Processamentos) interligadas e trabalhando em conjunto • Vantagem: permite que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais de um processador • Aplicações: processamento científico (desenvolvimento aeroespacial, prospecção de petróleo, simulações, processamento de imagens e CAD) Sistemas com Múltiplos Processadores Vantagens: • Escalabilidade: capacidade de ampliar o poder computacional do sistema apenas adicionando novos processadores • Disponibilidade: capacidade de manter o sistema em operação mesmo em casos de falhas. Se um processador falhar, outro assume suas funções de maneira transparente ao usuário e suas aplicações • Balanceamento de carga: distribuição do processamento entre os processadores Classificação dos Sistemas com Múltiplos Processadores Um fator chave no desenvolvimento de sistemas operacionais com múltiplos processadores é a forma de comunicação entre as UCPs e o grau de compartilhamento da memória e dos dispositivos de entrada e saída. Em função desses fatores, podemos classificar os sistemas com múltiplos processadores em fortemente acoplados ou fracamente acoplados Fortemente Acoplados X Fracamente Acoplados • Sistemas Fortemente Acoplados possuem apenas uma memória principal sendo compartilhada por todos os processadores • Sistemas Fracamente Acoplados têm sua própria memória individual Classificação dos Sistemas com Múltiplos Processadores Fortemente Acoplados X Fracamente Acoplados • Nos sistemas Fortemente acoplados a taxa de transferência entre processadores e memória é muito maior que nos fracamente acoplados Sistemas Fortemente Acoplados (tightly coupled) • Possui vários processadores que compartilham uma única memória física (shared memory) • Dispositivos de E/S são gerenciados por apenas um sistema operacional (ver modelo) • Conhecidos como multiprocessdores Sistemas Fortemente Acoplados voltar Sistemas Fracamente Acoplados (loosely coupled) • Possuem dois ou mais sistemas computacionais independentes conectados através de linhas de comunicação • Cada sistema computacional possui seu próprio sistema operacional e gerencia seus próprios recursos (ver modelo) • Conhecidos como multicomputadores Sistemas Fracamente Acoplados (loosely coupled) voltar Tipos de Sistemas Fracamente Acoplados • Com a evolução dos computadores pessoais e das estações de trabalho, além das telecomunicações e da tecnologia de redes, surgiu um novo modelo de computação, chamado modelo de rede de computadores (dois ou mais sistemas independentes (hosts), interligados através de links, que oferecem algum tipo de serviço aos demais (descentralização da informação) • Com base no grau de integração dos hosts da rede, divide-se os sistemas fracamente acoplados em: • Sistemas Operacionais de Rede • Sistemas Distribuídos Tipos de Sistemas Fracamente Acoplados Sistemas Operacionais de Rede X Sistemas Distribuídos A grande diferença entre os dois modelos é a capacidade do sistema operacional em criar uma imagem única dos serviços disponibilizados pela rede Sistemas Operacionais de Rede (SOR) • Usuários tem conhecimento dos hosts e seus serviços • Permitem que um host compartilhe seus recursos (impressora, diretório, etc) com os demais hosts da rede. Exemplo: LANs Tipos de Sistemas Fracamente Acoplados Sistemas Distribuídos • O sistema operacional esconde os detalhes dos hosts individuais e passa a trata-los como um conjunto único, como se fosse um sistema fortemente acoplado • Permitem, p. ex., que uma aplicação seja dividida em partes e que cada parte seja executada em hosts diferentes da rede de computadores • Para o usuário e suas aplicações é como se não existisse a rede de computadores, mas sim um único sistema centralizado Referências Bibliográficas MACHADO, Francis B.; MAIA, Luiz P. SISTEMAS OPERACIONAIS. 4ª Edição. Rio de Janeiro: LTC, 2007. Exercícios 1. Como seria usar um computador sem um sistema operacional? Quais são suas duas principais funções? 2. Cite duas principais dificuldades que um programador teria no desenvolvimento de uma aplicação sem um sistema operacional. 3. Explique o conceito de máquina virtual. Qual a grande vantagem em utilizar esse conceito? 4. Defina o conceito de máquina de camadas. 5. Quais os tipos de sistemas operacionais existentes? Exercícios 6. Por que dizemos que existe subutilização de recursos em sistemas monoprogramáveis? 7. Qual a grande diferença entre sistemas monoprogramáveis e sistemas multiprogramáveis? 8. Quais as vantagens dos sistemas multiprogramáveis? 9. Um sistema monousuário pode ser um sistema multiprogramável? Dê um exemplo. 10. Quais são os tipos de sistemas multiprogramáveis? Exercícios 11. O que caracteriza o processamento batch? Quais aplicações podem ser processadas nesse tipo de ambiente? 12. Como funcionam os sistemas de tempo compartilhado? Quais as vantagens em utilizá-los? 13. Qual a grande diferença entre sistemas fortemente acoplados e fracamente acoplados? 14. O que é um sistema fracamente acoplado? Qual a diferença entre sistemas operacionais de rede e sistemas operacionais distribuídos? 15. Quais os benefícios de um sistema com múltiplos processadores em um computador pessoal? Exercícios 16. Qual seria o tipo de sistema operacional recomendável para uso como servidor de aplicações em um ambiente corporativo? 17. Qual seria o tipo de sistema operacional recomendável para executar uma aplicação que manipula grande volume de dados e necessita de um baixo tempo de processamento? ____________ Nota: os exercícios deverão ser feitos à MÃO, individualmente ou em duplas, e, entregues em data a ser estipulada. Prof. André L. Alves