# EROS

O EROS ou EROS GREMIO (The Extremely Reliable Operating System) é um sistema operacional desenvolvido pelo The EROS Group, pelo LLC, pela Universidade Johns Hopkins, e pela Universidade da Pensilvânia. Recursos interessantes desse sistema incluem persistência automática de dados e processos, algum suporte preliminar para tempo-real, e segurança baseada em capacidades. O EROS é um sistema operacional para pesquisa, e nunca foi empregado em aplicações reais. Em 2005 seu desenvolvimento foi interrompido em favor de dois sistemas, CapROS e Coyotos, seus sucessores.

## Os conceitos chave

O objetivo do sistema EROS (e seus parentes) é fornecer um forte suporte no nível do sistema operacional para reestruturação eficiente de aplicações críticas em pequenos componentes de comunicação. Cada componente pode comunicar-se com o outro somente através das interfaces protegidas, e é isolado do resto do sistema. A "interface protegida", neste contexto, é aquela que é imposta pela parte mais baixo nível do sistema operacional (o núcleo). O núcleo é a única porção do sistema que pode mover informação a partir de um processo para outro. Ele também tem o controle completo da máquina e (se construído corretamente) não pode ser contornado. No EROS, o mecanismo fornecido pelo núcleo que são os nomes de um componente e invocam os serviços de outro são capability usando comunicação entre processos (IPC). Ao impor as interfaces protegidas por capacidade, o núcleo assegura-se de que todas as comunicações a um processo cheguem através de uma relação intencionalmente exportada. Garante também que nenhuma invocação seja possível a menos que o componente invocando detém uma capacidade válida para invocar. A proteção em sistemas de capacidade é alcançado através da restrição da capacidade de transmissão de um componente para o outro, muitas vezes, através de uma política de segurança conhecida como confinamento.
Sistemas de capacidade naturalmente promover estrutura de software baseada em componentes. Esta aproximação organização é similar a línguagem de programação conceito da programação orientada a objetos, mas ocorre em maior granularidade e não inclui o conceito de herança. Quando o software é reestruturado, desta forma, vários benefícios emergem:
* Os componentes individuais são mais naturalmente estruturados como loops de evento. Os exemplos dos sistemas que são estruturados geralmente desta maneira incluem sistemas de controle do voo (veja também DO-178B Software Considerations in Airborne Systems and Equipment Certification, e sistemas de comutação telefônica (veja o 5ESS switch). Programação orientada a eventos é escolhida para estes sistemas primeiramente por causa do simplicidade e da robustes, que são atributos essenciais em sistemas de risco de vida e missão-crítica.
* Os componentes tornam-se menores e testável individualmente, que ajuda o implementador de identificar mais facilmente falhas e erros.
* O isolamento de cada componente do outro limita o espaço dos danos que podem ocorrer quando algo vai erradamente ou o software comportar-se mal.
Coletivamente, estes benefícios conduzem aos sistemas mensuravelmente mais robustos e seguros. O SDS Sigma 7 era um sistema baseado em ferramentas de capacidade, projetado originalmente para o uso em centrais telefônicas. Um projeto baseado em capacidade foi escolhido especificamente por razões de robustez.
Ao contrário de muitos sistemas anteriores, as capacidades são o único mecanismo para nomear e usar recursos no EROS. Tal sistema é por vezes referido como um sistema puro de capacidade. O IBM AS/400 é um exemplo de um sistema comercialmente bem sucedido de capacidade, mas não é um sistema puro de capacidade.
As arquiteturas puras de capacidade, são suportadas bem testadas e matemáticas maduros modelos de segurança. Estes foram usados demonstrar formalmente que os sistemas baseados em capacidade podem ser feitos seguros se implementado corretamente. A chamado "propriedade de segurança" foi mostrada para ser determinável para sistemas puros de capacidade (veja Lipton). O confinamento, que é o bloco de construção fundamental de isolamento, foi verificado formalmente para ser assegurado por sistemas puros de capacidade, e é reduzido à implementação prática pelo EROS "construtor" e o KeyKOS "fábrica". Não existe verificação comparável a qualquer outro mecanismo de proteção primitiva. Há um resultado fundamental na literatura mostrando que a "segurança" é matematicamente indecidível no caso geral (veja HRU, mas note que isso é, naturalmente, demonstrável por um conjunto infinito de casos restritos). De maior importância prática, a segurança tem mostrado ser falsa para todos os mecanismos de proteção primitivos de transporte em sistemas operacionais atuais (veja HRU). A segurança é uma condição necessária para a execução bem sucedida de qualquer política de segurança. Em termos práticos, este resultado significa que não é possível, em princípio, para proteger os sistemas atuais, mas é potencialmente possível para proteger os sistemas baseados em capacidade desde que sejam executadas com cuidado suficiente. Nenhum sistema já foi penetrado com sucesso, e os seus mecanismos de isolamento nunca foram derrotados com sucesso por qualquer atacante interno, mas não se sabe se as implementações EROS ou KeyKOS foram cuidadosas o suficiente. Um dos objetivos do projeto Coyotos é demonstrar que o componente de isolamento e segurança foram definitivamente alcançados através da aplicação de técnicas de verificação de software.
O sistema de L4.sec, que é um sucessor da família microkernel L4, é um sistema baseado em capacidade, e foi influenciado significativamente pelos resultados do projeto do EROS. A influência é mútua, já que o trabalho EROS em invocação de alto desempenho foi motivado fortemente por Jochen Liedtke com o sucessos da família microkernel L4.

## História

O principal desenvolvedor do EROS era Jonathan S.Shapiro. É também dirigia o Coyotos, que é uma "etapa evolucionária" além do sistema operacional EROS.
O projeto EROS começou em 1991, como uma reconstrução de sala limpa de um sistema anterior, KeyKOS. KeyKOS era um sistema operacional desenvolvido pela Key Logic, Inc., e era uma continuação direta do trabalho no sistema criado por Tymshare, Inc do GNOSIS (Great New Operating System In the Sky). O sistema de KeyKOS ofereceu um grau de segurança e a confiabilidade que remanesce não duplicados hoje (2006). As circunstâncias que cercam infeliz morte da Key Logic's em 1991 fizeram licenciamento do KeyKOS impraticável. Desde que KeyKOS não funcionou em processadores populares em nenhum caso, decisão foi tomada para reconstruí-lo a partir da documentação disponível publicamente.
Ao final de 1992, tornou-se claro que a arquitetura do processador tinha mudado significativamente desde a introdução da ideia de capacidade, e já não era óbvio que os sistemas estruturados em componentes eram práticos. Sistemas baseados micronúcleo, que da mesma forma favorecem um grande número de processos e IPC, estavam enfrentando desafios de desempenho graves, e era incerto se estes poderiam ser resolvidos com sucesso. A arquitetura x86 foi claramente emergindo como a arquitetura dominante, mas os custos usuário/supervisor transição de latência nos 386 e 486 apresentaram sérios desafios para isolamento de controle de processo. O projeto EROS estava se transformando em um esforço de pesquisa, e mudou-se para a Universidade da Pensilvânia para se tornar o foco de pesquisa de dissertação de Shapiro. Em 1999, uma implementação de alto desempenho para o processador Pentium tinha sido demonstrado que era diretamente o desempenho competitivo com a família microkernel L4, que sua velocidade excepcional no IPC. O mecanismo do confinamento do EROS tinha sido formalmente verificado, no processo que cría um modelo formal geral para sistemas seguros da capacidade.
Em 2000, Shapiro ingressou na faculdade de Ciência da Computação da Universidade Johns Hopkins. Em Hopkins, o objetivo era mostrar como usar as facilidades oferecidas pelo kernel EROS para construir servidores seguros e defensáveis ​​no nível de aplicativo. Financiado pelo Defense Advanced Research Projects Agency e pela Air Force Research Laboratory, o EROS foi usado como a base para um sistema de janelas de confiança, um alto desempenho, pilha de rede defensável, e iniciando um web browser seguro. Foi usado também explorar a eficácia da verificação estática leve. Em 2003, alguns problemas de segurança muito desafiadores foram descobertos que são intrínsecos a qualquer arquitetura de sistemas com base em primitivas sincrónicas de IPC (notàvelmente incluindo EROS e L4). Trabalho em EROS foi interrompido em favor do Coyotos, que resolve esses problemas.
A partir de 2006, EROS e seus sucessores são os sistemas de capacidade disponíveis amplamente, que são executados em hardware.

## Estado

O trabalho no EROS pelo grupo original parou, mas há dois sistemas sucessores. O sistema CapROS está construindo diretamente na base de código do EROS, o sistema Coyotos um sucessor que aborda algumas das deficiências arquitetônicas do EROS, e está explorando (como a pesquisa) a possibilidade de um sistema operacional totalmente verificado. Ambos CapROS e Coyotos esperam-se ser liberados em várias distribuições comerciais.