Den Wed, 25 Apr 2001 08:47:15 +0200 skrev NJ:
>Takker til Kent og Frank for gode svar vedr. memory mapping!
>
>Har lige et tillægsspørgsmål vedr. kernen:
>
>Linux operativsystemet anvendes jo både til workstations,
>fil/web/database-servere og til indlejrede systemer.
>
>Kan man sige at det er nøjagtig den samme kerne der anvendes - eller findes
>der specielle kerner til specielle formål?
>
>På forhånd tak for evt. andre gode svar
Til indlejrede systemer er det ofte specielle kerner der anvendes. Der
er memlig ofte et krav om det man kalder "hard realtime", dvs. at
når du træder på bremsen, så skal bilen bremse NU, og ikke vente til
blinklys-processen har opbrugt sin CPU-tid (måske lidt et fremtids-
eksempel - de fleste biler er stadig mekaniske hvad kritiske systemer
angår, men det illustrerer problemet rimelig godt[1]).
Til alt andet - servere, workstations, firewalls,... er det normalt
samme source der anvendes, men man compilerer dem forskelligt. På
workstations vil man ofte bruge den kerne der ligger på distributions-
CD'en: Det er nemmest, og den understøtter næsten alt hardware. På
en server vil man derimod compilere kernen med understøttelse af lige
præcis den hardware der sidder i serveren: Når man har et 100Mbit PCI
netkort, så er der ingen grund til at kernen skal søge efter gamle
10Mbit ISA netkort, med risiko for at blive uvenner med noget andet
hardware, som tilfældigvis sidder lige der hvor man ville forvente
at finde et ISA-kort. Dertil kommer at jo mindre kernen er, jo mindre
er risikoen for bugs, og man vil jo helst have at serveren kører
non-stop. Desuden vælger man ofte driverne som en del af kernen, så
man er sikker på at den er på nettet efter et strømsvigt, så man kan
telnet'e ind på den. På en workstation er det derimod meget normalt,
at alt ligger som moduler, så man hurtigt kan skifte/tilføje hardware
uden at skulle recompilere.
(Et modul er en del af kernen, der ligger parat i en separat fil, som
først hentes ind når der bliver brug for den. Næsten alle drivere
kan være moduler, og også større dele - fx. hjælper en driver til et
ISDN-kort ikke, hvis ikke man har loadet ISDN-modulet).
På andre unixsystemet (fx. HP-UX) er det også muligt at lave nogle
(men ikke så gennemgribende) ændringer i kernen, men det sker ved
at kernen linkes igen - der er altså ikke tale om nogen compilering,
for det ville kræve at HP tager sourcen ud af pengeskabet.
Nå, nu har du vist også fået en forklaring der skulle gøre dig i stand
til selv at compilere en linux-kerne, så find noget fri plads på
harddisken, og igang med at installere. Så får du det prøvet af i
virkeligheden, og du får meget mere indsigt i systemet, end ved blot
at læse om det.
Mvh
Kent
[1] I et moderne jagerfly er det ikke ret meget andet end katapultsædet
der er mekanisk.
--
http://www.celebrityshine.com/~kfr/ - sidste billede: garden.png