• Aucun résultat trouvé

L’abus de droit, instrument d’arbitrage de la conquête du pouvoir

Dans le document The DART-Europe E-theses Portal (Page 117-122)

TITRE II : LA RECHERCHE D’UNE MEILLEURE EFFECTIVITE DES REGLES DE GOUVERNANCE DES SOCIETES COMMERCIALES DE GOUVERNANCE DES SOCIETES COMMERCIALES

B. L’abus de droit, instrument d’arbitrage de la conquête du pouvoir

Muitas soluções de hardware para sistemas embutidos possuem pouca memória, com o propósito de reduzir o custo do equipamento. Indiretamente, esse fato influencia a construção do software utilizado no dispositivo embutido.

Nitidamente soluções genéricas, muito utilizadas em computadores de propósito geral, não se aplicam. Por suas limitações de hardware, o software inserido nos dispositivos embutidos precisa apresentar um pequeno footprint.

Para o caso do sistema de arquivos proposto neste trabalho, além dos dois ítens necessários (pre- visibilidade e concorrência), foram adicionadas características importantes com o objetivo de torná-lo mais útil e bem aceito pela indústria de software. Com o intuito de criar um sistema de arquivos com- pacto (prevendo o seu uso em sistemas embutidos com severas restrições de memória) foi utilizado o conceito de composição. Com a composição, é possível construir um sistema de arquivos somente com os componentes que seriam utilizados pela aplicação final, dessa forma somente o código neces- sário é utilizado, poupando memória.

3. Aspectos de programação em sistemas embutidos de tempo real 30 Num caso em que a aplicação final precisar usar no máximo “n” arquivos, o SA suportará somente “n”. Se o tamanho máximo destes é “x”, então o SA será otimizado para manipular arquivos de no máximo este tamanho. Se a aplicação faz uso somente de rotinas de read() e write() , então somente essas serão suportadas.

Assim, diferentemente de um sistema de arquivos convencional, onde mesmo que a aplicação final utilize uma pequena parcela dos recursos do SA, este estará presente em sua totalidade, ocu- pando espaço em memória inutilmente, na composição, podemos escolher quais requisitos o SA deve atender e somente gerar o código necessário para atendê-los. O sistema de arquivos neste caso é dito personalizado.

Na figura 3.5 temos ilustrado um diagrama da memória com a divisão explícita entre o código do SA e o código da aplicação. No ítem a) temos uma grande área de código para o SA, grande parte dela não será utilizada pela aplicação, mas permanecerá ocupando espaço. No ítem b) a área de código do SA é reduzida, pois este está somente fornecendo os recursos que a aplicação utiliza, reduzindo assim o overhead de memória.

b) a) Código do Convencional Sistema de Arquivos Código do Personalizado Sistema de Arquivos Memória livre Início memória Fim memória

Código da Aplicação Código da Aplicação

Figura 3.5: Diagramas de alocação de memória

3.3 Conclusão

Neste capítulo foi dada uma visão de sistemas embutidos de tempo real com ênfase nos aspectos e problemas que devem ser levados em consideração na construção de software para esses sistemas, tais como concorrência interna, seções críticas, granularidade das seções críticas, análise de algoritmos, utilização de memória, etc.

Capítulo 4

Sistema de arquivos desenvolvido

Conforme descrito no capítulo 2, obtém-se um maior aproveitamento do Sistema de Arquivos quando este está plenamente adequado a uma aplicação alvo.

O mesmo raciocínio pode ser aplicado para a área de sistemas embutidos de tempo real, onde existem muitos problemas que não são contemplados por um sistemas de arquivos convencional e precisam ser tratados por um sistema de arquivos de tempo real.

Neste capítulo será apresentado um módulo chamado sistema de arquivos abstrato (SAA) para produzir sistemas de arquivos voltados para aplicações de tempo real e com algumas características que o tornam altamente personalizável e propício a ser utilizado em aplicações embutidas (embedded systems).

É suposto que o sistema de arquivos não será implementado através de um disco magnético, mas sim através de memória RAM mantida com uso de baterias, ou memória Flash. Essas são as soluções mais freqüentes em equipamentos de baixo custo.

4.1 Visão geral

O sistema de arquivos desenvolvido neste trabalho foi projetado para tratar os problemas apresen- tados no capítulo 3. Para tanto, em sua implementação foram utilizados algoritmos com tempos de pior caso explícitos e convenientes (para tratar o aspecto da previsibilidade). Já as implementações das funções do sistema de arquivos foram feitas de modo a minimizar as inversões de prioridade e maximizar a concorrência interna1.

O aspecto de economia de memória é obtido com a composição de um sistema de arquivos uti- lizando somente os componentes necessários e será mostrado em mais detalhes no decorrer deste capítulo.

1No apêndice B temos diagramas que mostram as funções disponíveis para o programador, e as chamadas que estas

4. Sistema de arquivos desenvolvido 32 Esquematicamente o sistema de arquivos pode ser vislumbrado como um sistema em camadas, como na figura 4.1. Nesta figura, temos na camada 1 a parte de nível mais alto (com a qual o progra- mador tem contato) e nos níveis mais baixos (camadas 2, 3 e 42) temos as funções que dão suporte a

funcionalidade necessária. Meta−Tipo Indexado Meta−Tipo Fixo Meta−Tipo Circular 1) 2) 3) 4) Gerenciamento de Memória Marcação de Tempo Implementação de Semáforos Implementação da API Implementação do método de Lookup Implementação dos Tipos de Arquivos

Figura 4.1: Sistema de Arquivos visto em camadas

Esse módulo (chamado de Sistema de Arquivos Abstrato SAA) possui uma grande quantidade de código com a implementação de vários componentes internos. Dependendo das necessidades do sistema de arquivo a ser gerado, partes desse código serão utilizadas e outras não. Além de selecionar essas partes (componentes) do SAA, o programador do SA pode também escolher entre diferentes implementações destas.

Essa liberdade em selecionar e juntar componentes do SAA, personalizar ao máximo e ainda assim manter as características de tempo real e baixa utilização de memória representam um grande salto de produtividade na construção de aplicações embutidas.

Dans le document The DART-Europe E-theses Portal (Page 117-122)