Article View: be.comp.programming
Article #3245Re: vanwaar komen de talen
From: Philip Paeps
Date: Thu, 22 Jan 2004 15:45
Date: Thu, 22 Jan 2004 15:45
79 lines
5650 bytes
5650 bytes
On 2004-01-19 09:19:43 (+0000), mart <No@Spam.com> wrote:
> Het is ingewikkeld om het allemaal tot in details uit te leggen. Ik ga
> proberen een eenvoudige uitleg te geven. Experts Dont kill me als ik de
> dingen heel erg simplifiseer.
Beetje aanvullen :-)
> Als illustratie probeer ik het opstarten van een oude pc uit te leggen.
Niet 'oud', op ongeveer alle (x86) machines die je tegenkomt gaat het zo...
> Wanneer je de knop omdraait krijgt de circuit "stroom". Het is zo ontworpen
> dat het dan overgaat in een bepaalde toestand.
Bij het onder stroom zetten van de processor bevatten bepaalde registers goed
gedocumenteerde waarden. Vooral de instruction pointer is belangrijk (op x86
wordt die op 0xfffffff0 gezet), want die wijst naar het adres van de volgende
functie die moet uitgevoerd worden. Op x86 wordt de processor ook in zgn.
'real mode' (vs. 'protected mode') gestart, wat er onder andere voor zorgt dat
je je fysieke address space ziet.
> Het voert een routine "POST" uit dat hardwarematig gecodeerd is. Na deze
> routine wordt de BIOS ingeladen en de bootstraploader wordt geactiveerd.
> Deze zoekt op de beschikbare schijven naar de bootable partitie en laat de
> bootloader van de OS. De bootloader laadt dan op zijn beurt het OS.
Bijna juist :-) De volgorde is een beetje anders. De hardware zorgt ervoor
dat de instruction pointer door de BIOS gezet wordt naar het adres van de POST
functie, de POST zet dan het boot device en gooit het bootrecord daarvan in
memory en stuurt de execution daarheen. Op x86 staat in het bootrecord ook
nog een partition table (op een vaste plaats waarvan het adres me even
ontgaat), waarvan ��n partitie een bootable bit mag hebben. De code in het
bootrecord zorgt er dan voor dat de bootloader uit die partitie in memory
gegooit wordt, en stuurt de execution door naar daar. De bootloader wordt
geacht iets te weten over filesystems en zwiert de kernel (of tegenwoordig
meer het geval: een iets meer geavanceerde bootloader) in memory. Daarna
wordt *eindelijk* de kernel geladen :-)
> Natuurlijk is het opstartprocess tegenwoordig wat ingewikkelder door
> ontwikkeling in de electronica, maar dan wordt het te ingewikkeld om het
> simpel uit te leggen.
Niet echt. Het principe op x86 is nog steeds hetzelfde voor de P4 als voor de
i386. Enige echte verschil tegenwoordig is dat de meeste bootloaders in
protected mode draaien met een beetje extra magie zodat de kernel later de
descriptor table enzo kan aanpassen. Zo ingewikkeld is het allemaal niet.
Op andere architecturen is het wel een stuk prettiger werken... Als je bv.
een Alpha van de disk boot, verwacht de SRM alleen dat de bootloader 'ergens'
staat en stelt ook geen echte beperkingen op de grootte ervan. Op de eerste
512b van je disk zet je in 0x480 hoe groot je bootloader is, in 0x488 zet je
waar hij begint, 0x496 is altijd 0, en in 0x504 zet je een checksum van de
eerste 63b. Als de SRM de checksum correct verklaart, leest hij het aantal
sectors opgegeven in 0x480 te beginnen van wat er in 0x488 staat, en mapt ze
in memory op 0x20000000 en begint de zaak vrolijk uit te voeren. Kous af.
> Een ander voorbeeld van de overgang software/hardware zijn de device
> drivers. Deze drivers vertallen een aanvraag van de OS naar de basis
> instructie set van de microchip op de kaart of in de device.
Mjah. De kernel doet de vertaling tussen hardware en software, en drivers
zijn gewoon kernel 'services'. Tegenwoordig zitten de meeste kernels redelijk
vol met abstractielayers waardoor een driver niet echt veel magische toeren
moet uitsteken.
> Maar vergis je niet want achter elke OS zit een behoorlijk stuk wiskunde. Oa
> wachtrij theorien en optimalisatie.
Voor simpele hardware zou dat normaal moeten meevallen. Niet dat ik voor mijn
plezier even een kernel zou willen schrijven...
- Philip [die er nogal regelmatig van beschuldigd wordt het woord 'gewoon'
op schandalige manieren te misbruiken]
--
Philip Paeps Please don't send me replies
by email, I read the group.
Bad law is more likely to be supplemented than repealed.
Technical Details
Message-ID:
<20040122154450.GC26743@loge.nixsys.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!colt.net!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!transit.news.xs4all.nl!not-for-mailReferences:
<FCtOb.17745$Hs.3845245@phobos.telenet-ops.be> <budq2d$sa3$1@netlx020.civ.utwente.nl> <L1vOb.17862$7N7.3717217@phobos.telenet-ops.be> <PiNOb.19359$Cl.3780648@phobos.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: fcea4,c0023c95c925926a X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2004-01-22 07:45:49 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!colt.net!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!transit.news.xs4all.nl!not-for-mail From: Philip Paeps <philip+usenet@paeps.cx> Newsgroups: be.comp.programming Subject: Re: vanwaar komen de talen Message-ID: <20040122154450.GC26743@loge.nixsys.be> References: <FCtOb.17745$Hs.3845245@phobos.telenet-ops.be> <budq2d$sa3$1@netlx020.civ.utwente.nl> <L1vOb.17862$7N7.3717217@phobos.telenet-ops.be> <PiNOb.19359$Cl.3780648@phobos.telenet-ops.be> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <PiNOb.19359$Cl.3780648@phobos.telenet-ops.be> X-Date-in-Rome: ante diem XI Kalendas Februarias MMDCCLVII ab Urbe Condida X-PGP-Fingerprint: FA74 3C27 91A6 79D5 F6D3 FC53 BF4B D0E6 049D B879 X-Message-Flag: Get a proper mailclient! Mutt: <http://www.mutt.org/> User-Agent: Mutt/1.5.5.1i Date: 22 Jan 2004 15:45:05 GMT Lines: 79 NNTP-Posting-Date: 22 Jan 2004 16:45:05 CET NNTP-Posting-Host: 195.144.77.45 X-Trace: 1074786305 news.xs4all.nl 321 [::ffff:195.144.77.45]:49559 X-Complaints-To: abuse@xs4all.nl