[go: up one dir, main page]

Hoppa till innehållet

Mikrokärna

Från Wikipedia

En mikrokärna är en kärna i ett operativsystem som försöker vara så liten som möjligt. Den koncentrerar sig på att stödja processer, i form av grundläggande resurshantering för minne, schemaläggning av processortid och kommunikation mellan processer. All annan funktionalitet, exempelvis filsystem, drivrutiner för hårdvara och fönsterhantering förväntas ligga som separata användarprocesser. Tanken är då att en process kan krascha eller fungera onormalt utan att systemet som helhet upphör att fungera.

Akademiskt är Minix i olika versioner ett känt exempel på mikrokärnor. Mer praktiskt populärt är QNX. Det finns även system som logiskt är uppdelade i flera moduler, med en snävt definierad central kärna, men där fler moduler än denna kärna körs i samma adressutrymme. Detta kallas ibland hybridkärna, med Windows NT eller MacOS som exempel.

Ett problem som ofta framhålls med rena mikrokärnor är att mycket tid ägnas åt att kopiera innehåll i minnet mellan olika adressutrymmen, alternativt en virtuell växling av minne genom processorns minneshantering. Detta åtföljs av en växling av exekveringsmiljö, en s.k. context switch, vilket kan göra populära naiva sätt att lösa vissa problem (som att läsa en rad i taget från en fil) synnerligen långsamma, om man inte lägger till en databuffert i klientprocessen. Vissa system med drivrutiner utanför kärnan löser detta genom att drivrutinen ligger i alla processers adressutrymmen och själv kan avgöra när och hur ett anrop skall skickas vidare. Det finns också mer tekniska lösningar för hur serverprocesser (för till exempel filsystem) skall kunna "haka på" vissa andra processer.

Exempel på operativsystem som bygger på användandet av en mikrokärna.