• Linux驱动之内存访问


    <背景>
    内存会以分页方式组织内存,而且每页大小和计算机体系结构有关系,Linux中每个页都有对应的struct page{}
    与之对应。
                                        
     

    <分配连续的内存>

    a:void *kmalloc(int count,int flags)函数用于从zone_normal区域返回连续内存的分配的地址。
            参数分析:
                    count:分配内存的大小
                    flags:分配内存的方式
                            GPF_KERNEL:进程上下文用来分配内存,内存不够时会导致进程睡眠。
                            GPF_ATOMIC:中断上下文用来分配内存,不会导致进程睡眠,内存不足时候会返回错误。
    注意:kmalloc()函数分配的内存空间会保留原来的数据,所以在内存分配成功后必须进行相应的清零操作,否则会导致意想不到的问题。
    b:void *vmalloc(unsigned long count)
            参数分析:
                    count:分配内存的大小
    注意:vmalloc()常用来分配较大的内存空间,但是消耗的时间更长,并且不能再中断上下文中使用。用该函数分配的内存返回的虚拟地址是连续,但是实际的物理地址不是连续的,因此不能用来分配DM空间。

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    使用sshpass方式实现ssh自动登陆
    MySQL高可用负载均衡
    linux 查看文件夹下的文件个数(当前目录的文件数)
    centos6.5 rsync+inotify实现服务器之间文件实时同步
    Linux shell之数组
    Shell脚本 $0, $#, $*, $@, $?, $$等变量说明
    Linux输出重定向>和>>区别
    EXCEL操作实用学习笔记
    mysql的学习笔记-视图
    mysql学习笔记-索引
  • 原文地址:https://www.cnblogs.com/big-devil/p/8589971.html
Copyright © 2020-2023  润新知