Article View: nl.comp.os.linux
Article #447Re: Linux instabiel met grote netwerken?
From: Erik Hensema
Date: Tue, 27 Jul 1999 00:00
Date: Tue, 27 Jul 1999 00:00
53 lines
3543 bytes
3543 bytes
Rob Janssen (nomail@pe1chl.demon.nl) wrote: >Konrad Wojas <wojas@vvtp.tn.tudelft.nl> wrote: >>On Mon, 26 Jul 1999 17:18:58 GMT, Rob Janssen wrote: >>>Ja maar dat komt alleen omdat de boel in small model gecompileerd wordt. >>>Een Intel x86 kan wel meer adresseren maar dan moet je large model >>>gebruiken. > >>De adressering is 32-bits, dit komt overeen met 4GB. De kernel moet alles >>kunnen adresseren. Hoe kan je dan meer dan 4GB gebruiken?? > >Nee de virtual memory adressering van een x86 processor (x>=3) is 48 bits. >Of 45 bits als je het op een andere manier bekijkt. Niet echt. De i386 kan werken met segmenten. Je hebt dan gewoon een 32 bits offset pointer, zodat je maximaal 4 GB per segment kunt adresseren. Het segment wordt bepaalt door een 16 bits selector, die in een apart segment register geladen wordt, net zo als in de 16 bits mode. De selector bestaat uit drie delen: een 13 bits getal, een 2 bits permissie (voor ring 0 t/m 3) en een bit die aangeeft of hij wijst naar de LDT of GDT. De LDT en GDT zijn descriptortables, waar maximaal 2^13 descriptors in kunnen zitten. Dit is waar de selector heenwijst. De GDT is de Global Descriptor Table, de LDT de local. De GDT is algemeen voor alle processen, de LDT is per proces. Een descriptor kan verschillende dingen beschrijven, bijvoorbeeld geheugen, maar ook I/O poorten of callgates. Een callgate is een manier om een call te doen vanuit een ring met lage privilege naar een ring met hoge privilege, bijvoorbeeld een systemcall vanuit een proces. Als het een geheugendescriptor is, dan staat er het basisadres van het geheugen in, in 32 bits, de grootte van het segment, een granularitybit (die geeft aan of het basisadres met 4 KB vermenigvuldigd moet worden of niet), en wat voor soort segment het is (code, data, stack, readonly, enz). Dus, als je een descriptor maakt met granularitybit aan en een maximaal basisadres, dan ligt het basisadres op 4 GB * 4 KB = 2^32 * 2^12 = 2^44 bytes, oftewel 16 TB. Daar komt desnoods nog weer 4 GB overheen, dat is immers de maximale segmentgrootte. Probleem met deze adresseringsmethode is het swappen, je moet namelijk per segment swappen, dat is niet echt iets wat je wilt. Je zit dan namelijk praktisch complete processen te swappen, in plaats van delen. Dit is de enige protected mode waarin we op school werkten, en dus ook degene die ik het beste ken. Als ik het me goed herinner moet er ook nog een mix zijn tussen paginering (adresseren met 4 KB, gemakkelijk swappen) en segmentering. -- Erik Hensema (erik@hensema.xs4all.nl) Quoting-HOWTO: http://www.xs4all.nl/~hensema/quote/ Nu ook op: http://www.nl.linux.org/doc/HOWTO/Quoting-HOWTO-NL.html
Technical Details
Message-ID:
<slrn7pr88g.jc.erik@dexter.hensema.xs4all.nl>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<slrn7ppkd9.c0a.wojas@vvtp.tn.tudelft.nl> <slrn7pqlt8.9g3.nomail@linux.pe1chl.ampr.org>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: 1049e4,a0fe27b233033f39 X-Google-Attributes: gid1049e4,public X-Google-Thread: fb7d6,a0fe27b233033f39 X-Google-Attributes: gidfb7d6,public From: erik@hensema.xs4all.nl (Erik Hensema) Subject: Re: Linux instabiel met grote netwerken? Date: 1999/07/27 Message-ID: <slrn7pr88g.jc.erik@dexter.hensema.xs4all.nl> X-Deja-AN: 505757318 References: <slrn7ppkd9.c0a.wojas@vvtp.tn.tudelft.nl> <slrn7pqlt8.9g3.nomail@linux.pe1chl.ampr.org> X-Complaints-To: abuse@xs4all.nl X-Trace: news1.xs4all.nl 933078655 2396 194.109.57.253 (27 Jul 1999 12:30:55 GMT) Organization: Erik Hensema's Internet Server User-Agent: slrn/0.9.5.5 (UNIX) Reply-To: erik@hensema.xs4all.nl NNTP-Posting-Date: 27 Jul 1999 12:30:55 GMT Newsgroups: nl.comp.os.linux,casema.linux