关于后端:Linux内核分析与应用2内存寻址

44次阅读

共计 2269 个字符,预计需要花费 6 分钟才能阅读完成。

本系列是对 陈莉君 老师 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>. 80×86 的管制存放机器次要用于分段机制 (错)

<15>. 80×86 的分段机制是必选的,分页机制是可选的 (对)

然而现实情况不是的, 操作系统大多都用了分页机制

<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 多平台公布

正文完
 0