Почетна » како да » Зашто нема непарних бројева Виндовс процеса?

    Зашто нема непарних бројева Виндовс процеса?

    Ако волите да радите са Виндовс-ом и учите док идете, можда сте приметили да су Виндовс процесни и нитни ИД-ови парни бројеви и да су вишеструки од четири. Зашто је то? Данашња постова за питања и одговоре СуперУсер имају одговоре на питања знатижељног читатеља.

    Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.

    Питање

    Читач СуперУсер Петер Хахндорф жели да зна зашто нема непарних ИД-ова процеса у Виндовс-у:

    Постоји много начина да погледате ИД-ове процеса у оперативном систему Виндовс. Коришћење ПоверСхелл-а:

    Добијам овај резултат:

    Као што видите, сви ИД-ови процеса су парни, не само то, они су сви вишеструки од четири. Можете изгледати колико год желите и никада нећете пронаћи непарни ИД процеса, барем не на било којој верзији која је базирана на Виндовс НТ. Који је разлог за то?

    Зашто нема непарних идентификационих бројева процеса?

    Одговор

    Доприносник СуперУсер-а ДавидПостилл има одговор за нас:

    Зашто нема непарних идентификационих бројева процеса?

    Исти код који алоцира ручке кернела се такође користи за алокацију ИД-а процеса и нити. Пошто су ручке кернела вишеструке од четири, то су процесни и нитни ИД-ови.

    Зашто су процесни и нитни ИД-ови вишекратници четири?

    У оперативним системима заснованим на оперативном систему Виндовс НТ, процесни и нитни ИД увек су вишеструки од четири. Да ли је ово само случајност?

    Да, то је само случајност и не треба се ослањати на њу, јер она није део уговора о програмирању. На пример, Виндовс 95 процесни и нитни ИД нису увек били многоструки. Поређења ради, разлог због којег су ручке кернела увек вишеструке од четири је део спецификације и биће загарантован у догледној будућности..

    ИД-ови процеса и нити су вишеструки од четири као споредни ефекат поновног коришћења кода. Исти код који алоцира ручке кернела се такође користи за алокацију ИД-а процеса и нити. Пошто су ручке кернела вишеструке од четири, то су процесни и нитни ИД-ови. Ово је детаљ имплементације, па не пишите код који се ослања на њега. Само вам говорим да задовољите своју радозналост.

    Извор: Зашто су процесни и нитни ИД-ови вишекратници четири?

    Зашто су језгра увијек вишеструки од четири?

    Нешто што није добро познато је да су доња два бита кернел ручке увек нула; другим ријечима, њихова нумеричка вриједност увијек је вишеструка од четири. Приметите да се ово односи само на ручке језгра; не односи се на псеудо-ручке или на било који други тип ручке (УСЕР ручке, ГДИ ручке, мултимедијалне ручке, итд.). Кернел хандлес су ствари које можете пренијети на функцију ЦлосеХандле.

    Да је барем доњи део ручке кернела увек нула подразумева се помоћу функције ГетКуеуедЦомплетионСтатус, што указује да можете подесити доњи бит ручице догађаја да би се спречило обавештење о порту завршетка. Да би ово функционисало, доњи бит мора нормално бити нула.

    Ове информације нису корисне за већину писаца апликација, који треба да наставе да третирају ручке као непрозирне вредности. Људи који ће бити заинтересовани за битове тагова су они који спроводе библиотеке класа ниског нивоа или пакују кернел објекте у већи оквир.

    Извор: Зашто су језгра увијек вишеструки од четири?

    Додатна литература

    Стара нова ствар: практични развој кроз еволуцију прозора од стране Рејмонда ЧенаГлавни инжењер дизајна софтвера у Мицрософту)


    Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.