> Это именно эмуляция, дополнительным софтом и абстракциями.эмуляция это то, чего нет, а блочное устройство из РАМ сделать можно споскойно, и это не эмуляция.
> "Блок" и "произвольный доступ" - взаимоисключающие параграфы. Вы или можете адресовать
> конкретный байт или нет.
какой нафиг бай, а бит я могу адресовать? а почему не могу? потомучто минимальный блок данных который можно адресовать в РАМ это 8 бит! тоже самое и с хдд, адрессуются блоки данных, а не байты, а прикол знаете в чем? а бай вовсе не 8 бит, бывает и 7 и 9 лол кек.
> Вообще-то важно. Вон там машинный код напрямую может пойти и положить число
> 234 в адрес 0x100 и это немедленно и без дополнительных условий
> обеспечивается, если там RAM. А в случае с блоком - так
> нельзя. Как максимум можно подкостылить и сделать вид что получилось, но
> вот это уже - эмуляция.
адрессуются блоки данных, я не виноват что у хдд блок данных имеет размер 512 байт, а рам 1 байт.
> Я рад что вы умеете читать вику, теперь запишите число 234 по
> смещению 0x100 от начала, не портя другие байты. А, так изначально
> нельзя? Потому и блочное устройство - на уровне его нативного интерфейса.
смещению относительно какого базавого адреса? вы понимаете что есть базовый адрес и смещение?
> Планка напрямую адресуема из программы - а HDD на уровне кода программы
> - изначально вообще не существует. Это уже надо запросы к операционке
> делать (сисколы). А переменную программы там не разложишь. Такая "небольшая" разница
> на уровне программного интерфейса.
а что если я не делаю аллокация, моя программа что нибудь знает о памяти? нет не знает. Моей программе вообще доступна вся память если на то пошло.
> В этих терминах не описывается "хочу чтобы байт по смещению 0x100 стал
> равен 234". Чтобы это обеспечить придется сделать нехилую эмуляцию, RMW, сисколы
> и проч. На этом основании я и отказываюсь считать это RAM
> - изначально "random access" там как раз и нету.
все зависит на каком уровне абстракции работает ваша программа, вот для этого и придумали файловые системы, чтобы не думали о всяких смещениях и адрессах. Достаточно иметь интерфейс, открой такой-то файл, запиши в него столько-то байт по такому смещению (учтите смещению относительно начала файла, а не всяких блоков на устройстве хранения), закрой хендл файл и всё. Работа с интерфейсом блоков уже ложиться на саму ФС, как хочет так и организует хранение файлов. А все остальное это уже работа драйвера устройства.
> NB существуют и всякие достаточно забавные промежуточные случаи. Скажем SPI флешка сама
> по себе не есть "random access memory" - оно в общем
> случае "девайс на интерфейсе" из которого напрямую вообще выполнять ничего нельзя,
> надо команды слать. А запись там совсем не рандомная.
для уровня который предоставляет ФС до лампочки, пользователю нужно, открыть записать и закрыть, все. ДЛя ФС прочла блок, записала блок и всё. Драйвер как там представляет блочный интерфейс уже не важно.