Linux中的内存分配和释放之__alloc_pages()函数分析
在上篇文章的结尾,我们说会在接下来的文章分析分配函数的具体代码,结合我上篇文章说的伙伴机制和冷热区的概念,更好得去理解这个分配过程。好了,我们不再多说了,我们现在开始分析代码吧。
struct page * fastcall __alloc_pages(unsigned int gfp_mask, unsigned int order,struct zonelist *zonelist)
{
const int wait = gfp_mask & __GFP_WAIT;//gfp_mask是申请内存时用到的控制字,这一句就是为了检测我们的控制字里面是
//否有__GPF_WAIT这个属性,我们先来看些宏定义吧,这样你会更清楚的。
//#define GFP_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS| \
__GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \
__GFP_NOFAIL|__GFP_NORETRY|__GFP_NO_GROW|__GFP_COMP)
//#define GFP_ATOMIC (__GFP_HIGH)
//#define GFP_NOIO (__GFP_WAIT)
&
相关文档:
三、VMA和PAGE结构 和mmap函数
1.page 主要成员
atomic_t count;
//这个页的引用数. 当这个 count 掉到 0, 这页被返回给空闲列表.
void *virtual;
//如果页被映射,则表示这页的内核虚拟地址; 否则, NULL.
unsigned long flags;
//描述页状态的一套位标志. 这些包括 ......
许多刚接触Linux的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基于编辑复杂而难以捉摸的文本文件的界面。本文列出七条管理员能够也应该可以做到的步骤,从而帮助他们建立更加安全的Linux服务器,并显著降低他们所面临的风险。
请任何大型机构的网络管理员对Linux和网络操作系统(如Windows NT或No ......
2.设置环境变量。
#vi /etc/profile
在最后面加入
#set java environment
export JAVA_HOME=/usr/java/jdk-1_5_0_02
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
:$JAVA_HOME/lib/mysql-connector-java-3.2.0.jar:$JAVA_HOME/lib/classes12.jar
export PATH=$PATH:$JAVA_ ......
DBA:Linux
面向 DBA 的 Linux Shell 脚本简介
作者:Casimir Saternos
学习一些在 Linux 上安装、运行和维护 Oracle 数据库所需的基本 bash shell 脚本。
本文相关下载:
示例脚本
Oracle 数据库 10g
2005 年 11 月发表
大约 7 年前,Oracle 发布了 Linux 上的第一个商业数据库。从那时起,Oracle、Red Hat 和 ......
M. Tim Jones, 顾问工程师, Emulex Corp.
Linux® 内核使用 GNU Compiler Collection (GCC) 套件的几个特殊功能。这些功能包括提供快捷方式和简化以及向编译器提供优化提示等等。了解这些特殊的 GCC 特性,学习如何在 Linux 内核中使用它们。
GCC 和 Linux 是出色的组合。尽管它们是独立的软件,但是 Linux 完全依靠 ......