登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 9|回复: 1

内核内存管理与并发同步

[复制链接]

4

主题

4

回帖

13

积分

新手上路

积分
13
发表于 昨天 10:56 | 显示全部楼层 |阅读模式
内核内存分为分页内存与非分页内存。分页内存可以被换页到磁盘,只能在 PASSIVE_LEVEL 使用;非分页内存常驻物理内存,DISPATCH_LEVEL 中断上下文必须分配非分页内存。使用ExAllocatePool2分配内核内存,内核开发必须注意内存泄漏,内核内存泄漏无法依靠进程退出自动回收。
MDL(内存描述符列表)用来描述用户态缓冲区对应的物理页面。做 I/O 操作、DMA 硬件访问时,需要用 MDL 锁定用户缓冲区,防止页面在读写过程中被换出,避免内存访问异常。
内核同步原语:自旋锁、互斥体、事件、信号量。自旋锁适合高 IRQL 短时间保护共享数据,自旋锁持有期间不能休眠;互斥体只能在 PASSIVE_LEVEL 使用,会阻塞线程。多核环境下共享数据如果缺少同步保护,会出现数据竞争,随机蓝屏。

0

主题

2

回帖

3

积分

新手上路

积分
3
发表于 昨天 11:10 | 显示全部楼层
哥顶的不是帖子,是寂寞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2026-9-21 00:53 , Processed in 0.686290 second(s), 28 queries .

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表