有没有一种可靠,快速,确定性的方法(即不是基准)来检查系统驱动器Mac OS X是否打开是固态硬盘?如何在Mac OS X中检测SSD?
是否有任何其他指标磁盘如何处理并行访问?我试图调整我的程序将用于磁盘绑定操作的线程数。
我对原始速度或寻道时间不感兴趣,只有哪种类型的访问 - 串行或并行 - 对于驱动器来说更快。我不希望我的程序的用户使用iSCSI或RAID。固态硬盘是我的重点,其他任何东西都很好。
Device Characteristics
的IOAHCIBlockStorageDevice
包含此信息。我如何以编程方式阅读它?
到目前为止,我已经想通了,它是这样的:(以下是伪代码)
match = IOBSDNameMatching(kIOMasterPortDefault,0,"disk0s2");
IOServiceGetMatchingServices(kIOMasterPortDefault, match, &iterator);
while(entry = IOIteratorNext(iterator)) {
do {
entry = IORegistryEntryGetParentEntry(nextMedia, kIOServicePlane, &entry);
dict = IORegistryEntryCreateCFProperty(nextMedia,
CFSTR(kIOPropertyDeviceCharacteristicsKey), kCFAllocatorDefault, 0);
[dict objectForKey:CFSTR(kIOPropertyMediumTypeKey)];
}
while(!dict && entry);
}
编辑:Here's complete source code。我已经验证它适用于英特尔SSD和OCZ Vertex。
也http://stackoverflow.com/q/908188/545127 – Raedwald 2013-03-04 14:32:30