Stack
9/8/2008
A pilha é a área armazenamento para variáveis relacionado em uma função. Windows Embedded CE gerencia um separar pilha para cada segmento no sistema.
Para todas as plataformas
A arquitetura da pilha depende de como o microprocessador, mas geralmente, o limite pilha usar como padrão é 64 KB, 8 KB ou duas páginas, reservadas para controle de erro estouro. Você pode substituir o limite pilha em tempo de compilação com o opção de vinculador /STACK.
Observação
Exceder o limite pilha faz com que um violação de acesso sistema que desliga seu aplicativo.Além disso, pilha quadros não podem ser Nenhum maior do que uma página cada, ou falhar manipulação estruturada de exceções.
- Quando o sistema cria um novo segmento, o kernel reserva memória para a pilha. O quantidade de memória que o sistema reserva para a pilha é determinada pelo parâmetro /STACK passado para o vinculador quando o módulo é compilado. O tamanho pilha pode ser definido para segmentos recém-criados com a função CreateThread por configuração cbStack Para o apropriado tamanho e fdwCreate para STACK_SIZE_PARAM_IS_A_RESERVATION.
Quando o sistema agenda um segmento para o primeiro tempo, pilha memória do segmento é confirmada uma página em um tempo quando necessário. Para evitar o compromisso inicial da memória pilha de afetar desempenho, garantir que o segmento está agendado pelo menos uma vez antes de realizar processamento em tempo real. Na maiúsculas e minúsculas de um segmento serviço interrup (ist), alocação de memória pilha geralmente ocorre porque o segmento executa várias ações antes de liquidar para baixo em uma executar um loop WaitForSingleObject. Você pode evitar alocar mais memória pilha se seu segmento requer não mais que a alocação pilha inicial. Porque é memória geralmente limitado em um ambiente Windows Embedded CE, at times a leva kernel voltar memória pilha de segmentos que no longer são necessárias.
Para Windows incorporado CE
Recuperando não usado memória pilha é controlada pelo OEM e os parâmetros passados para a função SetOOMEvent. Se os valores passados para SetOOMEvent causar o sistema para pesquisa de pilha memória, o kernel suspende cada segmento que possui um livre pilha enquanto memória a partir de pilha será removida. Para evitar essa situação, definir cuidadosamente os parâmetros uso de memória para SetOOMEvent.
Você pode definir uma variável nível (OAL) adaptação OEM que informa o kernel em que prioridade para recuperar espaço pilha quando a memória está baixa.
Faça o seguinte declaração em seu OAL:
extern DWORD dwNKMaxPrioNoScav;
O valor de dwNKMaxPrioNoScav define a prioridade mais alta para um segmento que não deve incorridas recuperação espaço para pilha. Qualquer segmento com uma prioridade menor dwNKMaxPrioNoScav pode ter seu espaço para pilha recuperado pelo kernel. O valor usar como padrão para dwNKMaxPrioNoScav é 247. Use essa variável em combinação com o SetOOMEvent função ao controle quando a recuperação pilha é executar. Se a recuperação pilha é executar, dwNKMaxPrioNoScav, em combinação com SetOOMEvent, determina qual recuperação pilha prioridade deve ser aplicada.