Kāpēc nav nepāra numurētu Windows procesu ID?
Ja tu mīli tinkering ar Windows un mācīties, kā jūs dodaties, iespējams, esat ievērojuši, ka Windows procesu un pavedienu ID ir vienādi numurēti un četri reizes. Kāpēc ir tā, ka? Šodienas SuperUser Q&A ziņojumam ir atbildes uz ziņkārīgiem lasītāja jautājumiem.
Šodienas jautājumu un atbilžu sesija mums dod pieklājību no SuperUser-Stack Exchange apakšnodaļas, kas ir kopienas orientēta Q & A tīmekļa vietņu grupa.
Jautājums
SuperUser lasītājs Peter Hahndorf vēlas uzzināt, kāpēc nav nepāra numurētu Windows procesu ID:
Ir daudz veidu, kā aplūkot procesa ID, kas atrodas sistēmā Windows. Izmantojot PowerShell:
Man šis rezultāts:
Kā redzat, visi procesa ID ir vienādi numurēti, ne tikai tie, tie visi ir četri. Jūs varat izskatīties tikpat grūti, cik vēlaties, un jūs nekad neatradīsiet nepāra numurētu procesa ID, vismaz ne uz jebkuras Windows NT bāzes versijas. Kāds ir iemesls tam?
Kāpēc nepastāv nepāra numuri ar Windows procesu ID?
Atbilde
SuperUser ieguldītājam DavidPostill ir atbilde uz mums:
Kāpēc nepastāv nepāra numuri ar Windows procesu ID?
To pašu kodu, kas piešķir kodola rokturus, izmanto arī, lai piešķirtu procesu un pavedienu ID. Tā kā kodola rokturi ir četru reižu skaits, tad ir arī procesu un pavedienu ID.
Kāpēc procesu un pavedienu ID ir četri?
Operētājsistēmās, kas balstītas uz Windows NT, procesu un pavedienu ID vienmēr ir četri. Tas ir tikai sakritība?
Jā, tā ir tikai sakritība, un jums nevajadzētu paļauties uz to, jo tā nav daļa no plānošanas līguma. Piemēram, Windows 95 procesu un pavedienu ID ne vienmēr bija četri. Salīdzinājumam, iemesls, kāpēc kodolu rokturi vienmēr ir četru reižu skaits, ir daļa no specifikācijas un tiks garantēta tuvākajā nākotnē.
Procesu un pavedienu ID ir četru reižu skaits kā koda atkārtotas izmantošanas blakusparādība. To pašu kodu, kas piešķir kodola rokturus, izmanto arī, lai piešķirtu procesu un pavedienu ID. Tā kā kodola rokturi ir četru reižu skaits, tad ir arī procesu un pavedienu ID. Tā ir detalizēta ieviešanas detaļa, tāpēc neparakstiet kodu, kas ir atkarīgs no tā. Es tikai saku jums, lai apmierinātu jūsu zinātkāri.
Avots: Kāpēc procesu un pavedienu ID ir četri?
Kāpēc kodola rokturis vienmēr ir četru reižu skaits?
Kaut kas nav ļoti labi zināms, ka kodola rokturu apakšējie divi biti vienmēr ir nulle; citiem vārdiem sakot, to skaitliskā vērtība vienmēr ir četru reižu skaits. Ņemiet vērā, ka tas attiecas tikai uz kodola rokturiem; tas neattiecas uz pseido rokturiem vai jebkura cita veida rokturi (USER rokturi, GDI rokturi, multimediju rokturi utt.). Kernel rokturi ir lietas, kuras var pāriet uz CloseHandle funkciju.
Tas, ka vismaz kodola rokturu apakšējā bāze vienmēr ir nulle, ir saistīta ar GetQueuedCompletionStatus funkciju, kas norāda, ka varat iestatīt notikuma roktura apakšējo bitu, lai apturētu ostas paziņojumu pabeigšanu. Lai tas darbotos, apakšējam bitam parasti jābūt nullei.
Šī informācija nav noderīga vairumam lietojumprogrammu autoru, kam jāturpina apstrādāt rokturus kā necaurredzamas vērtības. Cilvēki, kas būtu ieinteresēti tagbitos, ir tie, kas īsteno zema līmeņa klases bibliotēkas vai iesaiņo kodola objektus plašākā ietvarā.
Avots: Kāpēc kodola rokturis vienmēr ir četru reižu skaits?
Turpmāka lasīšana
Vecā jaunā lieta: praktiskā attīstība, ko veic Raymond Chen, Windows evolūcijas gaitā (Galvenais programmatūras projektēšanas inženieris Microsoft)
Vai kaut kas jāpievieno paskaidrojumam? Skaņas izslēgšana komentāros. Vai vēlaties lasīt vairāk atbildes no citiem tehnoloģiju gudriem Stack Exchange lietotājiem? Apskatiet pilnu diskusiju pavedienu šeit.