随笔分类 - Kernel
摘要:GNU C的一大特色就是__attribute__机制。__attribute__机制可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 __attribute__语法格式为:__attribute_
阅读全文
摘要:页表:用于建立用户进程空间的虚拟地址空间和系统物理内存(内存、页帧)之间的关联。 向每个进程提供一致的虚拟地址空间。 将虚拟内存页映射到物理内存,因而支持共享内存的实现。 可以在不增加物理内存的情况下,将页换出到块设备来增加有效的可用内存空间。 内核内存管理总是假定使用四级页表。 3.3.1 数据结
阅读全文
摘要:汇编:assembly 猜测:所以这个宏跟汇编有关?! 引用:某些常量宏会同时被C和asm引用,而C与asm在对立即数符号的处理上是不同的。asm中通过指令来区分其操作数是有符号还是无符号的,而不是通过操作数。而C中是通过变量的属性,而不是通过操作符。C中如果要指明常量有无符号,必须为常量添加后缀,
阅读全文
摘要:内核对一致和非一致内存访问系统使用相同的数据结构。在UMA系统上,只使用一个NUMA结点来管理整个系统内存。而内存管理的其他部分则相信他们是在处理一个伪NUMA系统。 3.2.1 概述 内存划分为结点。每个结点关联系统中的一个处理器,在内核中,使用pg_data_t的实例。 各个结点又划分为内存域,
阅读全文
摘要:3.1 概述 内存管理涵盖了许多领域: 内存中物理内存页的管理; 分配大块内存的伙伴系统; 分配小块内存的slab、slub、slob分配器; 分配非连续内存块的vmalloc机制; 进程的地址空间。 Linux内核一般将虚拟地址空间划分为两部分:底部较大的部分用于用户进程,顶部则用于内核。虽然(在
阅读全文
摘要:一段摘自《Linux设备驱动程序》的话: 每种外设都通过读写寄存器进行控制。大部分外设都有多个寄存器,不管是内存地址空间还是I/O地址空间,这些寄存器的访问地址都是连续的。 在硬件层,内存区域和I/O区域没有概念上的区别:它们都通过向地址总线和控制总线发送电平信号进行访问,在通过数据总线读写数据。一
阅读全文

浙公网安备 33010602011771号