`
isiqi
  • 浏览: 16704527 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Kfree会睡眠吗?

 
阅读更多

回答:不会!

kmalloc会。

所以,不能在spinlock环境下调用kmalloc。

http://lkml.indiana.edu/hypermail/linux/kernel/0411.2/1863.html

分享到:
评论

相关推荐

    Linux内核笔试经典30题(带答案)

    信号量是一种睡眠锁,如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。 2. Linux中的用户模式和内核模式是什么含意?Linux机器上的CPU要么处于受信任的内核模式,要么处于...

    linux c内存分配函数介绍

    接下来,让我们来看一下kmalloc和kfree函数的用法和区别。kmalloc函数原型为#include<linux/slab.h>Void *kmalloc(size_t size, int flags);其中,第一个参数是要分配的块的大小,第二个参数是分配标志(flags),它...

    linux 内核同步机制

    - `kfree` - `add_timer` - `del_timer` - `local_irq_disable` - `local_bh_disable` - `preempt_disable` #### 五、结论 Linux内核中的同步机制对于确保系统的稳定性和性能至关重要。通过对各种内核过程的不同...

    嵌入式岗位笔试面试真题讲解4-1.pdf

    - 功能:类似于kmalloc(),但在分配后会将内存内容清零。 - 释放函数:kfree()。 - **vmalloc()**: - 功能:申请虚拟地址连续的内存空间,物理地址可能不连续。 - 释放函数:vfree()。 - 特点:可以睡眠,不...

    linux内核验证程序的编写实例.pdf

    - `GFP_KERNEL`:用于标准的内核内存分配,可能允许系统在必要时进入睡眠状态,等待足够的内存资源。 - `GFP_USER`:专门用于为用户空间页面分配内存,同样可能允许睡眠。 - `GFP_HIGHUSER`:与`GFP_USER`类似,...

    ( 内存与I/O操作)嵌入式基础

    例如,如果使用VMware虚拟机系统,并且分配了160MB的内存,那么3GB到3G+160MB这片内存会被映射到物理内存。 - **vmalloc区域**:在物理内存映射区之后,紧接着的是vmalloc区域。对于160MB的系统,vmalloc_start的...

    驱动程序设计实验报告

    当消息的优先级高于console_loglevel变量设置的值时,消息会被打印到控制台,同时,如果syslogd和klogd守护进程运行,消息会被写入/var/log/messages文件。 在驱动程序中,注册字符设备的关键步骤是调用register_...

    内存读写驱动的源码

    这通常通过调用操作系统的内存管理函数来实现,如`kmalloc()`用于分配内存,`kfree()`用于释放内存。在分配时,驱动需要考虑内存的大小、对齐需求以及内存类型(如连续或分散分配)。 2. **页表操作**:在现代操作...

    Linux内核机制学习笔记带源码及代码注释.7z

    - `spin_lock()` 和 `spin_unlock()` 用于保护短时、非睡眠的临界区,而`mutex_lock()` 和 `mutex_unlock()` 则适用于可能需要睡眠的情况。 8. **模块化设计**: - Linux内核允许模块化加载,使得内核可以根据...

    linux_char_device_driver_programming.rar_linux driver

    - 在内核空间,使用`kmalloc()`和`kfree()`进行动态内存分配和释放,确保内存安全。 7. **中断处理和轮询模式** - 中断驱动常用于实时性要求高的设备,设备发送信号给CPU。而轮询模式适用于低速设备,驱动程序...

    kmalloc()和vmalloc()的区别

    这意味着如果当前没有足够的内存可用,系统会挂起当前进程去调度其他进程运行,直到有足够的内存释放出来。 - **GFP_ATOMIC**:在进程上下文中分配内存时,如果不能阻塞,则使用此标志。通常用于中断处理程序或软...

    LINUX设备驱动程序(第三版).

    15. **电源管理**:随着移动设备的发展,驱动还需要考虑电源管理,如睡眠模式、节电策略等。 通过对《LINUX设备驱动程序(第三版)》的学习,开发者能够掌握Linux系统下的设备驱动开发技能,从而为各种硬件设备编写...

    linux内核代码结构图

    `vmalloc`、`kmalloc`、`get_free_pages`等函数用于分配内存,`kfree`、`free_pages`用于释放。页表管理是内存管理的关键,涉及`pgd_t`、`pmd_t`等数据结构。 6. **设备驱动**: `drivers`目录下包含各种硬件设备...

    Linux_kernel_coding_style.rar_linux coding style_style

    使用`kmalloc()`和`kfree()`进行动态内存分配和释放,`get_free_pages()`用于分配连续的大块内存。分配内存后,务必检查返回值,确保操作成功。 11. **锁机制**:Linux内核中,同步原语如自旋锁(spinlock)、信号...

    linux 添加字符设备驱动程序

    可以使用`kmalloc()`和`kfree()`函数进行动态内存分配和释放。 4. **中断处理**:对于某些硬件,驱动程序需要处理中断。中断处理函数通常在中断上下文中运行,应尽量快速且不睡眠。 5. **设备初始化和注销**:驱动...

    LINUX内核经典面试题

    自旋锁用于保护短暂的、不会引起阻塞的临界区,而信号量则允许任务在无法获取锁时进入睡眠状态,适合处理可能长时间持有锁的情况。 2. 用户模式与内核模式:用户模式是应用程序运行的环境,权限受限,无法直接访问...

    linux驱动开发

    - **kmalloc和kfree**:用于分配和释放非连续的内存区域。 - **缓存管理**:利用内核缓存提高数据访问速度。 ##### 6. 中断处理 - **中断请求**:使用`request_irq`函数注册中断处理函数。 - **中断上下文**:中断...

    操作系统原理Linux篇

    Linux进程的状态主要包括:运行(Running)、可中断的睡眠状态(Sleeping Interruptible)、不可中断的睡眠状态(Sleeping Uninterruptible)、僵尸(Zombie)等。 **4.3 Linux的进程调度** Linux采用多级反馈队列调度算法...

Global site tag (gtag.js) - Google Analytics