AX BX CX DX是CPU内部的通用寄存器中的数据寄存器,数据寄存器一般用于存放参与运算的数据或运算的结果。
AX 称为累加器,常用于存放算术逻辑运算中的 *** 作数,另外所有的I/O指令都使用累加器与外设接口传送信息;
BX 称为基址寄存器,常用来存放访问内在时的基地址;
CX 称为计数寄存器,在循环和串 *** 作指令中用作计数器;
DX 称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址。
obj-m :这个变量是指定你要声称哪些模块模块的格式为 obj-m := <模块名>.omodules-objs :这个变量是说明声称模块modules需要的目标文件 格式要求 <模块名>-objs := <目标文件>
切记:模块的名字不能取与目标文件相同的名字。如在这里模块名不能取成 mymod;
KDIR :这是我们正在运行的 *** 作系统内核编译目录。也就是编译模块需要的环境
M= :指定我们源文件的位置
PWD :这是当前工作路径$(shell )是make的一个内置函数。用来执行shell命令。
一个用户空间的进程,究竟消耗了多少内存。首先要名确,一个application消耗的内存,一定指得是用户空间的内存。
3g - 4g 的kernal space是共享的,每个进程都有自己用户空间0 - 3G,只要通过系统调用就可以陷入kernal space, 就会从x86的3 rings升级到0 rings, 即陷入到内核空间。
app 调driver的iocrtrl, dirver 的ioctrl 内部通过调用kmalloc/vmalloc申请的内存并不计算在内,因为是通过内核的api申请的,属于内核消耗的。
vss、rss、pss、uss
pidof a.out
pmap a.out
vma的来源
在linux铁三角(二)有过叙述,这里不再赘述。这里直接上图把
MMU给CPU发送page fault的时候,在硬件中有2个寄存器
是否RSS就代表一个进程真正的内存消耗呢?
三个进程,其中2个Bash, 1 个 cat.
那么对应三张页表,每当切换进程,存储页表的 基地址就会却换,从而切换到不同的地址空间中。
中间的是内存条,通过三张页表瓜分物理内存。
104进程内存消耗:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)