Estruturas de Sistemas Operacionais

11.474 visualizações

Publicada em

Aula de Estruturas de Sistemas Operacionais

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
11.474
No SlideShare
0
A partir de incorporações
0
Número de incorporações
54
Ações
Compartilhamentos
0
Downloads
620
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Estruturas de Sistemas Operacionais

    1. 1. Sistemas Operacionais <ul><ul><li>Estruturas de Sistemas Operacionais </li></ul></ul><ul><ul><li>Prof. Cid R Andrade </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>http://blog.cidandrade.pro.br </li></ul></ul>
    2. 2. Agenda <ul><li>Introdução </li></ul><ul><li>Componentes de Sistemas Operacionais </li></ul><ul><li>Serviços de Sistemas Operacionais </li></ul><ul><li>Chamadas ao Sistema </li></ul><ul><li>Programas de Sistema </li></ul>
    3. 3. Agenda <ul><li>Estrutura do Sistema </li></ul><ul><li>Máquinas Virtuais </li></ul><ul><li>Java </li></ul><ul><li>Projeto e Implementação </li></ul>
    4. 4. Introdução <ul><li>Um sistema operacional fornece o ambiente no qual os programas são executados </li></ul><ul><li>A organização interna dos sistemas operacionais pode variar muito </li></ul><ul><li>Esta organização é definida no projeto do sistema operacional e é determinada pelo objetivo do desenvolvedor </li></ul>
    5. 5. Pontos de vista para análise <ul><li>Examinar serviços oferecidos </li></ul><ul><li>Analisar a interface para usuários e desenvolvedores </li></ul><ul><li>Analisar componentes internos e interconexões </li></ul>
    6. 6. Componentes do Sistema <ul><li>Gerência de Processos </li></ul><ul><li>Gerência da Memória Principal </li></ul><ul><li>Gerência de Arquivos </li></ul><ul><li>Gerência do Sistema de E/S </li></ul><ul><li>Gerência de Armazenamento Secundário </li></ul><ul><li>Redes </li></ul><ul><li>Sistema de Proteção </li></ul><ul><li>Sistema Interpretador de Comandos </li></ul>
    7. 7. Gerência de Processos <ul><li>A grosso modo, um processo seria um programa em execução </li></ul><ul><li>Um processo pode precisar de recursos que são alocados durante sua execução </li></ul><ul><li>Recursos reutilizáveis são solicitados de volta ao término do processo </li></ul><ul><li>Um programa pode utilizar mais de um processo para sua execução </li></ul>
    8. 8. Gerência de Processos <ul><li>Um sistema operacional, ao executar, contém uma coleção de processos </li></ul><ul><ul><li>Alguns são processos de sistema </li></ul></ul><ul><ul><li>Outros são processos de usuário </li></ul></ul><ul><li>A Gerência de Processos é responsável por </li></ul><ul><ul><li>Criar e excluir processos de usuário e de sistema </li></ul></ul><ul><ul><li>Suspender e retomar processos </li></ul></ul><ul><ul><li>Fornecer mecanismos para sincronização e comunicação entre processos e tratamento de deadlocks </li></ul></ul>
    9. 9. Gerência da Memória Principal <ul><li>A memória principal é um grande vetor de palavras ou bytes </li></ul><ul><li>Cada palavra ou byte tem seu próprio endereço </li></ul><ul><li>A memória principal costuma ser o único dispositivo de grandes proporções que a UCP pode endereçar e acessar diretamente </li></ul><ul><li>Para melhorar utilização da UCP e velocidade de resposta mantém-se vários programas ao mesmo tempo na memória </li></ul>
    10. 10. Gerência da Memória Principal <ul><li>Existem muitos algoritmos diferentes para gerência da memória principal </li></ul><ul><li>A gerência de memória principal é responsável por </li></ul><ul><ul><li>Manter registro de quais partes da memória estão em uso e por quem </li></ul></ul><ul><ul><li>Decidir quais processos devem ser carregados no espaço disponível </li></ul></ul><ul><ul><li>Alocar e desalocar espaço </li></ul></ul>
    11. 11. Gerência de Arquivos <ul><li>Um dos componentes mais visíveis do sistema operacional </li></ul><ul><li>Arquivos são armazenados em diferentes meios físicos </li></ul><ul><li>Cada meio e controlado por um dispositivo </li></ul><ul><li>O sistema operacional abstrai as propriedades físicas de cada dispositivo para fornecer acesso aos arquivos </li></ul>
    12. 12. Gerência de Arquivos <ul><li>Arquivo é uma coleção de dados relacionados definidos por seu criador </li></ul><ul><li>Geralmente o arquivo representa programas ou dados (numéricos, alfabéticos ou alfanuméricos)‏ </li></ul><ul><li>Arquivos podem ter forma livre ou rígida </li></ul><ul><li>Arquivos são geralmente organizados em diretórios </li></ul><ul><li>Acesso deve ser controlado por usuário </li></ul>
    13. 13. Gerência de Arquivos <ul><li>Gerência de Arquivos é responsável por </li></ul><ul><ul><li>Criação e exclusão de arquivos </li></ul></ul><ul><ul><li>Criação e exclusão de diretórios </li></ul></ul><ul><ul><li>Fornecer suporte para manipulação de arquivos e diretórios </li></ul></ul><ul><ul><li>Mapear arquivos no armazenamento secundário </li></ul></ul>
    14. 14. Gerência do Sistema de E/S <ul><li>Subsistema de E/S consistem em </li></ul><ul><ul><li>Comunicar-se com as Gerências de Memória Principal, Arquivos e Armazenamento Secundário para implementar buffering , cache e spooling </li></ul></ul><ul><ul><li>Interface geral de driver de dispositivo </li></ul></ul><ul><ul><li>Drivers para dispositivos de hardware específicos </li></ul></ul><ul><li>Apenas os drivers de dispositivo conhecem as peculiaridades do dispositivo específico </li></ul>
    15. 15. Gerência de Armazenamento Secundário <ul><li>A memória principal é pequena para acomodação de todos dados e programas e é volátil </li></ul><ul><li>O sistema de computação fornece armazenamento secundário para dar suporte à memória principal </li></ul>
    16. 16. Gerência de Armazenamento Secundário <ul><li>A Gerência de Armazenamento Secundário é responsável por </li></ul><ul><ul><li>Gerência de espaço livre </li></ul></ul><ul><ul><li>Alocação de espaço </li></ul></ul><ul><li>O desempenho de um sistema de computação pode depender muito da velocidade do subsistema de disco e dos algoritmos que manipulam este subsistema </li></ul>
    17. 17. Redes <ul><li>Processadores de sistemas distribuídos são conectados por redes de comunicação </li></ul><ul><li>O projeto da rede de comunicação deve considerar </li></ul><ul><ul><li>Estratégias de conexão </li></ul></ul><ul><ul><li>Roteamento de mensagens </li></ul></ul><ul><ul><li>Problemas de disputa </li></ul></ul><ul><ul><li>Segurança </li></ul></ul>
    18. 18. Sistema de Proteção <ul><li>Um sistema de computação pode ter vários usuários e permitir execução concorrente de múltiplos processos </li></ul><ul><li>Neste caso os processo precisam ser protegidos das atividades uns dos outros </li></ul><ul><li>Arquivos, segmentos de memória, UCP e outros recursos devem ser operados apenas pelos processos que tenham autorização adequada do sistema operacional </li></ul>
    19. 19. Sistema de Proteção <ul><li>Proteção é qualquer mecanismo para controle de acesso de programas, processos ou usuários ao recursos de um sistema de computação </li></ul>
    20. 20. Sistema Interpretador de Comandos <ul><li>Interface entre usuário e sistema operacional </li></ul><ul><li>Alguns sistemas operacionais incluem o interpretador de comandos no kernel </li></ul><ul><li>Outros, como DOS e UNIX, tratam o interpretador de comandos como um programa especial </li></ul><ul><li>Pode ser chamado de Interpretador de Linha de Comandos ou de shell </li></ul>
    21. 21. Sistema de Interpretador de Comandos <ul><li>A função do Interpretador de Comandos é obter comandos e executá-los </li></ul><ul><li>Um interpretador de comandos amigável torna o uso do sistema mais agradável. São exemplos as interfaces do Macintosh ou do Windows </li></ul><ul><li>Há usuários que apreciam shells mais poderosos e complexos, como os do DOS ou UNIX </li></ul>
    22. 22. Serviços de Sistemas Operacionais <ul><li>Para conveniência do programador e usuário </li></ul><ul><ul><li>Execução de programas </li></ul></ul><ul><ul><li>Operações de E/S </li></ul></ul><ul><ul><li>Manipulação do Sistema de Arquivos </li></ul></ul><ul><ul><li>Comunicação entre Processos </li></ul></ul><ul><ul><li>Detecção de Erros </li></ul></ul>
    23. 23. Serviços para Sistemas Operacionais <ul><li>Para operação eficiente do sistema </li></ul><ul><ul><li>Alocação de recursos </li></ul></ul><ul><ul><li>Contabilização </li></ul></ul><ul><ul><li>Proteção </li></ul></ul>
    24. 24. Chamadas ao Sistema <ul><li>Também chamadas System Calls </li></ul><ul><li>Fornecem interface entre processos e o sistema operacional </li></ul><ul><li>Geralmente disponíveis como instruções em Assembly e listadas nos manuais para programadores Assembly </li></ul>
    25. 25. Chamadas ao Sistema <ul><li>Chamadas UNIX podem ser feitas diretamente a partir de um programa em C ou em outras linguagens </li></ul><ul><li>Chamadas Windows NT são feitas por intermédio da API Win32, disponível para os compiladores </li></ul><ul><li>Java não permite que as chamadas ao sistema sejam feitas diretamente </li></ul>
    26. 26. Chamadas ao Sistema <ul><li>Métodos para passar parâmetros para o sistema operacional </li></ul><ul><ul><li>Passar parâmetros para registrador </li></ul></ul><ul><ul><li>Armazenar parâmetros em tabelas na memória e passar endereço da tabela para registrador </li></ul></ul><ul><ul><li>Armazenar parâmetros na pilha, que será lida pelo sistema operacional </li></ul></ul>
    27. 27. Chamadas ao Sistema <ul><li>Categorias Principais </li></ul><ul><ul><li>Controle de Processos </li></ul></ul><ul><ul><li>Manipulação de Arquivos </li></ul></ul><ul><ul><li>Manipulação de Dispositivos </li></ul></ul><ul><ul><li>Manutenção de Informações </li></ul></ul><ul><ul><li>Comunicações </li></ul></ul>
    28. 28. Controle de Processos <ul><li>Chamadas comuns </li></ul><ul><ul><li>end, abort </li></ul></ul><ul><ul><li>load, execute </li></ul></ul><ul><ul><li>create, terminate </li></ul></ul><ul><ul><li>get attributes, set attributes </li></ul></ul><ul><ul><li>wait for time </li></ul></ul><ul><ul><li>wait event, signal event </li></ul></ul><ul><ul><li>alocate e free memory </li></ul></ul>
    29. 29. Manipulação de Arquivos <ul><li>Chamadas comuns </li></ul><ul><ul><li>create, delete </li></ul></ul><ul><ul><li>open, close </li></ul></ul><ul><ul><li>read, write, reposition </li></ul></ul><ul><ul><li>get attributes, set attributes </li></ul></ul>
    30. 30. Manipulação de Dispositivos <ul><li>Chamadas comuns </li></ul><ul><ul><li>request, release </li></ul></ul><ul><ul><li>read, write, reposition </li></ul></ul><ul><ul><li>get attributes, set attributes </li></ul></ul><ul><ul><li>logically attach, logically detach </li></ul></ul>
    31. 31. Manutenção de Informações <ul><li>Chamadas comuns </li></ul><ul><ul><li>get time, get date, set time, set date </li></ul></ul><ul><ul><li>get system data, set system data </li></ul></ul><ul><ul><li>get process attributes, get file attributes, get device attributes </li></ul></ul><ul><ul><li>set process attributes, set file attributes, set device attributes </li></ul></ul>
    32. 32. Comunicações <ul><li>Chamadas comuns </li></ul><ul><ul><li>create, delete communication connection </li></ul></ul><ul><ul><li>send, receive messages </li></ul></ul><ul><ul><li>transfer status information </li></ul></ul><ul><ul><li>attach, detach remote devices </li></ul></ul>
    33. 33. Programas de Sistema <ul><li>Os programas de sistema fornecem um ambiente conveniente para o desenvolvimento e execução de programas. </li></ul><ul><li>Gerência de arquivos: criam, excluem, copiam, renomeiam, imprimem, fazem dump , listam e manipulam arquivos e diretórios </li></ul><ul><li>Informações de status: informam sobre data, hora, quantidade de memória, espaço em disco disponível e outros. </li></ul>
    34. 34. Programas de Sistema <ul><li>Modificação de Arquivo: criação e modificação do conteúdo de arquivos </li></ul><ul><li>Suporte à linguagem de programação: compiladores, montadores e interpretadores </li></ul><ul><li>Carregamento e execução de programas: utilitários de carga absolutos e relocáveis, linkeditores e utilitários de carga em overlay </li></ul><ul><li>Comunicações: mecanismos para conexões virtuais entre processos, usuários e sistemas de computação </li></ul>
    35. 35. Estrutura do Sistema <ul><li>Tipos de Estruturas </li></ul><ul><ul><li>Estrutura Simples </li></ul></ul><ul><ul><li>Abordagem em Camadas </li></ul></ul><ul><ul><li>Microkernels </li></ul></ul>
    36. 36. Estrutura Simples <ul><li>Comum em sistemas que começaram como sistemas pequenos que cresceram além do escopo original, como o DOS. </li></ul>
    37. 37. Abordagem em camadas <ul><li>Método de modularização </li></ul><ul><li>O sistema operacional é dividido em camadas, cada qual construída sobre as anteriores </li></ul><ul><li>Cada camada consiste de uma estrutura de dados e um conjunto de rotinas que podem ser chamadas por camadas de nível mais alto </li></ul><ul><li>A principal dificuldade está na definição adequada das camadas. Este modelo costuma ser menos eficiente </li></ul>
    38. 38. Microkernels <ul><li>Em meados da década de 1980, pesquisadores da Carnegie Mellon University desenvolveram o Mach, baseado no Unix e com arquitetura microkernel. </li></ul><ul><li>São removidos os componentes não-essenciais do kernel e implementados como programas de sistema e de nível de usuário </li></ul>
    39. 39. Microkernels <ul><li>A principal função do microkernel é fornecer comunicação entre programa cliente e serviços em execução no espaço do usuário </li></ul><ul><li>O programa cliente e o serviço nunca interagem diretamente, mas por meio de troca de mensagens pelo microkernel </li></ul>
    40. 40. Microkernels <ul><li>Novos serviços podem ser adicionados ao espaço do usuário </li></ul><ul><li>Modificações do kernel tendem a ser menores </li></ul><ul><li>Projetos são mais facilmente portáveis </li></ul><ul><li>Abordagem é utilizada pelo Unix Digital, MacOs X Server e Minix </li></ul>
    41. 41. Estrutura de Sistemas <ul><li>Windows NT utiliza uma estrutura híbrida. Parte da estrutura utiliza camadas, mas os subsistemas Win32, OS/2 e Posix executam no espaço do usuário e trocam mensagens pelo kernel </li></ul>
    42. 42. Máquinas Virtuais <ul><li>Com as técnicas de escalonamento de UCP e de memória virtual, o sistema operacional pode criar ilusão de que um processo tem seu próprio processador com sua memória. </li></ul><ul><li>Neste caso ele fornece aos processos uma interface idêntica ao hardware. Desta forma, cada processo recebe uma cópia virtual do computador </li></ul>
    43. 43. Máquinas Virtuais
    44. 44. Implementação <ul><li>Muito trabalho é necessário para implementar o conceito de Máquinas Virtuais </li></ul><ul><li>A máquina virtual precisa implementar os modos usuário e monitor </li></ul><ul><li>Os modos usuário virtual e monitor virtual executam em modo usuário físico </li></ul>
    45. 45. Benefícios <ul><li>Este conceito oferece proteção total dos recursos do sistema </li></ul><ul><li>Não há problemas de segurança pois cada máquina virtual é completamente isolada das outras </li></ul><ul><li>Este é um excelente veículo para pesquisa e desenvolvimento de sistemas operacionais </li></ul>
    46. 46. Java <ul><li>Java é uma tecnologia introduzida pela Sun Microsystems em 1995 </li></ul><ul><li>Componentes essenciais </li></ul><ul><ul><li>Especificação da linguagem de programação </li></ul></ul><ul><ul><li>Interface de programação de aplicações (API)‏ </li></ul></ul><ul><ul><li>Especificação da máquina virtual </li></ul></ul>
    47. 47. Linguagem de Programação <ul><li>Orientada a objetos </li></ul><ul><li>Independente de arquitetura </li></ul><ul><li>Suporta threads </li></ul><ul><li>Segurança </li></ul><ul><li>Robustez </li></ul>
    48. 48. API <ul><li>API base </li></ul><ul><ul><li>Linguagem (lang)‏ </li></ul></ul><ul><ul><li>Gráficos (awt)‏ </li></ul></ul><ul><ul><li>E/S (io)‏ </li></ul></ul><ul><ul><li>Redes (net)‏ </li></ul></ul><ul><li>Extensão </li></ul><ul><ul><li>Comércio, segurança, mídia e outros </li></ul></ul>
    49. 49. Máquina Virtual Java <ul><li>Consiste de carregador de classes e interpretador Java </li></ul><ul><li>Interpretador pode </li></ul><ul><ul><li>Interpretar um bytecode por vez </li></ul></ul><ul><ul><li>Compilar just-in-time </li></ul></ul><ul><ul><li>Ser implementado em hardware </li></ul></ul>
    50. 50. Ambiente de desenvolvimento <ul><li>Consiste de </li></ul><ul><ul><li>Ambiente de compilação </li></ul></ul><ul><ul><li>Ambiente de execução </li></ul></ul><ul><li>O ambiente de compilação transforme um arquivo-fonte em um bytecode </li></ul><ul><li>O ambiente de execução carrega e interpreta os bytecodes </li></ul>
    51. 51. Projeto e Implementação <ul><li>O primeiro objetivo do projeto é definir objetivos e especificações </li></ul><ul><li>Objetivos de usuário: conveniência, usabilidade, facilidade de aprender, confiabilidade, segurança e eficiência </li></ul><ul><li>Objetivos do sistema: facilidade de projeto, flexibilidade, confiabilidade </li></ul>
    52. 52. Mecanismos e Políticas <ul><li>Mecanismos determinam como fazer alguma coisa </li></ul><ul><li>Políticas determinam o que será feito </li></ul>
    53. 53. Implementação <ul><li>Originalmente os sistemas operacionais eram escritos em Assembly </li></ul><ul><li>O primeiro sistema operacional não escrito em Assembly foi o MCP, escrito em uma variante de ALGOL </li></ul><ul><li>Hoje os sistemas operacionais são escritos em C, C++ e Assembly apenas nos escalonadores e drivers de dispositivo </li></ul>
    54. 54. Implementação <ul><li>Linguagens de alto nível são escritos de forma mais rápida, mais compacta, mais fácil de entender e de depurar </li></ul><ul><li>Os inconvenientes são desempenho reduzido e maiores requisitos de armazenamento </li></ul>
    55. 55. Geração do sistema <ul><li>Em geral os sistemas operacionais são projetados para executar em qualquer máquina de determinada classe, com distintas configurações </li></ul><ul><li>Em cada local de instalação o sistema deve ser gerado e configurado. Este processo é denominado Geração de Sistema (Sysgen)‏ </li></ul>
    56. 56. Geração de Sistema <ul><li>Dados a serem determinados </li></ul><ul><ul><li>Tipo, opções e quantidade de UCP </li></ul></ul><ul><ul><li>Quantidade de memória disponível </li></ul></ul><ul><ul><li>Periféricos disponíveis, seus endereços, interrupções e características </li></ul></ul><ul><ul><li>Opções de sistema operacional desejadas </li></ul></ul><ul><ul><li>Criação do Gerenciador de Inicialização ou Gerenciador de Boot </li></ul></ul>
    57. 57. Bibliografia <ul><li>SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas Operacionais : Conceitos e Aplicações. Tradução de Applied operating system concepts por Adriana Rieche. Rio de Janeiro: Campus, 2000. 585 p. </li></ul><ul><ul><li>Observação: As imagens utilizadas nesta apresentação foram obtidas da fonte aqui citada </li></ul></ul>
    58. 58. Avisos legais <ul><li>Todas as marcas citadas são propriedade de seus respectivos proprietários </li></ul><ul><li>Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-Uso Não-Comercial-Vedada a Criação de Obras Derivadas 3.0. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/3.0/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA. </li></ul>
    59. 59. Sistemas Operacionais <ul><ul><li>Estruturas de Sistemas Operacionais </li></ul></ul><ul><ul><li>Prof. Cid R Andrade </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>http://blog.cidandrade.pro.br </li></ul></ul>

    ×