В фейсбуке есть израильское сообщество "в 90-х на этой неделе", там всякие заметки из прессы 90-х, реклама итд. Сегодня попалась реклама компьютера 30 лет назад, октябрь 1991:
640=512+128. Считалось, что 512 должно хватить, поэтому вторая половина адресного пространства резервировалась под железки расширения. Но потом, разумеется, захотели больше. Первые 128 этого пространства мало кто использовал, поэтому туда можно было всунуть ещё памяти относительно безболезненно. Дальше начиналась память EGA, распространенного тогда видеоадаптера. После неё тоже были свободные дырки в адресном пространстве, но уже не торт. Во-первых, они были у всех по-разному, в зависимости от того, какие у кого железки стоят. Во-вторых, удобство базовой памяти было в её непрерывности, разрозненные фрагменты было намного труднее использовать программно. Да и не так много было этих дырок, поэтому и пошли по пути EMS, когда через сравнительно небольшое окно в 64КБ шарили по мегабайтам памяти.
Памятью не разбрасывались, она дорогая, так и ставили, 512+128. Бороться с перекрытием уже потом стали, когда больше захотелось. В простейшем случае, при физической 1 МБ давали выбрать перемычкой 640 базовой, или 512 базовой + 512 extended. Но адресные декодеры тоже усложнялись, и проблем эффективно распределить память по адресному пространству не было. Распространена была и функция shadow memory, когда часть памяти можно было выделялить под кэширование BIOS, а со временем и вовсе стандартом де-факто стало сжимать BIOS архиватором и распаковывать при запуске в ОЗУ.
ΕΜS (expanded memory) - как раз технология которая не требовала защищенного режима. Ее ставили на ΧΤ и на некоторые 286-ые, и на 386-ые, но как дополнительное расширение после того как место под ΧΜS кончилось. XMS (extended memory) - более продвинутая и появился с 286-го и могла эмулировать EMS, а на 386 уже появилась полная виртуальная адресация.
В чём заключается продвинутость XMS, если защищённый режим на 286 не использовался, а в реальном толку от неё было минимум? В то время как EMS напрямую мапился на адресное пространство реального режима.
EMS появился до XMS. Ее польза в основном действительно проявляется начиная с 386-х, а на 286 защищенный режим как я понимаю действительно мало где искользовался. Ну кроме как windows 3.0 например умела им пользоваться. Ну и понятно xms - умела симулировать ems,а наоборот нет. ;)
На 386 симулировать XMS из EMS можно так же легко, как EMS из XMS, просто никому не понадобилось заморочиться. Некоторая потеря производительности была бы, но на фоне своппинга - незначительная.
Не уверен, если у компьютера только есть ΕΜS, то нужна уже виртуализация внутри виртуализации которой долго не было- ибо нужен один уровень чтобы претендовать что у нас есть xms, и друго чтобы пользовательские программы могли получить доступ к этой памяти. Обратный процесс был проще потому что ΕΜS была доступна в реальном режиме.(см ΕΜΜ386) я кстати, ошибся ΕΜS из ΧΜS тоже можно только в 386-ом//
90% ДОС-программ защищенного режима штатно поддерживали работу через VCPI API (для совместимости с EMM386) и DPMI API (для совместимости с Windows 3.0 и затем Wndows-9x, внутри которого вообще "виртуализация внутри виртуализации" занимала одно из центральных мест). Помните такие "приветствия" при запуске программ, как PMODE/W или DOS/4GW? Будь аппаратный EMS на то время всё ещё массово актуален, виртуализацию extended памяти на основе EMS встроили бы как во все "расширители", так и в EMM386, добавив пару функций в VCPI API.
Ну да, а также помню как некоторые игрушки и виндоус требовали загрузки без emm386. ;) Вы правы, если программа пользуются интерфейсом от операционной системы для виртуализации памяти, то конечно через нее можно все что угодно сделать памятью. Большинству программ под виндоус и не нужно было знать о вариантах памяти. Но если хотелось доступа в защищенном режиме именно к физической адресации ΧΜS, то нельзя написать драйвер который бы это поддерживал через EMS, мне кажется. В то время как доступ к EMS можно было организовать. Но это все конечно лирика, а да, с 386 конечно это все уже никому нужно было.
насколько мне известно, настоящая виртуализация внутри виртулазации (это когда то, что может работать на настоящем компютере, также работает на виртуальном), то бишь гипервизор, на интеле появилась где-то в конце девяностых. А виндоус 95 - насколько мне известно давал только доступ к реальному режиму.
Любой уважающий своих клиентов производитель оборудования (особенно это касалось аудио и видео карт) делал драйверы виртуализации для Win 9x, чтобы несколько параллельных ДОС-программ, работая с железкой "напрямую" через порты, не перебивали друг друга. Win 9x вообще был мудрёным в этом отношении, поскольку, с одной стороны, позволял запускать одновременно несколько DOS-сессий, а с другой стороны, сам по большому счёту был программой под ДОС.
А что там про EMS? Оно же только на 386. На 286 только XMS же.
Reply
Reply
А как получилась цифра 640 килобайт? Ведь это не степень двойки.
Reply
Reply
Тоесть физическая память там была 1мегабайт, просто перекрывались переферией?
Reply
Сколько физически памяти ему соответствовало - это зависит от комплектации.
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Leave a comment