visió general i comparació de les API i ABI del nucli de Linux From Wikipedia, the free encyclopedia
El nucli de Linux proporciona múltiples interfícies per a l'espai d'usuari i el codi en mode nucli que s'utilitzen per a diferents propòsits i que tenen diferents propietats segons el disseny. Hi ha dos tipus d'interfície de programació d'aplicacions (API) al nucli Linux:
L'API de Linux inclou el nucli – API d'espai d'usuari, que permet que el codi de l'espai d'usuari accedeixi als recursos del sistema i als serveis del nucli de Linux.[3] Està compost per la interfície de crida al sistema del nucli Linux i les subrutines de la biblioteca estàndard C. L'objectiu del desenvolupament de l'API de Linux ha estat proporcionar les característiques utilitzables de les especificacions definides a POSIX d'una manera que sigui raonablement compatible, robusta i de rendiment, i proporcionar funcions útils addicionals no definides a POSIX, igual que el nucli – Les API d'espai d'usuari d'altres sistemes que implementen l'API POSIX també proporcionen funcions addicionals no definides a POSIX.
L'API de Linux, per elecció, s'ha mantingut estable al llarg de les dècades gràcies a una política de no introduir canvis de ruptura; aquesta estabilitat garanteix la portabilitat del codi font.[4] Al mateix temps, els desenvolupadors del nucli de Linux han estat històricament conservadors i meticulosos a l'hora d'introduir noves trucades al sistema.
Molt de programari gratuït i de codi obert està escrit per a l'API POSIX. Com que flueix molt més desenvolupament al nucli de Linux en comparació amb les altres combinacions de nucli i biblioteca estàndard C compatibles amb POSIX, el nucli de Linux i la seva API s'han augmentat amb funcions addicionals. La programació per a l'API Linux completa, en lloc de només l'API POSIX, pot proporcionar avantatges en els casos en què aquestes funcions addicionals siguin útils. Exemples actuals coneguts són udev, systemd i Weston.[5] Persones com Lennart Poettering advoquen obertament per preferir l'API Linux a l'API POSIX, on això ofereix avantatges.[6]
A FOSDEM 2016, Michael Kerrisk va explicar alguns dels problemes percebuts amb l'API d'espai d'usuari del nucli de Linux, descrivint que conté múltiples errors de disseny perquè no és extensible, no es pot mantenir, és massa complex, té un propòsit limitat, infringeix els estàndards i és inconsistent. La majoria d'aquests errors no es poden corregir perquè fer-ho trencaria l'ABI que el nucli presenta a l'espai d'usuari.[7]
La interfície de crida al sistema d'un nucli és un conjunt de totes les crides de sistema implementades i disponibles en un nucli. Al nucli Linux, diversos subsistemes, com ara el Direct Rendering Manager (DRM), defineixen les seves pròpies crides al sistema, totes elles part de la interfície de crides del sistema.
S'estan discutint públicament diversos problemes amb l'organització de les cridesal sistema del nucli de Linux. Els problemes han estat assenyalats per Andy Lutomirski, Michael Kerrisk i altres.[8][9][10][11]
Una biblioteca estàndard C per a Linux inclou embolcalls al voltant de les trucades al sistema del nucli de Linux; la combinació de la interfície de trucada del sistema del nucli de Linux i una biblioteca estàndard C és el que construeix l'API de Linux. Algunes implementacions populars de la biblioteca estàndard C són
El terme Linux ABI es refereix a un ABI d'espai d'usuari del nucli. La interfície binària de l'aplicació fa referència als binaris compilats, en codi màquina. Per tant, qualsevol ABI d'aquest tipus està vinculat al conjunt d'instruccions. Definir un ABI útil i mantenir-lo estable és menys responsabilitat dels desenvolupadors del nucli de Linux o dels desenvolupadors de la Biblioteca C GNU, i més la tasca de les distribucions de Linux i dels proveïdors de programari independents (ISV) que vulguin vendre i donar suport als seus programari propietari com a binaris només per a un únic ABI de Linux, en lloc de donar suport a múltiples ABI de Linux.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.