Linux, nuove caratteristiche dei kernel 2.4.x


Autore: A. D. F. <adefacc@tin.it>

Rev.: 04,  Data: 17 marzo 2006


In questo articolo sono descritte le nuove caratteristiche aggiunte ai kernel Linux della serie 2.4 rispetto a quelle della precedente serie 2.2.

NOTA: tutte le informazioni contenute nel presente documento devono essere intese come indicative e non necessariamente complete.


1. Introduzione

2. Miglioramenti e nuove funzionalità

3. Revisioni documento


1. Introduzione

I kernel Linux della serie 2.4 presentano una serie di interessanti miglioramenti e nuove funzionalità che si possono così riassumere:

Queste caratteristiche, dettagliate nel seguito, offrono apprezzabili vantaggi nelle seguenti modalità di utilizzo:

Si noti infine che molte altre caratteristiche (intese come naturale evoluzione di quelle elencate nel presente documento) sono già state pianificate con la prossima serie di sviluppo 2.5, pertanto buona parte di queste saranno sicuramente inserite nella serie 2.4 a partire dalla fine dell'anno 2001.

2. Miglioramenti e nuove funzionalità

Nel seguito sono elencati, con opportuni commenti, i più importanti miglioramenti e le maggiori funzionalità aggiunte nei kernel 2.4.x.

2.1 Nuovi limiti di sistema

I nuovi principali limiti di sistema sono i seguenti.

Limite  Kernel 2.2.x  Kernel 2.4.x
Max. N. CPU     8  32
Max. velocità CPU    2 GHz
> 2 GHz
(2.2.18)
 > 2 GHz
Max. quantità RAM    1/2/4 GB  64 GB
Max. dimensione file    2 GB  1 TB
Max. dimensione FS    32 GB
> 32 GB
(2.2.16)
  2 TB
(con LFS)
Max. N. processi    4090  > 4090
Max. N. utenti/gruppi    65535
(2^16)
 > 65535
(2^32)
Max. N. dischi (EIDE)    4  10
Max. N. dischi (SCSI)    16  > 16
(con devfs)
Max. N. schede Ethernet    4  16

2.2 Supporto architetture / CPU

È stato aggiunto il supporto per le seguenti architetture / processori:

È stato migliorato il supporto per le seguenti architetture / processori:

Per l'architettura PC, si segnala l'aggiunta di un gestore per l'aggiornamento del microcodice per CPU P6.

Aggiornamento 10/08/2005: ad oggi il kernel 2.4 non ha ancora il supporto (sysenter) per le chiamate di sistema accelerate (supporto che è invece presente nel kernel 2.6); questo vuol dire che l'esecuzione nei processori Pentium IV (e in minor misura nei processori AMD K6 e K7) è leggermente meno efficiente (meno context switch) che nei processori precedenti (es. Pentium III, ecc.).

2.3 Modifiche interne generali

Le seguenti modifiche migliorano le prestazioni generali e consentono l'utilizzo di macchine multi-processori più potenti.

Le seguenti modifiche migliorano la compatibilità con gli standard usati in altri sistemi Unix.

2.4 Modifiche file system (FS)

Le seguenti modifiche / aggiunte si riferiscono alle interfacce ad alto livello verso i file system fisici.

Sono stati aggiunti i seguenti file system fisici:

Per supportare le nuove unità hot swap si segnala l'aggiunta di un file system specifico per gestire le gerarchie dinamiche dei nomi e delle informazioni di tali unità, il DEVFS (montato in /dev), con funzionamento simile al PROCFS (montato in /proc).

Sono stati aggiornati i seguenti file system:

I seguenti file system saranno probabilmente aggiunti nella serie 2.4:

Le prossime estensioni riguardanti i FS svilupperanno il supporto (per ora minimale) per le notifiche dinamiche a uno o più processi delle modifiche occorse ai direttori e ai file di un file system.

Questa caratteristica consentirà di evitare il polling dello stato (stat) di un file o di un direttorio (minori latenze fra modifiche e aggiornamento relative liste file / direttori), e sarà particolarmente utile a programmi con interfaccia utente, es. file manager, o a file server.

Si noti infine che la comparsa generalizzata di file system journaled (giornalizzati), in grado di mantenere un elevatissimo grado di congruenza fra dati e metadati, è la risposta alle richieste degli utenti di poter massimizzare la sicurezza di registrazione dei dati anche nelle condizioni più critiche, in cui ad es. non sia sempre garantita una chiusura (shutdown) corretta del sistema operativo.

La capacità di effettuare il journaling dei dati è una caratteristica considerata ormai indispensabile per i sistemi mission critical e per quelli destinati a un uso pubblico generalizzato da parte di utenti non necessariamente accorti, es. sistemi embedded, set top box, ecc.

2.5 Modifiche gestione partizioni e dischi

Supporto per nuove partizioni.

Aggiornamento supporto partizioni.

Aggiornamento gestione dischi.

In questo contesto si ricorda l'aggiunta dell'accesso diretto ai dischi tramite RAW device.

2.6 Modifiche interfacce bus e periferiche varie

Sono state modificate e aggiunte molte interfacce per la gestione ottimale delle periferiche multimediali.

Fra le nuove unità / dispositivi supportati si notano:

Nuovi driver e aggiornamenti vari per:

Modifiche architetturali accesso frame buffer.

Con le sopraelencate caratteristiche il supporto per telecamere (WebCam o normali BN/CO), sintonizzatori radio (tuners), ecc. è stato migliorato e velocizzato rispetto alle versioni 2.2.x.

2.7 Modifiche gestione reti e protocolli

Aggiornamento / riscrittura dei seguenti sottosistemi.

Aggiunta nuovi sottosistemi.

Aggiornamento / riscrittura dei seguenti protocolli.

Aggiunta nuovi protocolli.

Aggiunta nuove reti.

Aggiunta nuove funzionalità.

2.8 Modifiche varie

Aggiornamento gestione APM (Advanced Power Management).

Miglioramento supporto per Wine (esecuzione in Linux di programmi Windows 32 bit).

Supporto protocolli CORBA (comunicazioni client/server indipendenti dalla piattaforma).

2.9 Compilazione kernel

Per quanto riguarda la compilazione del kernel si segnalano le seguenti novità.

Compilatori GCC

I seguenti compilatori non sono più supportati:

I compilatori supportati sono i seguenti:

Aggiornamento 17/03/2006
I compilatori NON supportati sono i seguenti:

(*) compilatore con possibili bachi quando usato con ottimizzazione >= -O2.

È stato fatto un notevole lavoro per eliminare dal kernel tutti i costrutti che possono mettere in difficoltà, con determinate configurazioni / ottimizzazioni, alcune versioni del compilatore GCC (es. 2.95.2).

Il lavoro procede per consentire anche alle versioni più recenti del GCC (snapshot compresi) di compilare senza eccessivi problemi i file sorgenti.

Per ora, specie in alcune distribuzioni basate su RedHat, si mantiene comunque il KGCC, ovvero un compilatore C specifico (Kernel GCC) usato per la sola compilazione del kernel.

Aggiornamento 10/08/2005: il lavoro di adattamento alle nuove caratteristiche dei compilatori è poi proseguito per consentire l'utilizzo sicuro del GCC 3.x.

Makefile e struttura direttori

Al fine di diminuire le criticità e semplificare la gestione dei Makefile per le varie architetture / configurazioni, sono state apportate delle modifiche strutturali agli stessi.

Sistema di configurazione delle opzioni

Si segnala il progetto di Eric Raymond per utilizzare, in futuro, un apposito linguaggio interpretato (CML2) per definire le regole interne alla configurazione e applicare le relative azioni richieste prima della compilazione del kernel.

Aggiornamento 10/08/2005: il progetto kbuild, basato su CML2, è stato fermato / congelato sin dal 2002 in quanto giudicato non allineato con gli obiettivi del kernel (in particolare per la necessità di includere un'interprete Python nelle utility del kernel); tale tendenza è stata poi confermata nel kernel 2.6 in cui non c'è traccia di tale lavoro.

3. Revisioni documento

Questo documento è stato creato / aggiornato nelle seguenti date.

Rev. 04, 17/03/2006
Revisione documento:

Rev. 03, 10/08/2005
Revisione documento:

Rev. 02, 26/05/2001
Revisione documento:

Rev. 01, 30/01/2001
Revisione documento:

Rev. 00, 04/01/2001
Creazione documento.

Last Updated: 17-MAR-2006