O sistema de gerencia de processos e o componente do SO responsavel pela criacao, eliminacao e escalonamento dos processos e threads. Nesta secao sao tratados os detalhes do funcionamento da gerencia de processos do sistema FESO. Processos e ThreadsProcessos sao abstracoes utilizadas para o controle da execucaodos programas pelo SO. Para cada processo presente no sistema FESO, diversosdados precisam ser armazenados. Entre eles, o estado dos registradores da CPU,os blocos de memoria fisica alocados e outras informacoes utilizadas nocontrole do processo.O sistema FESO possui um suporte rudimentar a threads. Os threads sao unidades basicas de alocacao da CPU [1]. Os processos possuem uma listade threads associados, cada thread possui sua propria estrutura com oconjunto de estados dos registradores. Os threadsem um processo podem estar executando trechos de codigo diferentes entre si,porem todos compartilham o mesmo espaco de enderecamento e mesmas variaveisglobais. Entretanto, existe uma pilha associada a cada thread, na qual sao armazenadas as variaveis locais e as estruturasde controle a chamada de sub-rotinas.A figura abaixo mostra como esta dividido o espaco de enderecamento virtualde um processo. Os programas desenvolvidos para funcionar sobre o FESO precisampossuir seus enderecos resolvidos a partir da posicao 0 da memoria. No comecodo espaco de enderecamento, ficam o codigo e os dados do programa.Imediatamente apos os dados, comeca o heap, posicao onde ficam mapeados os frames de memoria alocados dinamicamente pelo programa. A regiao dememoria entre o heap e as pilhas ereservada para o crescimento da quantidade de pilhas, que e feita em posicoesde memoria menores, e para a expansao do heapque e feita para posicoes de memoria maiores. No final do espaco de enderecamento de um processo, ficam aspilhas dos threads. Ao contrario do heap que e unico para todos os threads de um mesmo processo, as pilhassao individuais. O tamanho da pilha e fixo, e nao e alterado durante a execucaode um programa. Quando um thread efinalizado, o espaco de sua pilha nao e desalocado, pois ele podera serutilizado como pilha de um novo threada ser criado no futuro.O nucleo do sistema armazena os processos e threads em arvores, ordenados pelos identificadores. Cada processopossui um identificador, e cada threadtambem. Assim que sao criados, os processos possuem um thread principal, que possui o mesmo identificador do processo aoqual esta atrelado. O sistema FESO armazena em duas estruturas basicas, umapara processos e outra threads,algumas informacoes utilizadas no controle do uso da CPU e dos recursoscomputacionais.Para os processos, o SO precisa armazenar uma lista com todos osframes de memoria ocupados. Isto enecessario para que eles possam ser liberados quando o processo terminar. Osistema operacional tambem armazena o endereco da Page Directory, que e fundamental na troca de contexto. Alem disso,se faz necessario o armazenamento de algumas variaveis para o controle do heap, um flag para indicar o nivel de privilegio do processo, uma lista compilhas alocadas pelos threads, umponteiro para a proxima posicao livre na area reservada a pilhas, entre outrasinformacoes.As estruturas que armazenam threadssao um pouco diferentes. Elas possuem campos para armazenar o estado dosregistradores da CPU, o estado de execucao em que o thread se encontra