I 25 anni di sviluppo del kernel Linux possono essere qualificati o astratti in parole povere? [chiuso]


12

Il kernel di Linux ha quasi 25 anni . Se dovessi inventare la versione breve sulla storia dello sviluppo del kernel Linux dal 1991 (la sua data di inizio), e in particolare dal 1994 (1.0.0) fino ad oggi, non potrei. Il meglio che potrei fare a meno di leggere ogni singola nota di rilascio del kernel sarebbe quello di fornire quanto segue che sono le caratteristiche generali di rilascio aggiunte al kernel fino alla versione 3.11 (note e collegamenti omessi):

  • La versione 1.0 del kernel Linux è stata rilasciata il 14 marzo 1994. Questa versione del kernel Linux supportava solo computer basati su i386 a processore singolo. La portabilità è diventata una preoccupazione, quindi la versione 1.2 (rilasciata il 7 marzo 1995) ha ottenuto il supporto per i sistemi informatici che utilizzano processori basati sulle architetture Alpha, SPARC e MIPS.
  • La versione 2.0 è stata rilasciata il 9 giugno 1996. Nella serie c'erano 41 versioni. La caratteristica principale di 2.0 era il supporto SMP (ovvero il supporto per più processori in un singolo sistema) e il supporto per più tipi di processori.
  • La versione 2.2 (rilasciata il 26 gennaio 1999) ha rimosso lo spinlock globale e fornito un supporto SMP migliorato e aggiunto il supporto per le architetture m68k e PowerPC nonché i nuovi file system (incluso il supporto di sola lettura per NTFS di Microsoft).
  • La versione 2.4.0 , rilasciata il 4 gennaio 2001, conteneva il supporto per ISA Plug and Play, USB e PC Card. Comprendeva anche il supporto per il processore PA-RISC di Hewlett-Packard. Lo sviluppo per 2.4.x è cambiato un po 'in quanto sono state rese disponibili più funzionalità per tutta la durata della serie, tra cui: supporto per Bluetooth, Logical Volume Manager (LVM) versione 1, supporto RAID, file system InterMezzo ed ext3.
  • La versione 2.6.0 è stata rilasciata il 18 dicembre 2003. Lo sviluppo di 2.6.x è cambiato ulteriormente includendo nuove funzionalità per tutta la durata della serie. Tra le modifiche apportate alla serie 2.6 vi sono: integrazione di µClinux nelle fonti del kernel mainline, supporto PAE, supporto per diverse nuove linee di CPU, integrazione di ALSA nelle fonti del kernel mainline, supporto per un massimo di 2 32 utenti ( da 2 a 16 ), supporto per un massimo di 2 29 ID di processo (solo 64 bit, archi a 32 bit ancora limitati a 2 15), ha aumentato sostanzialmente il numero di tipi di dispositivi e il numero di dispositivi di ciascun tipo, migliorato il supporto a 64 bit, supporto per file system che supportano file di dimensioni fino a 16 terabyte, prelazione nel kernel, supporto per la libreria thread POSIX nativa (NPTL), integrazione Linux in modalità utente nei sorgenti del kernel mainline, integrazione SELinux nei sorgenti del kernel mainline, supporto InfiniBand e molto altro. Notevoli anche l'aggiunta di numerosi file system nelle versioni 2.6.x: FUSE, JFS, XFS, ext4 e altro. I dettagli sulla storia delle serie del kernel 2.6 sono disponibili nei file ChangeLog nell'area di rilascio del codice sorgente della serie del kernel 2.6 di kernel.org.
  • La versione 3.0 è stata rilasciata il 22 luglio 2011. Torvalds ha annunciato che il grande cambiamento è stato: "NIENTE. Assolutamente nulla". Il 30 maggio 2011 ha visto Torvalds annunciare "... assicuriamoci di fare davvero la prossima versione non solo di un numero tutto nuovo, ma anche di un buon kernel". Dopo il previsto processo di sviluppo di 6-7 settimane, verrà rilasciato in prossimità del 20 ° anniversario di Linux.
  • Nel dicembre 2012, Torvalds ha deciso di ridurre la complessità del kernel rimuovendo il supporto per i processori i386, rendendo la serie 3.7 del kernel l'ultima a supportare ancora il processore originale. La stessa serie di supporto unificato per il processore ARM.
  • La versione 3.11 , rilasciata il 2 settembre 2013, aggiunge molte nuove funzionalità come il nuovo flag O_TMPFILE per open (2) per ridurre le vulnerabilità temporanee dei file, la gestione sperimentale dell'energia dinamica di AMD Radeon, il polling di rete a bassa latenza e zswap (cache di swap compressa).

Potrei anche aggiungere che ormai da molti anni la Linux Foundation ha riferito sullo sviluppo del kernel. Questi sono i punti salienti dello sviluppo del kernel 2012-2013:

  • Quasi 92.000 changeset sono stati fusi da 3.738 singoli sviluppatori che rappresentano 536 società (di cui siamo a conoscenza).
  • Una vasta gamma di importanti nuove funzionalità è stata unita alla linea principale. Questi includono operazioni senza tick, spazi dei nomi utente, virtualizzazione KVM e Xen per ARM, tracciamento del carico per entità nello scheduler, checkpoint / riavvio dello spazio utente, supporto dell'architettura ARM a 64 bit, filesystem orientato al flash F2FS, molti miglioramenti di rete mirati ai problemi di latenza e bufferbloat, due sottosistemi indipendenti che forniscono una cache veloce per i dispositivi di archiviazione a blocchi e molto altro.
  • Il battibecco di lunga data sulle funzionalità del kernel specifiche per Android è completamente scomparso in background. La tanto discussa funzione "wakelocks" è stata tranquillamente sostituita da una diversa soluzione mainline che viene utilizzata negli ultimi dispositivi Android.
  • L'uso di strumenti automatizzati per trovare bug nei kernel di sviluppo è aumentato significativamente durante questo periodo. Strumenti come il tester fuzz "trinity" e il sistema build-and-boot zero-day stanno trovando un gran numero di bug nei kernel pre-release, accorciando il ciclo di sviluppo e consentendo alla community di fornire release di qualità superiore.
  • I contributi delle industrie mobili e integrate continuano ad aumentare. Linaro, Samsung e TI, per esempio, hanno contribuito insieme al 4,4% delle modifiche nella versione precedente di questo documento; per il periodo fino al 3,10, hanno contribuito quasi all'11% di tutte le modifiche.
  • Il progetto del kernel ha partecipato per la prima volta al Programma di sensibilizzazione femminile, portando a 41 candidature per 7 posizioni disponibili. Durante il processo applicativo, 374 patch sono state inviate al kernel e oltre 1/3 di quelle patch sono state accettate nella versione 3.10 del kernel. Il processo di intern è ora in corso, ma i risultati non inizieranno fino alle future versioni del kernel.

Inoltre, quantificare ciò che sta accadendo al kernel non è molto difficile poiché abbiamo metriche al di là dei singoli commit . Ad esempio, sappiamo che il kernel 1.0.0 nel 1994 aveva 176 250 righe di codice; e sappiamo che un kernel contemporaneo come 3.10 ha 15 803 499 righe di codice. Molto di più. La frequenza di rilascio del kernel è aumentata (63 giorni per 3.10), così come il tasso di variazione (9 commit all'ora o più mentre parliamo). Per citare la Linux Foundation:

La capacità di sostenere questo tasso di cambiamento per anni non ha precedenti in nessun precedente progetto di software pubblico.

Ma tutto ciò porta poca comprensione a mio avviso. Pertanto, vorrei chiedere:

  1. L'evoluzione di questo quarto di secolo può essere sommariamente qualificata oltre l'aggiunta lineare di tutte le funzionalità elencate che compongono questo kernel nel tempo?
  2. E questo porta qualche idea su cosa sia il kernel Linux o dove sta andando? Dopo 25 anni di sviluppo si possono certamente trarre alcune conclusioni al riguardo?

Alla ricerca di una risposta astratta nei termini del laico che dice tutto senza ricorrere a dire tutto.


Il "supporto per un massimo di 229 ID processo" mi è saltato fuori, quindi ho cercato su Google questo e l'unico riferimento è, a quanto pare, la fonte originale di quel paragrafo . Pensavo che gli ID di processo avessero un intervallo (firmato) di 16 bit, cioè ~ 16.000, ma in realtà potrebbe essere molto più di questo . Non è certo qualche centinaio.
Riccioli d'oro

3
Questa domanda è troppo ampia perché sta cercando l'articolo di Wikipedia sull'argomento.
Gilles 'SO- smetti di essere malvagio' il

Hai intenzione di scrivere un articolo qui? Va bene, ma sarebbe di aiuto, saggio consiglio, se sei specifico su ciò che stai cercando di fare. Presumo che non sia solo per avere un buon riassunto pronto per la tua prossima serata al foro di abbeveraggio locale;)
goldilocks

1
Ricordo vagamente che almeno alcune persone hanno in programma di scrivere tesi su questo o simili. Ho il sospetto che troverai letteratura accademica sull'argomento ... Oltre a indicare le pubblicazioni esistenti, sembra che le tue domande richiederebbero mesi di ricerca per rispondere.
derobert,

Sulla tua domanda, forse devi parlarci dei termini del profano, al fine di ottenere una buona risposta qui. A parte questo, pubblicalo su lkml e ottieni il loro feedback sulla tua cronologia. Se ti sei perso qualcosa di importante, ti faranno sapere.
Bananguin,

Risposte:


11

Tu chiedi:

L'evoluzione di questo quarto di secolo può essere sommariamente qualificata oltre l'aggiunta lineare di tutte le funzionalità elencate che compongono questo kernel nel tempo? E questo porta qualche idea su cosa sia il kernel Linux o dove sta andando?

Dubito che tali domande abbiano risposte ben definite. Tuttavia, penso che non sia difficile comprendere le forze che stanno guidando lo sviluppo del kernel Linux.

Innanzitutto, i computer sono cose sempre più importanti. Chomsky afferma da qualche parte che sono centrali in qualsiasi economia industrializzata. Un computer è nulla senza un sistema operativo, il che rende così importanti i sistemi operativi.

Per un periodo negli anni '80 e '90, i sistemi operativi proprietari sono diventati ascendenti. Questo era in un certo senso uno stato di cose innaturale. Windows di Microsoft è stato per un po 'dominante, e in un certo senso lo è ancora, ma ha mantenuto la sua posizione sfruttando gli effetti di rete.

Con l'ascesa di Internet, è diventato possibile produrre un sistema operativo comunitario. Tuttavia, tale sistema operativo sarebbe utile solo se non potesse a sua volta essere proprietario. La famiglia di sistemi operativi BSD non rientrava in quella categoria. Da qui l'ascesa del kernel Linux come il cuore di un sistema operativo di comunità che non poteva essere proprietario.

Si noti che molti grandi fornitori di computer hanno alle spalle il kernel Linux. Perché? Gli individui si preoccupano della libertà. Le comunità hanno a cuore la libertà. Le aziende si preoccupano solo del profitto e delle strategie associate. Credo che molte società di computer abbiano fatto pace con l'idea di un sistema operativo "mercificato", una "parità di condizioni", se vuoi. Hanno esaminato l'esempio di Microsoft che guadagna molti soldi con la titolarità di un sistema operativo, ma non tutti possono essere Microsoft, e avere un singolo fornitore in una posizione tale è, a dir poco problematico, se non altro perché loro un ingiusto vantaggio dal punto di vista delle altre società.

Quindi, penso che dal momento che la maggior parte delle aziende non sono in grado di diventare Microsoft, e forse non vogliono esserlo, hanno deciso di supportare un sistema operativo "merce". Ancora una volta, condizioni di parità. Pertanto, tutti possono utilizzare questo sistema operativo per gli scopi che desiderano e nessuno nel gruppo è in vantaggio rispetto a chiunque altro. Un altro modo di vederlo è che avere qualcosa di semplice come un sistema operativo che diventa proprietario è una grave interferenza con i principi del libero mercato. In generale, le società non sono particolarmente favorevoli ai mercati liberi se possono essere dalla parte dei vincitori, ma se non possono esserlo, lo sono.

La maggior parte delle caratteristiche del kernel Linux può davvero essere dedotta da queste dinamiche. Ad esempio, la natura modulare e malleabile di un sistema operativo simile a Unix si adatta perfettamente a un sistema operativo progettato per essere "prodotto". Inoltre, in parte la natura in rapido movimento del progetto kernel è perché sta cercando di soddisfare tutte queste molte esigenze aziendali per essere ciò di cui hanno bisogno. Mentre molta attività è centrata sul supporto hardware / driver, c'è anche molta attività al di fuori di quell'area; costante sviluppo di nuove funzionalità e manutenzione e miglioramento di quelle esistenti.

Naturalmente, non dovremmo scartare i desideri della comunità, comunemente chiamata comunità del software libero, o talvolta FOSS (software libero e open source), di avere un sistema operativo gratuito che la gente comune possa usare, che non è controllato dalle società. Dopotutto, progetti come Debian e Fedora sono gestiti da volontari che credono in questi valori. Tuttavia, penso che anche il ruolo svolto dalle società non debba essere sottovalutato.


1
+1 Per aver sollevato il problema delle forze sociopolitiche che hanno reso Linux sconcertante e sconcertante nel mainstream. Penso che sia un aspetto molto significativo delle origini, che sebbene possa sembrare un "problema non tecnico", è in realtà una caratteristica distintiva delle mani sullo sviluppo del sistema operativo - vedi in particolare gli scritti di Eric S. Raymond - e una parte importante della dinamica della sua adozione da parte di una vasta gamma di produttori di hardware e come piattaforma storicamente predominante di Internet.
Riccioli d'oro,

^ Nota che molte persone hanno un kernel Linux nella loro casa e non lo sanno nemmeno per questo (il tuo router, la tua scatola DVR, ecc.)
goldilocks

Mi congratulo con la sua risposta per aver collocato il kernel in tempo e aver fatto appello alle dinamiche prevalenti: l'evoluzione dell'informatica; l'appello commerciale; le forze di mercato; la rete; libertà di elaborazione; licenza; e come tutto quanto sopra abbia un impatto sull'implementazione nel kernel, con una visione di Linux nel suo insieme. Devo leggere nella tua dichiarazione su uno "stato di cose innaturale" che potremmo non avere una prospettiva storica per valutare correttamente questo - e questo è importante. Sebbene fossi davvero concentrato sul kernel in sé, penserò di più ai tuoi punti e commenti sopra. Grazie!

1
@goldilocks: per non parlare dei tuoi telefoni Android.
Slebetman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.