SATA从什么意义上说“ SCSI”?SCSI和ATA之间共享多少?
至少对我而言,这并不是什么新鲜事,SATA实际上“在说” SCSI,因此为什么这些SATA设备在Linux中显示为SCSI设备。 之前已经问过一个相关的问题,例如,为什么我的SATA设备显示在/ proc / scsi / scsi下? 但是,在我之前看到的讨论中没有提及的正是SATA与SCSI的关系以及它们之间的区别。 我认为它们在物理层上有所不同是理所当然的,因为它们不共享兼容的电缆。 但是,如何在堆栈上更高呢?我知道Linux如何将现代内核上的SATA甚至IDE磁盘表示为SCSI到SCSI子系统。但是总线上使用的实际协议呢? 我也知道ATAPI是SCSI的封装,但是常规ATA呢?我注意到SCSI已采用SCSI的功能,例如NCQ,FUA,DPO等(如果我记错的话)。但是尚不清楚SCSI命令集实际上有多少被共享或相似。 具有ATA规范的现代SATA设备是否实现了SCSI命令集的子集,但被封装了(如ATAPI中一样)?一套一样吗?超集?还是仅将所选功能实现为不完全相同的变体? 在哪里可以找到明确的信息,尤其是它与Linux内核的关系?某种用于驱动程序开发的教程会很不错,但是即使是不完全跳过所有细节的概述也足够了。我知道我只能阅读实际的规范,但这又太详细了,很难找到您真正想要的东西,并且对我本人以及可能在时间意义上的大多数其他用户来说都不现实。