Programmering

Er Linux-kerne-design forældet?

Er Linux-kerne-design forældet?

Linux har gjort store fremskridt i årenes løb og steg langt ud over, hvor det var, da det startede. Men en redditor spekulerede for nylig på, om Linux led af forældet kernedesign. Han stillede sit spørgsmål i Linux subreddit og fik nogle interessante svar.

Ronis_BR startede tråden med disse kommentarer:

Jeg har været Linux-bruger siden 2004. Jeg ved meget om, hvordan man bruger systemet, men jeg forstår ikke for meget om, hvad der er under kernen. Faktisk stopper min viden i, hvordan jeg kompilerer min egen kerne.

Jeg vil dog gerne bede computervidenskabere her om, hvor forældet Linux-kernen er med hensyn til dens design? Jeg mener, det blev startet i 1992, og nogle egenskaber ændrede sig ikke. På den anden side antager jeg, at den nyeste version af OS-kernedesign (hvis dette findes ...) burde have avanceret meget.

Er det muligt at angive i hvilke punkter designet af Linux-kernen er mere avanceret sammenlignet med designet af Windows, macOS, FreeBSD-kerner? (Bemærk, jeg mener design, ikke hvilken der er bedre. For eksempel har HURD et godt design, men det er ret ligetil at sige, at Linux er meget mere avanceret i dag).

Mere på Reddit

Hans andre Linux-redditors svarede med deres tanker om kernedesign:

ExoticMandibles: ""Forældet"? Nej. Designet af Linux-kernen er velinformeret om moderne kernedesign. Det er bare, at der er valg, der skal træffes, og Linux fulgte med den traditionelle.

Spændingen i kernedesign er mellem "sikkerhed / stabilitet" og "ydeevne". Microkernels fremmer sikkerhed på bekostning af ydeevne. Hvis du har en lillebitte minimal mikrokernel, hvor kernen letter at tale med hardware, hukommelsesstyring, IPC og lidt andet, vil den have en relativt lille API-overflade, der gør det svært at angribe. Og hvis du har en buggy filsystemdriver / grafikdriver / etc, kan driveren gå ned uden at tage kernen ned og kan sandsynligvis genstartes harmløst. Overlegen stabilitet! Overlegen sikkerhed! Alle gode ting.

Ulempen ved denne tilgang er den evige, uundgåelige overhead af alt det IPC. Hvis dit program ønsker at indlæse data fra en fil, skal det spørge filsystemdriveren, hvilket betyder IPC til denne proces en proceskontekstskift og to ringovergange. Derefter beder filsystemdriveren kernen om at tale med hardwaren, hvilket betyder to ringovergange. Derefter sender filsystemdriveren sit svar, hvilket betyder mere IPC to ringovergange og en anden kontekstskift. Samlet overhead: to kontekstafbrydere, to IPC-opkald og seks ringovergange. Meget dyr!

En monolitisk kerne folder alle enhedsdrivere ind i kernen. Så en buggy grafikdriver kan fjerne kernen, eller hvis den har et sikkerhedshul, kan den muligvis udnyttes til at kompromittere systemet. Men! Hvis dit program har brug for at indlæse noget fra disken, kalder det kernen, som udfører en ringovergang, taler til hardwaren, beregner resultatet og returnerer resultatet og foretager en ny ringovergang. Samlet overhead: to ringovergange. Meget billigere! Meget hurtigere!

I en nøddeskal siger mikrokernel tilgangen "Lad os opgive ydeevne for overlegen sikkerhed og stabilitet"; den monolitiske kernetilgang siger "lad os holde ydeevnen og bare løse sikkerheds- og stabilitetsproblemer, når de dukker op." Verden ser ud til at acceptere, hvis ikke den foretrækker denne tilgang.

p.s. Windows NT var aldrig en ren mikrokernel, men det var mikrokernel-ish i lang tid. NT 3.x havde grafikdrivere som en brugerproces, og ærligt talt var NT 3.x superstabil. NT 4.0 flyttede grafikdrivere ind i kernen; det var mindre stabilt, men meget mere performant. Dette var et generelt populært træk. ”

F22Rapture: “En praktisk fordel for den monolitiske kernetilgang, som det gælder for Linux, er, at det skubber hardwareleverandører til at få deres drivere ind i kernen, fordi få hardwareleverandører ønsker at holde trit med ændringer i kernegrænsefladen alene. Da alle størstedelen af ​​drivere er in-tree, kan grænsefladerne kontinuerligt refaktureres uden behov for understøttelse af ældre API'er. Kernen garanterer kun, at de ikke bryder brugerområdet, ikke kernelspace (drivere), og der er meget churn, når det kommer til disse drivergrænseflader, der skubber leverandører til at hovedlinje deres drivere. Nvidia er en af ​​de få leverandører, jeg kan tænke på, der har ressourcerne til at opretholde deres egen driver uden for træet, der udelukkende er baseret på proprietære komponenter.

Jeg formoder, at hvis chauffører var deres egne små øer adskilt af stabile grænseflader, havde vi måske ikke så mange virksomheder, der var villige til at åbne deres kode. ”

Gråand: "I denne sammenhæng henviser" monolitisk "ikke til at have (næsten) al kerne og driverkode i et enkelt kildetræ, det henviser til det faktum, at hele kernen og driverne kører som en enkelt" opgave "i en enkelt adresse plads.

Dette adskiller sig fra en "mikrokernel", hvor de forskellige kerneelementer og drivere kører som separate opgaver med separate adresserum.

Som nævnt er Windows-kernen dybest set monolitisk, men drivere udvikles stadig separat. macOS bruger en slags hybridkerne, der bruger en mikrokernel i kernen, men stadig har næsten alt i en enkelt "opgave" på trods af at næsten alle drivere er udviklet / leveret af Apple. ”

Slabity: ”Folk har argumenteret for dette siden før 2004. Tanenbaum-Torvalds-debatten i 1999 1992 er et stort eksempel på argumenterne mellem mikrokernel og monolitisk kernedesign.

Jeg er personligt en del af microkernel-lejren. De er renere, sikrere og mere bærbare. I denne henseende var kernens design forældet i det øjeblik det blev oprettet.

... Linux har overvundet mange af de problemer, der kommer med monolitiske kernedesign. Det er blevet modulært, dets strenge kodepolitik har holdt det relativt sikkert, og jeg tror ikke, nogen vil argumentere for, hvor bærbar det er. ”

TEchnicolourSocks: “Der er kun en korrekt måde at udforme kerne på, og det er den måde, TempleOS har på.

Skrevet i HolyC, ikke-netværk, kun ring-0. Som Gud havde til hensigt. ”

Scandalousmambo: “Naturen ved at udvikle et så komplekst system som Linux-kernen betyder, at det altid vil være" forældet "ifølge folk, der sad i høje stole, da det først blev designet.

Dette operativsystem repræsenterer sandsynligvis titusindvis af arbejdstimer på mandlige timer.

Kan det udskiftes? Jo da. Vil det? Ingen."

Grumbel: ”Rent rent praktisk betyder det ikke meget forskel mere. Tilbage på dagen var HURD lidt sej med sine userpace-filsystemer og sådan. Men Linux har siden da fået det meste af denne funktionalitet. Hvis du vil skrive et filsystem, USB-driver eller inputenhed i brugerområdet, kan du ikke behøve at hacke kernen. Du kan nu endda lappe kernen ved kørsel, hvis du virkelig vil.

Linux-filosofien om bare ikke at skrive buggy-drivere, der styrter kernen i første omgang, i stedet for at gøre den super robust mod lortede drivere synes også at fungere ret godt i den virkelige verden. Vi er sandsynligvis nødt til at takke USB for det, da hardware, der er selvbeskrivende, fjernede behovet for at skrive en ny driver til hver nye gadget, du tilslutter pc'en.

Så hele designdebatten er nu endnu mere akademisk end den plejede at være, da der bare ikke er en hel masse funktioner tilbage, som du ville få ved designændringer alene, og som du ikke kunne implementere i en monolitisk kerne. ”

KugelKurt: “Selvom meget af diskussionen her handler om mikrokerner vs monolitisk kerne, gik nyere forskning i programmeringssprog.

Hvis du startede en helt ny kerne i dag, er chancerne for, at den ikke ville blive skrevet i C. Microsofts Singularity- og Midori-projekter udforskede muligheden for C # / administrerede kodekerner.

Det mest kendte ikke-forsknings-OS uden en C-kerne er sandsynligvis Haiku, som er skrevet i C ++. ”

OmniaVincitVeritas: ”Det var forældet, da det oprindeligt blev oprettet, og det er det stadig. Men som vi ved, fungerer teknisk fremskridt næsten aldrig, så den teknisk / videnskabeligt overlegne løsning stiger til toppen på kort sigt; så mange andre ting påvirker også succes.

Hvis det gjorde det, kørte vi 100% sikre mikrokerner skrevet i Haskell. Sikkerhedsfirmaer ville ikke eksistere. Jeg ville have en enhjørning / pony hybrid, der kører på sollys. ”

Daemonpenguin: “Der er nogle begreber, som i teorien kan give bedre kernedesign. Der er f.eks. En Rust-kerne, der kan sidestegge et antal hukommelsesangrebsvektorer. Microkernels har i teorien nogle meget gode designvalg, der gør dem bærbare, pålidelige og potentielt selvkorrektion.

Problemet er dog, at de er mere teori end praksis. Uanset hvor god en teori er, vil folk næsten altid tage det, der er praktisk (dvs. arbejde nu) frem for et bedre design. Linux-kernen har så meget hardwaresupport, og så mange virksomheder, der finansierer udvikling, er det usandsynligt, at andre kerner (uanset deres seje designvalg) vil indhente.

MINIX har for eksempel et solidt design og nogle fantastiske funktioner, men har meget lidt hardwaresupport, så næsten ingen udvikler sig til platformen. ”

Mere på Reddit

DistroWatch gennemgår 4MLinux 21.0

Linux tilbyder mange forskellige slags distributioner. Nogle er pakket med mere software og andre med mindre. 4MLinux er rettet mod dem, der foretrækker en letvægtsfordeling. En forfatter hos DistroWatch har en fuld gennemgang af 4MLinux 21.0.

Joshua Allen Holm rapporterer for DistroWatch:

4MLinux er en let Linux-distribution designet til at give fire nøgleområder for funktionalitet. Med kun softwaren tilgængelig på ISO leverer 4MLinux en bred vifte af applikationer til udførelse af systemvedligeholdelse; afspilning af mange typer multimediefiler; at tilbyde en miniserver til at levere en grundlæggende webserver; og det har et anstændigt udvalg af spil, som distributionen placerer i en kategori, det kalder mysterium. Disse fire funktioner danner basis for distributionens navn. Fire ting, der starter med "M", så 4MLinux.

At starte 4MLinux fra et flashdrev er en hurtig proces. Jeg blev hurtigt og automatisk logget ind som root og kunne begynde at arbejde i skrivebordsmiljøet. Til skrivebordet bruger 4MLinux JVM kombineret med en Wbar-launcher øverst på skærmen, der giver genveje til større programmer. Derudover er der IDesk til at styre skrivebordet og Conky til at give grundlæggende systemstatusoplysninger. Wbar, IDesk og Conky kan alle slukkes, men systemet er allerede meget let, når de er i deres standard aktiverede tilstand.

Uden for boksen kommer 4MLinux med et anstændigt udvalg af software. I JVM-applikationsmenuen er der genveje til en terminal, internetapplikationer, vedligeholdelse, multimedie, miniserver og mysterium. Internet-undermenuen indeholder links til browsing på internettet, HexChat til IRC, Sylpheed til e-mail, transmission til Bittorrent, uGet til download, et hjælpeprogram til at dele filer via Bluetooth, GNOME PPP til opkaldsforbindelser til internettet og en mulighed for slå Tor til og fra.

4MLinux leverer meget software i en lille pakke. Til systemvedligeholdelse er det et godt valg at have ved hånden. Til multimedie, miniserver og mysterium giver det et nyttigt udvalg af software, men der er andre distributioner, der kun fokuserer på en af ​​disse opgaver og gør det bedre ved at være mere fokuseret. Det betyder ikke, at 4MLinux er dårlig, men det forsøger at gøre for mange forskellige ting på én gang. For at være helt ærlig tror jeg, at 4MLinux ville være et stærkere tilbud, hvis det var 3MLinux og helt droppede mysteriumsaspektet. Måske kun med kabale eller et andet let spil at have som en omdirigering, mens vedligeholdelsesopgaver kører, og brug pladsen frigjort ved at fjerne spillene til at inkludere nogle af de valgfri udvidelsesapplikationer som standard.

Mere på DistroWatch

LinuxInsider gennemgår Ultimate Edition 5.4

Ultimate Edition er derimod i den modsatte ende af spektret fra 4MLinux. UE er bestemt en maksimalistisk glæde, da den er fyldt med software. En forfatter hos LinuxInsider har en fuld gennemgang af Ultimate Edition 5.4.

Jack M. Germain rapporterer for LinuxInsider:

Jeg var ikke begejstret for mine første praktiske erfaringer med at blive bekendt med Ultimate Edition 5.4. Jeg fandt en irriterende liste over ting, der var galt med det.

Med mange års gennemgang af Linux-distroer under mit bælte, har jeg bemærket en solid forbindelse mellem førstehåndsindtryk af en distros websted og varige indtryk af en distros præstation. Lad os bare sige, at websteds uorganiserede tilstand i dette tilfælde gennemføres i denne distros seneste udgivelse.

Et lille eksempel: Jeg fandt ingen liste over de mindste installationskrav til hardware. Det viste sig at være frustrerende. Jeg spildte tid på at prøve at indlæse Ultimate Linux på flere aldrende computere. Nogle af problemerne var relateret til hukommelse og lagerplads. Andre problemer involverede utilstrækkelige grafikkort.

Ultimate Edition retter sig mod Linux-nybegyndere, men de, der prøver det, har muligvis brug for lidt mere fortrolighed med Linux for at komme omkring nogle af problemerne i at køre dette ikke-så-ultimative Linux OS.

Mere på LinuxInsider

Gik du glip af en sammenfatning? Tjek Eye On Open-startsiden for at blive fanget med de seneste nyheder om open source og Linux.