A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes.

Apresentações semelhantes


Apresentação em tema: "Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes."— Transcrição da apresentação:

1 Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes

2 Sumário Teoria: Sistemas Multiprocessados Teoria: Sistemas Multiprocessados Estudo de caso:K42 Estudo de caso:K42 Teoria: Sistemas Distribuídos Teoria: Sistemas Distribuídos Estudo de caso: Amoeba Estudo de caso: Amoeba

3 Sistemas Multiprocessados

4 Sistemas Multiprocessados: Hardware Multiprocessadores UMA Multiprocessadores UMA Tempo de acesso à memoria uniforme Tempo de acesso à memoria uniforme Memória privada Memória privada Cache Cache Memória compartilhada Memória compartilhada Modelos: Modelos: Barramento único Barramento único Chaves crossbar Chaves crossbar Redes de comutação Redes de comutação Conectam no máximo 100 CPUs Conectam no máximo 100 CPUs

5 Sistemas Multiprocessados: Hardware Multiprocessadores NUMA Multiprocessadores NUMA Endereço único de memória compartilhada Endereço único de memória compartilhada Acesso remoto feito através de LOAD/STORE Acesso remoto feito através de LOAD/STORE Acesso local mais rápido que o remoto Acesso local mais rápido que o remoto NC-NUMA: sem cache NC-NUMA: sem cache CC-NUMA: com cache (cache coerente) CC-NUMA: com cache (cache coerente) Baseado em diretório: acesso por hardware especial Baseado em diretório: acesso por hardware especial

6 Sistemas Multiprocessados: Software Compartilhamento do sistema operacional Compartilhamento do sistema operacional Cada CPU com um SO Cada CPU com um SO Memória dividida estaticamente Memória dividida estaticamente Código do SO compartilhado Código do SO compartilhado Mestre-escravo Mestre-escravo Centralização das chamadas ao sistema Centralização das chamadas ao sistema Melhor aproveitamento das CPUs ociosas Melhor aproveitamento das CPUs ociosas Multiprocessadores Simétricos Multiprocessadores Simétricos Divisão do SO em partes independentes Divisão do SO em partes independentes Uso de Mutex! Uso de Mutex!

7 Sistemas Multiprocessados: Software Sincronização Sincronização Necessidade de um equivalente ao test set and lock (TSL) Necessidade de um equivalente ao test set and lock (TSL) Trava no barramento: hardware especial Trava no barramento: hardware especial Gasto de CPU com teste da trava (spin lock) Gasto de CPU com teste da trava (spin lock) Uso de TSL com cache Uso de TSL com cache Mutex individual em cada cache Mutex individual em cada cache

8 Sistemas Multiprocessados: Software Escalonamento Escalonamento Compartilhamento de tempo Compartilhamento de tempo Compartilhamento de espaço Compartilhamento de espaço Escalonamento em bando Escalonamento em bando

9 K42 IBM Research

10 INTRODUÇÃO

11 O que é o K42? Novo kernel de sistema operacional para sistemas de multiprocessadores de 64-bits com cache coerente Novo kernel de sistema operacional para sistemas de multiprocessadores de 64-bits com cache coerente Open source Open source Em constante evolução, incorporando mecanismos inovadores e técnicas de programação modernas Em constante evolução, incorporando mecanismos inovadores e técnicas de programação modernas

12 Motivação SOs tradicionais multiprocessados SOs tradicionais multiprocessados Multiprocessadores pequenos Multiprocessadores pequenos Latência de memória pequena em comparação com a velocidade dos processadores Latência de memória pequena em comparação com a velocidade dos processadores Custo de compartilhamento de memória era baixo Custo de compartilhamento de memória era baixo Custo de acesso à memória uniforme Custo de acesso à memória uniforme Cache e linhas de cache pequenas Cache e linhas de cache pequenas

13 Motivação K42 K42 Terceira geração da pesquisa de sistemas operacionais multiprocessados. Terceira geração da pesquisa de sistemas operacionais multiprocessados. Primeira geração: Hurricane OS Primeira geração: Hurricane OS Segunda geração: Tornado OS Segunda geração: Tornado OS Desenvolvidos do zero especialmente para os multiprocessadores de memória compartilhada de hoje (NUMA) Desenvolvidos do zero especialmente para os multiprocessadores de memória compartilhada de hoje (NUMA)

14 Objetivos Performance Performance Escalabilidade Escalabilidade Locabilidade Locabilidade Customização Customização Manutenção Manutenção Acessibilidade Acessibilidade Aplicabilidade Aplicabilidade

15 ESTRUTURA DO K42

16 Kernel Kernel Gerenciamento de memória Gerenciamento de memória Gerenciamento de processos Gerenciamento de processos Infraestrutura de IPC Infraestrutura de IPC Escalonamento básico Escalonamento básico System Servers System Servers Bibliotecas em nível de aplicação Bibliotecas em nível de aplicação Evitar overhead de IPC Evitar overhead de IPC Flexibilidade Flexibilidade

17 Orientada a objetos Orientada a objetos Toda comunicação entre processos é feita entre objetos Toda comunicação entre processos é feita entre objetos Suporte à API do Linux Suporte à API do Linux Através de uma camada de emulação que implementa chamadas ao sistema Linux chamando métodos em objetos K42. Através de uma camada de emulação que implementa chamadas ao sistema Linux chamando métodos em objetos K42.

18 Modelo Cliente-Servidor

19 TECNOLOGIA DO K42

20 Suporta as interfaces externas e internas e modelos de execução do Linux, para suportar suas aplicações e kernel Suporta as interfaces externas e internas e modelos de execução do Linux, para suportar suas aplicações e kernel Design feito para que o K42 seja facilmente portado para novos hardwares e depois melhorado para explorar features específicas do hardware utilizado Design feito para que o K42 seja facilmente portado para novos hardwares e depois melhorado para explorar features específicas do hardware utilizado

21 K42 mantém boa performance através de um mecanismo IPC eficiente (com performance comparável a chamadas de sistema) memória compartilhada entre clientes, servers e kernel, diminuindo custos de comunicação K42 mantém boa performance através de um mecanismo IPC eficiente (com performance comparável a chamadas de sistema) memória compartilhada entre clientes, servers e kernel, diminuindo custos de comunicação K42 é totalmente preemptivo e a maior parte dos dados do kernel pode ser paginada – libera mais memória para aplicações K42 é totalmente preemptivo e a maior parte dos dados do kernel pode ser paginada – libera mais memória para aplicações

22 K42 usa clocks sincronizados em diferentes processadores, permitindo que processos sejam executados simultaneamente por pequenos períodos de tempo em múltiplos processadores K42 usa clocks sincronizados em diferentes processadores, permitindo que processos sejam executados simultaneamente por pequenos períodos de tempo em múltiplos processadores Garbage collection modificado Garbage collection modificado Deleção de objetos K42 acontece somente após todas as threads que estejam rodando no momento terminaram Deleção de objetos K42 acontece somente após todas as threads que estejam rodando no momento terminaram

23 IMPLEMENTAÇÃO DE SERVIÇOS DE SISTEMA EM NÍVEL DE USUÁRIO

24 Bibliotecas no espaço de endereçamento da própria aplicação Customização sem sacrificar segurança e performance de outras aplicações Customização sem sacrificar segurança e performance de outras aplicações Redução de overhead Redução de overhead Libera o kernel e os system servers Libera o kernel e os system servers Implementação tão eficiente quanto os serviços de outros sistemas operacionais Implementação tão eficiente quanto os serviços de outros sistemas operacionais

25 Escalonamento de Threads Totalmente no nível de usuário Totalmente no nível de usuário Kernel – dispatcher representa o processo do usuário Kernel – dispatcher representa o processo do usuário Consome poucos recursos do Kernel, torna o escalonamento mais eficiente e é mais flexível, possibilitando otimizações Consome poucos recursos do Kernel, torna o escalonamento mais eficiente e é mais flexível, possibilitando otimizações

26 Interrupções de timer Dispatcher mantém apenas o próximo timeout Dispatcher mantém apenas o próximo timeout O resto fica armazenado no espaço de endereçamento da aplicação O resto fica armazenado no espaço de endereçamento da aplicação Melhora performance Melhora performance Maioria dos timeouts são cancelados antes de ocorrer Maioria dos timeouts são cancelados antes de ocorrer Evento de timer Evento de timer Notificação assíncrona para o dispatcher Notificação assíncrona para o dispatcher

27 Faltas de página O estado da thread é mantida no kernel apenas o tempo suficiente para determinar se a falta foi in-core O estado da thread é mantida no kernel apenas o tempo suficiente para determinar se a falta foi in-core Faltas in-core - kernel resolve. Caso contrário, dispatcher muda para outra thread ou desiste Faltas in-core - kernel resolve. Caso contrário, dispatcher muda para outra thread ou desiste Quando a página é recuperada, um evento assíncrono é passado para o dispatcher, que decide o que fazer Quando a página é recuperada, um evento assíncrono é passado para o dispatcher, que decide o que fazer Custo pouco mais alto que salvar o estado do kernel por evitar salvar ou copiar registradores desnecessariamente Custo pouco mais alto que salvar o estado do kernel por evitar salvar ou copiar registradores desnecessariamente

28 Serviços IPC Serviços do kernel são bem básicos: Serviços do kernel são bem básicos: Muda o processador do espaço de endereçamento do sender para o receiver Muda o processador do espaço de endereçamento do sender para o receiver Mantém a maioria dos registradores intactos Mantém a maioria dos registradores intactos Manda um identificador do sender para o receiver Manda um identificador do sender para o receiver Bibliotecas no nível de usuário: Bibliotecas no nível de usuário: Organiza argumentos nos registradores Organiza argumentos nos registradores Define regiões compartilhadas para transferência de dados Define regiões compartilhadas para transferência de dados Lida com pedidos de autenticação Lida com pedidos de autenticação Tão eficiente quanto os melhores serviços IPC de Kernel na literatura Tão eficiente quanto os melhores serviços IPC de Kernel na literatura

29 Serviços de I/O Tradicionalmente: Tradicionalmente: servers mantem um estado para cada pedido de uma thread cliente servers mantem um estado para cada pedido de uma thread cliente K42: K42: se o server não pode responder no momento, envia um erro e a aplicação bloqueia a thread no seu próprio espaço de endereçamento. se o server não pode responder no momento, envia um erro e a aplicação bloqueia a thread no seu próprio espaço de endereçamento. Server mantém informação de todas as aplicações ligadas a uma porta de comunicação e as notifica quando dados estão disponíveis. Server mantém informação de todas as aplicações ligadas a uma porta de comunicação e as notifica quando dados estão disponíveis.

30 MODELO ORIENTADO A OBJETOS

31 Customização Instâncias de objetos por recurso permite regras e implementações diferentes para cada caso Instâncias de objetos por recurso permite regras e implementações diferentes para cada caso Exemplo: permite que cada região de memória tenha um tamanho de página diferente ou cada processo lidar com exceções diferentemente Exemplo: permite que cada região de memória tenha um tamanho de página diferente ou cada processo lidar com exceções diferentemente Componentes de uma aplicação podem ser trocados por novas implementações sem tirar o sistema do ar Componentes de uma aplicação podem ser trocados por novas implementações sem tirar o sistema do ar Exemplo: a implementação de um arquivo pode ser modificada a medida que ele cresce, de uma otimizada para arquivos pequenos para uma otimizada para arquivos grandes Exemplo: a implementação de um arquivo pode ser modificada a medida que ele cresce, de uma otimizada para arquivos pequenos para uma otimizada para arquivos grandes

32 Performance de multiprocessadores Boa escalabilidade: Boa escalabilidade: Objeto encapsula todos os dados necessários para gerenciar um recurso e todos os locks necessários para acessar os dados. Objeto encapsula todos os dados necessários para gerenciar um recurso e todos os locks necessários para acessar os dados. Não existe locks ou estrutura de dados globais Não existe locks ou estrutura de dados globais Acessos a diferentes recursos são gerenciados pelo sistema totalmente em paralelo. Acessos a diferentes recursos são gerenciados pelo sistema totalmente em paralelo.

33 Performance de multiprocessadores Clustered objects: Clustered objects: Tecnologia utilizada para objetos muito compartilhados Tecnologia utilizada para objetos muito compartilhados Permite que a implementação desses objetos seja particionada ou replicada nos processadores que a utilizam Permite que a implementação desses objetos seja particionada ou replicada nos processadores que a utilizam Transparente para os clientes desse objeto Transparente para os clientes desse objeto

34 Interação cliente/servidor Stub-compiler: ligação do mecanismo IPC à interfaces C++ Stub-compiler: ligação do mecanismo IPC à interfaces C++ Objeto Stub: apresenta a interface para a aplicação cliente e organiza chamadas à mesma através do mecanismo IPC Objeto Stub: apresenta a interface para a aplicação cliente e organiza chamadas à mesma através do mecanismo IPC Objeto X: recebe mensagens IPC e reorganiza em chamadas ao objeto real que exportou a interface Objeto X: recebe mensagens IPC e reorganiza em chamadas ao objeto real que exportou a interface A ligação entre um objeto X e o seu target é feito em tempo de compilação baseado nas assinaturas dos métodos (polimorfismo) A ligação entre um objeto X e o seu target é feito em tempo de compilação baseado nas assinaturas dos métodos (polimorfismo)

35 Interação cliente/servidor Stub-compiler inclui um modelo para executar autenticação Stub-compiler inclui um modelo para executar autenticação Chamadas IPC recebem um id pelo kernel Chamadas IPC recebem um id pelo kernel Cada chamada possui diferente direitos de acesso que são verificados antes que o mecanismo IPC realize a chamada Cada chamada possui diferente direitos de acesso que são verificados antes que o mecanismo IPC realize a chamada Clientes com o acesso correto podem dar acesso ao mesmo objeto a outros clientes, independente do tipo de objeto Clientes com o acesso correto podem dar acesso ao mesmo objeto a outros clientes, independente do tipo de objeto

36 Outros aspectos Alta modularidade Alta modularidade Facilita contribuições ao código Facilita contribuições ao código Objetos com implementações específicas podem ser introduzidos sem penalidades para aplicações que não os utilizam Objetos com implementações específicas podem ser introduzidos sem penalidades para aplicações que não os utilizam Facilita comparação entre duas implementações diferentes Facilita comparação entre duas implementações diferentes Hot-swap permite que patches de segurança, correção ou melhoria de performance sejam instalados sem tirar o sistema do ar. Hot-swap permite que patches de segurança, correção ou melhoria de performance sejam instalados sem tirar o sistema do ar.

37 Desafios Cuidado extra ao usar C++ Cuidado extra ao usar C++ Uso de objetos grandes para evitar overhead Uso de objetos grandes para evitar overhead Examinar o código assembly gerado para descobrir bugs de performance no compilador Examinar o código assembly gerado para descobrir bugs de performance no compilador Dificuldade de chegar a um estado global Dificuldade de chegar a um estado global Muitas instâncias – por exemplo, difícil de rodar a thread com a maior prioridade global Muitas instâncias – por exemplo, difícil de rodar a thread com a maior prioridade global Área de pesquisa Área de pesquisa

38 Sistemas Distribuídos

39 Sistemas Distribuídos: Hardware Utiliza sistemas completamente separados Utiliza sistemas completamente separados Não tem limitação em espaço físico Não tem limitação em espaço físico Funcionam sobre uma rede de dados comum Funcionam sobre uma rede de dados comum

40 Sistemas Distribuídos: Software Cada CPU tem seu próprio SO Cada CPU tem seu próprio SO Camada de abstração: Middleware Camada de abstração: Middleware Tentativa de uniformizar a interface entre usuário e sistemas Tentativa de uniformizar a interface entre usuário e sistemas

41 Sistemas Distribuídos: Software Middleware baseado em documento Middleware baseado em documento Uso de repositórios de arquivos Uso de repositórios de arquivos Protocolo definido para acesso Protocolo definido para acesso Exemplos: Exemplos: Internet Internet

42 Sistemas Distribuídos: Software Middleware baseado no sistema de arquivos Middleware baseado no sistema de arquivos Modelo upload/download Modelo upload/download Transferência de arquivos inteiros Transferência de arquivos inteiros Modelo acesso remoto Modelo acesso remoto Transferência de trechos modificados Transferência de trechos modificados Exemplo: Exemplo: AFS AFS

43 Sistemas Distribuídos: Software Middleware baseado em objetos compartilhados Middleware baseado em objetos compartilhados Protocolo para utilização de qualquer recurso Protocolo para utilização de qualquer recurso Exemplos: Exemplos: CORBA CORBA Globo Globo

44 Sistemas Distribuídos: Software Middleware com base em coordenação Middleware com base em coordenação Baseado no uso de tuplas na rede Baseado no uso de tuplas na rede Conjunto mínimo de operações Conjunto mínimo de operações Exemplos: Exemplos: Linda Linda Publica/Escreve Publica/Escreve Jini Jini

45 Amoeba

46 Filosofia Computadores estão se tornanado cada vez mais baratos e rápidos Computadores estão se tornanado cada vez mais baratos e rápidos Aumentar a performance em redes de computadores Aumentar a performance em redes de computadores Necessidade de lidar com hardware fisicamente distribuído e usando software logicamente centralizado Necessidade de lidar com hardware fisicamente distribuído e usando software logicamente centralizado Prover a sensação de um único e simples computador com sistema de timesharing. Prover a sensação de um único e simples computador com sistema de timesharing.

47 Objetivos Deve ser pequeno Deve ser pequeno Simples de usar Simples de usar Escalabilidade para um grande número de processadores Escalabilidade para um grande número de processadores Bom grau de tolerância a faltas Bom grau de tolerância a faltas Alta Performance Alta Performance Possibilidade de paralelismo Possibilidade de paralelismo Transparente para os usuários Transparente para os usuários

48 Diferença entre Amoeba e S.O. em rede Usuário loga em um sistema como um todo Usuário loga em um sistema como um todo O sistema decide o melhor lugar para rodar o programa O sistema decide o melhor lugar para rodar o programa Serviço de nomes de objetos, único e amplo Serviço de nomes de objetos, único e amplo Usuário loga em uma máquina específica Usuário loga em uma máquina específica Prograna executa na máquina local, a menos que seja especificada outra. Prograna executa na máquina local, a menos que seja especificada outra. Arquivos são locais, a menos que um sistema remoto seja montado. Arquivos são locais, a menos que um sistema remoto seja montado. AmoebaS.O em rede

49 Arquitetura Workstations Workstations Pool de processadores Pool de processadores Servidores especializados Servidores especializados Arquivo Arquivo Base de dados Base de dados Diretórios Diretórios Etc Etc Gateway Gateway

50 Arquitetura

51 Workstations Uma por usuário Uma por usuário Onde os usuários realizam suas tarefas Onde os usuários realizam suas tarefas Estas podem ser Suns, IBM, PC/AT e terminais X Estas podem ser Suns, IBM, PC/AT e terminais X

52 Pool de Processadores Grupo de CPUs Grupo de CPUs CPU pode ser dinamicamente alocada e depois retorna ao pool CPU pode ser dinamicamente alocada e depois retorna ao pool Oferece a possibilidade de processamento em paralelo. Oferece a possibilidade de processamento em paralelo.

53 Servidores especialiados Servidor de diretórios Servidor de diretórios Servidor de arquivos Servidor de arquivos Servidor de boot Servidor de boot Servidor de banco de dados Servidor de banco de dados Entre outros… Entre outros…

54 Gateways Liga sistemas Amoeba em diferentes lugares em um sistema único e uniforme. Liga sistemas Amoeba em diferentes lugares em um sistema único e uniforme. Isola o sistema Amoeba das peculiaridades dos protocolos de rede que devem ser usados sobre as WANs. Isola o sistema Amoeba das peculiaridades dos protocolos de rede que devem ser usados sobre as WANs.

55 Amoeba Kernel Todas as máquinas Amoeba rodam o mesmo kernel Todas as máquinas Amoeba rodam o mesmo kernel O kernel é responsável pela gerenciamento de memória, I/O, comunicação entre processos, primitivas de objetos, processamento básico e multithreading. O kernel é responsável pela gerenciamento de memória, I/O, comunicação entre processos, primitivas de objetos, processamento básico e multithreading. O objetivo é manter o kernel o menor possível para aumentar confiança e permitir ao S.O. rodar como se fosse um processo de usuário. O objetivo é manter o kernel o menor possível para aumentar confiança e permitir ao S.O. rodar como se fosse um processo de usuário.

56 Objetos Amoeba é baseado em objetos e não orientado a objetos. Amoeba é baseado em objetos e não orientado a objetos. São acessados através de capacidades. São acessados através de capacidades. O sistema pode ser visto como uma coleção de objetos que podem ser tanto hardware como software. Objetos software são mais comuns. O sistema pode ser visto como uma coleção de objetos que podem ser tanto hardware como software. Objetos software são mais comuns. Cada objeto tem um lista de operações que podem ser realizadas e uma capacidade ou ticket. Cada objeto tem um lista de operações que podem ser realizadas e uma capacidade ou ticket.

57 Remote Procedure Call É utilizado para a comunicação entre cliente e servidor. É utilizado para a comunicação entre cliente e servidor. Os processos de usuário enviam uma mensagem de pedido para o servidor que gerencia um objeto. Os processos de usuário enviam uma mensagem de pedido para o servidor que gerencia um objeto. O pedido contém a capacidade do objeto, a operação a ser realizada e alguns parâmetros O pedido contém a capacidade do objeto, a operação a ser realizada e alguns parâmetros

58 Remote Procedure Call O processo do usuário é bloqueado enquanto espera a chamada se completar. O processo do usuário é bloqueado enquanto espera a chamada se completar. Depois de completa, o servidor responde com uma mensagem que desbloqueia o processo usuário. Depois de completa, o servidor responde com uma mensagem que desbloqueia o processo usuário. Enviando pedidos, sendo bloqueados e aceitando respostas resulta no processo de RPC. Este por sua vez é encapsulado em rotinas. Enviando pedidos, sendo bloqueados e aceitando respostas resulta no processo de RPC. Este por sua vez é encapsulado em rotinas.

59 Remote Procedure Call Interface RPC é construída sobre o protocolo FLIP Interface RPC é construída sobre o protocolo FLIP RPC é baseado em 4 primitivas RPC é baseado em 4 primitivas Getreq – Get requisition Getreq – Get requisition Putreq – Put requisition Putreq – Put requisition Trans - Transaction Trans - Transaction Timeout – Time out Timeout – Time out

60 Capacidade ou ticket Para criar um objeto, o cliente manda um RPC para o servidor e recebe de volta uma capacidade para acessar esse objeto. Para criar um objeto, o cliente manda um RPC para o servidor e recebe de volta uma capacidade para acessar esse objeto. Uma capacidade é formada por 128 bits: Uma capacidade é formada por 128 bits: 48 bits com o server port (endereço do servidor e sua porta) 48 bits com o server port (endereço do servidor e sua porta) 24 bits com a identificação do objeto 24 bits com a identificação do objeto 8 bits com os direitos de acesso 8 bits com os direitos de acesso 48 bits de verificação 48 bits de verificação Provê um mecanismo unificado para nomes, acesso e proteção de objetos Provê um mecanismo unificado para nomes, acesso e proteção de objetos É criptografada para evitar que outros clientes alterem os privilégios da capacidade. É criptografada para evitar que outros clientes alterem os privilégios da capacidade.

61 Protocolo FLIP FLIP (Fast Local Internet Protocol) foi desenvolvido por Andrew Tanenbaum. FLIP (Fast Local Internet Protocol) foi desenvolvido por Andrew Tanenbaum. Seu objetivo é otimizar a velocidade das RPCs do sistema. Seu objetivo é otimizar a velocidade das RPCs do sistema. FLIP também provê automaticamente o menor roteamento de mensagens e provê automaticamente a passagem entre gateways de redes conectadas. FLIP também provê automaticamente o menor roteamento de mensagens e provê automaticamente a passagem entre gateways de redes conectadas.

62 Getreq Usada por servidores Usada por servidores O servidor inicializado, realiza uma operação de getreq com a porta que deseja ouvir. O servidor inicializado, realiza uma operação de getreq com a porta que deseja ouvir. getreq bloqueia o servidor até que um cliente envie um pedido utilizando a operação trans. getreq bloqueia o servidor até que um cliente envie um pedido utilizando a operação trans. Quando um pedido chega, o servidor checa se a capacidade é válida e se tem privilégios suficientes. Quando um pedido chega, o servidor checa se a capacidade é válida e se tem privilégios suficientes.

63 Putreq Quando um servidor completa uma operação, ele manda uma resposta ao cliente usado putreq. Quando um servidor completa uma operação, ele manda uma resposta ao cliente usado putreq. Logo depois disso ele executa a operação getreq. Logo depois disso ele executa a operação getreq.

64 Trans Usada por clientes para enviar pedidos aos servidores. Usada por clientes para enviar pedidos aos servidores. A porta do servidor é o primeiro parâmetro da operação trans. A porta do servidor é o primeiro parâmetro da operação trans. A operação trans bloqueia o cliente até que o servidor mande uma resposta. A operação trans bloqueia o cliente até que o servidor mande uma resposta. O kernel no qual a operação trans é executada tenta localizar o servidor transmitindo por broadcasting o pedido juntamente com a porta. O kernel no qual a operação trans é executada tenta localizar o servidor transmitindo por broadcasting o pedido juntamente com a porta.

65 Trans Se um outro kernel tem um servidor esperando por um pedido naquela porta, ele responde e o RPC é enviado ao servidor, o qual processa o pedido e retorna uma resposta. Se um outro kernel tem um servidor esperando por um pedido naquela porta, ele responde e o RPC é enviado ao servidor, o qual processa o pedido e retorna uma resposta. O kernel mantêm um cachê de portas conhecidas para melhorar a performance para próximos RPCs O kernel mantêm um cachê de portas conhecidas para melhorar a performance para próximos RPCs Trans não é chamada diretamente pelos clientes, mas embutida em uma chamada de processo que organiza os dados e o envio de mensagens. Trans não é chamada diretamente pelos clientes, mas embutida em uma chamada de processo que organiza os dados e o envio de mensagens.

66 Timeout Usado para informar a quantidade de tempo gasta procurando um servidor para atender o pedido de uma operação trans. Usado para informar a quantidade de tempo gasta procurando um servidor para atender o pedido de uma operação trans. timeout padrão é 5 segundos. timeout padrão é 5 segundos.

67 Programação Cliente/Servidor Não é necessário que a programação do cliente ou do servidor se preocupe com a preparação de dados ou rotinas de transporte na rede. Não é necessário que a programação do cliente ou do servidor se preocupe com a preparação de dados ou rotinas de transporte na rede. A própria AIL(Amoeba Interface Language) gera esse código automaticamente A própria AIL(Amoeba Interface Language) gera esse código automaticamente Servidorer podem executar processos multithreaded mas isso não é obrigatório Servidorer podem executar processos multithreaded mas isso não é obrigatório

68 Threads Cada processo tem seu próprio espaço de endereço e contém multiplas threads. Cada processo tem seu próprio espaço de endereço e contém multiplas threads. Essas threads tem suas próprias pilhas e descritor de processos, mas compartilha os dados globais e o código. Essas threads tem suas próprias pilhas e descritor de processos, mas compartilha os dados globais e o código.

69 Diretórios Nomes de arquivos não implementados pelo servidor de arquivos Nomes de arquivos não implementados pelo servidor de arquivos Muito mais tipos de objetos que arquivos, então a necessidade de um serviço de nomes geral. Muito mais tipos de objetos que arquivos, então a necessidade de um serviço de nomes geral. Servidor de diretórios implementa o serviço de nomes, implementando um grafo direcionado arbitrário de diretórios Servidor de diretórios implementa o serviço de nomes, implementando um grafo direcionado arbitrário de diretórios

70 Diretórios Manipula os nomes de arquivos Manipula os nomes de arquivos Objeto diretório é uma lista de pares. Objeto diretório é uma lista de pares. Os pares são formados de uma string para o nome e um conjunto de capacidades. Os pares são formados de uma string para o nome e um conjunto de capacidades. Um grau de tolerância extra é alcançado pela duplicação do servidor de diretórios que se comunicam entre si para manter a integridade dos diretórios. Um grau de tolerância extra é alcançado pela duplicação do servidor de diretórios que se comunicam entre si para manter a integridade dos diretórios. É o único que conhece a localização física de cada arquivo. É o único que conhece a localização física de cada arquivo.

71 Arquivos O servidor de arquivos é conhecido como Bullet Server. O servidor de arquivos é conhecido como Bullet Server. Armazena os arquivos contiguamente no disco, para dar ao sistema uma alta performance. Armazena os arquivos contiguamente no disco, para dar ao sistema uma alta performance. Servidores de arquivos são imutáveis. Uma vez criados não podem ser mudados. Servidores de arquivos são imutáveis. Uma vez criados não podem ser mudados.

72 Amoeba e emulação POSIX Biblioteca de Emulação POSIX provê uma compatibilidade de código fonte razoável. Biblioteca de Emulação POSIX provê uma compatibilidade de código fonte razoável. Isso provê um Amoeba com um ambiente de programação e simplifica a migração de softwares de sistemas UNIX-like. Isso provê um Amoeba com um ambiente de programação e simplifica a migração de softwares de sistemas UNIX-like.

73 Pontos importantes O sistema é gratuito O sistema é gratuito Ele não teve uma atualização oficial em 10 anos. Ele não teve uma atualização oficial em 10 anos. Pode-se utilizar CPUs mais velhas e lentas para crias um sistema poderoso. Pode-se utilizar CPUs mais velhas e lentas para crias um sistema poderoso. Micro-kernel permite que outros sistemas de arquivos sejam criados. Micro-kernel permite que outros sistemas de arquivos sejam criados. Tem 4 objetivos principais Tem 4 objetivos principais Distribuição Distribuição Paralelismo Paralelismo Transparência Transparência Performance Performance Tem muitos comandos e programas parecidos com o UNIX Tem muitos comandos e programas parecidos com o UNIX Pode somente manipular programas tão grandes quanto a sua memória física Pode somente manipular programas tão grandes quanto a sua memória física

74 Muito Obrigado! Referências Referências Tanenbaum A., Sistemas Operacionais Modernos, Tanenbaum A., Sistemas Operacionais Modernos, ch_projects.nsf/pages/k42.index.html ch_projects.nsf/pages/k42.index.html ch_projects.nsf/pages/k42.index.html ch_projects.nsf/pages/k42.index.html


Carregar ppt "Tópicos em Sistemas Operacionais Sistemas Operacionais Distribuídos e Multiprocessados Por André Macedo, Marcelo Moraes, Thaís Fernandes."

Apresentações semelhantes


Anúncios Google