Форум: "Потрепаться";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
ВнизВопрос про память Найти похожие ветки
← →
Igorek (2003-12-03 20:29) [0]Сколько оперативной памяти доступно Винприложению Дельфи? А консольному?
Насколько я знаю, ОС выделяет для каждой программы какой-то обьем и при привышении - свапует. Так ли это? Допустим у меня 512 Мб ОЗУ. Сколько максимально можно заполучить в свое распоряжение? И какими методами?
Дело в том, что я хочу точно знать, сколько виртуальной памяти я могу взять, а свопировать уже собственными силами.
Спасибо всем кто ответит.
← →
Sergey_Masloff (2003-12-03 20:45) [1]Допустим у тебя 512 Мб ОЗУ и запущено 20 Internet Explorer-ов, 15 MS Word-ов, Oracle Enterprise server ну и еще по мелочам. Или 256 Мб оперативки и кроме твоей программы только всякие csrss и др. системные. Думаешь Windows в обеих случаях тебе одинаково выделит? Так что считай что тебе дали 4 Гб плоское адресное пространство из которого тебе доступны 2 Гб. С ними и работай а свопинг оставь на долю ОС она это сделает лучше тебя.
← →
dmk (2003-12-03 21:18) [2]>а свопинг оставь на долю ОС она это сделает лучше тебя.
Фигушки, отстойно свопит. Особенно если работать с графическим файлом размером эдак мегабайт в 700 при объеме оперативки 256.
← →
Ihor Osov'yak (2003-12-03 22:22) [3]Любое Win32 приложение выполняется в виртуальном линейном адресном пространстве, размером 4 ГБ.. Приложение в своих целях может использовать 2 гб пространство. 2ГБ прострнства (пространства, а не физической памяти) резервируется для целей ОС. W2K Advanced или DataCenter Server можно сконфигурировать таким образом, что приложениям бкдет доступно по 3 ГБ из этих 4.. Возможно такая же возможность есть в W2k3..
Ноесли этих трех гиг мало, в W2K поддерживается Address Windowing Exstension, там уже до 64 Гиг пространства, правда, не непрерывного :-)
А как и сколько и когда физической памяти ставится на место это виртуального пространства - то в большинстве случаев можно не заботится.. Это проблема диспечера памяти.. Как он это делает - в толстых книгах написано.. Очень интересное чтиво, но все время нет времени до конца его пройти..
Еще. Если, к примеру, ты через GetMem запрашиваешь один гиг, то это не значит, что система тебе выделить один гиг физической.. Она скажет, что ты получил 1 гиг.. А реально физическая начнет будет предоставлятся тогда, когда ты чего-то там в этот буфер начнешь писать.. И по мере писания будет предоставлятся..
Так что можешь не волноватся, что памяти не хватит... Другое дело, сколько ее жить в свопе будет..
← →
Igorek (2003-12-03 23:03) [4]Представим себе программу с огромными базами. Гиг эдак 100. Да какая разница. Сколько винтов нацеплю - столько и будет. Эти бази время от времени загружаются в память. Т.е. фактически идет своппинг. Так вот мне надо знать, сколько я могу получить виртуальной памяти - которая действительно оперативная. Своппить то все равно придется руками, вот и знать бы когда, что-бы система сама не своппила и не тормозила.
Сразу вопрос вдогонку. У меня мать поддерживает ОЗУ до 3 Гб. А больше - это что надо покупать? Что там дальше идет?
Еще вопрос. Если написать консольное приложение и запустить его в режиме ДОС (без Винды). Оно сможет достучаться до всей оперативной памяти?
← →
Sergey_Masloff (2003-12-03 23:11) [5]Igorek © (03.12.03 23:03) [4]
>Представим себе программу с огромными базами. Гиг эдак 100. Да >какая разница. Сколько винтов нацеплю - столько и будет. Эти >бази время от времени загружаются в память.
господи, ЗАЧЕМ? Потом ты это еще и руками свопить будешь... ужас.
← →
Anatoly Podgoretsky (2003-12-03 23:33) [6]Ну у тебя и каша в голове.
← →
Игорь Шевченко (2003-12-03 23:55) [7]Igorek © (03.12.03 23:03)
> Если написать консольное приложение и запустить его в режиме
> ДОС (без Винды). Оно сможет достучаться до всей оперативной
> памяти?
Это как ? Консольное приложение без Windows ? Оно же не запустится...
← →
Pat (2003-12-04 01:11) [8]>Консольное приложение без Windows ? Оно же не запустится...
Запустится, напишет через ah=9 int 21h "This program must be run under Win32" и завершит свою работу :-)
← →
Игорь Шевченко (2003-12-04 01:16) [9]Pat © (04.12.03 01:11)
Забыл. Точно :)) Но ко "всей памяти" оно при этом доступа не получит ;)
← →
SkyRanger (2003-12-04 01:30) [10]Каждому приложению Винда должна выделять 1 Гектар памяти виртуальной, а то что фиг она выделит, никого не волнует, це ж Мелкософт, у них написанно можно - значит можно, да тока не уточняется почемуто условия наступленияэтого события %)
← →
Рамиль (2003-12-04 09:17) [11]Теоритически самостоятельно свопить можно, за примером далеко ходить не надо - Photo Shop... Но стоит ли овчинка выделки?
← →
PVOzerski (2003-12-04 10:13) [12]Консольное Win-32 приложение вообще отличается от GUI 1 битом в заголовке :^) (я, конечно, чуть-чуть утрирую, но суть-то в том, что оно так же юзает функции, экспортируемые системными dll-ями, в том числе и когда дело касается работы с ОЗУ. Единственный вариант запусить его без Винды - приделать какой-нибудь подходящий DOS-экстендер (например, wdosx), но это означает использование соответствующих функций, предоставляемых экстендером и замещающих функции Windows - так что "качество" работы с памятью будет зависеть от экстендера.
← →
Igorek (2003-12-04 10:46) [13]
> Anatoly Podgoretsky © (03.12.03 23:33) [6]
> Ну у тебя и каша в голове.
Значит варит однако :-)))
Ок. Переформулируем немного.
Допустим есть комп. Все что мне надо поставить на него - это IDE с ООП языком (OP или C++). И доступ к максимальному колличеству ОЗУ и дискам. Иными словами Винда как таковая мне нафиг не нужна. Но ОС хоть какая-то нужна. Впрочем если Винду можно максимально урезать и получить доступ ко всей не своппируемой памяти - пускай висит. Может так даже лучше - легче графическую часть делать.
Тут вопрос в производительности. Программе надо отдать максимум из того что есть (ОЗУ, процессор, оперативная память, диски).
Так какую ОС, IDE выбрать? Если Винда, то какая? Надеюсь ситуация понятна.
← →
PVOzerski (2003-12-04 10:54) [14]Я попробовал себе представить "программу с огромными базами". 1-е, что пришло в голову, - это то, что "огромные базы" нужны обычно на серверах, а значит, ОС должна поддерживать режим работы в сети в качестве сервера. Т.е., вряд ли это будет DOS, а скорее всего, либо NT, либо что-то юниксоподобное. Во втором случае можно сэкономить на GUI. 2-й момент: ОС для разработки программы не обязательно должна совпадать с ОС для эксплуатации приложения. Здесь нужно лишь соблюсти баланс между удобством разработки и проблемами совместимости ОС и переносимости кода с платформы на платформу.
← →
Anatoly Podgoretsky (2003-12-04 10:56) [15]PVOzerski © (04.12.03 10:54) [14]
На ГУИ можно съкономить и с первом случае, начиная с 2000
← →
REA (2003-12-04 11:14) [16]Раньше была возможность влиять на сегменты (перемещаемый, несвапуемый и т.п.) - теперь не знаю. Прогресс быстрее, чем мои потребности. Необходимость что-то делать самому вместо OS может возникнуть в весьма специфических случаях, хотя Windows и офисная система.
← →
Igorek (2003-12-04 11:22) [17]> PVOzerski © (04.12.03 10:54) [14]
> Я попробовал себе представить "программу с огромными базами".
> 1-е, что пришло в голову, - это то, что "огромные базы"
> нужны обычно на серверах, а значит, ОС должна поддерживать
> режим работы в сети в качестве сервера.
Нет, это не сервер. В том смысле, что нету сети с рабочими местами. Но к Интернету будет подключен.
> ОС для разработки программы не обязательно должна совпадать
> с ОС для эксплуатации приложения. Здесь нужно лишь соблюсти
> баланс между удобством разработки и проблемами совместимости
> ОС и переносимости кода с платформы на платформу.
Нет, активная работа программы будет сопровождаться ее доразработкой и тестированием на тех же базах.
З.Ы. Это не развод, а проект из области фантастики :-)
← →
blackman (2003-12-04 11:23) [18]>хотя Windows и офисная система
А если офисная, то что ? Распределение памяти - задача любой ОС.
Алгоритм важен. Мы его не знаем, а можем только предполагать.
В любом случае, если разработчик ОС не дает рекомендаций, нечего и выдумывать, надо просто экономить :)
← →
Igorek (2003-12-05 10:40) [19]Ну так что, ответа так и не прозвучало.
← →
Anatoly Podgoretsky (2003-12-05 11:01) [20]Ищем, слушаем, думаем.
← →
Igorek (2003-12-05 11:06) [21]Неужели вопрос сложный?
Как сконфигурировать ОС, что максимум его ресурсов было доступно программе? И какую ОС выбрать? И как решить проблему со свопированием?
← →
REA (2003-12-05 11:44) [22]>А если офисная, то что ?
То значит не расчитана на ресурсоемкие научные расчеты, работу в реальном времени и т.п.
Кстати, если задача настолько серьезна, что требует много ресурсов, то имеет смысл и предъявлять соответствующие требования к железу.
← →
Igorek (2003-12-05 12:33) [23]
> REA © (05.12.03 11:44) [22]
> Кстати, если задача настолько серьезна, что требует много
> ресурсов, то имеет смысл и предъявлять соответствующие требования
> к железу.
Дело в том, что ресурсов все равно будет не хватать по любому. Но вопрос в том как выжать максимум из того, что есть.
← →
REA (2003-12-05 14:39) [24]Да ну? А если кластер машин из 30 собрать?
← →
Igorek (2003-12-05 15:41) [25]
> REA © (05.12.03 14:39) [24]
> Да ну? А если кластер машин из 30 собрать?
Для начала и одной хватит. Но потом не хватит и 1000. Кстати есть в сети по этих кластерах что-то?
← →
Anatoly Podgoretsky (2003-12-05 15:44) [26]Igorek © (05.12.03 11:06) [21]
Выбирай AIX а проблему со свопированием реши достаточным количеством памяти, например 1 тб
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.007 c