logo

Kjernen i operativsystemet

Kjerne er sentral komponent i et operativsystem som styrer operasjoner av datamaskin og maskinvare. Den administrerer i utgangspunktet operasjoner av minne og CPU-tid. Det er kjernekomponenten i et operativsystem. Kjernen fungerer som en bro mellom applikasjoner og databehandling utført på maskinvarenivå ved hjelp av kommunikasjon mellom prosesser og systemanrop.

Kjernen lastes først inn i minnet når et operativsystem lastes og forblir i minnet til operativsystemet slås av igjen. Den er ansvarlig for ulike oppgaver som diskadministrasjon, oppgavebehandling og minneadministrasjon.



Kernel har en prosesstabell som holder styr på alle aktive prosesser
• Prosesstabell inneholder en per prosessregiontabell hvis oppføring peker på oppføringer i regiontabell.

Kjernen laster en kjørbar fil inn i minnet under 'exec'-systemanrop.

Den bestemmer hvilken prosess som skal allokeres til prosessoren som skal utføres, og hvilken prosess som skal holdes i hovedminnet for å utføres. Det fungerer i utgangspunktet som et grensesnitt mellom brukerapplikasjoner og maskinvare. Hovedmålet med kjernen er å administrere kommunikasjon mellom programvare, dvs. applikasjoner på brukernivå, og maskinvare, dvs. CPU og diskminne.



Mål for kjernen:

  • For å etablere kommunikasjon mellom brukernivå applikasjon og maskinvare.
  • For å bestemme tilstanden til innkommende prosesser.
  • For å kontrollere diskhåndtering.
  • For å kontrollere minnehåndtering.
  • For å kontrollere oppgavehåndtering.

Typer kjerne:

1. Monolittisk kjerne



Det er en av typene kjerne der alle operativsystemtjenester opererer i kjernerom. Den har avhengigheter mellom systemkomponenter. Den har enorme linjer med kode som er kompleks.

Eksempel:

Unix, Linux, Open VMS, XTS-400 etc.>

Fordel:
1. Effektivitet: Monolittiske kjerner er generelt raskere enn andre typer kjerner fordi de ikke trenger å bytte mellom bruker- og kjernemodus for hvert systemanrop, noe som kan forårsake overhead.

2. Tett integrasjon: Siden alle operativsystemtjenestene kjører i kjerneplass, kan de kommunisere mer effektivt med hverandre, noe som gjør det enklere å implementere komplekse funksjoner og optimaliseringer.

3. Enkelhet: Monolittiske kjerner er enklere å designe, implementere og feilsøke enn andre typer kjerner fordi de har en enhetlig struktur som gjør det enklere å administrere koden.

4. Lavere ventetid: Monolittiske kjerner har lavere ventetid enn andre typer kjerner fordi systemanrop og avbrudd kan håndteres direkte av kjernen.

Ulempe:

1. Stabilitetsproblemer: Monolittiske kjerner kan være mindre stabile enn andre typer kjerner fordi enhver feil eller sikkerhetssårbarhet i en kjernetjeneste kan påvirke hele systemet.

2. Sikkerhetsproblemer: Siden alle operativsystemtjenestene kjører i kjerneplass, kan enhver sikkerhetssårbarhet i en av tjenestene kompromittere hele systemet.

3. Vedlikeholdsproblemer: Monolittiske kjerner kan være vanskeligere å vedlikeholde enn andre typer kjerner fordi enhver endring i en av tjenestene kan påvirke hele systemet.

4. Begrenset modularitet: Monolittiske kjerner er mindre modulære enn andre typer kjerner fordi alle operativsystemtjenestene er tett integrert i kjernerommet. Dette gjør det vanskeligere å legge til eller fjerne funksjonalitet uten å påvirke hele systemet.
2. Mikrokjerne
Det er kjernetyper som har minimalistisk tilnærming. Den har virtuelt minne og trådplanlegging. Det er mer stabilt med færre tjenester i kjerneplass. Det setter hvile i brukerrommet.

Den brukes i små operativsystemer.

Eksempel:

arp - en kommando
Mach, L4, AmigaOS, Minix, K42 etc.>

Fordeler:

1. Pålitelighet: Mikrokjernearkitektur er designet for å være mer pålitelig enn monolittiske kjerner. Siden de fleste operativsystemtjenestene kjører utenfor kjerneområdet, vil ikke enhver feil eller sikkerhetssårbarhet i en tjeneste påvirke hele systemet.

2. Fleksibilitet : Mikrokjernearkitektur er mer fleksibel enn monolittiske kjerner fordi den lar forskjellige operativsystemtjenester legges til eller fjernes uten å påvirke hele systemet.

3. Modularitet: Mikrokjernearkitektur er mer modulær enn monolittiske kjerner fordi hver operativsystemtjeneste kjører uavhengig av de andre. Dette gjør det enklere å vedlikeholde og feilsøke systemet.

4. Portabilitet: Mikrokjernearkitektur er mer bærbar enn monolittiske kjerner fordi de fleste operativsystemtjenestene kjører utenfor kjerneområdet. Dette gjør det lettere å portere operativsystemet til forskjellige maskinvarearkitekturer.

Ulemper:

1. Ytelse: Mikrokjernearkitektur kan være tregere enn monolittiske kjerner fordi den krever flere kontekstvekslinger mellom brukerplass og kjerneplass.

2. Kompleksitet: Mikrokjernearkitektur kan være mer kompleks enn monolittiske kjerner fordi den krever mer kommunikasjons- og synkroniseringsmekanismer mellom de forskjellige operativsystemtjenestene.

3. Utviklingsvansker: Å utvikle operativsystemer basert på mikrokjernearkitektur kan være vanskeligere enn å utvikle monolitiske kjerner fordi det krever mer oppmerksomhet på detaljer i utformingen av kommunikasjons- og synkroniseringsmekanismene mellom de forskjellige tjenestene.

4. Høyere ressursbruk: Mikrokjernearkitektur kan bruke flere systemressurser, som minne og CPU, enn monolittiske kjerner fordi den krever mer kommunikasjons- og synkroniseringsmekanismer mellom de forskjellige operativsystemtjenestene.

3. Hybrid kjerne –
Det er kombinasjonen av både monolitisk kjerne og mikrokjerne. Den har hastighet og design av monolitisk kjerne og modularitet og stabilitet til mikrokjernen.

Eksempel:

Windows NT, Netware, BeOS etc.>

Fordeler:

1. Ytelse: Hybridkjerner kan tilby bedre ytelse enn mikrokjerner fordi de reduserer antallet kontekstsvitsjer som kreves mellom brukerplass og kjerneplass.

2. Pålitelighet: Hybridkjerner kan tilby bedre pålitelighet enn monolittiske kjerner fordi de isolerer drivere og andre kjernekomponenter i separate beskyttelsesdomener.

3. Fleksibilitet: Hybridkjerner kan tilby bedre fleksibilitet enn monolittiske kjerner fordi de lar forskjellige operativsystemtjenester legges til eller fjernes uten å påvirke hele systemet.

4. Kompatibilitet: Hybridkjerner kan være mer kompatible enn mikrokjerner fordi de kan støtte et bredere spekter av enhetsdrivere.

byer i australia

Ulemper:

1. Kompleksitet: Hybridkjerner kan være mer komplekse enn monolittiske kjerner fordi de inkluderer både monolittiske og mikrokjernekomponenter, noe som kan gjøre design og implementering vanskeligere.

2. Sikkerhet: Hybridkjerner kan være mindre sikre enn mikrokjerner fordi de har en større angrepsoverflate på grunn av inkludering av monolittiske komponenter.

3. Vedlikehold: Hybridkjerner kan være vanskeligere å vedlikeholde enn mikrokjerner fordi de har en mer kompleks design og implementering.

4. Ressursbruk: Hybridkjerner kan bruke flere systemressurser enn mikrokjerner fordi de inkluderer både monolittiske og mikrokjernekomponenter.

4. Exo Kernel –
Det er typen kjerne som følger ende-til-ende-prinsippet. Den har færrest mulig maskinvareabstraksjoner. Den tildeler fysiske ressurser til applikasjoner.

Eksempel:

Nemesis, ExOS etc.>

Fordeler:

1. Fleksibilitet: Exokerneler tilbyr det høyeste nivået av fleksibilitet, slik at utviklere kan tilpasse og optimere operativsystemet for deres spesifikke applikasjonsbehov.

2. Ytelse: Exokerneler er designet for å gi bedre ytelse enn tradisjonelle kjerner fordi de eliminerer unødvendige abstraksjoner og lar applikasjoner få direkte tilgang til maskinvareressurser.

3. Sikkerhet: Exokerneler gir bedre sikkerhet enn tradisjonelle kjerner fordi de gir mulighet for finmasket kontroll over allokeringen av systemressurser, som minne og CPU-tid.

4. Modularitet: Exokerneler er svært modulære, noe som gjør det enkelt å legge til eller fjerne operativsystemtjenester.

Ulemper:

1. Kompleksitet: Eksokerneler kan være mer komplekse å utvikle enn tradisjonelle kjerner fordi de krever større oppmerksomhet på detaljer og nøye vurdering av systemressursallokering.

2. Utviklingsvanskeligheter: Å utvikle applikasjoner for eksokerneler kan være vanskeligere enn for tradisjonelle kjerner fordi applikasjoner må skrives for å få direkte tilgang til maskinvareressurser.

3. Begrenset støtte: Eksokerneler er fortsatt en ny teknologi og har kanskje ikke samme nivå av støtte og ressurser som tradisjonelle kjerner.

4. Feilsøkingsproblemer: Feilsøking av applikasjoner og operativsystemtjenester på eksokerneler kan være vanskeligere enn på tradisjonelle kjerner på grunn av direkte tilgang til maskinvareressurser.

5. Nano-kjerne –
Det er typen kjerne som tilbyr maskinvareabstraksjon, men uten systemtjenester. Micro Kernel har heller ikke systemtjenester, derfor har Micro Kernel og Nano Kernel blitt analoge.

Eksempel:

EROS etc.>

Fordeler:

1. Liten størrelse: Nanokjerner er designet for å være ekstremt små, og gir kun de mest essensielle funksjonene som trengs for å kjøre systemet. Dette kan gjøre dem mer effektive og raskere enn andre kjernetyper.

2. Høy modularitet: Nanokjerner er svært modulære, noe som gjør det enkelt å legge til eller fjerne operativsystemtjenester, noe som gjør dem mer fleksible og tilpassbare enn tradisjonelle monolittiske kjerner.

3. Sikkerhet: Nanokjerner gir bedre sikkerhet enn tradisjonelle kjerner fordi de har en mindre angrepsflate og redusert risiko for feil eller bugs i koden.

groovy dataspråk

4. Portabilitet: Nanokjerner er designet for å være svært bærbare, slik at de kan kjøre på et bredt spekter av maskinvarearkitekturer.

Ulemper:

1. Begrenset funksjonalitet: Nanokjerner gir bare de mest essensielle funksjonene, noe som gjør dem uegnet for mer komplekse applikasjoner som krever et bredere spekter av tjenester.

2. Kompleksitet: Fordi nanokjerner bare gir essensiell funksjonalitet, kan de være mer komplekse å utvikle og vedlikeholde enn andre kjernetyper.

3. Ytelse: Mens nanokjerner er designet for effektivitet, kan det hende at deres minimalistiske tilnærming ikke kan gi samme ytelsesnivå som andre kjernetyper i visse situasjoner.

4. Kompatibilitet: På grunn av deres minimalistiske design, kan det hende at nanokjerner ikke er kompatible med alle maskinvare- og programvarekonfigurasjoner, noe som begrenser deres praktiske bruk i visse sammenhenger.