Manager de redare directă

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Managerul de redare directă ( DRM ) este o componentă a infrastructurii de redare directă (DRI - Direct Rendering Infrastructure ), un sistem care vă permite să utilizați eficient accelerația video (în special cea legată de 3D ) în sistemele de tip Unix .

Se compune din două module din kernel care acționează ca drivere , un driver DRM generic și un driver specific pentru placa video . Aceste drivere permit unei aplicații de spațiu utilizator să acceseze direct hardware-ul video.

Driverul DRM generic

Adesea, când vorbim despre DRM, ne referim la driverul DRM, în această a doua parte ne vom referi la driverul DRM prin simpla utilizare a abrevierii DRM.

Integrare DRM și sistem

DRM este strâns legat de următoarele componente care pot fi găsite în sistem:

  1. DMA ( Direct Memory Access ) sau acces direct la memorie.
  2. Managerul de memorie al portului grafic accelerat (AGP).
  3. Blocarea resurselor.
  4. Acces securizat la hardware.

Primele două componente sunt utilizate pentru comunicarea cu hardware-ul. Al treilea este utilizat pentru a partaja dispozitivul video, de fapt, există numeroase procese care ar putea dori să acceseze hardware-ul care gestionează grafica, aceasta înseamnă că sistemul trebuie să poată bloca accesul la o anumită resursă atunci când este utilizat, adică garantează excluderea reciprocă . Acesta din urmă servește pentru a proteja hardware-ul de orice cod rău intenționat, deoarece teoretic orice proces din spațiul utilizatorilor poate utiliza dispozitivul așa cum preferă (există posibilitatea unei escaladări de privilegii )

Rolul DRM în DRI

În timp ce DRM se ocupă de gestionare, acesta acceptă DRI în multe feluri, dintre care majoritatea utilizează componentele menționate mai sus.

Excludere mutuala

DRM are grijă să intre în modul secvențial toate acele procese care ar putea dori să acceseze hardware-ul grafic. Cu toate acestea, DRM nu numai că împiedică două procese să încerce să scrie date pe dispozitiv în același timp, dar împiedică și un proces să citească date incoerente din acesta. Trebuie remarcat faptul că nu toate programele necesită acces direct, de exemplu multe programe 2D trec printr-un manager intermediar.

Politici de securitate

DRM gestionează, de asemenea, politicile de securitate atunci când un anumit proces nu are privilegiile necesare pentru a mapa regiunile de memorie ale hardware-ului grafic la / dev / mem. DRM permite unui proces client să mapeze zonele de memorie ale dispozitivului video cu unele restricții:

  • Clientul poate mapa doar regiunile de memorie care îi aparțin, acest lucru îl obligă pe client să respecte politicile de securitate care îi sunt impuse de serverul X (cum ar fi xauth o aplicație care se ocupă cu autorizațiile X Window ).
  • Clientul poate să mapeze regiuni numai dacă poate accesa / dev / drm, astfel încât administratorul poate decide dacă permite unui anumit utilizator să acceseze funcțiile de redare directă. Pentru a face acest lucru, un utilizator trebuie să facă parte dintr-un grup specificat în fișierul de configurare XF86Config.
  • Clientul poate să mapeze doar regiunile pe care serverul X îi permite să mapeze, de fapt, pe lângă blocarea zonelor care nu îi aparțin direct, serverul poate decide să restricționeze accesul la anumite zone de memorie, de exemplu, făcându-le numai în citire, pentru a putea introduce date sensibile (cum ar fi datele referitoare la începutul DMA).

Acces la date

DRM utilizează DMA într-un mod optimizat. Cel mai bun randament este permis de următorii factori:

  1. Serverul X poate specifica un set de dimensiuni tampon diferite pe care dorește să le aloce și să le blocheze ulterior.
  2. Clientul poate mapa aceste tampoane utilizând adresarea virtuală (prin intermediul API-ului DRM).
  3. Clientul poate rezerva unele dintre aceste buffere pentru utilizare prin DRM, de exemplu pentru a le completa cu date și pentru a solicita DRM să trimită aceste date către hardware-ul grafic. (De obicei, bufferele mai mici sunt utilizate pentru a vă asigura că serverul X poate obține blocarea în timpul transferurilor consecutive între buffere și dispozitivul grafic, astfel serverul devine mai receptiv).
  4. DRM menține o coadă tampon DMA pentru fiecare context OpenGL GLXContext și detectează când este necesar un comutator. Când este necesar să se schimbe contextul, se încearcă utilizarea unui driver specific (în kernel-space), dacă acesta nu este disponibil, se întoarce la serverul X care are o metodă generică pentru comutarea GLXContext. În cele din urmă, DRM are, de asemenea, grijă de solicitările de planificare către diferitele tampoane pentru a evita modificări inutile de context.
  5. Sistemul DMA este generic în sensul că un server X poate obține informații în timp real și apoi poate solicita ce operațiuni poate efectua pe hardware-ul prezent în mașină. Serverul X observă ce hardware este conectat și decide cum să îl facă disponibil. Acest lucru facilitează utilizarea oricăror dispozitive grafice noi prin DRI, permițând ulterior utilizarea unui driver specific care îi poate îmbunătăți performanța.

Elemente conexe

linkuri externe

Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă de software gratuit