本系列是对 陈莉君 老师 Linux 内核剖析与利用 的学习与记录。讲的十分之好,举荐观看
留此记录,走马观花,可作抛砖引玉
2.1 内存寻址
<font color='6666ff'>数据间断存储和抉择读取思维,是目前咱们应用的简直所有机器运行背地的灵魂</font>
计算机体系结构中的外围问题之一,就是如何无效地进行内存寻址; 内存寻址技术,从某种程度上代表了计算机技术.
"段"的引入:
段形容了一块无限的内存区域,区域的起始地位存在专门的寄存器,也就是段寄存器中.
"保护模式"的引入:
拜访内存时不能间接从段寄存器中取得段的起始地址,而需通过额定的转化或查看
"黄金时代":
Linux内核中的C和汇编语言
- 用的GNU的扩大C
- 汇编语言用的是AT&T的汇编格局与Intel的汇编格局稍有差别
在C语言中,也能够嵌入汇编语言,叫做GCC嵌入式汇编
2.2 段机制
将虚地址转换为线性地址
应用readelf和objdump解析指标文件
MMU: 内存治理单元,和CPU是在一起的.MMU把虚地址转化成物理地址,送给存储器.
(Intel)I386的体系结构
2.3 分页机制
分页在分段之后进行,其作用是实现从线性地址到物理地址的转换
必须在保护模式下能力启动分页性能
在32位零碎上个别默认为4K大小,也能够是2MB或4MB
64位零碎上,能够是4KB,8KB,最大能够是256MB
分页使得每个过程能够领有本人独立的虚拟地址空间
(更多可参考 为什么 Linux 默认页大小是 4KB)
两级页表:
Linux四级分页模式
I386体系结构(下)
2.4 入手实际-将虚拟地址转换成物理地址
页全局目录
所有的过程都共享一个内核页表
最新的CPU曾经反对五级页表
64位零碎中曾经不再用"高级内存"
mknod命令
章节测试:
<1>.操作系统启动时,处理器处于保护模式 (错)
<2>.X86中段的形容蕴含基地址和界线 (错)
<3>.Intel8086的寻址范畴是1MB,80386的寻址范畴是 4GB (对)
<4>.分页机制是在保护模式下开启的。 (对)
<5>.在保护模式下,段的大小能够达到4GB (对)
<6>. CR3寄存器寄存页目录基地址 (对)
<7>.x86的保护模式就是来爱护操作系统的 (错)
<8>. <font color="66ff99">分页的原理使得每个过程能够领有本人独立的虚拟内存空间</font> (对)
<9>. <font color="6666ff">分Linux之所以奇妙地绕过段机制,次要是因为将段的基址设为0,即偏移量等于线性地址</font> (对)
<10>. <font color="ffcc66">在x86中,启用分页机制是通过启用爱护容许位PE而达到的 </font> (错)
x86 保护模式 + 分页管理机制
开启分页机制———《x86汇编语言:从实模式到保护模式》读书笔记44
<11>. 链接当前造成的地址空间是虚拟地址空间。 (对)
<12>. 虚拟地址是程序拜访存储器所应用的逻辑地址 ;线性地址是逻辑地址到物理地址变换之间的中间层;物理地址是每一个字节单元的一个惟一的存储器地址 (对)
<13>. CPU拜访的是虚拟地址。(对)
<14>. 80x86的管制存放机器次要用于分段机制 (错)
<15>. 80x86的分段机制是必选的,分页机制是可选的 (对)
然而现实情况不是的,操作系统大多都用了分页机制
<16>. 保护模式提供了四个特权级,Linux应用了其中的2个,0级对应内核态,2级对应用户态 (错)
段被分为了4个特权级,别离为0-3级,有时候咱们也叫做ring0-ring3,其中,数值越小特权级越高
外围代码和数据所在的段的特权级都比拟高,个别在ring0,而用户程序所在的段的特权级较低,个别在ring3。当低特权级的工作试图在未被容许的状况下拜访高特权级的段时,将会产生惯例爱护谬误。
而处理器是如何辨别所在段的特权级,进而对其进行爱护的呢?这就不得不提到CPL、DPL和RPL三者了。然而在开始之前,咱们须要先理解一下统一代码段和非统一代码段。
保护模式特权级概述
操作系统-保护模式中的特权级
<17>. 页面大小是由操作系统设计者确定的 (错)
<18>. 页面高速缓存是一种硬件机制,专门用来反对地址转换的 (对)
与程序员相干的CPU缓存常识
<19>. intel的保护模式是在80386处理器中首次呈现的 (错)
<20>. 页目录寄存在( )中。 D
A.CR0
B.CR1
C.CR2
D.CR3
管制寄存器(Control Register)(CR0~CR3)用于管制和确定处理器的操作模式以及以后执行工作的个性。
CR0中含有管制处理器操作模式和状态的系统控制标记;
CR1保留不必;
CR2含有导致页谬误的线性地址;
CR3中含有页目录表物理内存基地址,因而该寄存器也被称为页目录基地址寄存器PDBR(Page-Directory Base address Register)。
管制寄存器 CR*
管制寄存器
<21>. 一个32位虚拟地址被分为a、b、c三个域,其中a、b用于一个2级页表零碎,c为页内偏移地址,则页面数为( )。D
A. a+b
B. a×b
C. 2a×b
D. 2a+b
<22>. 以下( )处理器不是冯诺伊曼体系(普林斯顿体系)构造 C(属于哈佛体系)
A. Intel X86
B. AMD
C. ARM
D. MIPS
<23>. 如下缩写,( )是中断描述符表 B
A. GDT
B. IDT
C. LDT
D. RPL
中断描述符表
中断机制和中断描述符表、中断和异样的解决
<23>. “段:偏移量”的模式形容的是( ) B
A. 物理地址
B. 虚拟地址
C. 线性地址
D. 段地址
虚拟地址转换与段宰割
本文由mdnice多平台公布