Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-99732
Layner
2003-12-08 11:32
2003.12.30
Помогите купить лиц. D7. Контора (сайт) / цена


3-99490
gestern
2003-12-04 16:02
2003.12.30
frReport


6-99689
vovchik
2003-10-24 06:03
2003.12.30
Список пользователей домена


14-99727
chs2r
2003-12-08 16:27
2003.12.30
Что такое судьба? Мои мысли...


1-99610
mRodion
2003-12-15 17:53
2003.12.30
PageControl: скрыть заголовок закладки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский