U N I V E R S I D A D E F E D E R A L D A B A H I A P R Ó R E I T O R I A D E P E S Q U I S A E P Ó S G R A D U A Ç Ã O P r o g r a m a I n s t i t u c i o n a l d e B o l s a s d e I n i c i a ç ã o C i e n t í f i c a P I B I C I C RELATÓRIO PARCIAL DE ATIVIDADES 1. IDENTIFICAÇÃO 1.1. NOME DO BOLSISTA: Eduardo Ramos dos Santos Júnior 1.2. NOME DO ORIENTADOR: 1.3. PERÍODO TRABALHADO: Luciano Porto Barreto 7 meses; agosto 2007 fevereiro 208 1.4. TÍTULO DO PROJETO: Gerenciamento de Memória Adaptativo em Sistemas Operacionais de Código Aberto 2. 2. EXECUÇÃO: 2.1 Descrição da Atividade Período Periodo: 08 de Agosto de 2007 - 29 de Fevereiro de 2008 Descrição da atividade: O que é ? Este plano de trabalho se insere no contexto do projeto "Gerenciamento de Memória Adaptativo em Sistemas Operacionais de Código Aberto", cujo objetivo principal consiste em desenvolver um mecanismo para o uso de algoritmos adaptativos para o gerenciamento de memória em sistemas operacionais. Os objetivos desse projeto se concentram no aspecto de implementação do modelo relativo a esse problema computacional. O que pretendemos Sendo mais específico, o que pretendemos é: Implementar um modelo de controle adequado ao gerenciamento de memória no sistema operacional Linux. Para isso, devemos compreender o modelo de solução proposta que anlisa o problema de gerenciamento de memória sob a ótica de teoria de controle e efetuar a implementação correspondente no Linux. Continuidade do projeto Refinamentos podem ser feitos na implementação inicial, essencialmente na parte que tange Teoria do Controle. Pois a idéia inicial com esse trabalho é buscar uma nova área computacional onde Teoria do Controle possa ser usada com sucesso. Assim, evoluções no modo como a Teoria do Controle pode ajudar no Gerenciamento de Memória de um Sistema Operacional são possíveis a partir desse estudo inicial. Esse projeto também pode ajudar com idéias nas questões relativas a Gerenciamento de Memória. Atualização e manutenção de um patch ligado a tal assunto (captura de traces de memória) também são tarefas que darão continuidade ao projeto. 2.2. RESULTADOS PARCIAIS ALCANÇADOS: Levantamento Bibliográfico Estudo dos assuntos relacionados com o título do projeto Estudo do contexto da pesquisa feito com sucesso. Entendimento básico e mais aprofundado da forma como o Linux gerencia a memória Ambientação ao kernel linux Adaptação parcial ao kernel linux. Aplicação de patchs e compilações de kernel ajudaram nessa tarefa. Porém, a programação nesse ambiente ainda não é feita com total confiança. Estudo de ferramentas de apoio Ferramentas que auxiliam na aplicação de patchs, compilação de kernel, programação no ambiente do kernel (ainda parcialmente) e, com grande importância, ferramentas que analisam o comportamento da memória. Leitura de Artigos relacionados Leitura de artigos relacionados com o tema do projeto foram feitas para buscar um maior entendimento a respeito da dinâmica de gerenciamento de memória no Linux. Também, para saber como está o estado atual dessa área crucial de um sistema operacional. lista de artigos Conversas com pessoas renomadas da área Não sei se isso pode ser considerado um resultado, mas creio que sim, pois o contato com pessoas dessa área em específico trouxeram colaborações, respostas a eventuais dúvidas e motivação. Criação de Web site para acompanhamento do trabalho, com material de apoio + material produzido Criação de Web site para acompanhamento do trabalho por todos que participam dele. Pequenos textos (não todos transcritos para o site) foram confeccionados para orientar o trabalho, com descrições, idéias chaves, resumos. As ferramentas de análise de memória utilizadas para ajudar a entender a dinâmica do projeto também foram relatadas com suas respectivas referências. Além claro, de referências gerais sobre: gerenciamento de memória, kernel e teoria do controle. Proposta de continuação do trabalho Numa das conversas com pessoas renomadas da área, foi feita uma proposta para atualizar e manter um patch que captura traces de memória. O que o patch se propõem a fazer está parcialmente dentro do escopo do projeto e seria uma ótima oportunidade de contribuição para a comunidade de código aberto além das consequências positivas em tomar frente desse projeto. 2.3 REFERÊNCIAS BIBLIOGRÁFICAS EFETIVAMENTE UTILIZADAS (Max. 10): http://linux-mm.org/ http://kernelnewbies.org/ http://www.kernel.org/ Book: Feedback Control of Computing Systems - Joseph L. Hellerstein; Yixin Diao; Sujay Parekh; Dawn M. Tilbury Book: Understanding the Linux Kernel - Bovet & Cesati 2.4 DIFICULDADES ENCONTRADAS / CAUSAS E PROCEDIMENTOS PARA SUPERÁ-LAS: Dificuldade com o ambiente de implementação visto a sua estrutura complexa A programação ou adaptação de módulos no kernel (núcleo) do linux se insere num ambiente de programação diferenciado. Assim, a programação de componentes de um sistema operacional requer conhecimento sobre a estrutura do kernel do linux e preocupação com aspectos específicos desse ambiente. Por ser algo muito específico em razão dos diversos detalhes que devem ser atentados e por ser algo não explorado em disciplinas de graduação em ciência da computação, tal dificuldade é encontrada. Para sanar tal dificuldade, conversas com o orientador e com outras pessoas da área estão servindo como guia, com recomendações norteamento. Novas leituras mais específicas foram sugeridas e estão sendo feitas para resolver tal problema. Produção de uma modelagem que gere poucos distúrbios no sistema A utilização de teoria do controle no gerenciamento de memória do linux deve ser feita com muito cuidado. Isso pelos diversos detalhes que o núcleo do linux possui e, a interferência inadequada em um deles pode ser desastroso para o sistema, podendo provocar paralisações do mesmo. Assim, uma manipulação adequada dos fatores que serão controlados, entradas e saídas de funções e suas possíveis combinações, é algo não trivial e de difícil modelagem. Estudo em mais baixo nível desses fatores, ou seja, do código-fonte dos trechos referentes aos fatores deve ser feita para identificar mais precisamente o que ocorre internamente. 2.5 LISTE OS PRODUTOS GERADOS COM O DESENVOLVIMENTO DO TRABALHO: * Aprendizado dos temas por trás do título do projeto: - Gerenciamento de Memória - Instância de Gerencimento de Memória: sistema linux - Teoria do Controle * Criação de Web site: http://twiki.dcc.ufba.br/bin/view/ProjetoSouvenir/WebHome com materiais de apoio, referências bibliográficas e conteúdo produzido * Análise de alguns traces de memória; * Modelagem simplificada de uma possível implementação