新闻  |   论坛  |   博客  |   在线研讨会
armlinux演艺---第十回
tongxin | 2009-04-13 17:29:33    阅读:1016   发布文章

书接上回,
%A 下面是init_mm的初始化,init_mm定义在/arch/arm/kernel/init_task.c:
%A struct mm_struct init_mm = INIT_MM(init_mm);
%A
%A 从本回开始的相当一部分内容是和内存管理相关的,凭心而论,操作系统的
%A 内存管理是很复杂的,牵扯到处理器的硬件细节和软件算法,
%A 限于篇幅所限制,请大家先仔细读一读arm mmu的部分,
%A 中文参考资料:linux内核源代码情景对话,
%A linux2.4.18原代码分析。
%A
%A init_mm.start_code = (unsigned long) &_text;
%A 内核代码段开始
%A init_mm.end_code = (unsigned long) &_etext;
%A 内核代码段结束
%A init_mm.end_data = (unsigned long) &_edata;
%A 内核数据段开始
%A init_mm.brk = (unsigned long) &_end;
%A 内核数据段结束
%A
%A 每一个任务都有一个mm_struct结构管理任务内存空间,init_mm
%A 是内核的mm_struct,其中设置成员变量* mmap指向自己,
%A 意味着内核只有一个内存管理结构,设置* pgd=swapper_pg_dir,
%A swapper_pg_dir是内核的页目录,在arm体系结构有16k,
%A 所以init_mm定义了整个kernel的内存空间,下面我们会碰到内核
%A 线程,所有的内核线程都使用内核空间,拥有和内核同样的访问
%A 权限。
%A
%A memcpy(saved_command_line, from, COMMAND_LINE_SIZE);
%A //clear command array
%A
%A saved_command_line[COMMAND_LINE_SIZE-1] = ‘
%A
%A
%A
%A 全文结束  
%A
%A%A
%A

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
最近文章
寂寞如雪
2009-05-19 19:01:18
夜色花
2009-05-19 18:56:22
没有爱可以重来
2009-05-19 18:54:59
推荐文章
最近访客