A gerencia da memoria do FESO funciona em diversos niveis. Nonivel mais baixo, existe a gerencia da memoria fisica, no qual e feito ocontrole de quais blocos da memoria estao disponiveis para a alocacao. Sobre agerencia da memoria fisica, existe o controle da memoria virtual, responsavelpor mapear os enderecos dos frames(quadros) de memoria fisica, em enderecos virtuais. E ainda acima desta,existem os algoritmos de alocacao de memoria, que se utilizam de uma chamada aosistema para solicitar mais memoria ao SO, e controlam blocos de memoria detamanhos arbitrarios. Esta secao trata do funcionamento de cada um dessesniveis.Gerencia de Memoria FisicaA gerencia de memoria fisica funciona da seguinte maneira: aposo processo de inicializacao do sistema, uma area de memoria, localizada apos aimagem do sistema operacional e reservada. Esta area, cujo tamanho depende dotamanho da memoria real instalada no sistema, e utilizada para armazenar ummapa de bits utilizado no controle damemoria fisica. Cada bit no maparepresenta uma area de memoria de 4KB como ilustra a figura abaixo. Caso o estado dobit em uma determinada posicao esteja em 1, o frame esta ocupado, caso obit esteja em 0, o frame estavazio. A memoria disponivelpara utilizacao comeca na primeira posicao alinhada em 4KB apos o mapa de bits. Isto porque, o uso da paginacaonos processadores da familia Intel requer enderecos alinhados em 4KB, ou seja,com os 12 bits menos significativosiguais a 0. Como cada bloco tem 4KB, todos eles comecam em um endereco dememoria alinhado em 4KB. Sempre que e necessaria a alocacao de mais memoria,ocorre uma busca no mapa de bitsiniciada geralmente pelo ultimo endereco retornado pelo alocador. A busca efeita usando um algoritmo first-fit,de maneira que o endereco do primeiro conjunto de blocos contiguos do tamanho solicitadoao alocador e retornado. E possivel saber o endereco inicial do frame com base na posicao do bit dentro do mapa.Gerencia de Memoria VirtualEm outro nivel, a utilizacao da memoria virtual permite a criacaode um espaco de enderecamento virtual composto por um conjunto de enderecosvirtuais. Esses enderecos virtuais sao mapeados em enderecos fisicos, de formaa dar a impressao aos programas de usuario que eles possuem toda a memoria damaquina apenas para eles.O loader do sistemaFESO e muito simples, e nao suporta a relocacao de programas. Entretanto, autilizacao de espacos de enderecamento virtuais permite que diversos programasutilizem o mesmo conjunto de enderecos virtuais, que sao mapeados em frames de memoria fisica distintos paracada um deles. Como existe um espaco de enderecamento personalizado para cadaaplicativo de usuario ou driver dedispositivo, nao e preciso realizar a relocacao dos enderecos para fazer comque todos esses aplicativos ou driverspossam coexistir na memoria. Oespaco de enderecamento virtual nos processadores da familia Intel de 32 bits ede 232, ou seja, 4 GB. O kernel fica mapeado da mesma forma nosenderecos do ultimo gigabyte de todosos espacos de enderecamento. Isto e necessario, pois as rotinas do kernel devem estar sempre acessiveis,nao importando qual programa esta em execucao. Resta a cada programa de usuario um espaco de enderecamento de 3GB.Amedida que programas de usuario (que ocupam quantidades diferentes de memoria esao geralmente carregados em posicoes adjacentes) sao iniciados