Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.30;
Скачать: CL | DM;

Вниз

Вопрос про память   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.017 c
8-99658
off
2003-08-29 09:19
2003.12.30
Как определить длинну трека?


1-99589
tuzik
2003-12-17 06:05
2003.12.30
поиск


14-99767
angelant
2003-12-06 09:40
2003.12.30
Машина крутая... Но, черт возьми... глухая... :(


14-99738
Unregistered
2003-12-08 03:35
2003.12.30
Что это было и где искать вчерашние дискуссии ?


14-99754
MPS
2003-12-06 13:51
2003.12.30
Ручная компиляция проекта