Sistemas operacionais de tempo real

Sistemas operacionais de tempo real

SISTEMAS OPERACIONAIS DE TEMPO-REAL

1. introdução

Sistemas operacionais de real-tempo (RTOSs) proveja apoio básico por programar, recurso, Administração, sincronização, comunicação, cronometragem precisa, e I/O. RTOSs têm evoluído de único-use sistemas especializados a uma variedade larga de mais geral-propósito sistemas operacionais (como variantes de real-tempo de Linux). Nós também vimos uma evolução de RTOSs que é completamente previsível e segurança de apoio aplicações -críticas para esses que apoio aplicações de real-tempo macias. Tal apoio inclui o conceito de qualidade de serviço (QoS) para sistemas de real-tempo abertos, freqüentemente aplicou a multimedia aplicações como também grande, complexo distribuiu sistemas de real-tempo. Investigadores em realidade - cronometre sistema operacional desenvolveu idéias novas e paradigmas que aumentam tradicional sistemas operacionais para ser mais eficiente e previsível. Algumas destas idéias são agora ache em sistemas operacionais tradicionais e muitas outras idéias é achado na variedade larga de RTOS no mercado hoje. O mercado de RTOS inclui muitos núcleos proprietário, núcleos composição-baseados, e versões de real-tempo de OSs popular como Linux e Windows-NT. Muitos padrões de indústria foram in¯uenced por RTOS pesquise incluindo POSIX real-tempo extensões, Especificação de Real-tempo para Java, OSEK (RTOS automóvel Padrão), Ada83 e Ada95. Este papel provê uma avaliação das arquiteturas, Princípios, paradigmas, e idéias novas desenvolvidos em RTOS pesquisam durante os últimos 20 anos.

O papel concentra em pesquisa feita dentro do contexto de RTOSs completo. Nota tanto mais pesquisa em RTOSs foi realizada e publicou como específico aspectos em RTOS. Por exemplo, sincronização de real-tempo e administração de memória pesquisa tem muitos resultados excitantes. Também, muitas idéias acharam no papel de companheiro em programação de real-tempo pode ser achada como bem em vários RTOSs.

2.RTOS Taxonomy e Arquiteturas

Sistemas operacionais de real-tempo enfatizam previsibilidade, eficiência, e incluem características para constrangimentos de cronometragem de apoio. Várias categorias gerais de sistemas operacionais de real-tempo exista: núcleos pequenos, proprietário (comercialmente disponível como também núcleos de homegrown), extensões de real-tempo para sistemas operacionais de timesharing(computer central multiusuarios) comerciais como Unix e Linux, núcleos componente-baseados, núcleos QoS-baseados, e (em grande parte) Universidade-baseado pesquise núcleos.

2.1. pequenos, Núcleos Rápidos, Proprietário,

Os núcleos pequenos, rápidos, proprietário entram em duas variedades: homegrown1 e comercial oferecidos. 2 Ambas as variedades são freqüentemente usadas para sistemas embutidos pequenos quando muito rápido e execução altamente previsível deve ser garantida. Os núcleos de homegrown normalmente são altamente especializado à aplicação. O custo de desenvolver exclusivamente e manter um núcleo de homegrown, como também a qualidade crescente dos oferecimentos comerciais é Reduzindo a prática de núcleos de homegrown geradores significativamente. Além, OSs componente-baseado (veja Seção 2.3) também está reduzindo a necessidade por homegrown núcleos. Para ambas as variedades de núcleos proprietário, alcançar velocidade e previsibilidade, o núcleos são tirados abaixo e aperfeiçoaram versões de sistemas operacionais de timesharing. Para reduza o overheads de correr-tempo incorrido pelo núcleo e fazer o jejum de sistema, o núcleo:

* tem um interruptor de contexto rápido* tem um tamanho pequeno (com sua funcionalidade mínima associada), * responde para externo interrompe depressa (às vezes com um máximo garantido latência para postar um evento mas, geralmente, nenhuma garantia é determinada sobre ao processar de o evento será completado; esta garantia posterior às vezes pode ser computada se são nomeadas prioridades corretamente), * minimiza intervalos durante qual interrompe é inválido, * provê fixo ou variável classificou segundo o tamanho partições para administração de memória (i.e., nenhum virtual memória) como também a habilidade para prender código e dados em memória, um * provê especial seqüente (freqüentemente memória-baseado) arquivos aos que podem acumular dados taxa rápida. * Lidar com cronometrar exigências, o núcleo, apoios multi-atarefando, * provê um preemptive prioridade-baseado que programa mecanismo, * provê tempo de execução saltado pela maioria do primitives* mantém um relógio de real-tempo de alto-resolução, 239 * provê para alarmes especiais e intervalos,

* real-tempo de apoios que faz fila disciplinas primeiro como prazo final mais cedo e primitives para esmagando uma mensagem na frente de uma fila, * provê primitives para demorar processo por uma quantia fixa de tempo e suspender / retome execução.

Em geral, os núcleos também executam multi-atarefando e comunicação de enterrar-tarefa e sincronização por primitives standard como caixas postal (mensagem faz fila), eventos, sinais, mutexes, e semáforos. Enquanto tudo estas características posteriores são projetadas para ser rápido, `` fast'' é um termo relativo e não suficiente ao lidar com constrangimentos de real-tempo.

Não obstante, muitos real-tempo os desenhistas de sistemas usam estas características como uma base em qual construir sistemas de real-tempo. Isto foi efetivo em aplicações embutidas pequenas tal como instrumentation, frente-fins de comunicação, peripherals inteligente e muitas áreas de controle de processo. Considerando que estas aplicações são simples, é relativamente fácil mostrar que tudo são conhecidos constrangimentos cronometrando. Por conseguinte, os núcleos provêem exatamente o mínimo funcionalidade da que é precisada. Porém, como aplicações ficam mais complexas, se torna mais difícil fazer uma solução baseado em programação prioridade-dirigida onde tudo cronometrando, tempo de computação, recurso, precedência, e exigências de valor são traçados um única prioridade para cada tarefa. Nestes situações, podem ser bastante demonstrando predictability difícil.

2.2 Extensões de Real-tempo para sistemas operacionais Comerciais

Uma segunda aproximação para real-cronometrar sistemas operacionais é a extensão de comercial por exemplo, produtos que estendem Unix a RT-Unix (Furht et al., 1991), Linux para RT -LINUX (FSLLABS; NIEHAUS, KURT,; RedIce Linux), ou POSIX para RT-POSIX, ou MACH para RT-MACH (Tokuda et al., 1990), ou CORO para uma versão de real-tempo (sistema de CORO).

A versão de real-tempo de sistemas operacionais comerciais está geralmente mais lenta e menos previsível que os núcleos proprietário, mas tem maior funcionalidade e software melhor ambientes very de desenvolvimento considerações importantes em muitos grande ou complexo aplicações. Outra vantagem significante é que eles estão baseado em um jogo de familiar interfaces (padrões) isso facilita portability . Para Unix, como muitas variações de Unix, evoluiu, um IEEE padronização esforço, POSIX chamado, definiu um jogo comum de interfaces de usuário-nível para sistemas operacionais. O esforço tem focussed em onze importante real-tempo relacionou funções: cronômetros, prioridade programando, memória compartilhada, arquivos de real-tempo,semáforos, comunicação de interprocess, noti®cation de evento assíncrono, processo, memória fechando, I/O assíncrono, I/O síncrono, e linhas.

Vários problemas existem ao tentar converter um sistema operacional de real-tempo de non para uma versão de real-tempo. Estes problemas podem existir ambos à interface de sistema como também no implementação. Por exemplo, em Unix, existem problemas de interface, enquanto programando devido em curso para o agradável e primitives de setpriority e seu redondo-pisco-de-peito-ruivo que programam política. Além, as instalações de cronômetro são muito grossas, administração de memória (de algumas versões) contém nenhum 240 método por fechar páginas em memória, e instalações de comunicação de interprocess não fazem apóie rapidamente e comunicação previsível que resulta freqüentemente em formas diferentes de prioridade inversão (Sha et al., 1990). Os problemas de implementação incluem intolerável em cima, latência excessivo respondendo interrompe, em parte mas mesmo importantly, devido ao non - preemptability do núcleo, e filas de FIFO internas. Estes e outros problemas podem e foi resolvido para resultar em um sistema operacional de real-tempo que é usado durante ambos real-tempo e processo de real-tempo de non. Porém, porque o paradigma subjacente de timesharing sistemas ainda existem, fomentador de aplicação devem ter cuidado para não usar certo non real - características de tempo que insidiously de poder imprensam as tarefas de real-tempo. Podem ser acrescentadas capacidades de real-tempo a sistemas operacionais de modos múltiplos. É ilustrativo estudar foram criadas quantas versões de real-tempo de Linux e comercializado em recentes anos. Estas versões podem se agrupar na seguinte categorias.

* Núcleos complacentes: Nesta aproximação, está um sistema operacional de real-tempo existente modificado tal aquele binaries de Linux podem ser corridos sem qualquer modificação. Essencialmente, a funcionalidade e semântica de Linux que chamadas de sistema precisam ser adequadamente emulado debaixo do sistema operacional nativo. Por exemplo, LynxOS de LynuxWorks adota esta aproximação.

*Núcleos duais: Nesta aproximação, um núcleo de real-tempo duro mas magro se senta debaixo do nativo sistema operacional (como Linux ou FreeBSD), e armadilhas todos os acessos para e interrompe do hardware subjacente. O núcleo magro programa várias tarefas de real-tempo duras co-situado com isto, e corre o OS nativo como sua mais baixa tarefa de prioridade. Como resultado, nativo

podem ser corridas aplicações sem mudança, enquanto tarefas de real-tempo duras podem se pôr excelentes desempenho e predictability. Uns meios de (non-real-tempo) comunicação também é contanto entre o núcleo de real-tempo magro e o núcleo de non-real-tempo nativo para dados trocam propósitos. O lado ruim desta aproximação é que não há nenhuma memória proteção entre o real-tempo atarefa e os núcleos de native/thin. Como resultado, o fracasso de qualquer tarefa de real-tempo pode conduzir a um estrondo de sistema completo. O real-tempo magro núcleo também precisa ter seu próprio jogo de motoristas de dispositivo para funcionalidade de real-tempo. RT - Linux (FSLLabs) é um exemplo desta aproximação.

* Descaroce modificações de núcleo: Nesta aproximação, são feitas mudanças ao caroço de um non - núcleo de real-tempo para fazer isto previsível e deterministic bastante para para se comporte como um real-tempo OS. Fixo-prioridade usando que programa com um O(1) scheduler(componentes), cronômetros de alto-resolução empregando, fazendo o preemptive de núcleo (de forma que um mais baixo processo de prioridade no espaço de núcleo devido a uma chamada de sistema contínua pode ser preempted por um processo de prioridade mais alto que fica elegível correr), apóie para prioridade herança protocola para minimizar inversão de prioridade, enquanto fazendo interrompem os manipuladores schedulable que usa núcleo enfia, o uso de processos periódicos, substituindo FIFO, filas com filas de prioridade e caminhos longos aperfeiçoando pelo núcleo são típicas meios de realizar esta meta. TimeSys Linux (baseado no Linux/RK de CMU (Oikawa e Rajkumar, 1999) discutiu em Seção 2.5.5) e para uma extensão menor MontaVista Linux se classificam nesta categoria.

A aproximação de núcleo de Recurso: Nesta aproximação, o núcleo é estendido para prover

* apoio para reservas de recurso além da fixo-prioridade tradicional preemptive que programa aproximação. A aproximação posterior pode ter problemas quando um processo relativamente prioritário infesta seu tempo de execução esperado ou até mesmo vai em uma volta infinita. Núcleos de recurso apóiam e obrigam reserva de recurso, tal que nenhuma tarefa se se portar mal pode imprensar o comportamento de cronometragem de outra tarefa diretamente. CMU Linux/RK e seu primo comercial, TimeSys Linux, e entra nesta categoria.

2.3. Núcleos componente-baseados

Vários sistemas como OS-equipamento (Ford et al., 1997), Coiote (Bhatti et al., 1999), PURO (Beuche et al., 1999), 2K (Kon et al., 1998), MMLite (Helander e Forin, 1998), e Seixo (Gabber et al., 1999) tenha uma intenção comum para lidar com sistema operacional construção por composição. Eles definem componentes de OS que podem ser selectively incluído para compor um RTOS que pode ser costurado ao application(s) à mão. OS-equipamento provê um jogo de componentes de sistema operacional para os que podem ser combinados configure um sistema operacional. Porém, não provê nenhuma regra para ajudar construa um sistema operacional. Coiote é focussed em comunicação protocola, e sua habilidade para re -configuração poderia ser adotada para sistema operacional e poderia ser embutida áreas de aplicação.

PURO está explicitamente preocupado com prover componentes de sistema operacional para configuração e composição de sistemas operacionais para aplicações embutidas. PURO usos uma metodologia objeto-orientada para prover componentes diferentes para configuração e customization de sistemas operacionais para aplicações embutidas. 2K enfatizam adaptabilidade emite para permitir aplicações para ser como customizable como possível. 2K também são interessado com software componente-baseado para dispositivos móveis pequenos, ou pessoal digital assistentes (PDAs).

Explorar os conceitos de um RTOS componente-baseado, considere dois componente-baseado RTOSs em mais detalhe. MMLite é uma arquitetura de sistema objeto-baseada, modular que provê um cardápio de componentes para uso a compilar-tempo, ligação-tempo, ou runtime para construa uma gama extensiva de aplicações. Um componente em MMLite consiste em um ou mais objetos. Objetos múltiplos podem residir em um único namespace. Quando um objeto precisa enviar uma mensagem para um objeto em outro namespace pela primeira vez, um objeto de procuração é criado dentro o namespace do objeto enviando que transparently controla o ordenando de parâmetros.

Um aspecto sem igual de MMLite é seu foco em apoio por transparently substituir componentes enquanto estes componentes são em uso (mutação). MMLite usa COM conecta, o qual em troca apoio reconfigurability dinâmico em um por-objeto e base de por-componente. Porém, COM não provê proteção entre os componentes. O cardápio básico de o sistema de MMLite contém componentes para administração de montão, em-demanda dinâmica, carregando de componentes novos, inicialização de máquina, cronômetro e interrompe motoristas, scheduler, linhas e sincronização, namespaces, sistema de arquivo, rede, e memória virtual. Estes componentes são tipicamente muito pequenos (500±3000 bytes na 386 arquitetura), embora o componente de rede é muito maior (84,832 bytes em 386). O resultando Sistema de MMLite pode ser bastante pequeno: o sistema básico é 26 Kbytes em 386, e 20 Kbytes

242

na arquitetura de BRAÇO. Não está claro até que ponto MMLite provê os usuários com o habilidade para facilmente componentes seletos que os fomentador de MMLite escrevem, e até que ponto usuários eles definem e utilizam os próprios componentes novos deles/delas. Embora houve uma ênfase aparente em desenvolver componentes mínimo-de tamanho (em número de bytes), ferramentas de análise relativo ao desempenho de runtime de componentes devido a namespace resolução e a criação e carregando de objetos de procuração está faltando.

Seixo é um sistema operacional novo projetou para ser um eficiente aplicação-específico sistema operacional e apoiar aplicações componente-baseadas. Também apóia complexo aplicações embutidas. Como um sistema operacional, adota uma arquitetura de microkernel com um núcleo de privilegiado-modo mínimo que só é responsável para trocar entre domínios de proteção. A funcionalidade de OS é provida através de componentes de usuário-nível (servidores), que pode ser substituído, aumentou, ou layered. O modelo de programação é client/server; componentes de cliente (aplicações) serviços de pedido de componentes de sistemas (servidores). Exemplos de componentes de sistemas são o interrompa despachante, scheduler, gerente de portal, driver,file de dispositivo memória de sistema, virtual, e assim por diante. O núcleo de Seixo e seu essencial componentes (interrompa despachante, scheduler, gerente de portal, relógio de real-tempo, consolo, motorista, e tarefa inativa) precise de aproximadamente 560 Kbytes de memória. Componentes são como processos onde cada um executa em seu próprio domínio de proteção (PD).

Em Seixo, um PD inclui uma mesa de página e um jogo de portais. Portais provêem comunicação entre PDs. Por exemplo, se há um portal de PD1 para PD2, então um linha que executa em PD1 pode invocar um serviço específico (ponto de entrada) de PD2. Então, componentes comunicam por transferir linhas de um PD para outro usando portais.

O conceito de PD junto com o conceito de portal pode ser entendido como um componente infra-estrutura. Enquanto Seixo PDs provêem os meios para isolar os componentes, portais, proveja os meios para componentes comunicarem entre si. Instantiation e administração de portais é executada por um componente de sistema operacional, Portal, Gerente. Por exemplo, o processo de instantiation envolve a inscrição de um servidor (qualquer sistema ou componente de aplicação) em um portal e o pedido de um cliente para aquele portal. Em Seixo, é possível a dynamically carregue e substituir componentes de sistemas para cumprir exigências de aplicações.

2.4. Núcleos QoS-baseados

Pesquisa de QoS foi extensa, primeiro como aplicado a networking então para general distribuído computando. Mais recentemente, QoS foi aplicado a sistemas de real-tempo macios. Nestes sistemas, uma garantia é determinada que uma certa quantia de recursos é nomeada a uma tarefa ou aplicação. Em outros casos, lá é diferenciado significado de garantias que certo classes de tarefas são recursos garantidos comparados a outra classe de tarefas. Por exemplo, podem ser exigidas tarefas que lidam com o controle da planta obter os recursos duas vezes que tarefas que informam os resultados a um centro de comando. Os recursos que são controlado podem há pouco seja o CPU ou um jogo de recursos. Muitos resultados de pesquisa existem por desenvolver algoritmos para controlar as garantias. Às vezes, estes algoritmos são implementados como monitores em cima de um RTOS. Em outros casos, os algoritmos podem ser implementados como 243 middleware (o Brandt al de et., 1998). Os algoritmos diferem na aproximação deles/delas e utilizam muitas técnicas diferentes como programação de feira-parte (Jeffay et al., 1998), proporcional programando (Stoica et al., 1996), programação taxa-baseada (Jeffay, 2001), reservas, e controle de avaliação.

Neste papel, nós estamos mais interessados em RTOS que incorpora QoS apóie como RT Mach (Tokuda et al., 1990) e Rialto (o Jones al de et., 1996, 1997). Ambos este RTOSs permita para os usuários negociar com o RTOS para uma certa quantia de recursos. RT-Mach reservas de empregos para apoiar QoS. RT-Mach apóia aplicações de multimedia e real-tempo e tarefas de non-real-tempo. Rialto permite múltiplo, independente, aplicações para co-existir. Um planejador sistema-largo argumenta sobre as distribuições de recurso entre aplicações. Isto é semelhante à reserva e admissão controle tipo trabalho discutido acima, mas aqui, são apoiadas aplicações independentes em uma única plataforma. Rialto também tem apoio por sobrecarga e para re-negociação de garantias.

2.5. Pesquise Núcleos

Muitos passado e sistemas operacionais de real-tempo pesquisa-orientados Universidade-baseados atuais foi desenvolvido. Estes projetos enviaram muitos dos assuntos de pesquisa seguintes incluindo: *identificando a necessidade para aproximações novas que desafiam as suposições básicas fizeram através de sistemas operacionais de timesharing e desenvolvendo esses paradigmas novos; modelos de processo de real-tempo em desenvolvimento: * alguns sistemas usam o modelo de processo standard ambos programar com e a * tempo de execução, alguns sistemas usam o modelo de processo para programar com mas traduzir em um diferente modelo de correr-tempo para ajudar predictability de apoio e garantias on-lines, * alguns sistemas usam linhas de real-tempo primitives de sincronização de real-tempo em desenvolvimento como esse aquela prioridade de apoio * herança e protocolos de teto de prioridade; soluções em desenvolvimento que facilitam análise de cronometragem do sistema inicial e em * modificações (os algoritmos de programação de real-tempo fazem um papel grande aqui); predictability fortemente enfatizando não só do núcleo mas também provendo bem * apoio para predictability de aplicação-nível; quantias significantes retendo de semântica de aplicação a tempo de corrida; * apoio em desenvolvimento para tolerância de falta; aproximações objeto-orientadas investigando; * apoio provendo para multiprocessor e distribuiu sistemas de real-tempo inclusive fim - * constrangimentos de cronometragem de para-fim; apoio em desenvolvimento para QoS; * tentando definir um micro-núcleo de real-tempo; * apoio provendo para linguagens de programação de real-tempo como o Real-tempo * Especificação de Java (JSR-00001). Nós inspecionamos vários projetos de pesquisa como representante de um jogo muito mais largo de trabalho dentro do campo.

2.5.1. MARTE

O núcleo de MARTE (Damm et al., 1989; Kopetz et al., 1989) oferece apoio por controlar uma aplicação distribuída fundou completamente na passagem de tempo (em lugar de assíncrono eventos) do ambiente. Ênfase é colocada em um um priori análise estática para demonstre que para todas as exigências de cronometragem são satisfeitas. Uma característica importante deste sistema é aquele ¯ow controlam no número de máximo de eventos que as manivelas de sistema são automático e este fato contribui à análise de predictability. Este sistema é baseado em um paradigma, quer dizer, o modelo tempo-ativado que é diferente que o no qual é achado sistemas de timesharing. A aproximação de programação é estática e mesa-dirigida. Apoio para sistemas de real-tempo distribuídos incluem um algoritmo de sincronização de relógio hardware-baseado e um TDMA-como protocolo garanta entrega de mensagem oportuna. Vários extensões ao trabalho original ¯exibility somaram para controlar situações mais dinâmicas. O tempo - aproximação ativada defendida no MARTE viu sucesso na indústria automóvel e em vários outros domínios de aplicação segurança-críticos.

2.5.2. FONTE

O núcleo de Primavera (Stankovic e Ramamritham, 1995,; Stankovic et al., 1999) contém apoio de real-tempo para multiprocessors e distribuiu sistemas. Um aspecto moderno do núcleo é a programação planejamento-baseada dinâmica de tarefas que chegam dynamically. Tal tarefas estão sujeito a controle de admissão e dynamically adquira reservas para recursos. Isto leva em conta o tempo de tarefas e constrangimentos de recurso e evita a necessidade para um priori computam pior caso tempos bloqueando. Tarefas segurança-críticas são negociadas com por estática mesa-dirigida programação. O núcleo também encarna uma arquitetura de re¯ective (Stankovic e Ramamritham, 1995) isso retém uma quantia de signi®cant de aplicação semântica a tempo de corrida. Esta aproximação provê um grau alto de ¯exibility junto com 245 apoio para degradação graciosa. Este planejamento e aplicação que características semânticas são integrado para prover apoio direto por alcançar ambos aplicação - e sistema-nível predictability. O núcleo também usa memória reproduzida global para alcançar previsível comunicação distribuída. As abstrações providas pelo Núcleo incluem dinâmico garantias, reservas, planejamento, e fim-para-fim que cronometram apoio. MARTE primaveral, igual, presentes um paradigma novo para sistemas operacionais de real-tempo, mas o MARTE distinto se esforça para um mais combinação de ¯exible de fora-linha e técnicas on-lines. Conceitos de admissão controle, re¯ection e reservas achadas no núcleo de Primavera foram usadas por muitos outros sistemas.

2.5.3. ARTES

O núcleo de ARTES (Tokuda e Fusão, 1989) provê uma computação de real-tempo distribuída ambiente que trabalha junto com a estática prioridade-dirigido preemptive paradigma programando. O núcleo apóia a noção de objetos de real-tempo e real-tempo linhas. Cada objeto de real-tempo é tempo-encapsulado. Isto é obrigado por uma cerca de tempo mecanismo que provê um cheque de correr-tempo que assegura que o tempo frouxo é maior que o pior caso tempo de execução para uma prece de objeto sobre ser executado. Se é, a operação procede, outro é abortado. Cada linha de real-tempo pode ter uma função de valor, constrangimentos cronometrando, pior caso tempo de execução, fase, e valor de demora associaram com isto. Comunicação (prece de objeto) procede em uma moda de request±accept±reply, mas faz não prazos finais de endereço para mensagens. Um protocolo de transporte de real-tempo foi desenvolvido.

O núcleo de ARTES também é amarrado a várias ferramentas que um priori analisa o sistema-largo schedulability do sistema.

2.5.4. HARTOS

A arquitetura hexagonal para sistemas de real-tempo (HARTS) consiste em locais múltiplos conectado por uma rede de malha hexagonal. Cada local pode ser um uniprocessor ou multiprocessor e contém um processador de rede inteligente. A rede inteligente processador controla muito das funções de comunicação de baixo nível. Um experimental sistema operacional chamado HARTOS (Kandlur et al., 1992) é um núcleo de real-tempo distribuído correndo em HARTS. Em cada local, HARTOS corre junto com o comercial UNIPROCESSOR OS, PSOS. Conseqüentemente, por si só, HARTOS não é um sistema operacional cheio. Bastante, Focusses de HARTOS em comunicação de interprocess, provendo um pouco de apoio assim para sistemas de real-tempo distribuídos. Em particular, HARTOS apóia mensagem envie e receba, evento non-feito fila sinaliza, fluxos seguros, e mensagem que programa isso provê um melhor - aproximação de esforço entregando uma mensagem por seu prazo final. Apoio por derrotar falta-tolerante, sincronização de relógio, e para processos reproduzidos também é planejado.

3. Paradigmas

Sistemas operacionais de real-tempo utilizam vários paradigmas. Conceitos fundamentais acharam nestes paradigmas incluem: garantias de real-tempo duras e macias, controle de admissão, re¯ection, reservas, e núcleos de recurso. Muitos destes conceitos de chave trabalham junto dentro alcançando o paradigma de overarching apresentado por um núcleo particular.

3.1. Garantias de Real-tempo duras e Macias

Em geral, o menor, mais núcleos de deterministic provêem apoio por prazo final duro sistemas. Aqui todas as contribuições e detalhes de sistemas estão desígnio conhecido, e cuidadoso e análise possa resultar satisfazendo para exigências de prazo final duras. Executando a análise também é possível responder cuidadosamente pelo overheads de núcleo. Real-tempo duro segurança-crítico sistemas empregam margens confortáveis também tipicamente em utilização de recurso (como assegurando aquela utilização de total em um recurso não excede 50±60%). O maior, mais dinâmico, mais núcleos de probabilistic provêem apoio por real-tempo macio sistemas. Aqui qualidade de garantias de serviço está definida e mostrada para ser conhecido dentro um 247 probabilistic sentem. Nós às vezes achamos programação de real-tempo hierárquica ou dividimos programando para controlar classes diferentes de tarefas.

3.2. Controle de admissão

Controle de admissão é uma função que decide se trabalho novo que entra no sistema deveria ser admitido ou não. Os ingredientes fundamentais de controle de admissão incluem um modelo do estado de recursos de sistemas, conhecimento sobre o pedido entrante, o algoritmo exato para fazer o decisão de controle de admissão, e políticas para as ações para levar em admissão e em rejeição.

Primeiro considere sistemas de real-tempo duros. Muitos sistemas de real-tempo duros são statically programado e opera em altamente moda de deterministic. Isto facilita a análise de cronometragem requerido destes sistemas e há nenhuma noção de controle de admissão. Mas, muitos sistemas de real-tempo duros operam em ambientes dinâmicos onde estático programar é muito caro ou rígido. A que é requerido é uma solução que habilita on-line cuidadoso análise cronometrando e programação dinâmica. Uma solução proveu no núcleo de Primavera (Stankovic e Ramamritham, 1989, 1995) incluiu a combinação de synergistic de controle de admissão, reserva de recurso, e re¯ection; assim este conceito já existe dentro o domínio de real-tempo duro. Aqui o modelo do estado do sistema está uma linha secular detalhada isso identifica o começo e termina tempo (baseado em um pior caso modelo de tempo de execução) para cada admitiu tarefa em cada recurso que requer. Informação de re¯ective significante é sabido sobre cada tarefa entrante porque eles são pre-analisados durante um real-tempo particular sistema; não há nenhum propósito geral em-o-¯y tarefas criaram. A informação de re¯ective sabido sobre o trabalho pedido inclui o pior caso tempo de execução, dados compartilhados, requerido por esta tarefa, constrangimentos de precedência, nível de importância que tarefas comunicam, com esta tarefa, prazo final, etc. O algoritmo é um heuristic no que programa a tarefa o linha de tempo detalhada junto com todas as tarefas previamente admitidas de tal uma maneira que se próspero, todas as tarefas conhecerão os prazos finais deles/delas. Veja Zho et al. (1987) para um detalhado descrição do algoritmo. Se a tarefa é admitida, foi nomeado um muito específico tempo-fatia (embora pode executar de fato cedo debaixo de certas condições). Se não é admitido, então uma política separada é invocada para decidir que ação para levar. Ações típicas inclua: tente uma versão mais simples da tarefa se qualquer existe, ou se o prazo final é tente longe para programe a tarefa em outro nodo, ou se o prazo final é então íntimo só rejeite esta tarefa. Estas políticas podem ser modificadas baseado na importância da tarefa. Os detalhes de baixo nível do horário garantido inteiro está disponível à aplicação. Uma quantia grande de aplicação é empurrada informação semântica no núcleo (pelo compilador e um especial idioma de descrição de sistema). por exemplo, o bloco de controle de processo (PCB) contém, em

adição para a informação típica, pior caso que execução cronometra, informação de prazo final, exigências de precedência, um gráfico de comunicação, informação de falta-tolerância, etc. Trabalhe em apoiar QoS para auditivo e vídeo também usou controle de admissão e reservas. Em muitos sistemas, várias quantias e tipos de informação de re¯ective é também usado. O modelo típico do sistema foi utilizações identificadas independentemente para recursos múltiplos como CPU, bandwidth de rede, disco, e memória. O preciso algoritmo de controle de admissão variou de sistema a sistema, mas normalmente é baseado em 248

alguma soma simples de utilizações de tudo admitiu trabalho previamente junto com o exigências do trabalho novo. Por exemplo, se as utilizações são menos então então 100% o trabalho é admitido debaixo do prazo final mais cedo primeiro que programa política, outro alguns, renegotiation poderiam levar lugar e o trabalho admitidos com serviço menos garantido.

Informação de aplicação-nível relativo a cume carrega, demoras de fim-para-fim, se agite requeira - ments, etc. é abaixado nas camadas de rede. Dados de desempenho podem ser empurrados para o nível de aplicação se renegotiation é requerido.

3.3. Reserva de recurso

Reserva de recurso é o ato de nomear porções de recursos de fato a uma tarefa. No cedo OS trabalham por manter um nível razoável de multiprogramming, nenhum recurso, reserva era terminada. No núcleo de Primavera, reserva de recurso explícita era muito precisamente terminada em cada tipo de recurso e de uma maneira coordenada. Por exemplo, se TAREFA UM tem o CPU reservado de tempo 10 a 15 tempo-unidade, esta tarefa também seria assegurada para ter acesso exclusivo para qualquer precisou de recursos que incluem estruturas de dados compartilhadas durante aquele mesmo tempo específico intervalo. Na realidade, isto integrou reserva de recurso é orquestrada isso tão cuidadosamente não são requeridos semáforos (i.e., são evitados con¯icts de recurso por programar). Tal reserva de recurso precisa é valiosa para um sistema de real-tempo duro onde cronometragem cuidadosa são requeridas garantias. Para sistemas de real-tempo macios, reservas de vários tipos são usadas apoiar QoS. Como mencionado sobre estes inclua Rialto, RT-Mach, e RK.

3.4. Re¯ection

É incluída informação de Re¯ective de dados de meta sobre o sistema. Pode ser dados de meta sobre a aplicação e pode ser dados de meta sobre o desempenho e propriedades do OS (ou microkernels). Todos o OSs são até certo ponto re¯ective. Porém, se nós elevamos o noção de re¯ection para um princípio central do sistema, então é possível construir mais Sistemas de ¯exible (Stankovic e Ramamritham, 1995,; Yokote, 1992), e realça o precise escolher a informação de re¯ective certa para um determinado sistema. Algum deste ¯exibility pode ser usado obter desempenho melhor, por exemplo, desempenho melhor para conhecer realidade - cronometre constrangimentos.

No núcleo de Primavera, há informação de re¯ective significante que habilita em-o-¯y desempenho garante em uma colocação dinâmica. A maioria da informação de re¯ective(refletivo) é de a aplicação até o OS. Algum trabalho também foi empreendido para fazer uso de re¯ective informação do núcleo (relativo a horários) atrás para a aplicação (ágil fabricando). QoS apoiando para auditivo e vídeo também faz uso de informação de refective aproximadamente o necessidades dos vários fluxos auditivos e vídeos. Isto normalmente está na forma de bandwidth, carga de cume, fim-para-fim, e se agita exigências. Além, não há nenhuma razão por que o OS não pode fazer informações de re¯ective sobre o OS disponível para aplicações como é usado em sistemas como o exokernel trabalhe (Engler et al., 1997) e em vários pacotes de linha (O Anderson al de et., 1991). Porque tudo isso informação está disponível a controle de admissão e políticas de renegotiation, melhor desempenho aplicação-específico é possível e reservas podem ser dynamically ajustados se necessário.

3.5. Núcleos de recurso

Núcleos de recurso proveram interfaces a create/destroy recurso sets,3 create/destroy reservas em recursos diferentes, attach/detach reservas to/from recurso fixa, reservas de resize, bind/unbind processa recurso de to/from fixa, e obter processo informação de uso sobre recursos. Oikawa e Rajkumar (1999) propôs a noção de um `` núcleo de recurso de portable'' que incluiu de uma única base de código e um API uniforme usando o conceito de núcleo de recurso mas um que poderiam ser dentro de operar diferente sistemas. Linux/RK, FreeBSD/RK e Windows NT/RK (chamado NT/RK) era construído para demonstrar a noção. Uma versão de real-tempo de Java que poderia utilizar reservas também foi construído (de Niz e Rajkumar, 2000). núcleos de Recurso também introduziram diferente tipos de reservas. Um salto de tarefa para uma reserva dura não pôde exceder sua reserva limites debaixo de qualquer condição. Um salto de tarefa para uma reserva firme poderia usar qualquer ciclo (ou bandwidth) isso iria novo por qualquer tarefa franca. Um salto de tarefa para um macio reserva poderia usar qualquer cycles/bandwidth não reservado por qualquer outra tarefa. Linux/RK tem também estado comercialmente disponível por Corporação de TimeSys. Reservas também podem ser (recursively) hierárquico (Saewong et al., 2002), em que podem ser criadas reservas dentro de reservas. Deng e Liu (1997) também estudou reserva de dois-nível schedulers extensivamente e recorre à aproximação como `` systems'' aberto que programa isto desde então habilita tarefas que operam dentro de uma partição para ser desavisada de tarefas que correm dentro outro partições. Controle de admissão, programando subsistema, contabilidade e execução,

subsistema são componentes fundamentais de um núcleo de recurso. Uma abstração chamada um recurso controle lista especifica que principal (usuário ou processo) pode usar um recurso de sistema, quando e para quanto tempo (Miyoshi e Rajkumar, 2001). Este conceito para o qual é análogo controle de acesso lista dentro (diga) sistemas de arquivo, é útil protegendo real-tempo atarefa de ataques de negação-de-serviço maliciosos ou não intencional. Apoiar porcentagens de processo auditivas e vídeas de recursos são reservados independentemente. Poderiam ser reservados alguns recursos como memória explicitamente, enquanto poderiam ser reservados outros recursos como cpu ou bandwidth de rede na forma de porcentagens. Em algum senso, reservas de recurso precisam ter informação de aplicação (que estruturas de dados fazem uma necessidade de tarefa, ou quanto cpu requer uma aplicação) abaixado no OS de forma que desempenho aplicação-específico pode ser atingido. Para renegotiation de QoS, dados de desempenho de OS-nível é empurrado até a aplicação de forma que isto possa modificar suas exigências se possível (e obtém umas reservas novas).

4. Resumo

O domínio de sistemas operacionais de real-tempo foi uma área muito ativa de pesquisa dentro recentes anos. O campo viu muitos RTOSs que é construído com muitas idéias diferentes, 250 princípios e paradigmas. Como o domínio de aplicação de sistemas de real-tempo é largo, são precisadas de aproximações diferentes para situações diferentes. Pesquisa de RTOS tem influenciou muitos produtos (com muitas companhias que são formadas ao redor de uma solução de RTOS particular).

Veja http://www.faqs.org/faqs / para uma lista de sistemas operacionais de real-tempo comerciais. Real - pesquisa de tempo também influenciou muitos padrões como POSIX real-tempo extensões, variantes de real-tempo de LINUX, Especificação de Real-tempo de Java, OSEK (RTOS automóvel padrão), Ada83 e Ada95. Para uma lista de versões de Real-tempo de Linux, veja http: / / www.realtimelinuxfoundation.org /. desafios Novos continuam sendo posados a RTOSs, para exemplo, são precisadas de soluções novas para redes de sensor sem fios e outro penetrante aplicações computando. São precisadas soluções apoiar melhor balança grande distribuída sistemas de real-tempo. A tensão entre predictability de RTOS e eficiência e a necessidade para padrões e ambientes de desenvolvimento bons continuam criando pesquisa nova. RTOS apóiam para sistemas de real-tempo componente-baseados também deve ser estudado mais adiante. Recentemente, significativamente foi prestada também atenção a RTOSs energia-atento (veja para exemplo, AbouGhazaleh et al., 2003 e Saewong e Rajkumar, 2003) onde o RTOS tentativas para minimizar consumo de energia enquanto satisfazendo constrangimentos de cronometragem. Porém, experiência prática adicional com tal RTOSs é desejável.

Comentários