当前位置:  技术问答>linux和unix

用户程序下如何申请到一段在物理地址上是连续的空间。

    来源: 互联网  发布时间:2016-05-29

    本文导语:  大概要申请>10000字节的连续物理空间。 我试过了定义全局变量,局部变量,或者用malloc都不行。(用malloc大概能申请到1500-3000字节物理地址连续的空间) | 用户空间应用程序很难申请到大块...

大概要申请>10000字节的连续物理空间。
我试过了定义全局变量,局部变量,或者用malloc都不行。(用malloc大概能申请到1500-3000字节物理地址连续的空间)

|
用户空间应用程序很难申请到大块的物理上连续的空间,连续的最多是一个物理帧。所以,建议你最好做一个小的driver(字符设备即可)来实现这个功能,因为在内核空间(driver里)就有很多方法来申请到物理上连续的空间,你在driver里面申请好之后,将其转化为虚拟地址,然后提供一个ioctl接口来给应用程序申请连续空间使用即可。

事实上,有些系统中就是这么实现的,比如TI DaVinci平台的CMEMK驱动就是一个申请物理上连续空间的driver,因为DSP处理的数据块地址是要求物理上连续的,它没有内存管理器,该驱动就是满足这一需求的。


如果需要这样一个驱动,可以EMAIL给我,我可以给你一个参考: zuohuiwang(AT)163.com!

GOOD LUCK!

|
应用层申请到得都是虚拟地址连续的空间,貌似没法申请长度大于4096的物理地址连续的空间。不过核心倒是可以用 page_alloc 来申请!

|
一般说来,应用程序不能直接请求物理内存而是虚拟内存。虚拟内存只有在通过内核的页故障异常处理才能分配并映射物理内存,而这种映射是以页长度为单位的。
如果有内核模块的帮助,实现起来就比较容易。在内核中也只能通过请求DMA内存才能真正申请到物理连续的内存;然后用remap
的方式将该物理内存直接暴露给用户程序!

    
 
 

您可能感兴趣的文章:

  • linux用户态内存的物理地址问题?
  • 请问驱动程序里怎么得到用户空间地址对应的物理地址?
  • 用户进程有自己独立的地址空间,内核线程没有自己的地址空间 该怎样理解: ?
  • asp.net获取用户ip地址公共类
  • JSP 里面 怎么取得用户 的IP地址???有没有什么函数可以做到?
  • 正则表达式检测用户输入的email地址是否合法
  • freebsd下装的pureftpd,怎么开匿名用户?怎么限制它的ip地址?
  • 用jsp那个函数可以得到用户的IP地址,急救。谢谢!!!!!
  • Unix下如何查看用户从那个IP地址登录的
  • 如何用java得到用户的mac地址
  • 嵌入式liunx设备中如何由用户设置IP地址?
  • PHP根据IP地址限制用户访问
  • 如何在用户进程中获取当前进程的task_struct结构地址?
  • php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
  • 有没有办法获取远程用户的MAC地址?
  • php获得用户ip地址的比较不错的方法
  • 想知道该如何设置才能使 netterm 进行自动登录 ?我查了资料,但无果。 有人给我答案:{不要输入用户名和密码的那种功能?选择地址簿-〉选择登录巨集文件(我用的是中文版,不知道是谁翻得这么烂)。选一个类似的文件改改就是了。}我还是不明白如何操作 ?
  • JSP自定义标签获取用户IP地址的方法
  • LNAMP架构中后端Apache获取用户真实IP地址的2种方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问 如何用user用户启动一个程序(或者脚本) 在这个程序(或脚本)里将用户转为root 然后用root执行下面的代码
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 我一个服务器同时接受到很多个用户的认证请求(得到用户名和密码),然后把用户名密码发给认证服务器。因为是远程认证,所 iis7站长之家
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • 怎样在程序中将普通用户切换成root用户
  • 【Unix C】root用户执行其他用户的程序
  • 怎样让我的程序能像mysql一样运行后有一个mysql>的提示符等待用户输入并解析用户输入的数据然后执行操作?
  • (在线等)怎么在切换用户后。仍然执行root用户可执行的程序呢?
  • 怎样在程序中从普通用户切换到root用户?
  • 实现同样的功能,内核程序和用户程序差别效率上差别大么?
  • 内核空间能否调用用户空间程序?
  • sco unixware7.1.3 用telnet登录上来后,运行本用户下的一个程序,这个程序就做了共享内存的事
  • 请教怎么在程序中转换用户?
  • 用户程序的ioctl是怎么和驱动程序中的ioctl实现联系
  • 程序在普通用户下执行,无法发送消息
  • (毕业设计呀,好惨!)两个JBulider应用程序(未打包)之间互相传递信息(比如说用户名,用户密码,登陆日期等等),除了用Socket,还有其他方法吗?(
  • 如何在单用户模式下,开机就启动自己的应用程序?
  • 请问模块如何与用户程序进行数据交换
  • 手动执行应用程序ok,但用crontab(在正确的用户名下)运行应用程序就报-12545(tns连接错误),怎么解决?
  • 用户态程序如何和多个内核模块进行同时数据交互??
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 概念混乱,请专人解释:实际用户ID,有效用户ID,设置用户ID
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • proftp中,如何让FTP的用户是非Linux用户,只是FTP用户?
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • 我装的是RED HAT LINUX 8.0,我在root用户中把root用户删除了,怎办也进不了root用户
  • 怎样让普通用户拥有超级用户的权限,是把普通用户的组设为root组吗?具体怎么做,急死了
  • 我一个服务器同时接受到很多个用户的认证请求(得到用户名和密码),然后把用户名密码发给认证服务器。因为是远程认证,所
  • 我装了中软Linux3.1,启动时要求输入用户名和口令,但安装时并没有提示指定用户名,所以现在输入用户名老是错误,不能进入系统,请问该怎


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3