首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>其他编程>正文

Linux内存申请应用及方法原理总结

http://www.oklinux.cn  2008-06-13  linuxidc   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

1. 地址空间的管理

物理地址都是有内核管理的, node-->zone-->mem_map-->page, 所有的物理页面都在mem_map数组中的页帧对应, 然后不同的page有分为DMA,normal,highmem三个zone。

Linux内核线性地址空间, 实际上只是低端内存才有线性地址,0---896MB部分。

内核虚拟地址, 低端内存的虚拟地址与线性地址是一样的。 高端内存只有在映射了以后才有虚拟地址

用户空间地址, tast_struct ---> mmap --> mm_struct ---> vm_area_struct

2.Linux内存的申请或使用

物理内存的分配, 在内核中最终都要调用__alloc_pages().它是最核心的分配函数,申请大小最大不超过2的MAX_ORDER次幂,在现在好像最大定义为4MB。

线性地址, kmalloc和get_free_pages,线性地址, 对应的物理内存就是低端内存,kmalloc是基于slab的分配技术, 最大不能超过128KB。

虚拟地址, vmalloc申请, 他只是在内核中建立类似与用户空间的vm_area的一个虚拟内存空间到vmlist中, 最终的物理内存分配还是基于缺页的。

用户空间的虚拟内存, malloc之类的, 最终在内核中都是do_map()和do_brk()。实际上也只是建立了一块虚拟空间,最终的物理内存还是在缺页异常时分配的。

3. Linux内存的交换问题

在page结构和用户层的vm_area_struct结构中, 都包含locked和reserved标志。通过合适的途径设置这些标志, 可以是页面锁存在物理内存中, 不被交换出去。

4. 设备内存可以通过ioremap映射到内核虚拟地址空间, 也可以通过mmap方法映射到用户空间。


上一篇:MySQL远程连接用户实例解   下一篇:Linux系统下巧用tail命令创建自解压tar文件

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux系统下巧用tail命令创建自解压tar文件
·Linux操作系统下一些“绿色软件”的命令行启动
·Linux进程的几个用户id及其转换
·专家预言:PHP将会比Java更受欢迎
·Linux下搭建j2me环境开发手机游戏
·关于Linux下面的一些“绿色软件”的命令行启动
·PHP程序不适用大型系统的九大原因
·GCC编译器学习记
·Linux 下java图像处理报错解决办法
·Linux系统下判断是否正常关机的一个简单方法
·FS2410自带光盘Linux内核编译问题解决
·Linux2.6 模块的两种编译方式
·Linux进入临界去开关中断的几种方式
·Ubuntu下使用substance美化JAVA界面
·Linux多线程socket编程一些心得
·Linux C中也有“ThreadLocal”
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·专家预言:PHP将会比Java更受欢迎
·Linux进程的几个用户id及其转换
·Linux操作系统下一些“绿色软件”的命
·Linux系统下巧用tail命令创建自解压tar
·Linux下搭建j2me环境开发手机游戏
·关于Linux下面的一些“绿色软件”的命
·PHP程序不适用大型系统的九大原因
·GCC编译器学习记
·Linux 下java图像处理报错解决办法
·Linux系统下判断是否正常关机的一个简
·FS2410自带光盘Linux内核编译问题解决
·Linux2.6 模块的两种编译方式
  阅读排行
·开源空间 网络安全工具开发函数库Libne
·Linux socket编程实例:echo服务器程序
·Linux下Qtopia Core 4.3(QT/E)交叉编译
·Linux环境下OpenGL编程学习
·Linux编程时获取当前时间实例解析
·GNU/Linux应用程序编程:用管道进行编
·升级Redhat Linux 9.0内核有感
·Linux系统中限制用户进程CPU及内存占用
·Linux中断处理学习笔记
·解决Linux中Matlab中文乱码问题
·Linux程序设计入门 系统进程的详细介绍
·如何在Ubuntu 7.0上实现C/C++开发环境
·Linux环境下Wine的中文显示以及freetyp
·SUSE Linux中安装Quartus 7.2过程笔记
·Linux下安装g77 fortran complier过程
网摘收藏: