注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

内存盘  

2015-02-28 10:59:39|  分类: 原理分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
内存盘即RAMDISK,就是用内存代替存储介质,把相关的磁盘读写改成内存读写就可以实现。
速度上电子的肯定比机械结构的快。主要用于临时文件的暂存。
原理简单,也有相关的一些源码可供参考,如SYSLINUX的memdisk,微软的RAMDISK源码

1、SYSLINUX的memdisk的原理见memdisk.txt
MEMDISK simulates a disk by claiming a chunk of high memory for the
disk and a (very small - 2K typical) chunk of low (DOS) memory for the
driver itself, then hooking the INT 13h (disk driver) and INT 15h
(memory query) BIOS interrupts.

就是用一块高位内存模拟磁盘,以及用一小块低位内存存储驱动,
驱动通过勾住INT13磁盘驱动中断和INT15内存查询中断改写而成的。
具体见memdisk.asm源码

2、微软的RAMDISK是WDM驱动程序,具体源码见RAMDISK.C和PNP.C
大概如下:
    DriverObject->MajorFunction[IRP_MJ_CREATE]         = RamDiskCreateClose;
    DriverObject->MajorFunction[IRP_MJ_CLOSE]          = RamDiskCreateClose;
    DriverObject->MajorFunction[IRP_MJ_READ]           = RamDiskReadWrite;
    DriverObject->MajorFunction[IRP_MJ_WRITE]          = RamDiskReadWrite;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = RamDiskIOCtl;
    DriverObject->MajorFunction[IRP_MJ_PNP]            = RamDiskDispatchPnp;
    DriverObject->MajorFunction[IRP_MJ_POWER]          = RamDiskDispatchPower;
    DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = RamDiskDispatchSystemControl;
    DriverObject->DriverExtension->AddDevice           = RamDiskAddDevice;
    DriverObject->DriverUnload                         = RamDiskUnload;

  评论这张
 
阅读(12)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017