🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.os.linux
Article #447

Re: Linux instabiel met grote netwerken?

#447
From: Erik Hensema
Date: Tue, 27 Jul 1999 00:00
53 lines
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-mail
References: <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