Como as pilhas separadas para diferentes threads são alocadas no modo kernel para um processo no Kernel do Linux?

0

Se uma chamada de sistema for feita para um processo e estiver no modo kernel, se 2 threads forem criados, então

a) como as pilhas de cada thread são criadas no kernel?

b) Se um dos threads retornar para o modo de usuário e se o outro thread permanecer no modo kernel, então eu perderei os dados do kernel (local) alocados pelo thread pai?

c) por que os dois threads criados tem pid diferente?

    
por Kalu 18.07.2016 / 12:14

1 resposta

0

Depois de passar por muita escavação no kernel e trabalhar em um projeto relacionado ao mesmo tópico, encontrei:

a) Sim, cada kthread tem sua pilha que varia de arquitetura como 8k, 4k

b) Sim, eu perderei o local daquele do encadeamento se ele voltar ao espaço do usuário quando a pilha do kernel ficar vazia, no entanto, se declararmos uma variável global e exern, essa variável tornará esse encadeamento disponível no outro segmento. Além disso, deve-se notar que o kernel inteiro tem apenas 1 segmento de dados

c) Os dois threads tem pid diferente porque os dois threads são dois processos diferentes no contexto do kernel add eles são representados por [] em ps

    
por 02.08.2016 / 17:19