zoukankan      html  css  js  c++  java
  • 内存申请 GFP_KERNEL GFP_ATOMIC

    在 Linux 内核空间申请内存涉及的函数主要包括 kmalloc()_ _get_free_pages()和vmalloc()

      

    1
    2
    1、kmalloc()和_ _get_free_pages()(及其类似函数)申请的内存位于物理内存映射区域而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单的转换关系
    2、vmalloc()在虚拟内存空间给出一块连续的内存区,实质上,这片连续的虚拟内存在物理内存中并不一定连续,而 vmalloc()申请的虚拟内存和物理内存之间也没有简单的换算关系

    使用 GFP_ KERNEL 标志申请内存时,若暂时不能满足,则进程会睡眠等待页,即会引起阻塞,因此不能在中断上下文或持有自旋锁的时候使用GFP_KERNE 申请内存 

    1
    在中断处理函数、tasklet 和内核定时器等非进程上下文中不能阻塞,此时驱动应当使用 GFP_ATOMIC 标志来申请内存。当使用 GFP_ATOMIC <br>标志申请内存时,若不存在空闲页,则不等待,直接返回

     vmalloc()不能用在原子上下文中,因为它的内部实现使用了标志为 GFP_KERNEL 的kmalloc() 

    from: https://www.cnblogs.com/liushuhe1990/p/9621330.html

  • 相关阅读:
    初涉Django与MySQL连接
    Mysql数据库操作常用命令
    解决远程登录MYSQL数据库
    全集网影片下载
    LR学习资料
    LR性能测试说明
    fiddler
    Axure(快速原型设计工具)
    httpwatch
    Appscan(安全性测试工具)
  • 原文地址:https://www.cnblogs.com/aspirs/p/13981641.html
Copyright © 2011-2022 走看看