powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / память в dos
25 сообщений из 42, страница 1 из 2
память в dos
    #33595113
plut_snz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Не могу выделить большой объем память в DOS (пару Mb под массив чисел). Кто сталкивался с продобной проблемой, поделитесь пожалуйста опытом, буду очень признателен. Компилятор Borland C++ 3.1. Работа в чистой DOS. Заранее спасибо.
...
Рейтинг: 0 / 0
память в dos
    #33595117
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще-то память в DOS ограничена 640 Кбайтами, включая расходы на ОС и твою программу.
...
Рейтинг: 0 / 0
память в dos
    #33595118
plut_snz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ничего нельзя поделать?
...
Рейтинг: 0 / 0
память в dos
    #33595125
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plut_snzИ ничего нельзя поделать?
если действительно "Работа в чистой DOS", то ничего.

если установлены хоть какие-то драйвера раширенной памяти, то поищи про Expanded memory или Extended memory (не помню какое точно, вечно путаю эти два названия), про EMM386.EXE (собственно, он и есть драйвер раширенной памяти в MS DOS)
...
Рейтинг: 0 / 0
память в dos
    #33595129
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно почитать в инете про DOS Extender - ы
А используется чистый дос или дос-окно под Windows?
...
Рейтинг: 0 / 0
память в dos
    #33595304
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я доооолго смеялся ....
...
Рейтинг: 0 / 0
память в dos
    #33597113
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plut_snzВсем привет! Не могу выделить большой объем память в DOS (пару Mb под массив чисел). Кто сталкивался с продобной проблемой, поделитесь пожалуйста опытом, буду очень признателен. Компилятор Borland C++ 3.1. Работа в чистой DOS. Заранее спасибо.


под досом, в реал моде мона только заюзать 640 кБайт + 64 кБайт - 16 байт (последнии две цифры, если разрешить A20)...
если перевести комп в протэкшен моде - то мона уже усю, что есть...

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

с уважением
(круглый)
ЗЫ
Вот они - дети форточек :)
...
Рейтинг: 0 / 0
память в dos
    #33597285
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже печальнее - с помощью malloc() можно будет выделить не более 64Kb - ибо таков размер сегмента в DOS. То есть даже заветные 640 Kb не получить одним куском - а придется делать несколько сегментов память и переключать регистр DS на них.

Это насколько я помню из DOS :-) Может уже забыл чего.
...
Рейтинг: 0 / 0
память в dos
    #33597358
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--даже печальнее - с помощью malloc() можно будет выделить не более 64Kb - ибо таков размер сегмента в DOS. То есть даже заветные 640 Kb не получить одним куском - а придется делать несколько сегментов память и переключать регистр DS на них.

Это насколько я помню из DOS :-) Может уже забыл чего.


смотрим дос внимательней...
при загрузке то го же самого COMа - вся память начиная с PSP отдаёться текущему процессу.... И Вам никто не мешает вовремя переставлять верхнюю тэтраду адреса в сегменте адресации... 640 тем не менее - Вы правы, вряд ли мона заюзать... А вот почти 600 - без вопросов....Правда оттюнить придётся дос достаточно плотно...

с уважением
(круглый)
ЗЫ
Мона сделать просче...
Написать на фортране например... заказать в его подпрограмме 4 мерный (к примеру) массив неизвестной длины... Вызвать эту подпрограмму с числом 500 млн. (к примеру)...Компильнуться...Запустить прогу(название ужо забыл - сорьки) сжатия бинарника...получить с гулькин хрен бинарник... Запустить под досом и радоваться обработки фортраном памяти в 2 ГГб...
...
Рейтинг: 0 / 0
память в dos
    #33597401
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я давно уже с дос не общался, к сожалению, может забыл что-то.

но ведь грубо говоря malloc() на 120 Kb скажем втупую сделать нельзя?
Память, конечно, отдается процессу - но сегментную адресацию придется преодолевать вручную -

автор И Вам никто не мешает вовремя переставлять верхнюю тэтраду адреса в сегменте адресации

то есть играть с адресами
...
Рейтинг: 0 / 0
память в dos
    #33597518
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--...то есть играть с адресами

а шо там играть то !...

вся память...

0FFFFFh

из них "нижнии" 640 - это всего то, до адресса

0A0000h

любой регистр x86 в реал моде 16 разрядный... реальный адресс получаеться путём сложения сегмента и регистра адресации со сдвигом в 4 бита... То бишь Вам никто не мешает работать спокойно в цикле с одним сегментом... и при окончании счётчика - прально выбирать следующий сегмент...сей код на азме - два пальца об асфальт...

а вообще то, если уже более серьёзно - то время ОБРАБАТЫВАЕМЫХ данных ДОЛЖНО быть СОИЗМЕРИМО с временем ПЕРЕДАЧИ(сохранения) этих самих данных... Всё остальное - от лукавого - будет проигрыш по времени ;)
За примерами - лучше к анализу индексных страниц (они всего 1, 2 кила), у того же самого формата DBF :)
...
Рейтинг: 0 / 0
память в dos
    #33597530
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу, все верно
просто у меня было подозрение, что товарищ попытался сделать баальшой alloc() :-)
...
Рейтинг: 0 / 0
память в dos
    #33598045
plut_snz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
Дело в том, что я, можно сказать новичок в программировании, и не дорос еще до того, чтобы играть с адресами, тем более на асме =)! В результате нескольких часов мучений понял, что больше 64kb одним куском ни маллоками, ни аллоками, ни чем другим выделить не получается =((по крайней мере у меня). Хоть какой-то выход нашелся путем определения нескольких кусков по 64kb (возможно это и является "переключением регистров памяти", но через задний прход, увы, по-другому не умею). Но тем не менее свыше примерно 600кb не выходит =(. Неужели нет способа попроще, в виде готовой функции.
И еще маленький вопросик: как перевести машину в защищенный режим?
Еще раз всем огромное спасибо!
...
Рейтинг: 0 / 0
память в dos
    #33598065
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plut_snzХоть какой-то выход нашелся путем определения нескольких кусков по 64kb
Это неправильный выход. Правильным будет выделить один кусок памяти и при необходимости подчитывать в него очередной кусок своего массива чисел.

plut_snzИ еще маленький вопросик: как перевести машину в защищенный режим?"Не получается палец уколотый перевязать, ну и фиг с ним, пойду проведу операцию на сердце" :)
...
Рейтинг: 0 / 0
память в dos
    #33598083
plut_snz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl plut_snzХоть какой-то выход нашелся путем определения нескольких кусков по 64kb
Это неправильный выход. Правильным будет выделить один кусок памяти и при необходимости подчитывать в него очередной кусок своего массива чисел.

plut_snzИ еще маленький вопросик: как перевести машину в защищенный режим?"Не получается палец уколотый перевязать, ну и фиг с ним, пойду проведу операцию на сердце" :)

Про палец понял...

Но все-таки если я буду в один участок памяти почитывать массив чисел, то рано или поздно этот участок закончится, а времени на то, чтобы вывести данные в файл нет! Именно поэтому я и прош помочь. В справке по borland c++ 3.1 написано, что используюя farmalloc можно занять ВСЮ имеющуюся память. У меня не выходит больше 54 kb =(((
...
Рейтинг: 0 / 0
память в dos
    #33598086
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКомпилятор Borland C++ 3.1
Если мне память не изменяет - в Борланде есть DMPI (кажется) интерфейс, который позволяет работать с памятью в защищенном режиме - т е всю доступную память выше 1024К видно как линейный массив. Может и спутал чего - давно было
Это все а-ля DOS4GW (в смысле DMPI)
...
Рейтинг: 0 / 0
память в dos
    #33598094
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ еще маленький вопросик: как перевести машину в защищенный режим?
оно конечно можно, но оно Вам надо? :-) придется слишком много прочитать про защищенный режим.
Проще уж не ручками, а с DOS-Extender-ом
И вообще - почему принципиален DOS?
Учебная задача с обязательным требованием DOS?
...
Рейтинг: 0 / 0
память в dos
    #33598179
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plut_snzНо все-таки если я буду в один участок памяти почитывать массив чисел, то рано или поздно этот участок закончится, а времени на то, чтобы вывести данные в файл нет!Почему нет? При чем здесь время вообще? Прочитал, обработал, записал, повторить. Все просто как дважды-два.

plut_snzИменно поэтому я и прош помочь. В справке по borland c++ 3.1 написано, что используюя farmalloc можно занять ВСЮ имеющуюся память. У меня не выходит больше 54 kb =(((ээээ.... Ну да, в справке борланда есть заявление что мол farmalloc может выделять куски более 64К, но насколько это работает на практике... На запрос памяти ОС ищет первый свободный кусок не меньше запрошеного по объему и отдает его пользователю. Возможно что у тебя просто в тот момент была большая замусореность памяти.
В любом случае хапать большой кусок памяти на ОС без свопа непрактично.
...
Рейтинг: 0 / 0
память в dos
    #33598182
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
landy авторКомпилятор Borland C++ 3.1
Если мне память не изменяет - в Борланде есть DMPI (кажется) интерфейс, который позволяет работать с памятью в защищенном режиме - т е всю доступную память выше 1024К видно как линейный массив. Может и спутал чего - давно было
Это все а-ля DOS4GW (в смысле DMPI)DOS4GW это WatcomC, лучший компилятор во времена 386-х :)
У борландов DPMI не было...
...
Рейтинг: 0 / 0
память в dos
    #33598695
plut_snz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DOS принципиален, т.к. с портами и прерываниями под Windows работать совсем не умею. (а надо =)). Задача не учебная. Требуется считывать значения с одной железки, частота выборок должна быть высокой. Пробовал писАть в файл, получается фигово, т.е. пока пишу, пропускаю кучу значений, вот так вот. С екстендерами пока не разбирался, решил сразу сюда написать, думал есть способ попроще, выходит нету...
...
Рейтинг: 0 / 0
память в dos
    #33598770
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plut_snzТребуется считывать значения с одной железки, частота выборок должна быть высокой. Пробовал писАть в файл, получается фигово, т.е. пока пишу, пропускаю кучу значений, вот так вот.
насколько высока частота выборок?

имхо, такое лучше сделать в две ступени:
1) машина-коллектор принимает данные и по мере накопления блоков данных отправляет их машине-серверу по сети или какому-то другому каналу. Это вполне может быть DOS-машина или даже недорогой промышленный контроллер.
2) машина-сервер принимает блоки с данными, если необходимо, то выполняет первичную обработку и записывает данные в файл или в БД.

т.е. я предлагаю поток данных из синхронного седлать асинхроным...
...
Рейтинг: 0 / 0
память в dos
    #33599173
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--даже печальнее - с помощью malloc() можно будет выделить не более 64Kb - ибо таков размер сегмента в DOS. То есть даже заветные 640 Kb не получить одним куском - а придется делать несколько сегментов память и переключать регистр DS на них.


Йесть мудель памити HUGE (она же Хуго, ни путать с Хуга Бозз).
Ана можит и мигабайт выдилить в адин массиф.
Многия кампилятары для ДОС иё паддерживали...
...
Рейтинг: 0 / 0
память в dos
    #33599508
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
plut_snzDOS принципиален, т.к. с портами и прерываниями под Windows работать совсем не умею. (а надо =)). Задача не учебная. Требуется считывать значения с одной железки, частота выборок должна быть высокой. Пробовал писАть в файл, получается фигово, т.е. пока пишу, пропускаю кучу значений, вот так вот. С екстендерами пока не разбирался, решил сразу сюда написать, думал есть способ попроще, выходит нету...
в BP 7.0 DPMI точно был.
IMHO, проще разобратся с портами и прерываниями Windows или Linux. эТИ знания, по крайней мере будут активно востребованны. Сложного там ничего нет.

Каким образом собираетесь вводить информацию с железки в компьютер?
...
Рейтинг: 0 / 0
память в dos
    #33599762
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plut_snzDOS принципиален, т.к. с портами и прерываниями под Windows работать совсем не умею. (а надо =)). Задача не учебная. Требуется считывать значения с одной железки, частота выборок должна быть высокой. Пробовал писАть в файл, получается фигово, т.е. пока пишу, пропускаю кучу значений, вот так вот. С екстендерами пока не разбирался, решил сразу сюда написать, думал есть способ попроще, выходит нету...

как тут уже сказали - Вам будет просче и практичней - переползти под форточки...
плюсы...
1) можно заюзать бОльшие мощности по обработки сигнала (имееться ввиду не железо, а программную часть и чужой опыт обработки сигналов под форточками).
2) мультизадачная среда...
3) азм в защищённом режиме более богатый и более продвинут в плане скорострельности выполнения (32, 64 битная орифметика и др.).
4) обретения опыта по драйверам под форточки..
минусы...
1) изучение написания драйверов..(в инете примеров - как грязи).
2) отладка драйвера (ну тут две машины Вам в помощь)...

кажись так...
с уважением
(круглый)
ЗЫ
На досе, если не существует других аспектов - не стоит... Слишком уж не в духе времени - может сильно сказаться на спрос конечного продукта, так же...
...
Рейтинг: 0 / 0
память в dos
    #33599990
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Win98 можно работать с железом практически так-же вольготно как в DOS
но ежели она уйдет в своп Не думали об QNX ?
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / память в dos
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]