Articolul obiecte nucleu

Obiecte nucleu. (Partea 1)

Ce este un obiect nucleu.

obiecte de nucleu utilizate de sistemul și aplicațiile noastre de a gestiona o mulțime de diferite resurse: procese, fire, fișiere, etc.

Sistemul vă permite să creați și să opereze mai multe tipuri de obiecte, inclusiv token-ul de acces (obiecte de acces token), fișiere (obiecte de fișiere), proiecții de fișiere (obiecte de fișiere de mapare), porturi de ieșire de intrare completă (obiecte de port I / O finalizare), sarcini (locuri de muncă), cutiile poștale (obiecte mailslot), mutex (obiecte mutex), canal (obiecte pipe), proces (obiecte de fir) și temporizatoare așteptate (obiecte temporizator waitable).

Aceste obiecte sunt create de Windows-funcții. De exemplu, CreateFileMapping face ca sistemul să genereze proiecția fișier obiect. Fiecare obiect nucleu este de fapt doar un bloc de memorie alocat kernel-ul și pot fi accesate numai pentru el.

Blocul este o structură de date în care elementele informaționale ale obiectului. Unele elemente de securitate (descriptor, numărul contra de utilizatori și altele.) Prezente în toate site-urile, dar bo lshaya dintre ele este specific unui anumit tip de obiect. De exemplu, obiectul de proces are un identificator, prioritatea de bază și completarea automată a codului și fișierul obiect - byte offset, modul de divizare și modul de descoperire.

Pentru a interacționa cu obiecte din nucleu Windows furnizează un set de funcții care se ocupă de structura de bază a obiectelor pe reguli strict definite. Când vom crea un obiect nucleu, funcția returnează un mâner de identificare a obiectului nou creat (HANDLE). Toate operațiunile cu kernel-ul obiectului curent sunt posibile numai atunci când specificați funcția de control al acestui descriptor.

Pentru o mai mare protecție, mânerele sunt unice în cadrul unui anumit proces. Prin urmare, trecerea de mâner obiect de comunicare interprocessor la un alt proces, folosind un mâner în celălalt proces, obținem o eroare. Această limitare poate fi ocolită, dar mai mult pe care mai târziu.

Contabilizarea de bază obiectelor de utilizator.

Kernel obiecte fac parte din kernel-ul, și nu procesul. Se spune că închiderea procesului, nu distrugem neapărat obiectul nucleu. În cele mai multe cazuri, obiectul este distrus, dar dacă obiectul nucleu pe care l-ați creat în timpul utilizării de către un alt proces, kernel-ul va interzice distrugerea obiectului, atâta timp cât utilizatorul nu renunta la ultima lui.

În fiecare unitate, așa cum sa menționat deja, există utilizatori ai obiectului contra. Timpul contorul este setat la 1. Prin urmare, este accesat de un alt contor de proces este crescut cu 1. Atunci când un proces utilizator încetează, contorul este decrementat. Sistemul șterge kernel-ul obiect atunci când contorul este adus la zero.

Protecția obiectelor nucleu

În aproape toate funcțiile care creează obiecte, există un SECURITY_ATTRIBUTES parametru. Este necesar pentru protejarea obiectelor nucleu împotriva accesului neautorizat. Cel mai adesea, această proprietate este utilizat în aplicații de server, aplicații client, acest obiect poate fi ignorat.

La trimiterea într-un atribut NULL cele mai multe obiecte vor fi create cu funcțiile de protecție standard, atunci când sunt permise un obiect: grupul creator și administrator. Restul sunt ignorate.

Pentru mai multe informații referitoare la protecția de bază facilități pentru data viitoare.