Warum gibt es keine ungeraden Windows-Prozess-IDs?

Warum gibt es keine ungeraden Windows-Prozess-IDs?

Why Are There No Odd Numbered Windows Process Ids

Wenn Sie gerne an Windows herumbasteln und dabei lernen, haben Sie vielleicht bemerkt, dass Windows-Prozess- und Thread-IDs gerade nummeriert und ein Vielfaches von vier sind. Warum ist das so? Der heutige SuperUser Q&A-Post enthält die Antworten auf die Fragen eines neugierigen Lesers.



Die heutige Frage-und-Antwort-Sitzung kommt mit freundlicher Genehmigung von SuperUser – einer Unterabteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q&A-Websites.

Die Frage

SuperUser-Leser Peter Hahndorf will wissen, warum es keine ungeraden Windows-Prozess-IDs gibt:

Was ist in meinem Computer?

Es gibt viele Möglichkeiten, die Prozess-IDs in Windows anzuzeigen. Verwenden von PowerShell:

Ich bekomme dieses Ergebnis:

zwei Spalten in Google Docs

Wie Sie sehen, sind alle Prozess-IDs geradzahlig und nicht nur ein Vielfaches von vier. Sie können so genau hinschauen, wie Sie möchten, und Sie werden nie eine ungerade Prozess-ID finden, zumindest nicht in einer Version, die auf Windows NT basiert. Was ist der Grund dafür?

Warum gibt es keine ungeraden Windows-Prozess-IDs?

Die Antwort

SuperUser-Mitwirkender DavidPostill hat die Antwort für uns:

cortana wurde durch die Unternehmensrichtlinie deaktiviert

Warum gibt es keine ungeraden Windows-Prozess-IDs?

Derselbe Code, der Kernel-Handles zuweist, wird auch verwendet, um Prozess- und Thread-IDs zuzuweisen. Da Kernel-Handles ein Vielfaches von vier sind, gilt dies auch für Prozess- und Thread-IDs.

Warum sind Prozess- und Thread-IDs ein Vielfaches von vier?

Auf Windows NT-basierten Betriebssystemen sind Prozess- und Thread-IDs immer ein Vielfaches von vier. Ist das nur Zufall?

offenes Büro vs freies Büro

Ja, es ist nur ein Zufall und Sie sollten sich nicht darauf verlassen, da es nicht Bestandteil des Programmiervertrags ist. Beispielsweise waren Windows 95-Prozess- und Thread-IDs nicht immer Vielfache von vier. Im Vergleich dazu ist der Grund, dass Kernel-Handles immer ein Vielfaches von vier sind, Teil der Spezifikation und wird auf absehbare Zeit garantiert.

Prozess- und Thread-IDs sind ein Vielfaches von vier als Nebeneffekt der Codewiederverwendung. Derselbe Code, der Kernel-Handles zuweist, wird auch verwendet, um Prozess- und Thread-IDs zuzuweisen. Da Kernel-Handles Vielfache von vier sind, gilt dies auch für Prozess- und Thread-IDs. Dies ist ein Implementierungsdetail, schreiben Sie also keinen Code, der darauf basiert. Ich sage Ihnen nur, dass Sie Ihre Neugier befriedigen sollen.

Quelle: Warum sind Prozess- und Thread-IDs ein Vielfaches von vier?

Warum sind Kernel-Handles immer ein Vielfaches von vier?

Etwas, das nicht sehr bekannt ist, ist, dass die unteren beiden Bits von Kernel-Handles immer Null sind; mit anderen Worten, ihr numerischer Wert ist immer ein Vielfaches von vier. Beachten Sie, dass dies nur für Kernel-Handles gilt; sie gilt nicht für Pseudo-Handles oder andere Arten von Handles (USER-Handles, GDI-Handles, Multimedia-Handles usw.). Kernel-Handles sind Dinge, die Sie an die CloseHandle-Funktion übergeben können.

Fotos stapelweise skalieren Windows 10

Dass zumindest das untere Bit der Kernel-Handles immer Null ist, wird durch die Funktion GetQueuedCompletionStatus impliziert, die angibt, dass Sie das untere Bit des Ereignis-Handles festlegen können, um die Benachrichtigung über den Abschlussport zu unterdrücken. Damit dies funktioniert, muss das unterste Bit normalerweise Null sein.

Diese Informationen sind für die meisten Anwendungsentwickler nicht hilfreich, die Handles weiterhin als undurchsichtige Werte behandeln sollten. Die Leute, die an Tag-Bits interessiert wären, sind diejenigen, die Low-Level-Klassenbibliotheken implementieren oder Kernel-Objekte in ein größeres Framework einpacken.

Quelle: Warum sind Kernel-Handles immer ein Vielfaches von vier?

Weiterführende Literatur

Das Alte Neue: Praktische Entwicklung während der Evolution von Windows durch Raymond Chen ( Principal Software Design Engineer bei Microsoft )


Möchten Sie der Erklärung noch etwas hinzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Sehen Sie sich hier den vollständigen Diskussionsthread an .

WEITER LESEN
  • › So finden Sie Ihr Spotify Wrapped 2021
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
  • › Was ist MIL-SPEC Fallschutz?
Akemi Iwaya
Akemi Iwaya ist seit 2009 Teil des How-To Geek/LifeSavvy Media-Teams. Sie hat zuvor unter dem Pseudonym 'Asian Angel' geschrieben und war Lifehacker-Praktikantin, bevor sie zu How-To Geek/LifeSavvy Media kam. Sie wurde von ZDNet Worldwide als maßgebliche Quelle zitiert.
Vollständige Biografie lesen