4 resultados para Migrações

em Instituto Politécnico do Porto, Portugal


Relevância:

10.00% 10.00%

Publicador:

Resumo:

Os sistemas de tempo real modernos geram, cada vez mais, cargas computacionais pesadas e dinâmicas, começando-se a tornar pouco expectável que sejam implementados em sistemas uniprocessador. Na verdade, a mudança de sistemas com um único processador para sistemas multi- processador pode ser vista, tanto no domínio geral, como no de sistemas embebidos, como uma forma eficiente, em termos energéticos, de melhorar a performance das aplicações. Simultaneamente, a proliferação das plataformas multi-processador transformaram a programação paralela num tópico de elevado interesse, levando o paralelismo dinâmico a ganhar rapidamente popularidade como um modelo de programação. A ideia, por detrás deste modelo, é encorajar os programadores a exporem todas as oportunidades de paralelismo através da simples indicação de potenciais regiões paralelas dentro das aplicações. Todas estas anotações são encaradas pelo sistema unicamente como sugestões, podendo estas serem ignoradas e substituídas, por construtores sequenciais equivalentes, pela própria linguagem. Assim, o modo como a computação é na realidade subdividida, e mapeada nos vários processadores, é da responsabilidade do compilador e do sistema computacional subjacente. Ao retirar este fardo do programador, a complexidade da programação é consideravelmente reduzida, o que normalmente se traduz num aumento de produtividade. Todavia, se o mecanismo de escalonamento subjacente não for simples e rápido, de modo a manter o overhead geral em níveis reduzidos, os benefícios da geração de um paralelismo com uma granularidade tão fina serão meramente hipotéticos. Nesta perspetiva de escalonamento, os algoritmos que empregam uma política de workstealing são cada vez mais populares, com uma eficiência comprovada em termos de tempo, espaço e necessidades de comunicação. Contudo, estes algoritmos não contemplam restrições temporais, nem outra qualquer forma de atribuição de prioridades às tarefas, o que impossibilita que sejam diretamente aplicados a sistemas de tempo real. Além disso, são tradicionalmente implementados no runtime da linguagem, criando assim um sistema de escalonamento com dois níveis, onde a previsibilidade, essencial a um sistema de tempo real, não pode ser assegurada. Nesta tese, é descrita a forma como a abordagem de work-stealing pode ser resenhada para cumprir os requisitos de tempo real, mantendo, ao mesmo tempo, os seus princípios fundamentais que tão bons resultados têm demonstrado. Muito resumidamente, a única fila de gestão de processos convencional (deque) é substituída por uma fila de deques, ordenada de forma crescente por prioridade das tarefas. De seguida, aplicamos por cima o conhecido algoritmo de escalonamento dinâmico G-EDF, misturamos as regras de ambos, e assim nasce a nossa proposta: o algoritmo de escalonamento RTWS. Tirando partido da modularidade oferecida pelo escalonador do Linux, o RTWS é adicionado como uma nova classe de escalonamento, de forma a avaliar na prática se o algoritmo proposto é viável, ou seja, se garante a eficiência e escalonabilidade desejadas. Modificar o núcleo do Linux é uma tarefa complicada, devido à complexidade das suas funções internas e às fortes interdependências entre os vários subsistemas. Não obstante, um dos objetivos desta tese era ter a certeza que o RTWS é mais do que um conceito interessante. Assim, uma parte significativa deste documento é dedicada à discussão sobre a implementação do RTWS e à exposição de situações problemáticas, muitas delas não consideradas em teoria, como é o caso do desfasamento entre vários mecanismo de sincronização. Os resultados experimentais mostram que o RTWS, em comparação com outro trabalho prático de escalonamento dinâmico de tarefas com restrições temporais, reduz significativamente o overhead de escalonamento através de um controlo de migrações, e mudanças de contexto, eficiente e escalável (pelo menos até 8 CPUs), ao mesmo tempo que alcança um bom balanceamento dinâmico da carga do sistema, até mesmo de uma forma não custosa. Contudo, durante a avaliação realizada foi detetada uma falha na implementação do RTWS, pela forma como facilmente desiste de roubar trabalho, o que origina períodos de inatividade, no CPU em questão, quando a utilização geral do sistema é baixa. Embora o trabalho realizado se tenha focado em manter o custo de escalonamento baixo e em alcançar boa localidade dos dados, a escalonabilidade do sistema nunca foi negligenciada. Na verdade, o algoritmo de escalonamento proposto provou ser bastante robusto, não falhando qualquer meta temporal nas experiências realizadas. Portanto, podemos afirmar que alguma inversão de prioridades, causada pela sub-política de roubo BAS, não compromete os objetivos de escalonabilidade, e até ajuda a reduzir a contenção nas estruturas de dados. Mesmo assim, o RTWS também suporta uma sub-política de roubo determinística: PAS. A avaliação experimental, porém, não ajudou a ter uma noção clara do impacto de uma e de outra. No entanto, de uma maneira geral, podemos concluir que o RTWS é uma solução promissora para um escalonamento eficiente de tarefas paralelas com restrições temporais.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Numa sociedade onde as correntes migrações desenham um novo contexto de sociabilização e onde a globalização conduz ao aumento incomensurável das reuniões interculturais, é fulcral recentrar a importância do ensino da interpretação dita de comunidade. A inauguração do Mestrado em Tradução e Interpretação Especializadas, no ano lectivo de 2007/2008, no Instituto Superior de Contabilidade e Administração do Porto, reformulado a partir da Licenciatura Bi-Etápica homónima, veio apresentar um desenho dos curricula em Interpretação cujo entendimento é mais pragmático. Assim sendo, à tradicional divisão entre Interpretação Simultânea e Interpretação Consecutiva sucedeu a introdução das unidades curriculares de Interpretação de Conferência, Interpretação Remota e de Teleconferência e de Interpretação de Acompanhamento. Este estudo pretende apresentar e discutir as diferentes abordagens pedagógicas ensaiadas no decorrer da implementação da unidade curricular de Interpretação de Acompanhamento, sustentadas por uma reflexão de cariz científico-pedagógico, filtrada pelas tendências de investigação mais recentes nesta área. Adoptámos a designação de Interpretação de Acompanhamento para descrever uma situação comunicativa que decorre em contextos variados e heterogéneos, em detrimento de outras designações de abrangência mais restrita, como Interpretação de Liaison – que remete para um acompanhamento em contexto de negócios ou de visita cultural ou turística – e Interpretação de Comunidade – reportando-se à mediação linguística de alguém que não fala a linguagem da maioria, normalmente no âmbito judicial, social, ou de saúde. Concentraremos, por conseguinte, a nossa atenção nas questões que se seguem: Que estratégias pedagógicas melhor se adaptam ao ensino desta disciplina? Como reproduzir a heterogeneidade dos contextos comunicativos que a Interpretação de Acompanhamento envolve numa sala de aula? Que ponderação deve assumir o desempenho linguístico em comparação com as competências de mediação intercultural? Como integrar, na prática, conceitos e teorias no domínio da Interpretação de Acompanhamento?

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Durante os últimos anos tem-se assistido a um crescimento exponencial da utilização dos dispositivos móveis. Atualmente, a presença destes dispositivos está tão consolidada na sociedade em que nos encontramos que é praticamente impossível estar num espaço público sem encontrar uma pessoa a utilizar um exemplar deste tipo de dispositivos, na forma de um Smartphone ou um Tablet. Nesse sentido, um grande número de organizações de desenvolvimento de software tem vindo a apostar na criação de aplicações para servir este mercado com enorme potencial. De forma a iniciar o desenvolvimento aplicacional nesta área, cabe às organizações escolherem a metodologia de desenvolvimento que mais se adapta às suas necessidades e ao contexto que desejam explorar. Por vezes, a abordagem adotada acaba por ser tornar inadaptada a longo prazo, podendo as aplicações começar a apresentar níveis de desempenho e problemas comportamentais indesejados, de acordo com as alterações realizadas e as necessidades evidenciadas no seu processo de evolução, sendo necessário explorar outras alternativas metodológicas. No contexto apresentado surge a temática da presente dissertação, que se propõe à criação de um plano de migração tecnológica genérico direcionado a um conjunto aplicações móveis em estudo, desenvolvidas através de uma metodologia híbrida, adaptada ao desenvolvimento de aplicações compatíveis com as diversas plataformas móveis. O plano devia então ser construído com o intuito de efetuar a migração das aplicações para uma metodologia nativa, adaptada ao desenvolvimento de aplicações móveis específicas a uma determinada plataforma móvel, que no presente caso seria sob a plataforma Android. No decorrer do trabalho realizado foram desenvolvidos mecanismos e componentes genéricos que permitiram implementar um módulo de migração responsável por construir um projeto nativo base de Android através de um projeto híbrido, construído segundo as suas tecnologias específicas. Finalizada a implementação, foram realizados testes comparativos entre a aplicação alvo de migração e o protótipo nativo conseguido e foi apresentada uma série de resultados que permitiram concluir a adequação da metodologia nativa para ultrapassar a problemática evidenciada. Além disso, foi também possível concluir que o sistema de migração genérico resultante do trabalho desta dissertação permite reduzir significativamente o tempo de desenvolvimento necessário em migrações de outras aplicações que se enquadrem na mesma problemática.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Nos dias de hoje, os sistemas de tempo real crescem em importância e complexidade. Mediante a passagem do ambiente uniprocessador para multiprocessador, o trabalho realizado no primeiro não é completamente aplicável no segundo, dado que o nível de complexidade difere, principalmente devido à existência de múltiplos processadores no sistema. Cedo percebeu-se, que a complexidade do problema não cresce linearmente com a adição destes. Na verdade, esta complexidade apresenta-se como uma barreira ao avanço científico nesta área que, para já, se mantém desconhecida, e isto testemunha-se, essencialmente no caso de escalonamento de tarefas. A passagem para este novo ambiente, quer se trate de sistemas de tempo real ou não, promete gerar a oportunidade de realizar trabalho que no primeiro caso nunca seria possível, criando assim, novas garantias de desempenho, menos gastos monetários e menores consumos de energia. Este último fator, apresentou-se desde cedo, como, talvez, a maior barreira de desenvolvimento de novos processadores na área uniprocessador, dado que, à medida que novos eram lançados para o mercado, ao mesmo tempo que ofereciam maior performance, foram levando ao conhecimento de um limite de geração de calor que obrigou ao surgimento da área multiprocessador. No futuro, espera-se que o número de processadores num determinado chip venha a aumentar, e como é óbvio, novas técnicas de exploração das suas inerentes vantagens têm de ser desenvolvidas, e a área relacionada com os algoritmos de escalonamento não é exceção. Ao longo dos anos, diferentes categorias de algoritmos multiprocessador para dar resposta a este problema têm vindo a ser desenvolvidos, destacando-se principalmente estes: globais, particionados e semi-particionados. A perspectiva global, supõe a existência de uma fila global que é acessível por todos os processadores disponíveis. Este fato torna disponível a migração de tarefas, isto é, é possível parar a execução de uma tarefa e resumir a sua execução num processador distinto. Num dado instante, num grupo de tarefas, m, as tarefas de maior prioridade são selecionadas para execução. Este tipo promete limites de utilização altos, a custo elevado de preempções/migrações de tarefas. Em contraste, os algoritmos particionados, colocam as tarefas em partições, e estas, são atribuídas a um dos processadores disponíveis, isto é, para cada processador, é atribuída uma partição. Por essa razão, a migração de tarefas não é possível, acabando por fazer com que o limite de utilização não seja tão alto quando comparado com o caso anterior, mas o número de preempções de tarefas decresce significativamente. O esquema semi-particionado, é uma resposta de caráter hibrido entre os casos anteriores, pois existem tarefas que são particionadas, para serem executadas exclusivamente por um grupo de processadores, e outras que são atribuídas a apenas um processador. Com isto, resulta uma solução que é capaz de distribuir o trabalho a ser realizado de uma forma mais eficiente e balanceada. Infelizmente, para todos estes casos, existe uma discrepância entre a teoria e a prática, pois acaba-se por se assumir conceitos que não são aplicáveis na vida real. Para dar resposta a este problema, é necessário implementar estes algoritmos de escalonamento em sistemas operativos reais e averiguar a sua aplicabilidade, para caso isso não aconteça, as alterações necessárias sejam feitas, quer a nível teórico quer a nível prá