Ferestre de kernel nt

Simplificată schemă de kernel Windows NT

Continuăm cursul pe OS Windows NT. Puteți vedea începutul conferinței aici.

Miezul în sine este reprezentat sub forma a trei straturi.







Kernelul ar trebui să fie maxim portabil, deoarece hardware-ul se poate schimba și de fiecare dată când modificați codul kernelului este laborios. Prin urmare, trebuie să faceți o parte universală și o piesă specifică echipamentului - una mică, care poate fi ușor schimbată și care ar oferi o interfață unificată între nucleu și drivere.

Acest lucru a fost proiectat în HAL.

Figura de mai jos prezintă schema de control a kernel-ului WindoWs NT.

Ferestre de kernel nt

Simplificată schemă de kernel Windows NT

În momentul în care Windows a fost proiectat, a fost o necesitate, deoarece nu era clar ce platformă hardware ar fi dominantă într-un an, 5 ani ... și sistemul de operare ar trebui să se concentreze asupra hardware-ului actual și viitor. Apoi, tipul de platformă (x86 x64) nu a fost clar și numai datorită proprietății de portabilitate a fost posibilă lansarea Windows ARTI pentru tablete (bazat pe CPU-ul ARM).

Astfel, un kernel portabil portabil este proiectat folosind un strat de abstractizare hardware (HAL).

Pe acest strat de abstractizare sunt următoarele două părți ale kernel-ului:

  1. Drivere de dispozitiv - funcționează cu dispozitive prin HAL și oferă servicii, cum ar fi dispozitive de intrare / ieșire - mouse, tastatură, disc, rețea.
  2. Kernelul nu este în mod specific un kernel, ci o parte din acesta.

Principiul cheie al arhitecturii kernel-ului Windows

Acesta este principiul subsistemelor mediului (sau personalităților).

Programele utilizatorilor NU folosesc direct serviciile OS. Chiar și atunci când executam orice aplicație direct sub Windows, nu se utilizează niciodată nucleul direct, doar prin API-ul subsistemului de mediu Windows, nu există direct un apel de kernel.

Biblioteca subsistemului traduce într-un fel oarecum funcția API documentată într-o convorbire către o funcție de OS nedocumentată.

Din acest motiv, funcțiile OS pot fi schimbate în ziua "azi", lăsând în același timp compatibilitate cu acele aplicații deja dezvoltate pentru OS, datorită faptului că există un API documentat care trebuie să funcționeze.

La început au existat trei subsisteme ale mediului: Windows, OS / 2, POSIX

În Windows XP, POSIX a dispărut

Componente ale sistemului kernel

Kernel - cele mai scăzute funcții ale sistemului de operare: planificarea firului, procesarea întreruperilor, sincronizarea multiprocesor.

Kernel-ul oferă primitive low-level, pe care Executivul implementează proiecte de nivel înalt

HAL este stratul dintre hardware și kernel.

Executive - este mai înalt și implementează principalele servicii ale sistemului de operare: gestionarea memoriei, procese, fire, securitate, intrare / ieșire, interacțiune interprocesor.

Drivere de dispozitiv - dispozitive reale - lucrul cu hardware, dispozitive virtuale - drivere (de exemplu, stive de rețea).

Alte module de kernel

  • Implementați funcțiile interfeței grafice
  • Implementați subsistemul fereastră

Cauze. performanță, prea multe comutatoare. Potrivit MS, nu există niciun sistem de operare cu succes comercial, care să fie exclusiv un microkernel.

În Windows, se folosește Core Hybrid. deoarece are unele caracteristici ale unui microkernel:

În figura de mai sus, "Kernel Simplified Scheme" a Kernel-ului este în esență un microkernel pe care Executive-ul ar putea fi pus în modul de utilizare și împărțit în procese separate. În kernel, doar o parte ar rămâne, și acesta ar fi un microkernel clasic.

Dar din cauza motivului pentru performanță, Executivul nu a început să fie pus în modul de utilizare și împărțit în procese separate. A fost compilat, plasat într-un modul, tot ceea ce a rămas din arhitectură în kernel.

Prin urmare, în Windows, kernelul este hibrid și este destul de interesant organizat.

Portabilitatea (portabilitatea) este o caracteristică cheie a Windows.

Codul kernel-ului este scris într-un limbaj de nivel înalt (C / C ++) - portat, nu există cod în Assembler.

În kernel și HAL, există mici incluziuni în Assembler în interiorul stratului de abstractizare al hardware-ului.

Ultimii 20 de ani de PC-uri care rulează pe platforma x86, astfel încât problema de portabilitate înainte de dezvoltatorii de sistem de operare nu a fost.







Obiectiv orientat

Un principiu cheie în proiectarea Windows.

Orice resursă a sistemului este reprezentată ca obiect. O resursă este orice resursă care trebuie partajată și la care accesul poate fi din mai multe procese. Dacă resursa este utilizată într-un singur proces, atunci nu are sens să o alocăm ca obiect.

În centrul Windows NT sunt obiecte, o formă unificată care are:

  • numire
  • utilizarea în comun
  • contabilitate

De ce au făcut toate astea?

Există mai multe tipuri de resurse, pe viitor puteți adăuga alte resurse în sistem, și pentru a unifica și a nu suprascrie întregul nucleu, a creat o formă unificată: nume, partajare, contabilitate.

Orice resursă partajată de sistem este un obiect.

În interiorul structurii, se execută - nu obiecte.

Manager de obiecte

Aceasta este partea executată, numele abreviat OB (Object Manager) - aceleași nume sunt folosite în limba SI.

- Gestionează resursele

  • Nat. fișiere și directoare;
  • Elemente ale registrului;
  • Procese (flux).

Fiecare resursă este furnizată de un obiect

Operații pe obiecte:

  • Creați / ștergeți;
  • Protecția accesului;
  • Numărătoarea referințelor.

Numărătoarea referințelor

Mânerele sunt asociate cu un proces, dar pot fi transferate de la un proces la altul, deoarece obiectul poate fi utilizat din diferite procese, este o resursă partajată. Transfer convenabil.

Există două clase de obiecte pe ierarhia obiectelor:

  1. executiv - utilizat de aplicațiile utilizatorilor și de componentele executivului (subsistemul executiv), majoritatea acestora sunt comune.
  2. Kernel - reprezintă resursele de bază - dispozitive fizice, primitive de sincronizare ... Poate fi utilizată numai în modul kernel. Ele sunt folosite numai de nucleu, adică cu ei doar lucrările de bază și nimeni altcineva.

Tipuri de obiecte Windows

Care este obiectul însuși fizic?

Ferestre de kernel nt

Obiectul în sine este un set de date. Ce - la managerul de obiecte fără o diferență. Obiectul constă din două părți mari: corpul, poziția.

Organismul este datele în sine (acestea sunt de interes pentru un anumit consumator).

Titlu - adăugat de managerul de obiecte, stochează informațiile interne pentru organizarea obiectului, stocarea acestuia, numele, contabilitatea, locul de muncă, drepturile de acces.

  • nume
  • Directorul care îi aparține
  • Descriptor de securitate
  • De câte ori au fost deschise capetele obiectului
  • Lista proceselor care au o legătură cu acest obiect
  • Numărul acestor linkuri
  • tip

Toate acestea sunt necesare pentru funcționarea managerului de obiecte.

Obiectele sunt grupate într-un director care urmează să fie sistematizat. Totul este construit într-un mod ierarhic. există directoare de nivel superior (Root), atunci există sucursale.

Organizarea fișierelor WindowsNT

  1. NTOSKRNL.EXE este kernel-ul sistemului de operare (executați și kernel).
  2. HAL.DLL este o abstracție de hardware. Deoarece sistemul de operare a fost inițial modular, stratul de abstractizare hardware este localizat într-un fișier separat.
  3. NTDLL.DLL - implementarea API-ului Nativ și a apelurilor de sistem - o bibliotecă specială care stochează apelurile de sistem care oferă utilizatorului un API ușor de utilizat pentru operație.

Aceste trei fișiere sunt de fapt nucleul OS-ului, celelalte fișiere sunt plug-in-uri ale kernel-ului, driverele care sunt încărcate după cum este necesar. Ideea este că fără aceste trei fișiere nimic nu poate funcționa, deoarece nu va mai fi nimic de lucru.

Fișierele plug-in (plugin-urile kernel-ului) pot fi numite orice.

Modulele kernel-ului Windows NT nu pot fi compilate în kernel-ul propriu-zis. În OS Linex există o alegere, le poți folosi separat, poți, împreună cu kernelul).

Pentru sistemul de operare în sine, trei fișiere nu sunt suficiente, aveți nevoie de un număr de manageri și subsisteme și de orice altceva pentru a organiza o arhitectură complexă Windows NT, astfel încât să funcționeze întregul mediu al subsistemului.

Prin urmare, sunt necesare și alte fișiere, acestea fiind prezentate mai jos în ordinea încărcării.

  • SMSS.EXE este procesul managerului de sesiuni.
  • WINLOGON.EXE este procesul de autentificare a utilizatorilor (logon).
  • SERVICES.EXE - procesul de gestionare a serviciilor (servicii).
  • LSASS.EXE este procesul subsistemului Autoritatea locală de securitate.
  • CSRSS.EXE este procesul de subsistem Windows.
  • WIN32R.SYS face parte din subsistemul Win care rulează în modul kernel. Conducătorul, nucleul plug-in, implementează acea parte a subsistemului de mediu Win care rulează în modul kernel, adică acesta este managerul de ferestre și subsistemul grafic.
  • KERNEL32.DLLUSER32.DLL GDI32.DLL - trei biblioteci dinamice cheie ale subsistemului, implementarea părții de utilizator a subsistemului de mediu WinScience. Pentru OS pe 64 de biți se utilizează aceleași nume (cu numărul 32).

Subsistem Windows

CSRSS.EXE este procesul de subsistem Windows care gestionează aplicațiile console și implementează funcții auxiliare

Win32K.SYS - driver de mod kernel, implementat:

  • Manager de ferestre;
  • Procesarea intrărilor de la tastatură / mouse;
  • Schimb de mesaje între ferestre;
  • Subsistem grafic (GDI).

Subsistemul utilizatorului

  • Dynamic bibliotecile subsistemului: ADVPI32.DLL, USER32.DLL, GDI32.DLL, KERNEL32.DLL
  • Drivere grafice (inclusiv drivere de imprimantă)

Înainte de Windows NT4.0, managerul de ferestre și subsistemul grafic au fost puse în modul utilizator. Din cauza PC-urilor slabe, această decizie a fost abandonată.

Cum funcționează toate aceste interioare? Cum vedeți toate acestea din punctul de vedere al programatorului?

instrumente

Instrumentele sunt numeroase programe pentru examinarea dispozitivului intern Windows și înțelegerea principiului funcționării acestora.

Există utilitare care vă ajută să înțelegeți sistemul Windows:

Să vedem ce utilități sunt.

puteți descărca un întreg set de programe care vă permite să explorați dispozitivul intern Windows, să vedeți ce și cum se face, ce este ascuns pentru partea utilizatorului. Aceste programe afectează în principal monitorizarea funcționării OS.







Articole similare

Trimiteți-le prietenilor: