




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
外文原文CHAPTER2MEMORYADDRESSINGTHISCHAPTERDEALSWITHADDRESSINGTECHNIQUESLUCKILY,ANOPERATINGSYSTEMISNOTFORCEDTOKEEPOFPHYSICALMEMORYALLBYITSELFTODAYSMICROPROCESSORSINCLUDESEVERALHARDWARECIRCUITSTOMAKEMEMORYMANAGEMENTBOTHMOREEFFICIENTANDMOREROBUSTSOTHATPROGRAMMINGERRORSCANNOTCAUSEIMPROPERACCESSESTOMEMORYOUTSIDETHEPROGRAMASINTHERESTOFTHISBOOK,WEOFFERDETAILSINTHISCHAPTERONHOW8086MICROPROCESSORSADDRESSMEMORYCHIPSANDHOWLINUXUSESTHEAVAILABLEADDRESSINGCIRCUITSYOUWILLFIND,WEHOPE,THATWHENYOULEARNTHEIMPLEMENTATIONDETAILSONLINUXSMOSTPOPULARPLATFORMYOUWILLBETTERUNDERSTANDBOTHTHEGENERALTHEORYOFPAGINGANDHOWTORESEARCHTHEIMPLEMENTATIONONOTHERPLATFORMSTHISISTHEFIRSTOFTHREECHAPTERSRELATEDTOMEMORYMANAGEMENTCHAPTER8DISCUSSESHOWTHEKERNELALLOCATESMAINMEMORYTOITSELF,WHILECHAPTER9CONSIDERSHOWLINEARADDRESSESAREASSIGNEDTOPROCESSES21MEMORYADDRESSESPROGRAMMERSCASUALLYREFEROAMEMORYADDRESSASTHEWAYTOACCESSTHECONTENTSOFAMEMORYCELLBUTWHENDEALINGWITH8086MICROPROCESSORS,WEHAVETODISTINGUISHTHREEKINDSOFADDRESSESLOGICALADDRESSINCLUDEDINTHEMACHINELANGUAGEINSTRUCTIONSTOSPECIFYTHEADDRESSOFANOPERANDOROFANINSTRUCTIONTHISTYPEOFADDRESSEMBODIESTHEWELLKNOWN8086SEGMENTEDARCHITECTURETHATFORCESMSDOSANDWINDOWSPROGRAMMERSTODIVIDETHEIRPROGRAMSINTOSEGMENTSEACHLOGICALADDRESSCONSISTSOFASEGMENTANDANOFFSETORDISPLACEMENTTHATDENOTESTHEDISTANCEFROMTHESTARTOFTHESEGMENTTOTHEACTUALADDRESSLINEARADDRESSALSOKNOWNASVIRTUALADDRESSASINGLE32BITUNSIGNEDINTEGERTHATCANBEUSEDTOADDRESSUPTO4GBTHATIS,UPTO4,294,967,296MEMORYCELLSLINEARADDRESSESAREUSUALLYREPRESENTEDINHEXADECIMALNOTATIONTHEIRVALUESRANGEFROM0X00000000TO0XFFFFFFFFPHYSICALADDRESSUSEDTOADDRESSMEMORYCELLSINMEMORYCHIPSTHEYCORRESPONDTOTHEELECTRICALSIGNALSSENTALONGTHEADDRESSPINSOFTHEMICROPROCESSORTOTHEMEMORYBUSPHYSICALADDRESSESAREREPRESENTEDAS32BITOR36BITUNSIGNEDINTEGERSTHEMEMORYMANAGEMENTUNITMMUTRANSFORMSALOGICALADDRESSINTOALINEARADDRESSBYMEANSOFAHARDWARECIRCUITCALLEDASEGMENTATIONUNITSUBSEQUENTLY,ASECONDHARDWARECIRCUITCALLEDAPAGINGUNITTRANSFORMSTHELINEARADDRESSINTOAPHYSICALADDRESSSEEFIGURE21INMULTIPROCESSORSYSTEMS,ALLCPUSUSUALLYSHARETHESAMEMEMORYTHISMEANSTHATRAMCHIPSMAYBEACCESSEDCONCURRENTLYBYINDEPENDENTCPUSBECAUSEREADORWRITEOPERATIONSONARAMCHIPMUSTBEPERFORMEDSERIALLY,AHARDWARECIRCUITCALLEDAMEMORYARBITERISINSERTEDBETWEENTHEBUSANDEVERYTAMCHIPITSROLEISTOGRANTACCESSTOACPUIFTHECHIPISFREEANDTODELAYITIFTHECHIPISBUSYSERVICINGAREQUESTBYANOTHERPROCESSOREVENUNPROCESSEDSYSTEMSUSEMEMORYARBITERS,BECAUSETHEYINCLUDESPECIALIZEDPROCESSORSCALLEDDMACONTROLLERSTHATOPERATECONCURRENTLYWITHTHECPUSEETHESECTION“DIRECTMEMORYACCESSDMA”INCHAPTER13INTHECASEOFMULTIPROCESSORSYSTEMS,THESTRUCTUREOFTHEARBITERISMORECOMPLEXBECAUSEITHASMOREINPUTPORTSTHEDUALPENTIUM,FORINSTANCE,MAINTAINSATWOPOTARBITERATEACHCHIPENTRANCEANDREQUIRESTHATTHETWOCPUSEXCHANGESYNCHRONIZATIONMESSAGESBEFOREATTEMPTINGTOUSETHECOMMONBUSFROMTHEPROGRAMMINGPOINTOFVIEW,THEARBITERISHIDDENBECAUSEITISMANAGEDBYHARDWARECIRCUITS22SEGMENTATIONINHARDWARESTARTINGWITHTHE80286MODEL,INTELMICROPROCESSORSPERFORMADDRESSTRANSLATIONINTWODIFFERENTWAYSCALLEDREALMODEANDPROTECTEDMODEWELLFOCUSINTHENEXTSECTIONSONADDRESSTRANSLATIONWHENPROTECTEDMODEISENABLEDREALMODEEXISTSMOSTLYTOMAINTAINPROCESSORCOMPATIBILITYWITHOLDERMODELSANDTOALLOWTHEOPERATINGSYSTEMTOBOOTSTRAPSEEAPPENDIXAFORASHORTDESCRIPTIONOFREALMODE221SEGMENTSELECTORSANDSEGMENTATIONREGISTERSALOGICALADDRESSCONSISTSOFTWOPARTSASEGMENTIDENTIFIERANDANOFFSETTHATSPECIFIESTHERELATIVEADDRESSWITHINTHESEGMENTTHESEGMENTIDENTIFIERISA16BITFIELDCALLEDTHESEGMENTSELECTORSEEFIGURE22,WHILETHEOFFSETISA32BITFIELDWELLDESCRIBETHEFIELDSOFSEGMENTSELECTORSINTHESECTION”FASTACCESSTOSEGMENTDESCRIPTORS”LATERINTHISCHAPTERTOMAKEITEASYTORETRIEVESEGMENTSELECTORSQUICKLY,THEPROCESSORPROVIDESSEGMENTATIONREGISTERSWHOSEONLYPURPOSEISTOHOLDSEGMENTSELECTORSTHESEREGISTERSARECALLEDCS,SS,DS,SEGMENTATIONREGISTERFORDIFFERENTPURPOSESBYSAVINGITSCONTENTINMEMORYANDTHENRESTORINGITLATERTHREEOFTHESIXSEGMENTATIONREGISTERSHAVESPECIFICPURPOSESCSTHECODESEGMENTREGISTER,WHICHPOINTSTOASEGMENTCONTAININGPROGRAMINSTRUCTIONSSSTHESTACKSEGMENTREGISTER,WHICHPOINTSTOASEGMENTCONTAININGTHECURRENTPROGRAMSTACKDSTHEDATASEGMENTREGISTER,WHICHPOINTSTOASEGMENTCONTAININGGLOBALANDSTATICDATATHEREMAININGTHREESEGMENTATIONREGISTERSAREGENERALPURPOSEANDMAYREFERTOARBITRARYDATASEGMENTSTHECSREGISTERHASANOTHERIMPORTANTFUNCTIONITINCLUDESA2BITFIELDTHATSPECIFIESTHECURRENTPRIVILEGELEVELCPLOFTHECPUTHEVALUE0DENOTESTHEHIGHESTPRIVILEGELEVEL,WHILETHEVALUE3DENOTESTHELOWESTONELINUXUSESONLYLEVELS0AND3,WHICHARERESPECTIVELYCALLEDKERNELMODEANDUSERMODE222SEGMENTDESCRIPTORSEACHSEGMENTISREPRESENTEDBYAN8BYTESEGMENTDESCRIPTORTHATDESCRIBESTHESEGMENTCHARACTERISTICSSEGMENTDESCRIPTORSARESTOREDEITHERINTHEGLOBALDESCRIPTORTABLEGDTORINTHELOCALDESCRIPTORTABLELDTUSUALLYONLYONEGDTISDEFINED,WHILEEACHPROCESSISPERMITTEDTOHAVEITSOWNLDTIFITNEEDSTOCREATEADDITIONALSEGMENTSBESIDESTHOSESTOREDINTHEGDTTHEADDRESSANDSIZEOFTHEGDTINMAINMEMORYARECONTAINEDINTHEGDTRCONTROLREGISTER,WHILETHEADDRESSANDSIZEOFTHECURRENTLYUSEDLDTARECONTAINEDINTHELDTRCONTROLREGISTERFIGURE23ILLUSTRATESTHEFORMATOFASEGMENTDESCRIPTORTHEMEANINGOFTHEVARIOUSFIELDSISEXPLAINEDINTABLE21THEREARESEVERALTYPESOFSEGMENTS,ANDTHUSSEVERALTYPESOFSEGMENTDESCRIPTORSTHEFOLLOWINGLISTSHOWSTHETYPESTHATAREWIDELYUSEDINLINUXCODESEGMENTDESCRIPTORINDICATESTHATTHESEGMENTDESCRIPTORREFERSTOACODESEGMENTITMAYBEINCLUDEDEITHERINTHELDTTHEDESCRIPTORHASTHESFLAGSETNONSYSTEMSEGMENTDATASEGMENTDESCRIPTORINDICATESTHATTHESEGMENTDESCRIPTORREFERSTOADATASEGMENTITMAYBEINCLUDEDEITHERINTHEGDTORINTHELDTTHEDESCRIPTORHASTHESFLAGSETSTACKSEGMENTAREIMPLEMENTEDBYMEANSOFGENERICDATASEGMENTSTASKSTATESEGMENTDESCRIPTORTSSDINDICATESTHATTHESEGMENTDESCRIPTORREFERSTOATASKSTATESEGMENTTSSTHATIS,ASEGMENTUSEDTOSAVETHECONTENTSOFTHEPROCESSORREGISTERSSEETHESECTION“TASKSTATESEGMENT”INCHAPTER3ITCANAPPEARONLYINTHEGDTTHECORRESPONDINGTYPEFIELDHASTHEBALUE11OR9,DEPENDINGONWHETHERTHECORRESPONDINGPROCESSISCURRENTLYEXECUTINGONACPUTHESFLAGOFSUCHDESCRIPTORSISSETTO0LOCALDESCRIPTORTABLEDESCRIPTORLDTDINDICATESTHATTHESEGMENTDESCRIPTORREFERSTOASEGMENTCONTAININGANLDTITCANAPPEARONLYINTHEGDTTHECORRESPONDINGTYPEFIELDHASTHEVALUE2THESFLAGOFSUCHDESCRIPTORSISSETTO0THENEXTSECTIONSHOWSHOW8086PROCESSORSAREABLETODECIDEWHETHERASEGMENTDESCRIPTORISSTOREDINTHEGDTORINTHELDTOFTHEPROCESS223FASTACCESSTOSEGMENTDESCRIPTORSWERECALLTHATLOGICALADDRESSESCONSISTOFA16BITSEGMENTSELECTORANDA32BITOFFSETANDTHATSEGMENTATIONREGISTERSSTOREONLYTHESEGMENTSELECTORTOSPEEDUPTHETRANSLATIONOFLOGICALADDRESSESINTOLINEARADDRESSES,THE8086PROCESSORPROVIDESANADDITIONALNONPROGRAMMABLEREGISTERTHATIS,AREGISTERTHATCANNOTBESETBYAPROGRAMMEROREACHOFTHESIXPROGRAMMABLESEGMENTATIONREGISTERSEACHNONPROGRAMMABLEREGISTERCONTAINSTHE8BYTESEGMENTDESCRIPTORDESCRIBEDINTHEPREVIOUSSECTIONSPECIFIEDBYTHESEGMENTSELECTORCONTAINEDINTHECORRESPONDINGSEGMENTATIONREGISTEREVERYTIMEASEGMENTSELECTORISLOADEDINASEGMENTATIONREGISTER,THECORRESPONDINGSEGMENTDESCRIPTORISLOADEDFROMMEMORYINTOTHEMATCHINGNONPROGRAMMABLECPUREGISTERFROMTHENON,TRANSLATIONSOFLOGICALADDRESSESREFERRINGTOTHATSEGMENTCANBEPERFORMEDWITHOUTACCESSINGTHEGDTORLDTSTOREDINMAINMEMORYTHEPROCESSORCANREFERONLYDIRECTLYTOTHECPUREGISTERCONTAININGTHESEGMENTDESCRIPTORACCESSESTOTHEGDTORLDTARENECESSARYONLYWHENTHECONTENTOFTHESEGMENTATIONREGISTERSCHANGESEEFIGURE24BECAUSEASEGMENTDESCRIPTORIS8BYTESLONG,ITSRELATIVEADDRESSINSIDETHEGDTORTHELDTISOBTAINEDBYMULTIPLYINGTHE13BITINDEXFIELDOFTHESEGMENTSELECTORBY8FORINSTANCE,IFTHEGDTISAT0X00020000THEVALUESTOREDINTHEGDTRREGISTERANDTHEINDEXSPECIFIEDBYTHESEGMENTSELECTORIS2,THEADDRESSOFTHECORRESPONDINGSEGMENTDESCRIPTORIS0X0002000028,OR0X00020010THEFIRSTENTRYOFTHEGDTISALWAYSSETTO0THISENSURESTHATLOGICALADDRESSESWITHANULLSEGMENTSELECTORWILLBECONSIDEREDINVALID,THUSCAUSINGAPROCESSOREXCEPTIONTHEMAXIMUMNUMBEROFSEGMENTDESCRIPTORSTHATCANBESTOREDINTHEGDTIS8,191224SEGMENTATIONUNITFIGURE25SHOWSINDETAILHOWALOGICALADDRESSISTRANSLATEDINTOACORRESPONDINGLINEARADDRESSTHESEGMENTATIONUNITPERFORMSTHEFOLLOWINGOPERATIONSEXAMINESTHETIFIELDOFTHESEGMENTSELECTORTODETERMINEWHICHDESCRIPTORTABLESTORESTHESEGMENTDESCRIPTORTHISFIELDINDICATESTHATTHEDESCRIPTORISEITHERINTHEGDTINWHICHCASETHESEGMENTATIONUNITGETSTHEBASELINEARADDRESSOFTHEGDTFROMTHEGDTRREGISTERORINTHEACTIVELDTINWHICHCASETHESEGMENTATIONUNITGETSTHEBASELINEARADDRESSOFTHATLDTFROMTHELDTRREGISTERCOMPUTESTHEADDRESSOFTHESEGMENTDESCRIPTORFORMTHEINDEXFIELDOFTHESEGMENTSELECTORTHEINDEXFIELDISMULTIPLIEDBY8THESIZEOFASEGMENTDESCRIPTOR,ANDTHERESULTISADDEDTOTHECONTENTOFTHEGDTRORLDTRREGISTERADDSTHEOFFSETOFTHELOGICALADDRESSTOTHEBASEFIELDOFTHESEGMENTDESCRIPTOR,THUSOBTAININGTHELINEARADDRESSNOTICETHAT,THANKSTOTHENONPROGRAMMABLEREGISTERSASSOCIATEDWITHTHESEGMENTATIONREGISTERS,THEFIRSTTWOOPERATIONSNEEDTOBEPERFORMEDONLYWHENASEGMENTATIONREGISTERHASBEENCHANGED23SEGMENTATIONINLINUXSEGMENTATIONHASBEENINCLUDEDIN8086MICROPROCESSORSTOENCOURAGEPROGRAMMERSTOSPLITTHEIRAPPLICATIONSINTOLOGICALLYRELATEDENTITIES,SUCHASSUBROUTINESORGLOBALANDLOCALDATAAREASHOWEVER,LINUXUSESSEGMENTATIONINAVERYLIMITEDWAYINFACT,SEGMENTATIONANDPAGINGARESOMEWHATREDUNDANT,BECAUSEBOTHCANBEUSEDTOSEPARATETHEPHYSICALADDRESSSPACESOFPROCESSESSEGMENTATIONCANASSIGNADIFFERENTLINEARADDRESSSPACETOEACHPROCESS,WHILEPAGINGCANMAPTHESAMELINEARADDRESSSPACEINTODIFFERENTPHYSICALADDRESSSPACESLINUXPREFERSPAGINGTOSEGMENTATIONFORTHEFOLLOWINGREASONSMEMORYMANAGEMENTISSIMPLERWHENALLPROCESSESUSETHESAMESEGMENTREGISTERVALUESTHATIS,WHENTHEYSHARETHESAMESETOFLINEARADDRESSESONEOFTHEDESIGNOBJECTIVESOFLINUXISPORTABILITYTOAWIDERANGEOFARCHITECTURESRISCARCHITECTURESINPARTICULARHAVELIMITEDSUPPORTFORSEGMENTATIONTHE26VERSIONOFLINUXUSESSEGMENTATIONONLYWHENREQUIREDBYTHE8086ARCHITECTUREALLLINUXPROCESSESRUNNINGINUSERMODEUSETHESAMEPAIROFSEGMENTSTOADDRESSINSTRUCTIONSANDDATATHESESEGMENTSARECALLEDUSERCODESEGMENTANDUSERDATASEGMENT,RESPECTIVELYSIMILARLY,ALLLINUXPROCESSESRUNNINGINKERNELMODEUSETHESAMEPAIROFSEGMENTSTOADDRESSINSTRUCTIONSANDDATATHEYARECALLEDKERNELCODESEGMENTANDKERNELDATASEGMENT,RESPECTIVELYTHECORRESPONDINGSEGMENTSELECTORSAREDEFINEDBYTHEMACROS_USER_CS,_USER_DS,_KERNEL_CS,AND_KERNEL_DS,RESPECTIVELYTOADDRESSTHEKERNELCODESEGMENT,FORINSTANCE,THEKERNELJUSTLOADSTHEVALUEYIELDEDBYTHE_KERNEL_CSMACROINTOTHECSSEGMENTATIONREGISTERNOTICETHATTHELINEARADDRESSESASSOCIATEDWITHSUCHSEGMENTSALLSTARTAT0ANDREACHTHEADDRESSINGLIMITOF2321THISMEANSTHATALLPROCESSES,EITHERINUSERMODEORINKERNELMODE,MAYUSETHESAMELOGICALADDRESSESANOTHERIMPORTANTCONSEQUENCEOFHAVINGALLSEGMENTSSTARTAT0X00000000ISTHATINLINUX,LOGICALADDRESSESCOINCIDEWITHLINEARADDRESSESTHATIS,THEVALUEOFTHEOFFSETFIELDOFALOGICALADDRESSALWAYSCOINCIDESWITHTHEBALUEOFTHECORRESPONDINGLINEARADDRESSASSTATEDEARLIER,THECURRENTPRIVILEGELEVELOFTHECPUINDICATESWHETHERTHEPROCESSORISINUSERORKERNELMODEANDISSPECIFIEDBYTHERPLFIELDOFTHESEGMENTSELECTORSTOREDINTHECSREGISTERWHENEVERTHECPLISCHANGED,SOMESEGMENTATIONREGISTERSMUSTBECORRESPONDINGLYUPDATEDFORINSTANCE,WHENTHECPLISEQUALTO3USERMODE,THEDSREGISTERMUSTCONTAINTHESEGMENTSELECTOROFTHEUSERDATASEGMENT,BUTWHENTHECPLISEQUALTO0,THEDSREGISTERMUSTCONTAINTHESEGMENTSELECTOROFTHEKERNELDATASEGMENTASIMILARSITUATIONOCCURSFORTHESSREGISTERITMUSTREGERTOAUSERMODESTACKINSIDETHEUSERDATASEGMENTWHENTHECPLIS3,ANDITMUSTREFERTOAKERNELMODESTACKINSIDETHEKERNELDATASEGMENTWHENTHECPLIS0WHENSWITCHINGFROMUSERMODETOKERNELMODE,LINUXALWAYSMAKESSURETHATTHESSREGISTERCONTAINSTHESEGMENTSELECTOROFTHEKERNELDATASEGMENTWHENSAVINGAPOINTERTOANINSTRUCTIONORTOADATASTRUCTURE,THEKERNELDOESNOTNEEDTOSTORETHESEGMENTSELECTORCOMPONENTOFTHELOGICALADDRESS,BECAUSETHESSREGISTERCONTAINSTHECURRENTSEGMENTSELECTORASANEXAMPLE,WHENTHEKERNELINVOKESAFUNCTION,ITEXECUTESACALLASSEMBLYLANGUAGEINSTRUCTIONSPECIFYINGJUSTTHEOFFSETCOMPONENTOFITSLOGICALADDRESSTHESEGMENTSELECTORISIMPLICITLYSELECTEDASTHEONEREFERREDTOBYTHECSREGISTERBECAUSETHEREISJUSTONESEGMENTOFTYPE“EXECUTABLEINKERNELMODE,“NAMELYTHECODESEGMENTIDENTIFIEDBY_KERNEL_CS,ITISSUFFICIENTTOLOAD_KERNEL_CSINTOCSWHENEVERTHECPUSWITCHESTOKERNELMODETHESAMEARGUMENTGOESFORPOINTERSTOKERNELDATASTRUCTURESIMPLICITLYUSINGTHEDSREGISTER,ASWELLASFORPOINTERSTOUSERDATASTRUCTURESTHEKERNELEXPLICITLYUSESTHEESREGISTERBESIDESTHEFOURSEGMENTSJUSTDESCRIBED,LINUXMAKESUSEOFAFEWOTHERSPECIALIZEDSEGMENTSWEWILLINTRODUCETHEMINTHENEXTSECTIONWHILEDESCRIBINGTHELINUXGDT231THELINUXGDTINUNIPROCESSORSYSTEMSTHEREISONLYONEGDT,WHILEINMULTIPROCESSORSYSTEMSTHEREISONEGDTFOREVERYCPUINTHESYSTEMALLGDTSARESTOREDINTHECPU_GDT_TABLEARRAY,WHILETHEADDRESSESANDSIZESOFTHEGTDSUSEDWHENINITIALIZINGTHEGDRTREGISTERSARESTOREDINTHECPU_GDT_DESCRARRAYIFYOULOOKINTHESOURCECODEINDEX,YOUCANSEETHATTHESESYMBOLSAREDEFINEDINTHEFILEARCH/I386/KERNEL/HEADSEVERYMACRO,FUNCTION,ANDOTHERSYMBOLINTHISBOOKISLISTEDINTHESOURCECODEINDEX,SOYOUCANQUICKLYFINDITINTHESOURCECODETHELAYOUTOFTHEGDTSISSHOWNSCHEMATICALLYINFIGURE26EACHGDTINCLUDES18SEGMENTDESCRIPTORSAND14NULL,UNUSED,ORRESERVEDENTRIESUNUSEDENTRIESAREINSERTEDONPURPOSESOTHATSEGMENTDESCRIPTORSUSUALLYACCESSEDTOGETHERAREKEPTINTHESAME32BYTELINEOFTHEHARDWARECACHESEETHESECTION“HARDWARECACHE”LATERINTHISCHAPTERTHE18SEGMENTDESCRIPTORSINCLUDEDINEACHGDTPOINTTOTHEFOLLOWINGSEGMENTSFOURUSERANDKERNELCODEANDDATASEGMENTSSEEPREVIOUSSECTIONATASKSTATESEGMENTTSS,DIFFERENTFOREACHPROCESSORINTHESYSTEMTHELINEARADDRESSSPACECORRESPONDINGTOATSSISASMALLSUBSETOFTHELINEARADDRESSSPACECORRESPONDINGTOTHEKERNELDATASEGMENTTHETASKSTATESEGMENTSARESEQUENTIALLYSTOREDINTHEINIT_TSSARRAYINPARTICULAR,THEBASEFIELDOFTHETSSDESCRIPTORFORTHECPUPOINTSTOTHECOMPONENTOFTHEINIT_TSSARRAYTHEGFLAGISCLEARED,WHILETHELIMITFIELDISSETTO0XEB,BECAUSETHETSSSEGMENTIS236BYTESLONGTHETYPEFIELDISSETTO9OR11AVAILABLE32BITTSS,ANDTHEDPLISSETTO0,BECAUSEPROCESSESINUSERMODEARENOTALLOWEDTOACCESSTSSSEGMENTSYOUWILLFINDDETAILSONHOWLINUXUSESTSSSINTHESECTION”TASKSTATESEGMENT”INCHAPTER3中文翻译第2章存储寻址本章应对寻址技术。幸运地,操作系统单独没有被强迫到物理内存保留今天微处理器包括几条硬件电路使内存管理更加高效率和更加健壮,以便程序错误不可能导致对记忆的不正当的通入在程序之外。在这本书中,我们在本章将详细的讲解8086微处理器寻址存储芯片,并且讲解LINUX如何使用可利用的寻址的电路。您将发现,我们希望,当您在LINUX的最普遍的平台学会执行详细资料后,您在其他平台将更将好了解内存调页的一般理论和如何研究实施。这是三个章节中第一个涉及到内存管理的问题第八章讲解内核如何对自身进行内存分配,而第9章讲解程序线性地址被分配到过程21存储地址程序员偶然地提到0存储地址作为方式访问存储单元的内容。但当涉及到8086微处理器时,我们必须区别以下三种地址逻辑地址包括在机器语言的指示指定操作数的地址或指示。地址的这个类型实现迫使MSDOS和窗口程序员划分他们的程序称为8086体系结构的程序段。每个逻辑地址包括段和从开始表示距离段到实际地址的垂距或位移。线性地址亦称虚拟地址。即可以用于寻址4GB,也就是说用4,294,967,296个存储单元保存的32位无符号整数。线性地址是十六进制记数法通常代表他们的取值范围从0X00000000到0XFFFFFFFF。物理地址在存储芯片上存在寻址存储单元。他们对应于沿微处理器的地址针脚寄发的电信号到记忆总线。物理地址代表作为32位或36位无符号整数。内存管理单元MMU通过对硬件电路的分割,变换一个逻辑地址成为一个线性地址随后,称调页单位的第二条硬件电路变换线性地址成一个物理地址。在多处理器系统中,所有CPU通常共享同一内存这意味着随机存储存储器芯片由这些CPU共同访问。由于读或写操作在随机存储存储器芯片必须连续地执行,硬件电路就必须要求内存判优器嵌入到地址总线和每块TAM芯片之间它的作用是当内存空闲或者内存延迟响应中断时,允许CPU对内存进行访问。如果芯片忙于处理另一个进程的请求。多进程系统使用内存判优器,因为他们包括被称作直接存贮器地址控制器的专业处理器。在多进程系统情况下,因为它有更多输入端,判优器的结构更加复杂。双核处理器,例如,维持一个两位的判优器在每个芯片入口并且要求二个CPU在发出请求之前使用共同的地址总线交换同步消息。从编程的观点,它由硬件电路组成,所以判优器被隐藏了起来。22硬件分割以80286个模式启动,英特尔微处理器用两种不同的方式进行转化一种称为实模式,一种称为保护模式。当保护模式起动时,我们在以下部分将重点关注于地址转换。实模式主要用于维护处理器兼容性在旧模块与操作系统的引导上。221段选择器和分段寄存器一个逻辑地址包括两个部份段标识符和在段之内指定相对地址的垂距。段标识符是16字节数的段选择器,而垂距是32位字节数的空间。我们在本章部分将描述段选择器的领域”快速定位段标识符”。要使它容易迅速检索段选择器,处理器提供唯一的饱含段选择器的分段寄存器这些记数器在内存中称CS,SS,DS,分段寄存器为不同的目的通过保存它的内容,并在以后对它进行恢复。在六个分段寄存器中,其中的三个有特定的功能CS代码段记数器,指向包含程序指令的段。SS堆段记数器,指向包含现行程序堆的段。DS数据段记数器,指向包含全部静态数据的段。剩余的三个分段寄存器是通用的,并且指向提到的任意数据段。CS记数器有另一个重要作用它包括指定当前权限级别的2位领域完全的CPU。价值0DENOTES最高的权限级别,而价值3表示最低一个。LINUX使用仅第0级和第3级,分别称内核模式和用户用户模式。222段描述符每段由描述段特征的8字节段描述符代表。段描述符被存放在全球性描述符表GDT里或在地方描述符表LDT里。通常仅有一个GDT被定义,而每个过程被允许拥有它自己的LDT,如果它需要创建另外的段,除了在GDT存放的那些以外。当前存放在主存中的地址和大小将存放于LDTR控制寄存器,包含GDT的地址和大小在主存储器在GDTR控制寄存器中所包含。图23说明段描述符的格式各种各样的领域在表21解释。有段的几个类型和因而段描述符的几个类型。以下名单显示的是广泛应用于LINUX的类型。代码段描述符表明段描述符提到代码段它在LDT也许包括二者之一。描述符有被设置的S标识非系统段数据段描述符表明段描述符提到数据段它也许包括在GDT或在LDT。描述符有被设置的S标识。堆段通过普通数据段被实施。任务状态段描述符TSSD表明段描述符提到任务状态段TSS即用于的段保存处理器记数器的内容参见部分“任务状态段”在第3章它可能仅出现于GDT。对应的类型领域有BALUE11或9,依靠对应的过程是否在CPU当前执行。S标识的这样这种描述符被设置到0。局部描述符表描述符LDTD表明段描述符提到包含LDT的段它可能仅出现于GDT。对应的类型领域有价值2。S标识的这种描述符被设置到0。下个部分显示8086处理器怎么样判定段描述符是否被存放在GDT或在LDT中的过程。223快速定位段标识符我们召回逻辑地址包括16位段选择器和32位垂距。并且分段寄存器存放在段选择器。如要加快逻辑地址的翻译进入线性地址,8086处理器提供一台另外的NONPROGRAMMABLE记数器不可能由程序员或每一个六位可编程序的分段寄存器设置的记数器。每台NONPROGRAMMABLE记数器包含8字节段描述符描述在前面的部分指定由在段选择器在分段寄存器时候被装载,对应的段描述符从内存被装载入配比的NONPROGRAMMABLECPU记数器。从那时起,提到的段的逻辑地址的翻译可以进行,无需访问在主存储器或LDT存放的GDT处理器可能提到直接地址只包含段描述符的CPU记数器。对GDT或LDT的访问,只有当分段寄存器的内容改变时参见图24。由于段描述符的长度是8个字节,它的相对地址在GDT或LDT里面通过乘段选择器的13位索引领域获得以8。例如,如果GDT是000020000在GDTR记数器存放的取值范围,并且段选择器指定的索引是2,对应的段描述符的地址是00002000028,或者000020010。GDT的第一个词条总被设置为0这样保证逻辑地址用一台空段选择器将被认为无效,因而导致处理器处理无效。在GDT中可以被存放段描述符的最大数字是8,191即,2131。224分割单位图25详细展示出怎么样一个逻辑地址被翻译成一个对应的线性地址。分割单位进行以下操作审查段选择器的钛领域确定那个描述符表存放段描述符这样的空间表明描述符在GDT在分割单位得到GDT的基本的线性地址从GDTR记数器情况下或在活跃LDT在分割单位得到那个基本的线性地址LDT从LDTR记数器中获得情况下从段选择器索引领域计算段描述符的地址乘以8段描述符的大小,并且结果记录到GDTR或LDTR记数器的内容。增加逻辑地址的垂距到段描述符的基本的领域,因而得到线性地址。图表注意,由于NONPROGRAMMABLE记数器联合分段寄存器,只有当改变了分段寄存器,前两次操作需要进行。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备预知维修管理制度
- 设计研发中心管理制度
- 评估外聘专家管理制度
- 诊所药品供货管理制度
- 2025年中国滑动窗行业市场全景分析及前景机遇研判报告
- 调度系统设备管理制度
- 财务风险预警管理制度
- 货代公司人员管理制度
- 货架物品摆放管理制度
- 货车油路直供管理制度
- 24春国家开放大学《家畜环境卫生与设施》形考作业2参考答案
- ETC委托书:ETC卡挂失和补办申请
- 台球馆火灾危险性分析报告
- 《互联网销售高级课件》
- JCT890-2017 蒸压加气混凝土墙体专用砂浆
- 汽车吊、随车吊起重吊装施工方案
- 民国时期服饰简论
- 商业模式画布模板
- 教学设备投标方案(完整技术标)
- 压力管道设计收费标准
- 钢结构质量通病与防治课件
评论
0/150
提交评论