Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Prof. Fernando Eryck 2012.2 Redes de Computadores SUMÁRIO � Componentes de um SO �Serviços do Sistema �Chamadas de Sistema �Diferentes Estruturas de S.O �Máquinas Virtuais Serviços do Sistema Operacional �Execução de programas �O sistema deve ser capaz de carregar um programa na memória �O programa deve poder terminar sua execução de modo normal ou anormal (indicando erro)anormal (indicando erro) �Controle de operações de E/S � Um programa em execução pode requerer I/O. � I/O pode envolver um arquivo ou dispositivo �Manipulação de arquivos e sistemas de arquivos �Os programas precisam ler , gravar, criar e apagar arquivos pelo nome Serviços do Sistema Operacional �Comunicação (local e em rede) � Comunicação entre processos sendo executados em um mesmo computador � Comunicação entre processos sendo executados em computadores � Comunicação entre processos sendo executados em computadores diferentes, interligados por uma rede. �Deteccção de erros � Erros no hardware (memória, fonte, dispositivos, etc) � Erro no programa do usuário � Para cada tipo de erro, o sistema operacional tem que executar a ação apropriada, de modo a garantir o processamento correto e contínuo Serviços Adicionais do SO � Alguns serviços não focam no usuário diretamente, mas garantem a operação eficiente do próprio sistema opercional �Alocação de recursos � CPU, memória, armezanamento, etc� CPU, memória, armezanamento, etc �Contabilidade � N. Usuários, recursos utilizados, erros, etc. �Proteção � Segurança do sistema Chamadas de Sistema (System Calls) �Intruções privilegiadas �Surgiram com os sistemas multiprogramados para garantir que a atividade errônea ou maliciosa de um programa não cause interferência ou destruição do outrointerferência ou destruição do outro � Introduz-se no hardware dois estágios: modo usuário e modo núcleo �Para executar uma instrução privilegiada, o usuário é obrigado a mudar o estado da máquina para núcleo através de instrução do tipo “chamadas ao sistema” que desvia o programa para uma rotina do S.O Chamadas ao Sistema (System Calls) �Chamadas ao Sistema �É forma como os programas solicitam serviços ao SO e, por isso, é conhecida como a interface entre os programas que estão rodando e o sistema operacionalrodando e o sistema operacional �Elas desenvolvem o acesso aos dados e recursos que usuários não podem acessar diretamente. �Ex.: �Criação de um novo processo �Leitura e escrita de blocos de arquivos no disco �Estabelecimento de uma conexão de rede com um computador remoto Chamadas ao Sistema (System Calls) �Chamadas ao Sistema (cont.) �Quando uma chamada ao sistema é realizada, um chaveamento do modo usuário para o modo núcleo (ou kernel) é automaticamente realizada através de uma interrupção de automaticamente realizada através de uma interrupção de software conhecida como trap. �As chamadas ao sistema estão disponíveis em assembly mas muitos sistemas como Unix e Windows também as disponibilizam em linguagem de alto nível como C, C++ e Perl. Chamadas ao Sistema (System Calls) �Chamadas ao Sistema: Exemplo �Os programas utilizam constante chamadas ao sistema, escondidas do programador pelos compiladores. Por exemplo, para realizar uma simples leitura em um arquivo várias chamadas ao sistema são utilizadas: � Para solicitar que o usuário informe o nome do arquivo usa-se uma chamada para escrever na tela e outra para realizar a leitura do teclado; � Para realizar a operação de leitura, uma chamada é realizada para abrir o arquivo, outra para ler os dados do arquivo. Se o arquivo não existir, uma chamada é utilizada para realizar o término anormal do processo; � Para fechar o arquivo utiliza-se outra chamada ao sistema; � E, finalmente, para imprimir uma mensagem na tela outra chamada é realizada. Chamadas ao Sistema (System Calls) �Chamadas ao Sistema: Passagem de parâmetros �Diretamente através de registradores; �Através de blocos ou tabelas em memória; �Através da pilha em execução • Registradores = Memória interna mínima localizada na CPU • Tabelas em memória = Memória • Pilhas = Área de memória reservada pelo S.O/programas como área de arquivamento temporário Chamadas ao Sistema (System Calls) Passagem de parâmetros em forma de tabela Tipos de Chamadas de Sistema �Chamadas ao Sistema: Tipos �Controle de processos �Gerência de arquivos �Gerência de dispositivos �Manutenção de informações do sistema �Comunicação Tipos de Chamadas de Sistema �Controle de processos �End - finalização ordenada de um processo � Abort - finalização de um processo devido a um erro � Load – Permite carregar um programa em memória �execute – Executa de forma controlada um outro programa �Create – Criação de um novo processo � terminate – Força a finalização de outro processo filho do processo evocado Tipos de Chamadas de Sistema �Controle de processos (cont.) �Wait time – suspende a execução de um processo durante um tempo determinado �Wait event – Bloqueia um programa até que um determinado �Wait event – Bloqueia um programa até que um determinado evento aconteça. �Ex.: Um outro processo filho termine / Receba um sinal �Wait signal – permite sinalizar a ocorrência de um evento ao SO �Allocate, free memory – Alocar e liberar memória Tipos de Chamadas de Sistema �Gerenciamento de arquivos �Create, delete �Open, close �Read, write, reposition �Get/set attributes �Ex.: Nome, tipo, permissões Tipos de Chamadas de Sistema �Gerenciamento de dispositivos �Request – Solicita ao SO acesso exclusivo a um dispositivo �Release – Sinaliza ao SO que já não necessita de um determinado recursorecurso �Read, write, reposition �Get/set attributes Tipos de Chamadas de Sistema �Gerenciamento de informações �Get /set time or date �Get / set system data �Permite escrever ou ler dados internos do SO �Get/set process, file or device attributes �Permite escrever e ler os atributos Tipos de Chamadas de Sistema �Gerenciamento de Comunicação �Open, accept, close, wait for connection �Send, receive messages �Transfer status information Tipos de Chamadas de Sistema �Gerenciamento de Comunicação �Modelo de Comunicações �Passagem de mensagens – útil quando pequenas quantidades de dados precisam ser trocadas / Para comunicação entre computadorescomputadores �Memória compartilhada – permite máxima velocidade e eficiência de comunicação Programas de Sistema �Programas de sistema proporcionam um ambiente eficiente para o desenvolvimento e execução de programas �Acabam por definir o S.O na visão dos usuários �Manipulação de arquivos�Manipulação de arquivos � Informações de status do sistema �Modificação de arquivos �Suporte a linguagens de programação �Controle e execução de programas �Comunicação �Aplicações de uso comum Estrutura do S.O �Sistemas operacionais estão entre os sistemas de software mais complexos existentes �No passado, eram escritos como um único programa, em linguagem de máquinalinguagem de máquina �O aumento da complexidade levou à busca por outras formas de organização interna �Estrutura Simples (Monolítico) � Camadas �Micro-kernel �Máquinas virtuais Sistema Monílitico �Organização monolítica é a mais comum – Um sistema operacional é estruturado como um conjunto de procedimentos, sendo que cada procedimento pode chamar os demais sempre que necessário � Pode ser comparada como uma aplicação formada por vários procedimentos que são compilados separadamente e depois linkados formando um grande e único programa executável �Não há estruturação�Grande desempenho �Uma falha pode paralisar todo o núcleo Sistema Monílitico System Calls aplicaçãoaplicação Modo usuário Modo Kernel Hardware Estrutura do MS-DOS (Monolítica) �Escrito para microprocessadores simples, com poucos recursos de proteção �Máximo de funcionalidade no menor espaço �Não é dividido em camadas ou módulos�Não é dividido em camadas ou módulos �Apesar de ter alguma estrutura, interfaces e níveis de funcionalidade não são bem definidos nem isolados (inclusive por limitações dos computadores em que executava) Estrutura de Camadas do MS-DOS Sistema Monolítico - Unix �Originalmente limitado pelo HW da época. Com o tempo foi crescendo e gerando versões diferentes �O linux é derivado conceitualmente do Unix, apesar de ter sido desenvolvido separadamentedesenvolvido separadamente �Originalmente, é composto por duas partes principais apenas: � O núcleo do sistema ou kernel � Os programas do sistema: shells, editores, etc. Sistema Monolítico - Unix Estrutura em camadas �O S.O é dividido em níveis, cada um construído sobre os níveis inferiores � O nível 0 é o hardware � O nível mais alto é a interface com o usuário� O nível mais alto é a interface com o usuário �Vantagens �Com a modularidade, cada nível se torna mais fácil de construir, usando as funções e/ou operações dos níveis inferiores � isola o sistema operacional, facilitando sua alteração e depuração, além de criar uma hierarquia de níveis de modos, protegendo as camadas mais internas Estrutura em camadas �Desvantagem - o empilhamento de várias camadas de software faz com que cada pedido de uma aplicação demore mais tempo para chegar até o dispositivo periférico ou recurso a ser acessado, prejudicando o desempenho do sistema Estrutura em camadas Estrutura em camadas Arquitetura do Android - SO da Google Estrutura em camadas do Unix Estrutura em Micro-kernel �Sistemas com muita funcionalidade dentro do kernel podem ser tornar muito complexos �Método que estrutura o sistema operacional removendo todos os componentes não essenciais do kernel e implementa estes os componentes não essenciais do kernel e implementa estes como programas de nível de sistema e de usuário �Tarefas são executadas por processos que trocam mensagens entre si �Menos código em modo protegido (kernel) �Mais fácil de estender (novos processos) �Mais fácil de portar para outras arquiteturas Estrutura em Micro-kernel �Novos serviços são adicionados ao espaço do usuário, não exigindo modificação do kernel �Caso o kernel precise ser modificado, as mudanças são menores – o microkernel é um kernel reduzido– o microkernel é um kernel reduzido �Proporciona maior segurança e confiabilidade – a maioria dos serviços operam como processos do usuário �Se um serviço falhar, o restante do SO permanecerá intocável � Ex.: Apple MacOS X, Tru64Unix, QNX, WinNT (Híbrida) Estrutura em Micro-kernel do Mach Estrutura inicial do Windows NT Máquinas Virtuais �Extensão do enfoque em camadas? �Um S.O pode ser colocado sobre uma outra camada que o separa do HW �Uma máquina virtual é uma abstração de SW e HW oferecida �Uma máquina virtual é uma abstração de SW e HW oferecida para um S.O como se fosse a máquina pura onde ele espera executar �O nível inferior (que cria as máquinas virtuais) oferece uma interface equivalente ao HW �Diversos S.O podem executar de forma protegida uns dos outros Máquinas Virtuais �Os recursos do computador real são compartilhados entre as máquinas virtuais �Escalonamento da CPU pode dar a impressão que cada S.O tem seu próprio processadortem seu próprio processador �Recursos restritos podem ser virtualizados de forma que cada S.O veja um recurso só seu. Máquinas Virtuais Máquinas Virtuais �Conceito originalmente utilizado em mainframes IBM (VM/CMS) �Cada usuário tinha a visão que seu terminal se comportava como um computador individual �Na verdade, os terminais estavam ligados a um grande �Na verdade, os terminais estavam ligados a um grande mainframe que executava as máquinas virtuais �Impressoras e leitoras de cartões eram virtualmente conectadas a cada máquina virtual Máquinas Virtuais �Máquinas virtuais são completamente isoladas do HW real e das demais máquinas �A camada de virtualização adiciona overheads �Não é possível compartilhar recursos de forma flexível – cada �Não é possível compartilhar recursos de forma flexível – cada máquina tem sua cota do recurso �Recurso muito útil para pesquisa e desenvolvimento de S.O �Não exige HW isolado para desenvolvimento de testes �Implementação é díficl pelo esforço necessário para isolar e duplicar o HW Máquina Virtual Java �Máquina virtual do tipo interpretado �Permite os programas em java funcionar em qualquer plataforma de hardware e software �Programas java são compilados para instruções (bytecode) de �Programas java são compilados para instruções (bytecode) de uma máquina virtual java (JVM) �Um interpretador que carrega e executa aplicativos em Java, onde este converte os bytecode em códigos executáveis de máquina �Compiladores just-in-time (JIT) aumentam o desempenho �Transformam bytecode em instruções da máquina real Máquina Virtual Java (JVM)
Compartilhar