Il design del kernel Linux è obsoleto?

Il design del kernel Linux è obsoleto?

Linux ha fatto passi da gigante nel corso degli anni, avanzando ben oltre il punto in cui era quando è iniziato. Ma un redattore recentemente si è chiesto se Linux soffrisse di un design del kernel obsoleto. Ha posto la sua domanda nel subreddit di Linux e ha ottenuto alcune risposte interessanti.

Ronis_BR ha iniziato il thread con questi commenti:

Sono un utente Linux dal 2004. So molto su come usare il sistema, ma non capisco molto di cosa c'è sotto il cofano del kernel. In realtà, la mia conoscenza si ferma su come compilare il mio kernel.

Tuttavia, vorrei chiedere agli informatici qui quanto è obsoleto il kernel Linux rispetto al suo design? Voglio dire, è stato avviato nel 1992 e alcune caratteristiche non sono cambiate. D'altra parte, immagino che lo stato dell'arte della progettazione del kernel del sistema operativo (se esiste ...) dovrebbe essere avanzato molto.

È possibile affermare in quali punti il ​​design del kernel Linux è più avanzato rispetto al design dei kernel Windows, macOS, FreeBSD? (Si noti che intendo design, non qual è il migliore. Ad esempio, HURD ha un ottimo design, ma è abbastanza semplice dire che Linux è molto più avanzato oggi).

Altro su Reddit

I suoi colleghi redattori di Linux hanno risposto con le loro opinioni sulla progettazione del kernel:

ExoticMandibles : "" Non aggiornato "? No. Il design del kernel Linux è ben informato riguardo al design del kernel moderno. È solo che ci sono scelte da fare e Linux è andato con quella tradizionale.

La tensione nella progettazione del kernel è tra "sicurezza / stabilità" e "prestazioni". I microkernel promuovono la sicurezza a scapito delle prestazioni. Se hai un microkernel minuscolo minuscolo, in cui il kernel facilita la comunicazione con l'hardware, la gestione della memoria, l'IPC e poco altro, avrà una superficie API relativamente piccola che lo rende difficile da attaccare. E se si dispone di un driver del file system / driver grafico / ecc. Difettoso, il driver può bloccarsi senza smontare il kernel e probabilmente può essere riavviato senza problemi. Stabilità superiore! Sicurezza superiore! Tutte cose buone.

Lo svantaggio di questo approccio è l'eterno, inevitabile sovraccarico di tutto quel IPC. Se il tuo programma vuole caricare dati da un file, deve chiedere al driver del filesystem, il che significa che IPC a quel processo un cambio di contesto del processo e due transizioni ad anello. Quindi il driver del filesystem chiede al kernel di parlare con l'hardware, il che significa due transizioni ad anello. Quindi il driver del file system invia la sua risposta, il che significa più transizioni IPC a due anelli e un altro cambio di contesto. Overhead totale: due cambi di contesto, due chiamate IPC e sei transizioni di squillo. Molto costoso!

Un kernel monolitico ripiega tutti i driver di dispositivo nel kernel. Quindi un driver grafico difettoso può disattivare il kernel, o se ha un buco di sicurezza potrebbe essere sfruttato per compromettere il sistema. Ma! Se il tuo programma ha bisogno di caricare qualcosa dal disco, chiama il kernel, che esegue una transizione ad anello, parla con l'hardware, calcola il risultato e restituisce il risultato, facendo un'altra transizione ad anello. Overhead totale: due transizioni ad anello. Più economico! Più veloce!

In poche parole, l'approccio microkernel dice "Rinunciamo alle prestazioni per una sicurezza e una stabilità superiori"; l'approccio monolitico del kernel dice "manteniamo le prestazioni e risolviamo i problemi di sicurezza e stabilità non appena si presentano". Il mondo sembra accettare se non preferire questo approccio.

ps Windows NT non è mai stato un microkernel puro, ma lo è stato per molto tempo. NT 3.x aveva driver grafici come processo utente e onestamente NT 3.x era super stabile. NT 4.0 ha spostato i driver grafici nel kernel; era meno stabile ma molto più performante. Questa è stata una mossa generalmente popolare. "

F22Rapture : “Un vantaggio pratico dell'approccio kernel monolitico applicato a Linux è che spinge i fornitori di hardware a inserire i loro driver nel kernel, perché pochi fornitori di hardware vogliono tenere il passo con le modifiche dell'interfaccia del kernel da soli. Poiché la maggior parte dei driver è nell'albero, le interfacce possono essere continuamente modificate senza la necessità di supportare le API legacy. Il kernel garantisce solo che non interromperà lo spazio utente, non lo spazio kernel (driver), e c'è un sacco di abbandono quando si tratta di quelle interfacce di driver che spingono i fornitori a fornire i driver principali. Nvidia è uno dei pochi fornitori a cui riesco a pensare che abbia le risorse per mantenere il proprio driver fuori dall'albero basato interamente su componenti proprietari.

Ho il sospetto che se i driver fossero le loro piccole isole separate da interfacce stabili, potremmo non avere tante aziende disposte ad aprire il loro codice ".

Mallardtheduck : "In questo contesto," monolitico "non si riferisce ad avere (quasi) tutto il kernel e il codice dei driver in un unico albero sorgente, si riferisce al fatto che l'intero kernel e i driver vengono eseguiti come una singola" attività "in un spazio di indirizzi singolo.

Questo è diverso da un "microkernel" in cui i vari elementi e driver del kernel vengono eseguiti come attività separate con spazi di indirizzi separati.

Come accennato, il kernel di Windows è fondamentalmente monolitico, ma i driver sono ancora sviluppati separatamente. macOS utilizza una sorta di kernel ibrido che utilizza un microkernel al suo interno ma ha ancora quasi tutto in un unico "compito", nonostante abbia quasi tutti i driver sviluppati / forniti da Apple. "

Slabity : “La gente lo discute da prima del 2004. Il dibattito Tanenbaum-Torvalds nel 1999 1992 è un grande esempio degli argomenti tra microkernel e progetti di kernel monolitici.

Personalmente faccio parte del campo del microkernel. Sono più puliti, più sicuri e più portatili. A questo proposito, il design del kernel era obsoleto nel momento in cui è stato creato.

… Linux ha superato molti dei problemi che derivano dai progetti monolitici del kernel. È diventato modulare, la sua rigida politica in materia di codice lo ha mantenuto relativamente sicuro e non credo che nessuno sosterrebbe la sua portabilità ".

TEchnicolourSocks : “C'è solo un modo corretto di progettare il kernel ed è il modo di TempleOS.

Scritto in HolyC, non in rete, solo ring-0. Come Dio voleva. "

Scandalousmambo : “La natura dello sviluppo di un sistema complesso come il kernel Linux significa che sarà sempre" obsoleto "secondo le persone che erano sui seggioloni quando è stato progettato per la prima volta.

Questo sistema operativo rappresenta probabilmente decine di milioni di ore di lavoro.

Può essere sostituito? Sicuro. Sara? No."

Grumbel : “In termini puramente pratici non fa più molta differenza. Nel corso della giornata, HURD era piuttosto simpatico con i suoi file system nello spazio utente e simili. Ma da allora Linux ha ottenuto la maggior parte di queste funzionalità. Se vuoi scrivere un file system, un driver USB o un dispositivo di input nello spazio utente, puoi, senza bisogno di hackerare il kernel. Ora puoi persino applicare la patch al kernel in fase di esecuzione, se lo desideri.

La filosofia di Linux di non scrivere driver difettosi che mandino in crash il kernel in primo luogo, invece di renderlo super robusto contro driver di merda sembra funzionare abbastanza bene anche nel mondo reale. Probabilmente dobbiamo ringraziare l'USB per questo, poiché l'hardware che è auto descrittivo ha rimosso la necessità di scrivere un nuovo driver per ogni nuovo gadget che si collega al PC.

Quindi l'intero dibattito sul design è ora ancora più accademico di quanto non lo fosse in passato, poiché non sono rimaste molte funzionalità che si otterrebbero solo con le modifiche al design e che non si potrebbero implementare in un kernel monolitico ".

KugelKurt : “Sebbene gran parte della discussione qui riguardi i microkernel rispetto al kernel monolitico, la ricerca più recente è stata dedicata ai linguaggi di programmazione.

Se avvii un kernel completamente nuovo oggi, è probabile che non sarebbe scritto nei progetti Singularity e Midori di C. Microsoft hanno esplorato la fattibilità dei kernel di codice gestiti C #.

Il sistema operativo non di ricerca più conosciuto senza un kernel C è probabilmente Haiku, scritto in C ++. "

OmniaVincitVeritas : “Era obsoleto quando è stato creato per la prima volta ed è ancora così. Ma, come sappiamo, il progresso tecnico non funziona quasi mai in modo che la soluzione tecnicamente / scientificamente superiore raggiunga la cima nel breve termine; tante altre cose influenzano anche il successo.

Se lo facesse, eseguiremmo microkernel sicuri al 100% scritti in Haskell. Le società di sicurezza non esisterebbero. Avrei un ibrido unicorno / pony che funziona alla luce del sole. "

Daemonpenguin : “Ci sono alcuni concetti che potrebbero, in teoria, fornire una migliore progettazione del kernel. Esiste un kernel Rust, per esempio, che potrebbe spostare un numero di vettori di attacco alla memoria. I microkernel hanno, in teoria, alcune scelte di design molto buone che li rendono portatili, affidabili e potenzialmente auto correttivi.

Tuttavia, il problema è che sono più teoria che pratica. Non importa quanto sia buona una teoria, le persone quasi sempre prenderanno ciò che è pratico (cioè lavorare ora) su un progetto migliore. Il kernel Linux ha così tanto supporto hardware e così tante aziende che finanziano lo sviluppo che è improbabile che altri kernel (indipendentemente dalle loro fantastiche scelte di progettazione) possano recuperare.

MINIX, ad esempio, ha un design solido e alcune caratteristiche fantastiche, ma ha pochissimo supporto hardware, quindi quasi nessuno sviluppa per la piattaforma. "

Altro su Reddit

DistroWatch recensioni 4MLinux 21.0

Linux offre molti diversi tipi di distribuzioni. Alcuni sono forniti in bundle con più software e altri con meno. 4MLinux è rivolto a coloro che preferiscono una distribuzione leggera. Uno scrittore di DistroWatch ha una recensione completa di 4MLinux 21.0.

Joshua Allen Holm riporta per DistroWatch:

4MLinux è una distribuzione Linux leggera progettata per fornire quattro aree chiave di funzionalità. Con il solo software disponibile su ISO, 4MLinux fornisce un'ampia varietà di applicazioni per eseguire la manutenzione del sistema; riproduzione di molti tipi di file multimediali; offrire un miniserver per fornire un server web di base; e ha una discreta selezione di giochi, che la distribuzione colloca in una categoria che chiama mistero. Queste quattro funzioni forniscono la base del nome della distribuzione. Quattro cose che iniziano con "M", quindi 4MLinux.

L'avvio di 4MLinux da un'unità flash è un processo rapido. Sono stato registrato rapidamente e automaticamente come root e ho potuto iniziare a lavorare nell'ambiente desktop. Per il desktop, 4MLinux utilizza JVM combinato con un launcher Wbar nella parte superiore dello schermo che fornisce collegamenti ai principali programmi. Inoltre c'è IDesk per gestire il desktop e Conky per fornire informazioni di base sullo stato del sistema. Wbar, IDesk e Conky possono essere tutti disattivati, ma il sistema è già molto leggero quando sono nel loro stato predefinito, abilitato.

Fuori dagli schemi, 4MLinux viene fornito con una discreta selezione di software. Nel menu dell'applicazione JVM ci sono scorciatoie per un terminale, applicazioni Internet, manutenzione, multimedia, miniserver e mistero. Il sottomenu Internet contiene Collegamenti per la navigazione web, HexChat per IRC, Sylpheed per e-mail, Trasmissione per Bittorrent, uGet per il download, un'utilità per condividere file tramite Bluetooth, GNOME PPP per connessioni Internet dial-up e un'opzione per attiva e disattiva Tor.

4MLinux fornisce molto software in un piccolo pacchetto. Per la manutenzione del sistema è una buona scelta avere a portata di mano. Per multimedia, miniserver e mystery fornisce un'utile selezione di software, ma ci sono altre distribuzioni che si concentrano solo su uno di questi compiti e lo fanno meglio essendo più concentrati. Questo non vuol dire che 4MLinux sia cattivo, ma cerca di fare troppe cose diverse contemporaneamente. Ad essere completamente onesto, penso che 4MLinux sarebbe un'offerta più forte se fosse 3MLinux e abbandonasse completamente l'aspetto misterioso. Forse includere solo il solitario o qualche altro gioco leggero da avere come diversivo mentre le attività di manutenzione vengono eseguite e utilizzare lo spazio liberato rimuovendo i giochi per includere alcune delle applicazioni di estensione opzionali per impostazione predefinita.

Altro su DistroWatch

LinuxInsider recensisce Ultimate Edition 5.4

Ultimate Edition, d'altra parte, è all'estremità opposta dello spettro di 4MLinux. UE è sicuramente una delizia per i massimalisti poiché è pieno di software. Uno scrittore di LinuxInsider ha una recensione completa di Ultimate Edition 5.4.

Jack M. Germain riporta per LinuxInsider:

Non ero entusiasta delle mie prime esperienze pratiche per familiarizzare con Ultimate Edition 5.4. Ho trovato un fastidioso elenco di cose sbagliate.

Con molti anni di revisione delle distribuzioni Linux al mio attivo, ho notato una solida connessione tra le prime impressioni del sito Web di una distribuzione e le impressioni durature delle prestazioni di una distribuzione. Diciamo solo che la condizione disorganizzata del sito Web, in questo caso, continua nell'ultima versione di questa distribuzione.

Un piccolo esempio: non ho trovato alcun elenco dei requisiti minimi di installazione per l'hardware. Ciò si è rivelato frustrante. Ho perso tempo cercando di caricare Ultimate Linux su diversi computer obsoleti. Alcuni dei problemi erano legati alla memoria e allo spazio di archiviazione. Altri problemi riguardavano le inadeguatezze della scheda grafica.

Ultimate Edition si rivolge ai nuovi arrivati ​​Linux, ma coloro che lo provano potrebbero aver bisogno di un po 'più di familiarità con Linux per aggirare alcuni dei problemi nell'esecuzione di questo sistema operativo Linux non così definitivo.

Altro su LinuxInsider

Ti sei perso una retata? Controlla la home page di Eye On Open per rimanere aggiornato sulle ultime notizie su open source e Linux .