B.4. Algunes tasques gestionades pel nucli
B.4.1. Administració del maquinari
El nucli té, abans de res, la tasca de controlar les parts del maquinari, detectar-les, activar-les quan l'ordinador s'engegui, etc. També els posa a disposició de programari de nivell superior amb una interfície de programació simplificada, de manera que les aplicacions poden aprofitar els dispositius sense haver de preocupar-se per detalls com ara a quin connector s'ha endollat la targeta. La interfície de programació també proporciona una capa d'abstracció; això permet que el programari de videoconferència, per exemple, utilitzi una càmera web independentment del seu fabricant i model. El programari pot simplement utilitzar el Video for Linux (V4L), i el nucli tradueix les crides a funcions d'aquesta interfície a les ordres de maquinari reals necessàries per a la càmera web específica usada.
The kernel exports many details about detected hardware through the /proc/
and /sys/
virtual filesystems. Several tools summarize those details. Among them, lspci
(in the pciutils package) lists PCI devices, lsusb
(in the usbutils package) lists USB devices, and lspcmcia
(in the pcmciautils package) lists PCMCIA cards. These tools are very useful for identifying the exact model of a device. This identification also allows more precise searches on the web, which in turn, lead to more relevant documents.
Exemple B.1. Exemple d'informació proporcionada per lspci
i lsusb
$
lspci
[...]
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
00:01.0 PCI bridge: Intel Corporation 6th-9th Gen Core Processor PCIe Controller (x16) (rev 05)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
00:14.0 USB controller: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Thermal Subsystem (rev 31)
[...]
02:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTL8411B PCI Express Card Reader (rev 01)
03:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 12)
04:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
$
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0bda:5621 Realtek Semiconductor Corp. HD WebCam
Bus 001 Device 002: ID 04ca:3016 Lite-On Technology Corp.
Bus 001 Device 018: ID 145f:01bc Trust GXT 155 Gaming Mouse
Bus 001 Device 004: ID 04f3:0c03 Elan Microelectronics Corp. ELAN:Fingerprint
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Aquests programes tenen una opció -v
que llista informació molt més detallada (però normalment no necessària). Finalment, l'ordre lsdev
(al paquet procinfo) llista els recursos de comunicació utilitzats pels dispositius.
Les aplicacions sovint accedeixen als dispositius mitjançant fitxers especials creats dins de
/dev/
(vegeu la barra lateral
TORNAR A LES BASES Permisos d'accés a dispositius). Aquests són fitxers especials que representen unitats de disc (per exemple,
/dev/hda
i
/dev/sdc
), particions (
/dev/hda1
o
/dev/sdc3
), ratolins (
/dev/input/mouse0
), teclats (
/dev/input/event0
), targetes de so (
/dev/snd/*
), ports sèrie (
/dev/ttyS*
), etc.
B.4.2. Sistemes de fitxers
Els sistemes de fitxers són un dels aspectes més destacats del nucli. Els sistemes Unix fusionen tots els fitxers en una única jerarquia que permet als usuaris (i a les aplicacions) accedir a les dades simplement coneixent la seva ubicació dins d'aquesta jerarquia.
El punt de partida d'aquest arbre jeràrquic s'anomena arrel, /
. Aquest directori pot contenir subdirectoris amb nom. Per exemple, el subdirectori home
de /
s'anomena /home/
. Aquest subdirectori pot, al seu torn, contenir altres subdirectoris, etc. Cada directori també pot contenir fitxers, on s'emmagatzemaran les dades reals. Així, el nom /home/rmas/Desktop/hello.txt
es refereix a un fitxer anomenat hello.txt
emmagatzemat en el subdirectori Desktop
del subdirectori rmas
del subdirectori home
present a l'arrel. El nucli tradueix entre aquest sistema de nomenclatura i l'emmagatzematge real, físic, en un disc.
A diferència d'altres sistemes, només hi ha una jerarquia d'aquest tipus, i pot integrar dades de diversos discs. Un d'aquests discos s'utilitza com a arrel, i els altres estan “muntats” en directoris de la jerarquia (l'ordre Unix s'anomena mount
); aquests altres discs estan disponibles sota aquests “punts de muntatge” o «mount points». Això permet emmagatzemar directoris d'usuari (tradicionalment emmagatzemats spta de /home/
) en un segon disc dur, que contindrà els directoris rhertzog
i rmas
. Un cop el disc està muntat a /home/
, aquests directoris esdevenen accessibles en les seves ubicacions habituals, i rutes com ara /home/rmas/Desktop/hello.txt
segueixen funcionant.
Hi ha molts formats de sistema de fitxers, corresponents a moltes maneres d'emmagatzemar físicament dades en discos. Els més coneguts són ext3 i ext4, però també n'hi ha d'altres. Per exemple, vfat és el sistema que històricament va ser utilitzat pels sistemes operatius DOS i Windows, que permet l'ús de discos durs sota Debian i sota Windows. En qualsevol cas, un sistema de fitxers s'ha de preparar en un disc abans de poder-lo muntar, i aquesta operació es coneix com a “formatació”. Ordres com ara mkfs.ext3
(on mkfs
significa «MaKe FileSystem» o “crear sistema de fitxers”) gestionen la formatació. Aquestes ordres requereixen, com a paràmetre, un fitxer de dispositiu que representa la partició a formatar (per exemple, /dev/sda1
). Aquesta operació és destructiva i només s'hauria d'executar una vegada, excepte si es vol deliberadament esborrar un sistema de fitxers i tornar a començar de nou.
També hi ha sistemes de fitxers de xarxa, com ara
NFS, on les dades no s'emmagatzemen en un disc local. En lloc d'això, les dades es transmeten a través de la xarxa a un servidor que les emmagatzema i les recupera sota demanda. L'abstracció del sistema de fitxers evita als usuaris l'haver de preocupar-se: els fitxers romanen accessibles en l'habitual manera jeràrquica.
B.4.3. Funcions compartides
Com que cert número de les mateixes funcions són usades per tot el programari, té sentit centralitzar-les al nucli. Per exemple, la gestió compartida de sistemes de fitxers permet a qualsevol aplicació obrir un fitxer simplement pel nom, sense haver de preocupar-se on el fitxer s'emmagatzema físicament. El fitxer es pot emmagatzemar en diversos segments diferents d'un disc dur, o estar escampat en diversos discos durs, o fins i tot emmagatzemar-lo en un servidor de fitxers remot. Les funcions de comunicació compartides són utilitzades per les aplicacions per intercanviar dades independentment de la forma en què es transporten. Per exemple, el transport podria passar per qualsevol combinació de xarxes locals o sense fils, o per una línia telefònica.
B.4.4. Gestió de processos
Un procés és una instància en execució d'un programa. Això requereix memòria per emmagatzemar tant el programa com les seves dades operatives. El nucli és l'encarregat de crear-ho i gestionar-ho. Quan un programa s'executa, el nucli primer reserva una mica de memòria, després hi carrega el codi executable des del sistema de fitxers, i després comença l'execució del codi. Manté informació sobre aquest procés, la més visible del qual és un número d'identificació conegut com a pid (process identifier o “ identificador de procés”).
Els nuclis de tipus Unix (incloent-hi Linux), com la majoria dels altres sistemes operatius moderns, són capaços de fer "multitasca". En altres paraules, permeten executar molts processos “alhora”. De fet, només hi ha un procés en execució en qualsevol instant, però el nucli redueix el temps en petites porcions i executa cada procés per torns. Com que aquestes divisions de temps són molt breus (en el rang de mil·lisegons), creen la il·lusió de processos que s'executen en paral·lel, encara que en realitat només són actius durant alguns intervals de temps i inactius la resta del temps. El tasca del nucli és ajustar els seus mecanismes de programació per mantenir aquesta il·lusió, mentre maximitza el rendiment del sistema global. Si les divisions de temps són massa llargues, l'aplicació pot no semblar tan “responsiu” com es desitjaria. Però si són massa curtes, i el sistema perd massa temps per a canviar de tasca. Aquestes decisions es poden retocar amb les prioritats dels processos. Els processos d'alta prioritat s'executaran durant més temps i amb més freqüència que els processos de baixa prioritat.
Per descomptat, el nucli permet executar diverses instàncies independents del mateix programa. Però cada un només pot accedir a les seves pròpies divisions de temps i memòria. Així doncs, les dades romanen independents.
B.4.5. Gestió dels permisos
Els sistemes de tipus Unix també són multiusuari. Proporcionen un sistema de gestió dels permisos que suporta usuaris i grups separats; també permet el control sobre les accions basant-se en els permisos. El nucli gestiona les dades per a cada procés, fet que li permet controlar els permisos. La major part del temps, un procés és identificat per l'usuari que l'ha iniciat. Aquest procés només té permès dur a terme les accions que el seu propietari tingui disponibles. Per exemple, intentar obrir un fitxer requereix que el nucli comprovi la identitat del procés amb els permisos d'accés (per a més detalls sobre aquest exemple en particular, vegeu
Secció 9.3, «Gestió de permisos»).