da.phhsnews.com


da.phhsnews.com / Hvorfor er der ikke nogen ulige nummererede Windows-proces-id'er?

Hvorfor er der ikke nogen ulige nummererede Windows-proces-id'er?


Hvis du elsker at tinker med Windows og lærer som du går, har du måske bemærket, at Windows-proces- og tråd-id'er er ensartede og multipler af fire. Hvorfor det? Dagens SuperUser Q & A-indlæg har svarene på en nysgerrig læsers spørgsmål.

Dagens Spørgsmål og Svar session kommer til os med venlig hilsen af ​​SuperUser-en underafdeling af Stack Exchange, en community-driven gruppe af Q & A-websteder.

Spørgsmål

SuperUser-læser Peter Hahndorf ønsker at vide, hvorfor der ikke er nogen ulige nummererede Windows-proces-id'er:

Der er mange måder at se på proces-id'er i Windows. Brug af PowerShell:

Jeg får dette resultat:

Som du kan se, er alle proces-id'er ensartede, ikke kun det, de er alle fire gange fire. Du kan se så hårdt som du vil, og du vil aldrig finde et ulige nummereret proces-id, i hvert fald ikke på nogen version, der er Windows NT-baseret. Hvad er årsagen til dette?

Hvorfor er der ikke ulige nummererede Windows-proces-id'er?

Svaret

SuperUser-bidragyder DavidPostill har svaret for os:

Hvorfor er der ikke nogen ulige nummereret Windows-proces ID'er?

Den samme kode, som tildeler kernehåndtag, bruges også til at allokere proces- og tråd-id'er. Da kernelhåndtag er et flertal på fire, er det også proces- og tråd-id'er.

Hvorfor er proces- og tråd-ID'er multipler af fire?

På Windows NT-baserede operativsystemer forekommer proces- og tråd-id'er altid at være flere af fire. Er dette bare et tilfælde?

Ja, det er bare et tilfælde, og du bør ikke stole på det, da det ikke er en del af programmeringsaftalen. For eksempel var Windows 95-proces- og tråd-id'er ikke altid multiplier på fire. Til sammenligning er årsagen til, at kernen håndterer altid en flerhed på fire, en del af specifikationen og garanteres i overskuelig fremtid.

Proces- og tråd-id'er er multipler af fire som en bivirkning ved genbrug af kode. Den samme kode, som tildeler kernehåndtag, bruges også til at allokere proces- og tråd-id'er. Da kernehåndtag er multipler af fire, er det også proces- og tråd-id'er. Dette er en implementeringsdetalje, så skriv ikke kode, som er afhængig af det. Jeg er bare at fortælle dig at tilfredsstille din nysgerrighed.

Kilde: Hvorfor er proces- og tråd-ID'er multiple af fire?

Hvorfor er kernelhåndtag altid et flertal på fire?

Noget der ikke er så godt kendt er, at de nederste to bit af kernelhåndtag er altid nul; med andre ord er deres numeriske værdi altid et flertal på fire. Bemærk, at dette kun gælder for kernelhåndtag; Det gælder ikke for pseudohåndtag eller andre typer håndtag (USER-håndtag, GDI-håndtag, multimediehåndtag osv.). Kernelhåndtag er ting, du kan videregive til CloseHandle-funktionen.

At mindst bunden af ​​kernelhåndtag altid er nul, er underforstået af GetQueuedCompletionStatus-funktionen, hvilket indikerer at du kan indstille bunden af ​​hændelseshåndtaget for at undertrykke færdiggørelsen havnemeddelelse. For at dette skal fungere, skal bundbiten normalt være nul.

Disse oplysninger er ikke nyttige for de fleste applikationsforfattere, som fortsat bør behandle håndtag som uigennemsigtige værdier. De mennesker, der ville være interesserede i tagbits, er dem, der gennemfører klassebiblioteker i lavt niveau eller wrapper kernelobjekter inde i en større ramme.

Kilde: Hvorfor er kernelhåndtag altid et flertal på fire?

Yderligere læsning

Den gamle nye ting: Praktisk udvikling gennem udviklingen af ​​Windows af Raymond Chen ( Principal Software Design Engineer hos Microsoft )


Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Se hele diskussionsgruppen her.


Monter et ISO-billede i Windows 10

Monter et ISO-billede i Windows 10

Der er en stor ny funktion af Windows 10, der har gjort livet lettere for nogle af os derude: Du kan nu montere ISO-billeder i Windows 10 uden yderligere tredjeparts software! Jeg har spillet rundt med montering af forskellige ISO-billeder og hidtil fungerer det godt. Faktisk har denne funktion eksisteret siden Windows 8, men da de fleste ikke havde problemer med Windows 8, vidste de ikke om det

(How-to)

Stop med at spilde penge på enhedsspecifikke bilopladere og start med at bruge en universel USB-oplader

Stop med at spilde penge på enhedsspecifikke bilopladere og start med at bruge en universel USB-oplader

Det er en historie lige så gammel som mobilteknologitiden: køb en ny telefon eller en gadget, køb en ny 12v billader for det, gentag igen næste år. Vi er her for at give dig nogle enkle råd. Stop det. Dagene til enhedsspecifikke billadere er forbi. Læs videre, da vi skitserer hvorfor du skal skifte og hvilke produkter vi anbefaler.

(how-to)