Linux操作系统.ppt
《Linux操作系统.ppt》由会员分享,可在线阅读,更多相关《Linux操作系统.ppt(67页珍藏版)》请在三一办公上搜索。
1、,Linux操作系统,2007年秋,内存寻址,Linux 内核完全剖作者:赵炯 编著出版社:机械工业出版社ISBN:7111180321出版日期:2006-1-1,内存寻址,内存是指一组有序字节组成的数组,每个字节有唯一的内存地址。内存寻址则是指对储存在内存中的某个指定数据对象的地址进行定位。这里数据对象是指储存在内存中的一个指定数据类型的数值或字串。80X86支持多种数据类型:1字节、2字节(1个字)或4字节(双字或长字)的无符号整型数或带符号整型数,以及多字节字符串等。通常字节中某一比特位的定位或寻址可以基于字节来寻址,因此最小数据类型的寻址是对l字节数据(数值或字符)的定位通常内存地址从
2、0开始编址,对于80X86 CPU来說,其地址总线宽度为32字节,因此一共有232个不同物理地址。即内存物理地址空间有4G,总共可以寻址4G字节的物理内存,内存寻址,对于80X86 CPU,一条指令主要由操作码(Opcode)和操作对象即操作数(Operand)构成。操作数可以位于一个寄存器中,也可以在内存中。若要定位内存中的操作数,就要进行内存寻址。80X86有许多指令的操作数涉及内存寻址,並且针对所寻址物件数据类型的不同,也有很多不同的寻址方案,内存寻址,为了进行内存寻址,80X86使用了一种称为段(Segment)的寻址技术。这种寻址技术把内存空间分成一个或多个称为段的线性区域,从而对内
3、存中一个数据对象的寻址就需要使用一个段的起始地址(即段地址)和一个段內偏移地址两部分构成。段地址部分使用16字节的段选择符号指定,其中14位可以选择214次方即16384个段。段內偏移地址部分使用32字节的值来指定,因此段內地址可以是0到4G。即一个段的最大长度可达4G。程序中由16字节的段和32位的偏移构成的48位地址或长指针称为一个逻辑地址(虛拟地址)。它唯一确定了一个数据对象的段地址和段內偏移地址。而仅由32位偏移地址或指针指定的地址是基于当前段的对象地址。,内存寻址,80X86为段部分提供了6个存放段选择符号的段寄存器:CS、DS、ES、SS、FS和GS。其中CS总是用于寻址代码段,而
4、堆栈段则专门使用SS段寄存器。在任何指定时刻由CS寻址的段称为当前代码段。此时EIP寄存器中包含了当前代码段內下一条要执行指令的段內偏移地址。因此要执行指令的地址可表示成CS:EIP。后面将说明的段间控制转移指令可以被用来为CS和EIP代入新值,从而可以把执行位置政变到其他的代码段中,这样就实现了在不同段中程序的控制传递。由段寄存器SS寻址的段称为当前堆栈段。堆栈顶端由ESP寄存器內容指定。因此堆栈顶端地址是SS:ESP。另外4个段寄存器是通用段寄存器。当指令中沒有指定所操作数据的段时,那么DS将足预设的数据段寄存器。,内存寻址地址变换,任何完整的内存管理系统都包含两个关键部分:保护和地址变换
5、。提供保护措施是可以防止一个任务存取另一个任务或操作系统的内存区域。地址变换能够让作业系统在给任务分配内存时具有灵活性,并且因为我们可以让某些物理地址不被任何逻辑地址所映射,所以在地址变换过程中同时也提供了内存保护功能,内存寻址地址变换,正如上面提到的,电脑中的物理内存是字节的线性组合,每个字节具有一个唯一的物理地址;程序中的地址是由两部分构成的逻辑地址。这种逻辑地址并不能直接用于存取物理内存,而需要使用地址变换机制将它变换或映射到物理内存地址上。内存管理机制即用于将这种逻辑地址转换成物理内存地址。,内存寻址地址变换,为了減少确定地址变换所需要的信息,变换或映射通常以内存块作为操作单位。分段机
6、制和分页机制是两种广泛使用的地址变换技术。分段和分页操作都使用驻留在内存中的表来指定它们各自的变换信息。这些表只能由操作系统存取,以防止应用程序擅自修改。,内存寻址地址变换,80X86在从逻辑地址到物理地址变换行程中使用了分段和分页两种机制。第一阶段使用分段机制把程序的逻辑地址变换成处理器可寻址内存空问(称为线性地址空间)中的地址。第二阶段使用分页机制把线性地址转换为物理地址在地址变换行程中,第一阶段的分段变换机制总是使用的,而第二阶段的分页机制则是供选用的。如果沒有启用分页机制,那么分段机制产生的线性地址空间就直接映射到处理器的物理地址空间上。物理地址空间定义为处理器在其地址总线上能够产生的
7、地址范围。,内存寻址地址变换,逻辑地址(虚拟地址)到物理地址的变换过程,内存寻址分段机制,分段提供了隔绝各个代码、数据和堆栈区域的机制,因此多个程序(或任务)可以执行在同一个处理器上而不会互相干扰。分页机制为传统需求页、虛拟内存系统提供了实现机制。其中虛拟内存系统用于实现程序代码按要求被映射到物理内存中。分页机制也能用于提供多任务间的隔离措施。,内存寻址分段机制,分段提供了一种机制,用于把处理器可寻址的线性地址空间划分成一些较小的称为段的受保护地址空间区域。段可以用来存放程序的代码数据和堆栈,或者用来存放系统数据结构(例如LDT)。如果处理器中有多个程序或任务在执行,那么每个程序可分配各自的一
8、套段。此时处理器就可以加強这些段之间的界限,并且确保一个程序不会透过存取另一个程序的段而干扰程序的执行。分段机制还允许对段进行分类。这样,对特定类型段的操作能够受到限制。,内存寻址分段机制,一个系统中所有使用的段都包含在处理器线性地址空间中。为了定位指定段中的一个字节,程序必须提供一个逻辑地址。逻辑地址包括一个段选择符和一个偏移量。段选择符是一个段的唯一标识。另外,段选择符提供了段描述符表(例如全域描述符表GDT)中一个数据结构(称为段描述符)的偏移量。每个段都有一个段描述符。段描述符指明段的大小、存取许可权和段的特权级、段类型以及段的第l个字节在线性地址空间中的位置(称为段的基地址)。逻辑地
9、址的偏移量部分加段的基地址上就可以定位段中某个字节位置。因此基地址加上偏移量就形成了处理器线性地址空间中的地址。,内存寻址分段机制,线性地址空间与物理地址空间具有相同的结构。相对于二维的逻辑地址空间来说,它们两者都是一维地址空间。虛拟地址(逻辑地址)空间可包含最多16K的段,而每个段最长可达4GB,使得虛拟地址空问容量达到64T。线性地址空间和物理地址空间都是4GB(2)。实际上,如果禁用分页机制,那么线性地址空间就是物理地址空间。,逻辑地址、线性地址和物理地址之间的转换,内存寻址分页机制,因为多任务系统通常定义的线性地址空间都要比其含有的物理内存容量大得多,所以需要使用某种“虚拟化”线性地址
10、空间的方法,即使用虚拟储存技术虚拟储存是一种内存管理技术,使用这种管理技术可让程序人员产生内存空间要比电脑中实际内存容量大很多的错觉。利用这种错觉,我们可以随意编制大型程序而无考虑实际物理内存究竟有多少,内存寻址分页机制,分页机制支援虛拟储存技术。在使用虛拟储存的环境中,大容量的线性地址空间需要使用小块的物理内存(RAM或ROM)以及某些外部储存空间(例如大容量硬盘)来模拟。当使用分页时,每个段被划分成页面(通常每页为4KB大小),页面会被储存于物理内存中或硬盘上。操作系统通过维护一个页目录和一些页表来留意这些页面。当程序(或任务)试图存取线性地址空间中的一个地址位置时,处理器就会使用页目录和
11、页表把线性地址转换成一个物理地址,然后在该内存位置上执行所要求的操作(读或写)。,内存寻址分页机制,如果当前被存取的页面不在物理内存中,处理器就会中断程序的执行(通过产生一个页错误异常)。然后操作系统就可以从硬盘上把该页面读入物理内存中,并继续执行刚才被中断的程序。,内存寻址保护,80X86支持两类保护。其一是透过给每个任务不同的虛拟地址(逻辑地址)空间来完全隔离各个任务。这是通过给每个任务逻辑地址到物理地址不同的变换映射来做到另一个保护机制对任务进行操作,以保护操作系统内存段和处理器特殊系统寄存器不被应用程序存取,内存寻址保护,任务之间的保护保护的一个重要方面是提供应用程序各任务之间的保护能
12、力。80X86使用的方法是通过把每个任务放置在不同的虛拟地址空间中,并给予每个任务不同的逻辑地址到物理地址的变换映射。每个任务中的地址变换功能被定义成一个任务中的逻辑地址映射到物理内存的一部分区域,而另一个任务中的逻辑地址映射到物理内存中的不同区域中。这样,因为一个任务不可能生成能够映射到其他任务逻辑地址对应使用的物理内存部分,所以所有任务都被隔绝开了。只需给每个任务各自独立的映射表,每个任务就会有不同的地址变换函数。在80X86中,每个任务都有自己的段表和页表。当处理器切換并执行一个新任务时,任务切換的关键部分就是切換到新任务的变换表。,内存寻址保护,任务之间的保护通过在所有任务中安排具有相
13、同的虛拟到物理地址映射部分,并且把操作系统储存在这个公共的虛拟地址空间部分,操作系统可以被所有任务共用。这个所有任务都具有的相同虛拟地址空间部分被称为全局地址空间(Global address space)。这也正是现代Linux操作系统使用虛拟地址空间的方式。每个任务唯一的虛拟地址空间部分被称为局部地址空间(Local address space)。局部地址空间含有需要与系统中其他任务区別开的私有的代码和数据,由于每个任务中具有不同的局域地址空间,因此两个不同任务中对相同虛拟地址处的引用将转换到不同的物理地址处。这使得操作系统可以给与每个任务的内存相同的虛拟地址,但仍然能隔绝每个任务。另一方
14、面,所有任务在全局地址空间中对相同虛拟地址的引用将被转换到同一个物理地址处。这让公共代码和数据(例如操作系统)的共用有了支援。,内存寻址保护,特权级保护在一个任务中,定义了4个执行特权级(Privilege Levels),用于依据段中含有数据的敏感度以及任务中不同程序部分的受信程度,来限制对任务中各段的存取。最敏感的数据被赋予了最高特权级,它们只能被任务中最受信任的部分存取。不太敏感的数据被赋予较低的特权级,它们可以被任务中较低特权级的代码存取。特权级用数字0到3表示,0具有最高特权级,而3则是最低特权级。每个内存段都与一个特权级相关联。这个特权级限制具有足够特权级的程序来存取一个段。我们知
15、道,处理器从CS暂存器指定的段中取得和执行指令,当前特权级(Current Privilege Level),即CPL就是当前活动代码段的特权级,并且它定义了当前所执行程序的特权级別。CPL确定了哪些段能够被程序存取。,内存寻址保护,特权级保护每当程序企图存取一个段时,当前特权级就会与段的特权级进行比较,以确定是否有存取许可。在给定CPL执行的一个程序被允许存取同级別的数据段,或者低级別段。任何对高级別段的参照引用都是非法的,并且会引发一个异常来通知操作系统。每个特权级都有自己的程序堆栈,以避免使用共用堆栈带来的保护问题。当程序从一个特权级切換到另一个特权级上执行时,堆栈段也随之改換到新级別的
16、堆栈中。,内存寻址分段机制,分段机制可用于实现多种系统设计。使用分段机制能够建立一个可同时可靠地执行多个程序(或任务)的具有稳固操作环境的多段模型。多段模型能够利用分段机制全部功能提供由硬体增強的代码、数据结构、程序和任务的保护措施。通常,每个程序(或任务)都使用自己的段描述符号表以及自己的段。对程序来说段能够完全是私有的,或者是程序之间共用的,对所有段以及系统上执行程序各自执行环境的存取都由硬体控制。,内存寻址分段机制,访问检查不仅能够用来保护对段界限以外地址的引用,而且也能用来在某些段中防止执行不允许的操作。例如,因为代码段被设计成是只读形式的段,因此可以用硬体来防止对代码段执行写操作。段
17、中的访问权限信息也可以用来设置保护环或级別。保护级別可用于保护操作系统程序不受应用程序非法存取。,内存寻址段的定义,保护模式中80X86提供了4GB的物理地址空间。这是处理器在其地址总线上可以寻址的地址空间。这个地址空间是平坦的,地址范围从0到0 xFFFFFFFF。这个物理地址空间可以映射到读写内存、只读内存以及内存映射I/O中。,内存寻址段的定义,80386虛拟地址空问中的虛拟地址(逻辑地址)由一个段部分和一个偏移部分构成。段是虛拟地址到线性地址转换机制的基础。每个段由三个参数定义:1段基地址(Base address),指定段在线性地址空间中的开始地址。基地址是线性地址,对应于段中偏移0
18、处。2段限长(1imit),是虛拟地址空间中段內最大可用偏移位置。它定义了段的长度。3 段属性(Attributes)指定段的特性。例如该段是否可读、可写或可作为一个程序执行;段的特权级等,内存寻址段的定义,段限长定义了在虛拟地址空间中段的大小。段基址和段限长定义了段所映响的线性地址范围或区域。段內0到limit的地址范围对应线性地址中范围base到 base+limit。偏移量大于段限长的虛拟地址是无意义的,如果使用则会导致异常。另外,若存取一个段并沒有得到段属性许可则也会导致异常。例如,如果你试图写一个只读的段,那么80386就会产生一个异常。另外,多个段映射到线性地址中的范围可以部分重叠
19、或覆盖,甚至完全重叠,见后图所示。在本文章中介绍的 Linux 0.1x系统中,一个任务的代码段和数据段的段限长相同,并被映射到线性地址完全相同而重叠的区域上。,内存寻址段的定义,内存寻址段的定义,段的基地址、段限长以及段的保护属性储存在一个称为段描述符(Segment Descriptor)的结构项中。在逻辑地址到线性地址的转换映射行程中会使用这个段描述符。段描述符保存在内存中的段描述符表(Descriptor table)中。段描述符表是包含段描述符号项的一个简单数组。前面介绍的段选择符即用于通过指定表中一个段描述符的位置来指定相应的段。,内存寻址段的定义,即使利用段的最小功能,使用逻辑地
20、址也能存取处理器地址空间中的每个字节。逻辑地址由16字节的段选择符号和32位的偏移量组成,见后图所示。段选择符号指定字节所在的段,而偏移量指定该字节在段中相对于段基底地址的位置。处理器会把每个逻辑地址转换成线性地址。线性地址是处理器线性地址空间中的32字节地址。与物理地址空间类似,线性地址空问也是平坦的4GB地址空间,地址范围从0到0 xFFFFFFFF。线性地址空间中含有为系统定义的所有段和系统表。,内存寻址段的定义,逻辑地址到线性地址的变化过程,内存寻址段的定义,为了把逻辑地址转换成一个线性地址,处理器执行以下操作:使用段选择符号中的偏移值(段索引)在GDT或LDT表中定位相应的段描述符号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统
链接地址:https://www.31ppt.com/p-4850064.html