18Aug

Zašto nema ID-ova s ​​ID brojevima s brojem?

Ako volite igrati s Windowsom i učiti dok idete, možda ste primijetili da su procesni i ID zapisi u sustavu Windows parni i četveročlani. Zašto je to? Današnji SuperUser Q & A post ima odgovore na pitanja čudnih čitatelja.

Današnje pitanje &Sesija odgovora nam dolazi zahvaljujući SuperUseru - podjele Stack Exchange, grupiranjem zajednice Q & A web stranica.

Pitanje

čitač SuperUser Peter Hahndorf želi znati zašto ne postoje čudovi brojevi ID procesa sustava Windows:

Postoji mnogo načina da pogledate ID-ove procesa u sustavu Windows. Korištenje PowerShell-a:

Dobivam ovaj rezultat:

Kao što možete vidjeti, svi ID-ovi procesa su parni, ne samo to, oni su sve višekratnici od četiri. Možete izgledati toliko teško koliko želite i nikad nećete pronaći ID procesnog broja, barem ne na bilo kojoj verziji koja se temelji na sustavu Windows NT.Koji je razlog za to?

Zašto ne postoje čudovi s brojem procesnih ID-ova procesa?

Odgovor

SuperUser suradnik DavidPostill ima odgovor za nas:

Zašto nema čudnih brojeva Windows ID procesa?

Isti kôd koji alocira ručke za kernel također se koristi za dodjeljivanje ID-ova procesa i niza. Budući da su jezgri kernela višestruki od četiri, tako su i ID-ovi procesa i niti.

Zašto su procesni i ID brojevi višekratnici od četiri?

Na operacijskim sustavima koji se temelje na operacijskom sustavu Windows NT, procesni i ID-ovi niti uvijek se događaju kao višestruki od četiri. Je li to samo slučajnost?

Da, to je samo slučajnost i ne biste se trebali osloniti na njega jer nije dio ugovora o programiranju. Na primjer, ID-ovi procesa i ID-ova u sustavu Windows 95 nisu bili uvijek višekratnici od četiri. Usporedbe radi, razlog zbog kojeg su ručke jezgre uvijek višestruko od četiri je dio specifikacije i bit će zajamčeno u doglednoj budućnosti.

ID-ovi procesa i niti su višekratnici od četiri kao nuspojava ponovnog korištenja koda. Isti kôd koji alocira ručke kernela također se koristi za dodjeljivanje ID-ova procesa i navoda. Budući da su jezgrene ručke višekratnici od četiri, tako su i ID-ovi procesa i niti. Ovo je detalj implementacije, stoga nemojte pisati kôd koji se oslanja na nju. Samo vam kažem da zadovoljiš svoju znatiželju.

Izvor: Zašto su procesni i ID sekcije višekratnici od četiri?

Zašto ručke za jezgre uvijek imaju više od četiri?

Nešto što nije dobro poznato jest da dno dva komada jezgrih jezgri su uvijek nula;drugim riječima, njihova numerička vrijednost je uvijek više od četiri. Imajte na umu da se to odnosi samo na ručke za kernel;ne primjenjuje se na pseudo-ručke ili na bilo koju drugu vrstu ručke( USER ručke, GDI ručke, multimedijske ručke itd.).Kernel ručke su stvari koje možete proći do CloseHandle funkcije.

Da je barem dno duljine jezgrih jezgri uvijek nula implicirana je funkcija GetQueuedCompletionStatus, što znači da možete postaviti dno trake ručice događaja kako biste spriječili obavijest portova završetka. Da bi to funkcioniralo, donji bit mora normalno biti nula.

Ove informacije nisu korisne za većinu aplikacijskih pisača, koje bi i dalje trebale tretirati ručke kao neprozirne vrijednosti. Ljudi koji bi bili zainteresirani za tag bita su oni koji provode niske razine klase knjižnica ili pakiranje kernel objekata unutar većeg okvira.

Izvor: Zašto su ručke za kernel uvijek više od četiri?

Daljnje čitanje

Starija nova stvar: praktični razvoj tijekom razvoja sustava Windows Raymond Chen( glavni inženjer za dizajn softvera u Microsoft )

Imate li nešto za dodavanje objašnjenja? Zvuči u komentarima.Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.