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.
El nucli exporta molts detalls sobre el maquinari detectat a través dels sistemes de fitxers virtuals /proc/
i /sys/
. Diverses eines resumeixen aquests detalls. Entre elles, lspci
(al paquet pciutils) llista els dispositius PCI, lsusb
(al paquet usbutils) llista els dispositius USB, i lspcmcia
(al paquet pcmciautils) llista les targetes PCMCIA. Aquestes eines són molt útils per identificar el model exacte d'un dispositiu. Aquesta identificació també permet cerques més precises a la web, que al seu torn condueixen a documents més rellevants.
Exemple B.1. Exemple d'informació proporcionada per lspci
i lsusb
$
lspci
[...]
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
[..]
02:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43ea
05:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 04)
06:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)
07:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
08:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO
09:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO
0a:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
0b:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
0b:00.1 Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP
0b:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
$
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 048d:c102 Integrated Technology Express, Inc. ITE Device(8910)
Bus 001 Device 004: ID 5986:115f Bison Electronics Inc. Integrated Camera
Bus 001 Device 005: ID 048d:c975 Integrated Technology Express, Inc. ITE Device(8295)
Bus 001 Device 006: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 05e3:0620 Genesys Logic, Inc. GL3523 Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.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.
Applications often access devices by way of special files created within
/dev/
(see sidebar
TORNAR A LES BASES Permisos d'accés a dispositius). These are special files that represent disk drives (for instance,
/dev/hda
and
/dev/sdc
),
/dev/nvme1n1
partitions (
/dev/hda1
or
/dev/sdc3
or
/dev/nvme1n1p2
), mice (
/dev/input/mouse0
), keyboards (
/dev/input/event0
), soundcards (
/dev/snd/*
), serial ports (
/dev/ttyS*
), and so on.
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.
There are many filesystem formats, corresponding to many ways of physically storing data on disks. The most widely known are ext3 and ext4, but others exist. For instance, vfat is the system that was historically used by DOS and Windows operating systems, which allows using hard disks under Debian as well as under Windows. In any case, a filesystem must be prepared on a disk before it can be mounted and this operation is known as “formatting”. Commands such as mkfs.ext4
(where mkfs
stands for MaKe FileSystem) handle formatting. These commands require, as a parameter, a device file representing the partition to be formatted (for instance, /dev/sda1
). This operation is destructive and should only be run once, except if one deliberately wishes to wipe a filesystem and start afresh.
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»).