Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Aula 03 – Estruturas dos Sistemas Operacionais Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informação Profa. Claudia Regina Tinós Peviani claudiapeviani@ufgd.edu.br 3. Estruturas de um SO Um SO oferece o ambiente dentro do qual os programas são executados. Podemos ver um SO de diversos ponto de vista: Serviços que oferece. Interface disponibilizada para usuários e programadores. Componentes do SO e suas interligações. 3.1 Componentes de um Sistema Um sistema grande e complexo como um SO só pode ser desenvolvido se for subdividido em partes menores e mais simples. Muitos sistemas modernos oferecem suporte aos seguintes tipos de componentes: 3.1 Componentes de um Sistema Gerência de Processos Gerência da Memória Principal Gerência de Arquivos Gerência do Sistema de E/S Gerência do Armazenamento Secundário Redes Sistema de Proteção Sistema Interpretador de Comandos 3.1.1 Gerência de Processos Conceito geral de processo: é um programa em execução. Um programa de processamento de textos executado por um usuário em um PC é um processo. Uma tarefa do sistema, como o envio de saída para uma impressora, também é um processo. 3.1.1 Gerência de Processos Um processo precisa de certos recursos, como: tempo de CPU, memória, arquivos e dispositivos de E/S, para realizar suas tarefas. Esses recursos são dados ao processo quando ele é criado ou são alocados enquanto ele está sendo executado. 3.1.1 Gerência de Processos Um processo é a unidade de trabalho em um sistema. Tal sistema consiste em uma coleção de processos, sendo alguns do SO e os demais pertencentes aos usuários. 3.1.1 Gerência de Processos O SO é responsável pelas seguintes atividades em relação ao gerência de processos: Criar e remover os processos de usuário e de sistema. Suspender e retomar os processos. Prover mecanismos para o sincronismo de processos. Prover mecanismos para a comunicação entre processos. Prover mecanismos para o tratamento de deadlock. 3.1.2 Gerência da Memória Principal A memória principal é fundamental para a operação de um computador moderno. Para que um programa seja executado, ele precisa ser mapeado para endereços absolutos e carregado na memória. 3.1.2 Gerência da Memória Principal Para melhorar a utilização da CPU e a velocidade da resposta do computador aos seus usuários, temos de manter vários programas na memória, criando a necessidade de um gerenciamento de memória. O SO é responsável pelas seguintes atividades em relação ao gerenciamento da memória: Registrar quais partes da memória estão sendo usadas atualmente e por quem. Decidir quais processos devem ser carregados para a memória quando o espaço de memória se torna disponível. Alocar e desalocar espaço de memória conforme necessidade. 3.1.2 Gerência da Memória Principal 3.1.3 Gerência de Arquivos A gerência de arquivos é um dos componentes mais visíveis de um SO. Os computadores podem armazenar informações em vários tipos diferentes de meios físicos. Cada um desses meios possui suas próprias características e organização física. Cada um é controlado por um dispositivo que possui características próprias (exclusivas). 3.1.3 Gerência de Arquivos O SO mapeia arquivos no meio físico e acessa esses arquivos por meio de dispositivos de armazenamento. O arquivo é uma coleção de informações, relacionadas entre si, definidas na sua criação. O SO é responsável pelas seguintes atividades relacionadas ao gerenciamento de arquivos: Criação e remoção de arquivos. Criação e remoção de diretórios. Suporte a primitivas para manipulação de arquivos e diretórios. Mapeamento de arquivos em armazenamento secundário. Backup (cópia reserva) de arquivos em meios de armazenamento não-volátil. 3.1.3 Gerência de Arquivos 3.1.4 Gerência do Sistema de E/S Uma das finalidades de um SO é ocultar do usuário as peculiaridades de dispositivos de hardware. Somente o driver de dispositivo conhece as peculiaridades do dispositivo específico ao qual está atribuído. 3.1.4 Gerência do Sistemas de E/S O Sistema de E/S é constituído de: Um componente de gerenciamento de memória, que inclui o uso de buffers, caches e spools. Uma interface genérica controladora de dispositivos. Drivers para dispositivos de hardware específicos. 3.1.5 Gerência de Armazenamento Secundário A finalidade principal de um computador é executar programas. Esses programas precisam estar na memória principal durante sua execução. Como a memória principal é muito pequena e volátil, é necessário o auxílio do armazenamento secundário para apoiar a memória principal. 3.1.5 Gerência de Armazenamento Secundário O SO é responsável pelas seguintes atividades em relação ao gerenciamento de disco: Gerenciamento do espaço livre. Alocação do armazenamento. Escalonamento do disco. 3.1.6 Redes Um sistema distribuído é uma coleção de processadores que não compartilham memória, dispositivos periféricos ou relógio. Pelo contrário, cada processador possui sua própria memória local e relógio, e os processadores se comunicam um com o outro por meio de diversas linhas de comunicação. 3.1.6 Redes Um sistema distribuído coleta sistemas fisicamente dispersos, talvez heterogêneos, em um sistema coerente, oferecendo ao usuário o acesso aos diversos recursos mantidos pelo sistema. O compartilhamento de recursos proporciona um aumento na velocidade de processamento, maior disponibilidade dos dados e maior confiabilidade do sistema. 3.1.7 Sistema de Proteção Proteção é qualquer mecanismo que controle o acesso dos programas, processos ou usuários aos recursos de um sistema computacional. Utilizando um mecanismo de proteção aumenta a confiabilidade de um sistema de detecção de erros . 3.1.8 Sistema Interpretador de Comandos Um dos programas do sistema mais importantes para o SO é o interpretador de comandos, que é a interface entre o usuário e o sistema operacional. Alguns SOs incluem o interpretador de comandos no kernel. 3.1.8 Sistema Interpretador de Comandos Muitos comandos são fornecidos ao SO pelas instruções de controle. Quando uma nova tarefa é iniciada, um programa que lê e interpreta instruções de controle é executado automaticamente. Esse programa às vezes é chamado de Interpretador de Cartão de controle ou shell. Sua função é obter a próxima instrução de comando e executá-la. 3.2 Serviços de SO Um SO oferece um ambiente para execução de programas. Ele oferece certos serviços aos programas e aos usuários desses programas. 3.2 Serviços de SO Um conjunto de serviços do SO oferece funções úteis ao usuário: Execução de Programa Operações de E/S Manipulação do sistema de arquivos Comunicações Detecção de erro Alocação de recursos Contabilidade Proteção e segurança Execução de programa capacidade do sistema de carregar um programa na memória e executá-lo. Operações de E/S como os programas do usuário não podem executar operações de E/S diretamente, o sistema operacional precisa prover meios para realizar a E/S.3.2 Serviços de SO Manipulação do sistema de arquivos capacidade do programa para ler, gravar, criar e excluir arquivos. Comunicações troca de informações entre processos sendo executados no mesmo computador ou em sistemas diferentes ligados por uma rede. Implementadas através de memória compartilhada ou pela troca de mensagens. 3.2 Serviços de SO Detecção de erro Os erros podem ocorrer na CPU e no hardware da memória, nos dispositivos de E/S e nos programas do usuário. Para cada tipo de erro, o SO deve tomar a medida apropriada para garantir a computação correta e coerente. Alocação de recursos Os recursos são alocados a diversos usuários ou a múltiplas tarefas sendo executadas ao mesmo tempo. 3.2 Serviços de SO Contabilidade controla e registra que usuários usam quanto e que tipo de recursos do computador para contabilizar cobrança ou para acumular estatísticas de uso. Proteção e segurança A proteção envolve a garantia de controle de todo acesso aos recursos do sistema. A segurança do sistema contra o acesso de pessoas e/ ou dispositivos de E/S externos. 3.2 Serviços de SO 3.3 Chamadas de Sistema As chamadas de sistema (interrupção de software) oferecem a interface entre um processo e o SO. Determinados sistemas permitem que as chamadas de sistema sejam feitas diretamente por um programa em linguagem de mais alto nível, quando as chamadas têm a forma de chamada de função ou sub-rotina predefinidas. 3.3 Chamadas de Sistema Podem ser agrupadas em 5 categorias principais: Controle de Processos; Manipulação de Arquivos; Manipulação de Dispositivos; Manutenção de informações; Comunicações. 3.3.1 Controle de Processos encerrar, abortar carregar, executar criar processos, terminar processos obter atributos do processo, definir atributos do processo esperar por tempo esperar evento, sinalizar evento alocar e liberar memória 3.3.2 Gerência de Arquivos Criar arquivo, excluir arquivos abrir, fechar ler, escrever, reposicionar obter atributos do arquivo, definir atributos do arquivo. 3.3.3 Gerência de Dispositivos solicitar dispositivo, liberar dispositivo ler, escrever, reposicionar obter atributos do dispositivo, definir atributos do dispositivo anexar ou desconectar dispositivos logicamente 3.3.4 Manutenção de Informações Obter hora ou data, definir hora ou data obter dados do sistema, definir dados do sistema obter atributos do processos, arquivos ou dispositivos definir atributos do processos, arquivos ou dispositivos 3.3.5 Comunicação Criar, excluir conexão de comunicação enviar, receber mensagens transferir informações de status anexar ou desconectar dispositivos remotos M M M Processo A Processo B Núcleo 2 Processo A Processo B Núcleo 2 Memória compartilhada 1 1 Troca de Mensagens Memória Compartilhada Modelos de Comunicação 3.4 Programas do Sistema Os programas do sistemas fornecem um ambiente conveniente para o desenvolvimento e a execução de programas. Alguns deles são simplesmente interfaces do usuário para chamadas de sistema e outros são mais complexos. 3.4 Programas do Sistema São divididos nas seguintes categorias: Gerenciamento de Arquivos: (Criar, excluir, copiar, renomear e manipulam arquivos e diretórios). Informações de Status: (Como: hora, data, quantidade disponível de memória e disco). Modificação de Arquivos: (Processadores de texto podem alterar o conteúdo de um arquivo armazenado em disco). Suporte para Linguagem de Programação: (compiladores, montadores e interpretadores). 3.4 Programas do Sistema Carga e Execução de Programas: (Após a compilação de um programa é necessário ser carregado na memória, então temos os utilitários de carga absoluto, de carga relocável, linkeditores e depuradores); Comunicações: (conexão virtual entre processos); Programas Aplicativos: (Navegação na Internet, Processadores de Textos, Planilhas Eletrônicas, Sistemas de Banco de Dados, etc); 3.5 Estrutura do Sistema Um sistema tão grande e complexo como o SO deve ser cuidadosamente construído para que funcione bem e possa ser facilmente modificado. Uma técnica comum é particionar a tarefa em componentes menores. Vamos ver como esses componentes são interconectados e ligados ao kernel. 3.5.1 Estrutura Simples Existem vários sistemas comerciais que não possuem uma estrutura bem definida. Esses SOs começaram como sistemas pequenos, simples e limitados, e depois cresceram além do seu escopo original. Exemplos: MS-DOS e o UNIX originais. 3.5.2 Enfoque em Camadas Um sistema pode ser criado modular de muitas maneiras. Um método é o enfoque em camadas, no qual o SO é dividido em uma série de camadas (níveis). A camada inferior (camada 0) é o hardware e a mais alta (camada N) é a da interface com o usuário. 3.5.2 Enfoque em Camadas A vantagem principal do enfoque em camadas é a modularidade. As camadas são selecionadas de modo que cada uma utilize funções (operações) e serviços apenas de camadas de nível mais baixo. A decomposição simplifica o projeto e a implementação do SO. 3.5.2 Enfoque em Camadas Maior dificuldade é planejar/definir cuidadosamente as diversas camadas. As implementações em camadas tendem a ser menos eficientes. Essas limitações criaram uma certa resistência contra o uso de divisão em camadas no últimos anos. 3.5.3 Microkernels Conforme o UNIX se expandiu, o kernel se tornou grande e difícil de gerenciar. Em meados da década de 1980, pesquisadores desenvolveram um sistema operacional chamado Mach, que modularizou o kernel, usando a técnica de microkernel. 3.5.3 Microkernels Esse método estrutura o SO removendo todos os componentes não-essenciais do kernel e implementando-os como programas em nível de sistema de usuário. O resultado é um kernel menor. Em geral, os microkernels normalmente oferecem gerenciamento mínimo de processo e memória, além de uma facilidade de comunicação. 3.5.3 Microkernels A principal função do 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. Os benefícios da abordagem do microkernel incluem a facilidade de expandir o sistema operacional. 3.5.4 Módulos A técnica de programação orientada a objeto é usada para criar um kernel modular. O kernel possui um conjunto de componentes básicos e vincula dinamicamente serviços adicionais, seja durante o processo de boot ou durante a execução. 3.6 Máquinas Virtuais Normalmente, um processo possui recursos adicionais, como chamadas de sistema e um sistema de arquivos, que não são fornecidos pelo hardware puro. A técnica de máquina virtual não oferece tal funcionalidade adicional, mas oferece uma interface idêntica à do hardware básico. Cada processo recebe uma cópia (virtual) do computador básico. processos hardware kernel VM1 Implementação de máquina virtual kernel kernel kernel processos processos processos Máquina não-virtual Máquina virtual VM2 VM3 hardware 3.6.1 Implementação É difícil a implementação, pois é necessário que amáquina virtual seja exatamente uma cópia da real (modo usuário e monitor). O software da máquina virtual pode executar no modo monitor, pois é o SO. A máquina virtual propriamente dita só pode executar no modo usuário. 3.6.1 Implementação É preciso ter o modo usuário virtual e um modo monitor virtual, ambos executando em um modo usuário na máquina real. 3.7 Java Java é considerada uma tecnologia, pois ela fornece mais do que uma linguagem de programação convencional. A tecnologia Java consiste em três componentes essenciais: Especificação da linguagem de programação. Interface de programação de aplicações (API). Especificação de máquina virtual. 3.8 Projeto e implementação do sistema Perguntas????? Quais problemas são encarados quando se projeta e implementa um sistema operacional? Será que existe soluções para todos os problemas de projeto? 3.8.1 Objetivos do Projeto Primeiro problema no projeto de um sistema é definir objetivos e especificações. No nível mais alto: Escolha do Hardware. Tipo de Sistemas (Batch, Tempo Compartilhado, Monousuário, Multiusuário, etc..). 3.8.1 Objetivos do Projeto Há requisitos que podem ser muito mais difíceis de implementar. Os requisitos podem ser divididos em dois grupos básicos: Objetivos do Usuário. Objetivos do Sistema. 3.8.1 Objetivos do Projeto Requisitos do Usuário ele deve ser conveniente, fácil de aprender e usar, confiável, seguro e veloz. Requisitos do Sistema, ou seja de quem vai projetar, criar, operar o sistema. Ele deve ser fácil de projetar, implementar e modificar; deve ser flexível, confiável, livre de erros e eficiente. 3.8.2 - Mecanismos e Políticas Um princípio importante é a separação entre política e mecanismo. Mecanismos determinam como fazer alguma coisa. Políticas determinam o que será feito. Exemplo: Timer é um mecanismo para garantir a proteção da CPU, mas é a política que vai decidir quanto tempo o timer deverá ser configurado para determinado usuário. 3.8.2 - Mecanismos e Políticas Problema - caso haja uma mudança na política, será necessário mudar o mecanismo empregado. Solução - Mecanismo mais geral seria mais adequado, pois numa mudança de política requereria a redefinição de apenas alguns parâmetros. 3.8.3 - Implementação Após o projeto de um SO estar definido todos seus requisitos, ele precisa ser implementado. Eram escritos em linguagem de montagem – assembly. Atualmente são escritos em linguagens de mais alto nível, como C ou C++. 3.8.3 - Implementação Vantagens - pode ser escrito mais rápido, mais compacto, mais fácil de entender e depurar. Desvantagens - diminuição na velocidade de processamento e um aumento no espaço de armazenamento necessário. Referências Capítulo 3 da referência abaixo: SILBERSCHATZ, ABRAHAM; GAGNE, GREG; GALVIN, PETER BAES. Sistemas operacionais: com java. . Rio de Janeiro: Elsevier, 2004.
Compartilhar