Mémoire virtuelle et pagination
Lesoneptsdemémoirevirtuelleetdepaginationontétéintroduitspourpallieraumanquede
mémoirevivedespremiersordinateurs.Ilssontimplémentésauniveaudusystèmed'exploitation
maislesmiroproesseursenfailitentlamiseenplae.
10.1 Prinipes
10.1.1 Mémoire virtuelle
Dansertainsaslesbesoinsenmémoires'aroissentetnepeuventpastoujoursêtresatisfaits
par la mémoirevive physiquementprésente. Le système d'exploitation met alors (tivement,
évidemment)àla dispositiondes programmesplusde mémoirequ'iln'en existe réellement.La
méthodeutiliséereposesurlaonstationsuivante:l'intégralitédubesoinenmémoireviven'est
pasonstammentutilisée;ilestdonpossibledestokersurdisquelespartiesinativesjusqu'à
equ'ellessoientdenouveaurélaméesparunprogramme.
Leprinipedelamémoirevirtuelleestlesuivant:lesadressesmanipuléesparl'utilisateur
ne sont pas lesadresses physiques mais des adresses dites virtuelles.Un méanisme, appelé
unitéde gestion de la mémoire(MMUpourl'anglaisMemory ManagementUnit),traduit
lesadressesvirtuellesenadressesphysiques.
L'intérêt est le suivant : on peut s'arranger pour que la plage des adresses virtuelles soit
(bien) plus grande que la plage des adresses physiques. Bien entendu la taille de la mémoire
virtuelleeetivementutiliséeàunmomentdonné doitêtreinférieureàlatailledelamémoire
physique.Lesadressesvirtuellesorrespondantàdelamémoirephysiquenesontpasnéessaire-
mentontigues.D'unmomentàl'autre,lesadressesvirtuellesayantunorrespondantphysique
nesontpasnéessairementlesmêmes.
Unefaçondegérerlamémoirevirtuelleestlapagination,quenousallonsétudiermaintenant.
10.1.2 Pagination
10.1.2.1 Prinipe
Le prinipedelapagination(memory paging enanglais)repose surlesadres,lespages et
lestablesde pages:
Cadre. Lamémoire vivedisponible est partitionnée en adres (page frame en anglais)de
taillexe.
Page. Une page est un blo de données dontla taille est elle d'un adre. Elle peut être
stokéedansn'importequeladredelamémoireviveousurdisque.
Tablede pages. Un ensemble de tables de pages spéie la orrespondane entre les
adressesvirtuellesetlesadressesphysiques.
On parled'adresse linéaire (ouvirtuelle) lorsque la paginationest ativée. Desadresses
linéaires ontiguësàl'intérieurd'unemême pageorrespondentàdesadressesphysiquesonti-
guës.Parontre,ein'estpasleassiellessetrouventsurdespagesdistintes.
Les miroproesseurs atuels ontiennent des iruits, onstituant l'unité de pagination,
hargésdetraduireautomatiquementlesadressesvirtuellesenadressesphysiques.Leméanisme
deonversion(gure 10.1)reposesurleprinipesuivant:une adressevirtuelleestdéomposée
endeuxparties,unnumérodepageetundéalage(osetenanglais)danslapage.Lenuméro
depageestutiliséommeindiedansuntableau,appelétable despages,fournissantl'adresse
physique (de début de page) en mémoire entrale de ette page. À ette adresse est ajoutéle
déalagepourobtenirl'adressephysiquedel'élémentmémoireonerné.
Remarque.-LasegmentationdelamémoiredesmiroproesseursIntelet lapaginationrelèvent
dumêmeprinipedebase:ladiéreneentre lesdeux tientàe quel'onutilisedeuxvariables
Figure 10.1Pagination
10.1.2.2 Pagination à plusieursniveaux
Notion.-Lorsqu'iln'y aqu'uneseuletable depages,elledoitnéessairementsetrouverenper-
maneenmémoirevive;ettefaçondefairenéessited'utiliserbeauoupdemémoireuniquement
onsaréeàlatableomplète.Ellen'estdonquerarementimplémentéesouslaformed'uneseule
tableontiguëenmémoire:
Pour un miroproesseur 16 bits, on peut utiliser un seul niveau de pages. On a, par
exemple,despagesde4kiO,soitdouzebitspourledéalage.Ilrestequatrebitspourles
pages,soit16pages.Onadonunetabledepagesdetailleraisonnable.
Pourunmiroproesseur32bits, il estmoins raisonnablede n'utiliserqu'uneseulepage
et donunseulniveaude pagination.Toujourspourdespages de4kiO,il reste 20bits
pourlespages,soitunetable de1Mipages.Commeladesriptiondehaquepageexige
plusieursotets, elareprésenteune table deplusieursMiO,e qui oupetropdeplae
enmémoirevive.Onutilisedondeuxniveauxdetablesdepages,dixotetsétantaetés
àhaquetypedetables.
Parexemple,lemiroproesseursIntel80386peutadresser4GiO,latailledespages
mémoire est de 4 kiO, et haque entrée de la table oupe quatre otets; sur de tels
proesseursunetabledepageomplèteutiliserait1048576entrées,pouruneoupation
mémoirede4MiO.
Répertoiredetablesdepages.-Latabledepagesestdonsouventdéomposéeen plusieursni-
veaux,deuxauminimum:
unatalogue(ourépertoire)detablesdepages(pagediretoryenanglais)représente
leniveaudeux,ilontientlesadressesdespagesquiontiennent,quantàelles,desparties
delatable despages;
espartiessontlestablesdepagesdeniveauun.
Lagure10.2représentelaonversiond'adresse dansleasd'unearhitetureutilisantune
Figure10.2Tablesdepages
tabledepagesàdeuxniveaux.
L'intérêtdeettetable depages àdeuxniveaux reposesur lefait quelatable depagesn'a
pas besoin d'être hargée entièrement en mémoire vive. Si on utilise 6MiO (ontigus), seules
troispagessontutiliséespourlatabledespages:
lapageontenantlerépertoire,toujoursprésenteenmémoirevive;
lapageontenantlapartiedelatabledespagesorrespondantaux4premiersméga-otets
demémoire;
lapage ontenantla partie dela table des pagesorrespondantaux quatreméga-otets
10.2 La pagination de l'arhiteture Intel IA-32
LapaginationetlaMMUsontmisenplaedefaçonmatériellesurlesmiroproesseursIntel
depuisle80386.Pourlesmiroproesseurs32bits,elleutilisedeuxniveaux.Ilfaut initialiserle
répertoiredetable depages,lestables depagespuisativerlapaginationpourpouvoirutiliser
lesadressesvirtuelles.
10.2.1 Mise en plae
10.2.1.1 Registresde ontrle
La paginationest ontrléeparlesregistres de ontrle, d'unelongueurde32 bits, dont
nousavonsdéjàrenontré lepremier,et en partiuliersonbit 0,àproposdupassage aumode
protégé.
Lagurei-dessousdonnelastruturedees quatreregistresCR0àCR3:
MSW
P 000000000000000 00000000000 E T E M P CR0
G T S M P E
Not used CR1
Page fault linear address CR2
Page diretory base 000000000000 CR3
LeregistredeontrleCR1n'estpasutiliséparIA-32(ninonplusparx86-64d'ailleurs).
Ilest réservéauxproduits futurs.
Leregistrede ontrleCR2ontientl'adresselinéairede ladernièrepageàlaquelle on a
euaèslorsd'uneinterruptionpourfautedepagination.
LeregistredeontrleCR3ontientl'adresse physiquedebase durépertoiredepagesur
20bits(euxdepoidssupérieurs). Les12bits depoidsinférieurontiennent0.
L'adressephysiquedurépertoiredepagedoitdonêtrealignésurune page.
Le registre de ontrle CR0 ontient un ertain nombre de bits de ontrle, dont nous
avonsdéjàdéritslerledupremier,PE(àproposdupassageaumodeprotégé).Leseul
bitnousintéressantiiest lebit31,noté PG (pourPaGination), ativantlapagination
lorsqu'il est égal à 1. Dans e as, les tables de pages sont utilisées pour traduire les
adressesvirtuellesenadressesphysiques.
10.2.1.2 Tailledes pages
Depuisle80386,l'unité depaginationdesmiroproesseursIntelgèredespagesde4kiO.Il
fautdon12bitsdedéalagepoursituerunotetdansunepagepuisque
2 12 =
4096.DepuislePentium,Intelgèreégalementdespagesde4MiO(Intelparledepagination éten-
due). On utilise alors un inquième registrede ontrle, noté CR4, pour spéier la taille des
10.2.1.3 Pagination à deux niveaux
L'arhitetureIA-32utiliselapagination(defaçonoptionnelle,rappelons-le)àdeuxniveaux:
L'adressephysiquedurépertoiredepages,devantêtreunmultiplede0x1000,rappelons-le
également,eststokéedansleregistredeontrleCR3.
Lerépertoiredetablesdepagesontientjusqu'à1024entréesde32bits, permettantde
loaliserjusqu'à1024tables depages.Lerépertoiredetablesdepagesadonune taille
maximalede4kiO,taille d'unepage.
Chaquetabledepagesontientégalementjusqu'à1024entréesde32bits,permettantde
loaliserjusqu'à1024pages.Unetabledepagesadonégalementunetaillemaximumde
4kiO,tailled'unepage.
Si les4GiOdemémoiresont paginés,le systèmedoitallouer 4kiOdemémoire pourle
répertoiredetablesde pageset jusqu'à4Kifois 1024otets,soit 4MiO,pourles1024
tablesdepages,représentantuneressouremémoireonsidérable.
10.2.1.4 Struture d'une adresse virtuelle
Les32bitsd'uneadressevirtuellesontrépartisentroishamps:
31 22 21 12 11 0
Diretory Page table Offset
Puisque1024=
2 10,dixbits, lesbits22à31,formentunpremierindex, permettantde
séletionnerlatabledepagesdanslerépertoiredestablesdepage.
Dixautresbits,lesbits12à21,onstituentunseondindex,ditdepage,pointantdansla
tabledepagesséletionnéeparlepremierindex.Onytrouvel'adressephysiquedudébut
delapage.
Les12bits depoidsfaible,lesbits0à11,onstituentledéalage.
10.2.1.5 Struture d'une entréede table de pages
Lesentréesdurépertoiredestablesdepageset destables depagesontlamême struture,à
unbitprès.Chaqueentréeaunetaillede32bits,soit4otets,dontleshampssontlessuivants:
31 12 11 7 6 5 4 3 2 1 0
P P U R
Adresse de base réservé D A C W / / P
D T S W
Lesvingtbits12à31permettentdespéierl'adressedudébutdelatabledepages(pour
lerépertoire) oudela page(pourune table depages). Ilssontinterprétésommeles20
bitsdepoidsfortdel'adressephysique.
Eneethaquetabledepageethaquepageanonseulementunetaillede4kiOmais
on onsidère en plus qu'elle est alignée, 'est-à-dire que son adresse est un multiple de
4096,donqueles12bitsdepoidsfaibledeette adressesontégauxà0.
Lesbits 7 à11 sont réservéspour une utilisationqui pourra être dénie ultérieurement
parIntelet devantêtrenuls enattendant.
Lebit 6(D pourDirty,'est-à-diremodié) n'adesensquepourlesentréesd'unetable
depages.Ildoitêtrenulpourune entréedurépertoiredetablesdepages.
Ce bit est positionné par le miroproesseur haque fois qu'une opération d'ériture
est réalisée sur la page : ei permet au système d'exploitation de savoir qu'il doit en
sauvegarderleontenusurledisque.L'unitédepaginationneremetjamaisedrapeauà
0;'estausystèmed'exploitationdelefaireéventuellement(aprèssauvegardesurdisque).
Lebit5(ApourAessed)indiquesionaeuaèsàettepage(enletureouenériture,
ettefois-i):elafailitelagestiondelamémoirevirtuelleparlesystèmed'exploitation.
Comme pourle bit D, l'unité de pagination ne remet jamais e bit à zéro; 'est au
systèmed'exploitationdelefaireéventuellement.
Lesbit4(PCDpourPage-levelCaheDisable)et3(PWTpourPage-levelWrite-Through)
ontrlentlamiseenaheet nenousintéressentpaspourl'instant.
Lebit2(U/SpourUser/System)spéielesprivilèges: lorsquee drapeauest égalà0,
lerépertoirede tables de pages ou la table de pages n'estaessible qu'aux niveaux de
privilège0à2.
Lebit1(R/WpourRead/Write)spéielesdroitsdeletureetd'ériture lorsquequele
bit 2vaut1: lorsque le drapeauest égal à0,latable de pages oulapage peuventêtre
lus et éritsau niveaudeprivilège 3; lorsqu'ilest égalà1,ellene peutqu'être lue àe
niveaudeprivilège3.
lebit 0(P pourPresent) indiquesi latablede pagesoulapage estprésentenmémoire
vive.C'estévidemmentlesystèmed'exploitationquirenseigneebit.
Si edrapeau estpositionné,lapage(oulatabledepages)référenéeestprésenteen
mémoirevive;s'ilestbaissé,ellen'estpasenmémoireviveetlesautresbitspeuventêtre
utilisésparlesystèmed'exploitationpourunusagequiluiestpropre.
Si e drapeauest égal à0 et que l'on essaie de faireappel àette entrée,l'unité de
paginationstokel'adressevirtuelledansleregistredeontrleCR2etlèvel'exeption14,
'est-à-direl'exeption de défaut de page (Page Fault en anglais). Il appartient au
onepteurdusystèmed'exploitationd'érireungestionnaired'interruptionplaçantalors
10.2.1.6 Ativation de la pagination
Au démarragedes miroproesseurs Intel, lapagination n'est pasativée : les adressesvir-
tuellessontinterprétées ommedesadressesphysiques.Pourativerlapagination,ilfaut posi-
tionnerledrapeauPG (bit31)duregistrede ontrleCR0,après avoirinitialiséle registreCR3,
lerépertoireetlestablesdepages.
10.2.1.7 Méanisme de protetion matérielle
L'unitédepaginationutiliseunméanismedeprotetiondiérentdeeluiutiliséparl'unité
de segmentation. Alorsque lesmiroproesseurs Intel permettent d'utiliser quatre niveaux de
privilège différentspourunsegment, seulementdeux niveaux deprivilège peuventêtre utilisés
pourlespageset lestables depages. LorsqueledrapeauUser/Systemvaut0,lapagene peut
êtreadresséequelorsqueleCPLeststritementinférieurà3.Lorsqu'ilestégalà1,lapagepeut
toujoursêtreadressée.
De plus, àlaplae des trois typesde droitsd'aès (leture,ériture, exéution)assoiés à
unsegment,seulementdeux typesde droits(leture et ériture)sontassoiés àunepage. Sile
drapeauRead/Writed'uneentréedurépertoiredetablesdepagesoud'unetabledepagesvaut
0,latable depagesou lapageorrespondantene peut êtrequelue;sinon ellepeutêtrelue et
modiée.
Le registrede ontrleCR2ontientl'adresse linéairede ladernièrepageàlaquelle onaeu
aèslorsd'uneinterruptionpourfautedepagination.
10.2.1.8 Le ahe de pagination
Lemiroproesseurn'apasbesoindeonsulterlestablesdepaginationlorsdehaqueaès
mémoire, fort heureusement, omme il n'est pas néessaire de repasser par les tables de des-
ripteursdesegmentsàhaqueaès mémoire.Eneet,lemiroproesseurdiposed'untampon
interne,appeléahe de pagination(TLB pourTranslationLookaside Buerenanglais),a-
pable demémoriser32 entréesde pagesde 4kiO,et dond'unetaille de128kiO. Ce tampon
est
hh
ahéii
.Àhaqueaèsmémoire,leproesseurreherhed'abordsilapagevouluepossèdesonentrée
dans e tampon. Si 'est le as, auune autre reherhe n'est utile. Les tests de séurité sont
eetués et l'adressephysiqueest alulée,leas éhéant: elaonsisteàadditionnerl'adresse
physique dudébut delapage, gurant dansle tampon, audéalageprésenté parl'adressevir-
tuelle.
Silapagen'estpasprésentedansleahedepagination,ilyaéhe,equiobligeleproesseur
àpasserparlestablesdepagination.Ilenprotepourhargerl'entréedelanouvellepagedans
letampon,abandonnant,parexemple,laplusanienneentréesileaheestplein.
10.2.2 Passage au mode protégé et retour
Lorsduretouraumoderéel,lapremièrehoseàeetuer,silapaginationestativée,estde
ladésativer.Ceidoitêtreeetuéàpartird'unepagepourlaquellelesadressesvirtuellessont
égalesauxadressesphysiques(
hh
identity mappedii
en anglais).Ilest prudentdemettre àzéro10.3 Exemple
Utilisons,ommed'habitude,notrelé USBdémarrantsurMS-DOS.Créons-yunrépertoire
PAGEdanslequelnousplaeronslesprogrammesonernantlapagination.
Érivonsunprogrammequi,ommed'habitude,plaelemiroproesseurenmodeprotégéet
quireviendraenmoderéelàlan.
Unefoisenmodeprotégé,préparonslapagination.Rappelonsquenousavonsdéjàremarqué
quelesemplaementsmémoire6000:0etlasuite,ainsique7000:0etlasuite,nesontpasutilisés
parle÷urdusystème d'exploitationMS-DOS:toutest àzéroaudémarrage.
Plaçons notrerépertoiredetables depagesàl'adresse0x60000,qui est bienunmultiple de
0x1000,aveuneseuleentrée,elled'index0,ayantlavaleur0x61007.Ceisigniequelatable
depagessetrouveàl'adresse0x61000,néessairementunmultiplede0x1000,qu'elleestprésente
et qu'on a les droitsd'ériture et de leture (e qui n'a d'ailleurs pas beauoup d'importane
pouresdernierspourl'instant,puisqu'onrestetoujoursauniveaudeprivilège 0).
Puisque nousne savonspastropommentleBIOS et MS-DOSutilisent lepremierMiOde
lamémoire,nedéplaçonssurtoutriendansette partie. Nousallonsdonfaireensortequeles
adressesvirtuelleset physiquesseonfondentpourlaplage0x00000 0xFFFFF.Ceirevientà
plaer0x000007 pourl'index0dela tablede pages,0x001007pourl'index1etainsi desuite,
eninrémentantde0x1000àhaquefois,pourles256premièresentrées.
Nous noussentonsunpeupluslibre au-delàdupremierMiO(noussupposons bien sûrque
la mémoire vive implantée est supérieure à 1 MiO, e qui ne doit pas être un problème ave
unordinateur atuel). Nousallonsdon, nonpas plaer0x100007 pour l'entrée suivante,mais
0x102007.Celasigniequelaplaged'adresses virtuelles0x102000 0x102FFForrespondraà
laplaged'adressesphysiques0x100000 0x100FFF.
Une foislapaginationmiseenplae, érivons0x12345678àl'adressevirtuelle0x100000.Si
touts'est bienpassé,onaéritettevaleuràl'adressephysique0x102000.
Désativonsalorsla paginationet plaçonse qui setrouveàl'adresse physique0x102000 à
l'adresse(physique) 0x70000,de façonàpouvoirvérier,une foisrevenu àMS-DOS, e qui se
trouveàl'adresse7000:0etdonaussiàl'adresse0x102000.
#--- --- ---- --- ---;
# page.s ;
# Example program pagination in Proteted Mode ;
#--- --- ---- --- ---;
.setion .text
.globl _start
.ode16
.org 0x100
_start:
#
# Save flags and DS for return to real mode
#
movw %s,%dx
movw %dx,%ds
movw %dx,%ss
pushf
push %ds
movw %ds,%dx
movw %dx,seg
#
#Setting base for ode segments
movw %s,%ax
movzx %ax,%eax
shll $4,%eax # eax=base for ode segment
movl %eax,DESC1B
movb $0x9a,DESC1C # set segment attribute
#
# Setting of GDTA
#
movl $0,%eax # deja fait mais prudene
movl $0,%ebx
movw %s,%ax # deja fait mais prudene
#movw DESC0,%bx
.byte 0x0bb
.word DESC0
shll $4,%eax # deja fait mais prudene
addl %ebx,%eax
movl %eax,GDTA
#
# Make sure no ISR will interfere now
#
li
#
# LGDT is neessary before swith to PM
#
lgdtl GDTL
#
# Swith to PM
#
movl %r0,%eax
orb $1,%al
movl %eax,%r0
#
# Far jump to set CS & lear prefeth queue
#
.byte 0x0ea
.word pm_in
.word 8
#
# Load long segment desriptor from GDT into DS
#
pm_in: movw $0x10,%dx
movw %dx,%ds
movw %dx,%ss
movw %dx,%es
#---;
# A sample in proteted mode: ;
#---;
#
# Load CR3
#
movl $0x60000,%eax
movl %eax,%r3
#
#
movl $0x61007,%eax
addr32 movl %eax,%ds:(0x60000)
#
# Remap 00000h-FFFFFh to 00000h-FFFFFh
#
movl $256,%ex
movl $0x61000,%edi
movl $7,%eax
REPETER:
movl %eax,%es:(%edi)
inl %edi
inl %edi
inl %edi
inl %edi
addl $0x1000,%eax
del %ex
jexz FIN
jmp REPETER
FIN:
#
# Remap 100000h-AFFFFh to 102000h-102FFFFh
#
movl $0x102007,%eax
movl $16,%ex
REPEAT2:
movl %eax,%es:(%edi)
inl %edi
inl %edi
inl %edi
inl %edi
addl $0x1000,%eax
del %ex
jexz FIN2
jmp REPEAT2
FIN2:
#
# Enable pagination
#
movl %r0,%eax
btsl $31,%eax
movl %eax,%r0
jmp FOO
FOO: nop
#
# Sample using of address
#
movl $0x12345678,%eax
addr32 movl %eax,%ds:(0x100000)
#
# Deative pagination
#
movl %r0,%eax
movl %eax,%r0
jmp FOO2
FOO2:
xorl %eax,%eax
movl %eax,%r3
#
# Read 102000h
#
addr32 movl %ds:(0x102000),%eax
addr32 movl %eax,%ds:(0x70000)
#--- ---- ---;
# End of the sample in proteted mode ;
#--- ---- ---;
#
# Load 64kB segment desriptor from GDT into DS for return
#
movb $0x18,%dl
movw %dx,%ds
#
# Return from PM ro real mode
#
andb $0x0fe,%al
movl %eax,%r0
#
# Far jump to restore CS & lear prefeth queue
#
.byte 0x0ea
.word pm_out
seg: .word 0
pm_out:
#
# Restore DS and flags
#
movw %s,%dx
movw %dx,%ss
pop %ds
popf
#
# Exit to MS-DOS
#
ret
#
#--- ---- --- -;
# GDT to be used in Proteted Mode ;
#--- ---- --- -;
#
# null desriptor
#
DESC0: .long 0 # null desriptor
.long 0
#
# desriptor for ode segment in PM
#
DESC1B: .word 0 # base = 0 to set
.byte 0 # base
DESC1C: .byte 0x9A # ode segment
.byte 0 # G = 0
.byte 0
#
# desriptor for data segment in PM
#
DESC2: .word 0x0FFFF # limit 4GB
.word 0 # base = 0
.byte 0 # base
.byte 0x92 # R/W segment
.byte 0x8F # G = 1, limit
.byte 0
#
# desriptor for data segment return to real mode
#
DESC3: .word 0x0FFFF # limit 64kB
.word 0 # base = 0 to set
.byte 0 # base
.byte 0x92 # R/W segment
.byte 0 # G = 0, limit
.byte 0 # base
#
# GDT table data
#
GDTL: .word 0x1F # limit
GDTA: .long 0 # base to set
Assemblonsehierpage1.ssousLinux:
$ as page1.s --32 -o ./page1.o
$ objopy -O binary ./page1.o ./page1.om
$ ls -l page1.om
-rwxr-xr-x 1 patrik patrik 569 sept. 28 10:57 page1.om
$
Ilnefautgarderqueles313derniersotetsdubinaire:
$ objopy -O binary -i 800 --interleave-width 313 -b 256 ./page1.o ./page1.om
$
Après avoir exéuté e programme sous MS-DOS, on retrouve bien la valeur voulue en
0x70000:
C:\PROTECT>debug
-D 7000:0 L 10
7000:0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ...
-q
C:\PROTECT>page1
C:\PROTECT>debug
-D 7000:0 L 10
7000:0 78 56 34 12 00 00 00 00-00 00 00 00 00 00 00 00 xV4...
-q
10.4 Historique
Mémoirevirtuelle.- L'Allemand Fritz Rudolf Güntsh (19252012) invente le prinipe de la
mémoire virtuelle en 1956. Elle est alors onsituée d'une mémoire rapide, de petite taille, et
d'unemémoirepluslente,orantlaapaitéqu'ildésirait:il utiliseommemémoiredegrande
apaité10tambourstournantdefaçonasynhroneàtéd'unemémoirerapidede600mots.
Iléritdanssathèse[Gun-57℄,soutenueen1957:
hh
Leprogrammeurn'apasbesoindeprendre
enonsidérationlestokageàaèsrapide(iln'amêmepasbesoindesavoirqu'ilexiste).Puisqu'il
yaunseultyped'adresses,intervenantdanslaprogrammation,ommes'ils'agissaitd'uneseule
mémoireprésente.
ii
Pagination.-L'artile[KELS-62℄deréférenedeJamesKilburn,paruen1962,déritlepremier
ordinateur doté d'un système de gestion de mémoire virtuelle paginée, utilisant un tambour
ommeextensiondelamémoireentraleàtoresdeferrite: l'Atlas.
10.5 Bibliographie
[GL-59℄ Güntsh, F.-R. and R. Lukas, Magnetbandrehner der Tehnishen Universität
Berlin,Elektronishe Datenverarbeitung,2/1959,pp.3346.(Lealulateurà
rubanmagnétiquedel'universitédeBerlin).
[Gun-57℄ Güntsh,F.-R.,LogisherEntwurfeinesdigitalenRehengerätsmitmeh-
reren asynhron laufenden Trommeln und automatishem Shnellspei-
herbetrieb, TU Berlin, 1957 (Dissertation) (Esquisse logique d'une mahine à
alulernumérique ayantplusieurstamboursfontionnant defaçonasynhroneet
unemémoireàaèsrapideautomatique).
[Jes-04℄ E.Jessen,OriginoftheVirtualMemoryConept,IEEEAnnalsOFtheHistory
ofComputing,Vol.26,4/2004,page71.
[KELS-62℄ Kilburn, Edwards, Lanigan, and Summer, One level storage system, IRE
Transations on eleroniomputers, EC-11,vol.2,avril1962,pp.223235.