什么是wired memory

Mac或BSD有一个所谓的wired memory,也不是什么神秘东西,只是说分派的这类内存,在有效期内是不可以被交换到Disk上去的,以保证对速度等要求较高的处理,可以使用IOMalloc(IOFree)以及kmem_alloc_wired(kmem_free)来分派Wired memory。

在Mach的VM中,有一种称为wired memory的概念。它指那些:non-pageable,虚拟内存系统不会进行交换或者移动的内存。针对wired memory的调用有:kmem_alloc,kmem_malloc。

参与I/O传输的内存必须wired down,以防止硬件正在访问的数据的物理位置发生变化。在I/O kit中,当用来描述内存的内存描述符为I/O准备内存(这发生在prepare方法被调用时)时,内存是wired的。

与之对应的概念是pageable的memory,那些页面是可以被VM系统进行交换和移动的。针对它们的调用有:kmem_alloc_pageable,kmem_alloc_wait。

kmem_free释放wired memory以及通过kmem_alloc_pageable分配的pageable memory。kmem_free_wakeup释放kmem_alloc_wait申请的内存并wakeup那些正在通过kmem_alloc_wait申请内存的process。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值