pt.phhsnews.com


pt.phhsnews.com / Por que não há IDs de processo do Windows com numeração ímpar?

Por que não há IDs de processo do Windows com numeração ímpar?


Se você adora mexer com o Windows e aprender, deve ter notado que os IDs de processos e threads do Windows são numerados múltiplos de quatro. Por que é que? A postagem de Perguntas e Respostas do SuperUser de hoje tem as respostas para as perguntas de um curioso leitor.

A sessão de Perguntas e Respostas vem para nós, cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade.

SuperUser reader Peter Hahndorf quer saber por que não há IDs de processo do Windows de numeração ímpar:

Há muitas maneiras de examinar as IDs de processo no Windows. Usando o PowerShell:

Eu recebo este resultado:

Como você pode ver, todos os IDs de processo são pares, não apenas isso, eles são todos múltiplos de quatro. Você pode procurar o quanto quiser e nunca encontrará um ID de processo de numeração ímpar, pelo menos não em qualquer versão que seja baseada no Windows NT. Qual é a razão para isso?

Por que não há IDs de processo do Windows de numeração ímpar?

O colaborador do SuperUser de Resposta

DavidPostill tem a resposta para nós:

Por que não há processo do Windows de numeração ímpar IDs?

O mesmo código que aloca as alças de kernel também é usado para alocar identificações de processos e segmentos. Como os identificadores de kernel são múltiplos de quatro, também são identificações de processo e segmento.

Por que os IDs de processo e segmento são múltiplos de quatro?

Em sistemas operacionais baseados no Windows NT, processos e IDs de encadeamento sempre são múltiplos de quatro. Isso é apenas uma coincidência?

Sim, é apenas uma coincidência, e você não deve confiar nisso, pois não faz parte do contrato de programação. Por exemplo, os IDs de processo e encadeamento do Windows 95 nem sempre eram múltiplos de quatro. Por comparação, a razão pela qual as alças de kernel são sempre um múltiplo de quatro é parte da especificação e será garantida no futuro previsível

IDs de processo e encadeamento são múltiplos de quatro como um efeito colateral da reutilização de código. O mesmo código que aloca as alças do kernel também é usado para alocar IDs de processos e encadeamentos. Como os manipuladores de kernel são múltiplos de quatro, também são IDs de processo e encadeamento. Este é um detalhe de implementação, portanto, não escreva código que dependa dele. Estou apenas lhe dizendo para satisfazer sua curiosidade.

Fonte:

Por que os IDs de processo e encadeamento são múltiplos de quatro? Por que o kernel é sempre um múltiplo de quatro?

Algo que não está muito bem É sabido que os dois bits inferiores das alças do kernel são sempre zero; Em outras palavras, seu valor numérico é sempre um múltiplo de quatro. Observe que isso se aplica apenas às alças do kernel; não se aplica a pseudo-alças ou a qualquer outro tipo de alça (alças USER, alças GDI, alças multimídia, etc.). Alças de kernel são coisas que você pode passar para a função CloseHandle

que pelo menos o bit inferior de alças de kernel são sempre zero é implícito pela função GetQueuedCompletionStatus, que indica que você pode definir o bit inferior do identificador de evento para suprimir conclusão notificação de porta. Para que isso funcione, o bit inferior deve normalmente ser zero.

Essas informações não são úteis para a maioria dos gravadores de aplicativos, que devem continuar a tratar identificadores como valores opacos. As pessoas que estariam interessadas em tag bits são aquelas que estão implementando bibliotecas de classes de baixo nível ou estão agrupando objetos dentro de uma estrutura maior.

Fonte:

Por que os manipuladores de kernel são sempre múltiplos? Leitura Adicional A Velha Novidade: Desenvolvimento Prático Através da Evolução do Windows por Raymond Chen (

Engenheiro Principal de Design de Software na Microsoft

) Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.


Como trocar seus antigos gadgets por dinheiro (para que você possa comprar novos gadgets)

Como trocar seus antigos gadgets por dinheiro (para que você possa comprar novos gadgets)

Se você quer vender seu smartphone antigo para pagar o novo, acrescente um pouco de dinheiro sua pilha de dinheiro divertido, ou para colocar os lucros para o Natal, estamos aqui para ajudar. Continue lendo enquanto descrevemos as melhores maneiras de transformar seu equipamento antigo em dinheiro. RELACIONADO: Como preparar um computador, tablet ou telefone antes de vendê-lo Quando se trata de transformar seus gadgets mais antigos em dinheiro Há três locais principais para explorar: programas de trade-in, sites de leilão e venda local.

(how-to)

O Skype é horrível para o bate-papo de texto. Use o Telegram Em vez disso, o

O Skype é horrível para o bate-papo de texto. Use o Telegram Em vez disso, o

Skype é mais do que apenas bate-papo por voz e vídeo: ele também contém bate-papo por texto. Infelizmente, é incrivelmente não confiável e só piora. Nenhum dos meus amigos usa mais - todos mudaram para o Telegram, que sempre funciona corretamente. A Microsoft desperdiçou seu tempo reescrevendo repetidamente o cliente Skype em vez de corrigir o problema principal.

(how-to)