设为首页 加入收藏

TOP

ARM Linux基本数据类型综合应用实例
2014-11-24 08:17:55 来源: 作者: 【 】 浏览:1
Tags:ARM Linux 基本 数据 类型 综合 应用 实例

本文章将带读者走进Linux内核,亲身感受一下这个优秀的操作系统Linux的具体搭建过程。其实读者可以看到,若将这一高楼大厦分解细分为砖瓦,那么每一部分其实也并不是那么难的。


在Linux内核中,直接使用基本数据类型来构建的关键数据结构微乎其微,一般都是将基本数据类型组合起来,构成构造数据类型(如结构体等),来组成其关键的数据结构。


本文就以Linux中内存管理中的物理页为例进行讲解。


1、内存页管理机制


内存把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单位通常为字,但是,内存管理单元(MMU,管理内存并把虚拟地址转换为物理地址的硬件)通常是以页为单位进行处理的。也正因为如此,MMU以页的大小为单位来管理系统中的页表。因此,从虚拟内存的角度来看,页就是最小分配单位。


不同的体系结构,所支持的页大小也不尽相同,读者可以查看/include/asm../page.h中的定义,如下所示:


/*include/asm-i386/page.h*/


/*PAGE_SHIFT决定页大小,页大小为4KB*/


#define PAGE_SHIFT 12


/*include/asm-alpha/page.h*/


/*页大小为8KB*/


#define PAGE_SHIFT 13


/*include/asm-arm/page.h*/


/*页大小为4KB*/


#define PAGE_SHIFT 12


/*include/asm-arm26/page.h,arm2600*/


/*若定义了页大小为16KB*/


#if defined(CONFIG_PAGESIZE_16)


#define PAGE_SHIFT 14 /*16KB*/


/*其他情况页大小为32KB*/


#else /*default*/


#define PAGE_SHIFT 15 /*32KB*/


#endif


/*include/asm-ppc/page.h*/


/*页大小为4KB*/


#define PAGE_SHIFT 12


这里的PAGE_SHIFT是用于决定页大小的,将它的数值进行以2为底取幂运算,所得到的结果就是页得大小,比如2的12次方为4K。可以看到,不同的体系结构的页大小是不同的,有些体系结构甚至可以支持多种不同的页大小,在ARM中,就可以支持3种页大小,其中S3C2410的页大小为4KB。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇解决Android平台移植ffmpeg的一揽.. 下一篇Java反射之调用构造方法and操作数..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)