18Aug

Kodėl nėra nelyginių skaičių Windows procesų ID?

Jei jums patinka dirbti su "Windows" ir mokytis, kaip jūs einate, galbūt pastebėjote, kad "Windows" proceso ir sriegių ID yra lygiomis ir susideda iš keturių.Kodėl tai?Šiandien "SuperUser Q &" įraše pateikiami atsakymai į įdomius skaitytojo klausimus.

Šiandienos klausimas &Atsakymų sesija ateina pas mus iš "SuperUser" - "Stack Exchange", bendruomenės pagrįstos "Q & A" svetainių grupės pasidalijimo.

Klausimas

SuperUser skaitytojas Peter Hahndorf nori sužinoti, kodėl nėra nelyginių numerių Windows procesų ID:

Yra daug būdų pažvelgti į proceso ID sistemoje "Windows"."PowerShell" naudojimas:

Aš gaunu šį rezultatą:

Kaip matote, visi proceso ID yra lygūs, o ne tik jie yra visi keturi. Galite atrodyti taip sunkiai, kaip norite, ir jūs niekada nebūsite nelyginis proceso ID, bent jau bet kuriai versijai, kuri yra "Windows NT".Kokia tai priežastis?

Kodėl nėra nelyginių "Windows" proceso ID?

Atsakymas

SuperUser autorius DavidPostill atsakė mums:

Kodėl nėra nelyginių numerių Windows proceso ID?

Tas pats kodas, kuris išskiria branduolio rankenas, taip pat naudojamas procesų ir sriegių identifikatorių paskirstymui. Kadangi branduolio rankenos yra keturios, tai yra procesų ir sriegių ID.

Kodėl procesų ir temų ID kartoja keturis?

operacinėse sistemose, kuriose veikia Windows NT, proceso ir sriegių ID visada būna keturiasdešimt kartų.Ar tai tik atsitiktinumas?

Taip, tai tik atsitiktinumas, ir jūs neturėtumėte pasikliauti, nes tai nėra programavimo sutarties dalis. Pavyzdžiui, "Windows 95" proceso ir temos ID ne visada buvo keturi. Palyginimui, priežastis, kodėl "branduolio" rankenos visada yra keturios kartos, yra specifikacijos dalis ir bus užtikrinta artimiausioje ateityje.

Proceso ir sriegio ID yra keturkampis kaip šalutinis poveikis kodo pakartotiniam naudojimui. Tas pats kodas, kuris išskiria branduolio rankenas, taip pat naudojamas procesų ir gijų identifikatorių paskirstymui. Kadangi branduolio rankenos yra keturios, tai yra procesų ir sriegių ID.Tai yra išsami informacija apie įgyvendinimą, todėl neužsirašykite kodo, kuris priklauso nuo jo. Aš tik sakau jums patenkinti savo smalsumą.

Šaltinis: Kodėl procesų ir temų ID kartoja keturis?

Kodėl branduolio rankenos visada yra keturi?

Kažkas, kas nėra labai gerai žinoma, yra tai, kad du apatiniai bitų branduolio rankenos visada yra nulinės;kitaip tariant, jų skaitinė vertė visada yra keturių kartų.Atkreipkite dėmesį, kad tai taikoma tik branduolių rankenoms;tai netaikoma pseudo rankenoms ar bet kokiam kitam rankenos tipui( USER rankenos, GDI rankenos, multimedijos rankenos ir kt.)."Kernel" rankenos - tai dalykai, kuriuos galite perkelti į "CloseHandle" funkciją.

Kad bent branduolio rankenėlių apatinė dalis būtų visada lygi nuliui, tai reiškia "GetQueuedCompletionStatus" funkciją, kuri rodo, kad galite nustatyti įvykio rankenos apatinį bitą, kad slopintų užbaigimo uosto pranešimą.Kad tai veiktų, apatinė dalis paprastai turi būti lygi nuliui.

Ši informacija nėra naudinga daugeliui programų kūrėjų, kurie ir toliau turėtų elgtis su rankenomis kaip nepermatomos reikšmės.Žmonės, kuriems būtų įdomu žetonų bitai, yra tie, kurie įgyvendina žemos klasės bibliotekų klases arba įterpia branduolio objektus didesnėje sistemoje.

Šaltinis: Kodėl branduolio rankenos visada yra keturi?

Skaitykite toliau

"Senoji nauja tema": praktinis vystymasis per "Windows" evoliuciją Raymondas Čenas( pagrindinis programinės įrangos inžinierius "Microsoft ")

Ar ką nors įtraukti į paaiškinimą?Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų?Patikrinkite visą diskusijų temą čia.