как создать файл 4 Гб под досом.

Тема в разделе "WASM.BEGINNERS", создана пользователем Q_sam, 10 янв 2009.

  1. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Memphis
    Так то Вынь9х, а задание -- под ДОСом. Вот и попробуй пойми, имеется ли ввиду ДОСовская часть Винды или "нормальный" ДОС. Последний не поддерживает ФАТ32.
     
  2. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    нет! имеется ввиду DOS без винды.
     
  3. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    тоесть в идеале необходимо в реальном режиме, в fat16 записать файл больше двух гигов!....ну или как то исхитриться ... в надежде что препод не заметит =/.
     
  4. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Добавлю пару слов, чтоб уточнить :)

    Прерывания биос в принципе доступны в защищенном режиме, если этот защищенный режим 16-разрядный. Не стоит думать, что если режим "защищенный", то он обязательно 32-битный.

    Код, выполняющий прерывания дос и биос, предназначен для работы в 16-разрядном режиме. БОльшая часть функций работают как в реальном, так и в защищенном 16-битном режимах (при наличии правильного загрузчика этого самого режима, который дополнительно выставит правильные обработчики исключений). И, кстати... если при загрузке ДОС запускаются всевозможные менеджеры расширенной памяти (EMM386, QEMM и другие), то на самом деле мы уже работаем в "защищенном" ;) или в виртуальном 86-м. (в чистом "реальном режиме" память свыше 1Мб недоступна)

    Нельзя записать файл размером больше, чем предусмотрено в файловой системе. Ссылка на кластер 16 бит. Всего может быть до 65535 кластеров. Несколько номеров зарезервированы. Итого, не просто "файл в 2Гб" невозможен - размер диска под ФАТ16 ограничен в 2Гб :) при размере кластера в 32К. Нет, это не зависит от реального или защищенного режима. Просто - ФАТ16 не позволяет этого. Необходимо иметь ФАТ32.

    В ФАТ32 можно создать файл в 4 Гб. Это можно сделать и в реальном режиме. Но ДОС 6 не знает о фат32. То есть, нужна досовая основа вин9х. Там делаем именно то, что предложил Memphis
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Partner
    как раз от Руссиновича единственная из бесплатных которая обеспечивает полный доступ к ntfs, правда гляжу она везде в сети пропала, наверно платные конкуренты давят :)

    Q_sam
    ДОС 7 из win9x тоже прекрасно работает как обычный ДОС и без всей остальной "нагрузки", её только win заставка выдаёт.
    Но если нужно на компе у препода, где стоит "настоящий" DOS 6.22 и диск FAT16, то боюсь тебе и Руссинович не поможет - не разрешит же препод тебе диск в ntfs переформатировать :))
    А вообще-то задание странное может его уточнить стоит в свете того, что ты здесь узнал про ограничения файловых систем и защищённый режим? Или суть твоей работы как раз в том чтобы сделать свою файловую систему, работая с диском напрямую через порты (без дос и биос) из защищённого режима? Или защищённый режим всё таки предполагается на базе DOS-extender (коих существует множество и навярняка есть поддерживающие FAT32)?
     
  6. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    Да вот сегодня хотел с преподом поговорить, небыло его(. а что касается DOS-extender то точно без них
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Y_Mur
    NTFSDOS бесплатная, но она read-only, а NTFSDOSPro вроде была за деньги. Впрочем, могу ошибаться.
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Partner
    за деньги если подключать её к win9x (там даже инсталлятор предупреждает - заплати и лети :) а если не хочешь, то установленный драйвер работает read-only), а в ДОС бесплатно, специально помню обратил на это внимание когда её нашёл и при инсталляции тоже никаких проблем - запись сразу работает в том числе и в dos 7, но если из dos 7 войти в win, то насколко помню драйвер продолжает работать, но переходит в read-only (это ограничение конечно легко обойти, но это уже другая тема и ТС она не актуальна).
     
  9. Q_sam

    Q_sam New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    21
    что то Stariy замолчал(
     
  10. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Q_sam, потому что в ФАТ16 хоть ручками, хоть через порты, но нельзя больше 2Г файл создать. И даже ровно 2Гб нельзя создать, меньше чуток. А в ФАТ32 есть более простые способы. Потому и замолчал.

    зы: не, можно. Можно извратится, использовать некоторые баги, и создать файл хоть на флоп-дискете, для которого винда будет видеть размер намного больше физической емкости носителя... только его открыть нельзя будет, только смотреть на имя, размер, и тупо хихикать. Не думаю, что это является целью, поставленной твоим преподом :))))
     
  11. Memphis

    Memphis New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2008
    Сообщения:
    104
    FatMoon
    если при загрузке ДОС запускаются всевозможные менеджеры расширенной памяти (EMM386, QEMM и другие), то на самом деле мы уже работаем в "защищенном" - абсолютно верно. Это PM 16 бит, но не V86. Для него (ежели не ошибаюсь) для индикации есть отдельный бит. Но дело не в RM/PM. Сама операционка должна поддерживать файлы 4 Гига. А в ДОСе это может только ФАТ32.

    Нельзя записать файл размером больше, чем предусмотрено в файловой системе. Ссылка на кластер 16 бит. Всего может быть до 65535 кластеров. Несколько номеров зарезервированы. Итого, не просто "файл в 2Гб" невозможен - размер диска под ФАТ16 ограничен в 2Гб :) при размере кластера в 32К. Нет, это не зависит от реального или защищенного режима. Просто - ФАТ16 не позволяет этого. Необходимо иметь ФАТ32. - полностью согласен.
     
  12. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Сам файловый дескриптор FAT имеет поле Size 32-битное, в байтах. Старший бит - под знак, следовательно больше 2Гб не получится.
     
  13. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Кхм.. что-то все какие-то сложности изобретают. Команду copy file1+file2 file3 и BAT-файлы уже отменили? Если в задании не указано, каким образом создавать файл.
     
  14. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    _edge
    а где найти руководство по переходу в защищённый режим из bat файла не подскажешь? %))
     
  15. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Специально для SadKo :))

    Вот такая вот дискетка с файлами:

    Код (Text):
    1.  Том в устройстве A имеет метку TEST
    2.  Серийный номер тома: E057-C7E6
    3.  
    4.  Содержимое папки A:\
    5.  
    6. 12.01.2009  15:58                 0 0.txt
    7. 12.01.2009  15:59                10 10.txt
    8. 12.01.2009  16:00     4 294 967 295 big.txt
    9.                3 файлов  4 294 967 305 байт
    10.                0 папок       1 456 640 байт свободно
    То есть как минимум ДОС 7 и cmd в ХР на знак внимания не обращают (если он вообще учитывается)
     
  16. Memphis

    Memphis New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2008
    Сообщения:
    104
    SadKo
    Старший бит - под знак, следовательно больше 2Гб не получится. - Чепуха. Хочешь сказать, что есть файлы размером, к примеру, -128 байт ? Размер файла - в 32-х битном поле без знака. А почему ограничение в 2 ТБ - выше писали (ФАТ16 больше не может).
     
  17. Memphis

    Memphis New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2008
    Сообщения:
    104
    _edge
    Команду copy file1+file2 file3 и BAT-файлы уже отменили? - теоретически все верно. На практике - думаю не получится, ибо неизвестно, какой ДОСовой функцией (точнее, ключ 2/4 Гига) создается файл назначения file3. Впрочем, сегодня вечером дома проверю - у меня Вин98СЕ.
     
  18. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Не чепуха это будет тогда, когда тебе придётся мешать 32-битный int и unsigned int в один код - вот тогда и посмотрим.
    Файловая система какая?
     
  19. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Может, лучше провести эксперимент тупо по созданию файла в 4гб на fat32 файловой системе? Есть у вас функции CreateFile, WriteFile, CloseFile, например. Ну вот и попробуйте написать ими создать файл больше 2Гб. А то, что в вашем примере просто выводится stat - так вывести можно как signed, так и unsigned.
     
  20. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    SadKo
    на дискетке есно fat12 :))
    А на флешке с fat32 вроде проблем с файлами > 2Гб не наблюдал, больше 4Гб проверить не могу поскольку сама флешка 4Гб в дисковом смысле .