Четверг, 20.07.2017, 21:44 Приветствую вас Гость | Группа "Гости" 


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024 
delfcode » Delphi » Вопросы по Delphi » Вопрос, Dephi, ужимание памяти процессу
Вопрос, Dephi, ужимание памяти процессу
antbertДата: Четверг, 18.10.2012, 19:04 | Сообщение # 1
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
Добрый день.

Делаю штуку одну, так сказать ради саморазвития, столкнулся с некими трудностями:

Каким образом ограничивать потреблению приложением оперативки.

Если где-то есть реализации кода работы с процессами - прошу поделиться.

Спасибо.


Сообщение отредактировал antbert - Пятница, 19.10.2012, 08:48
 
antbertДата: Воскресенье, 21.10.2012, 11:12 | Сообщение # 2
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
ап
 
Don_DiegoДата: Воскресенье, 21.10.2012, 20:02 | Сообщение # 3
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 251
Статус: Offline
antbert, помоему это нереально. Ибо тогда не было бы смысла переходить с 128 Мб оперативной памяти. Насколько мне известно - именно в памяти программа полностью распаковывается, поэтому зачастую занимает больше оперативной памяти, чем собственный размер.
 
antbertДата: Воскресенье, 21.10.2012, 23:33 | Сообщение # 4
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
smile

В диспетчере задач, думаю, каждый знаком с приоритетами к процессам.
Из этого следует то, что моя задача вполне осуществима.
Если приложению не хватит оперативной памяти для обычной выгрузки - оно не запустится.
Тут речь о другом.


Сообщение отредактировал antbert - Понедельник, 22.10.2012, 08:00
 
XSPYДата: Понедельник, 22.10.2012, 10:23 | Сообщение # 5
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 258
Статус: Offline
antbert, почитайте про форматы файлов,структуру памяти и методику проектирования приложений.Только после этого поищите по ключевым словам: "приоритет приложения","execute in memory" и "write memory"-тогда и поймете ответ на свой вопрос. (это для полного понимания сути)
 
antbertДата: Понедельник, 22.10.2012, 17:32 | Сообщение # 6
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
Quote (XSPY)
antbert, почитайте про форматы файлов,структуру памяти и методику проектирования приложений.Только после этого поищите по ключевым словам: "приоритет приложения","execute in memory" и "write memory"-тогда и поймете ответ на свой вопрос. (это для полного понимания сути)


У меня нет времени на всю эту ересь. smile В данном случае мне хватит для понятия кода остаточных знаний от прочтения общей литературы на эту тематику.
Я знаю одно - win способна урезать/увеличивать ресурсы на процесс(приложение). Для пользователя все это реализовано в виде процессов. Мне требуется более широкий контроль.

Code
Option Explicit
Private Declare Function SetPriorityClass _
Lib "kernel32" (ByVal hProcess As Long, _
ByVal dwPriorityClass As Long) As Long
Private Const REALTIME_PRIORITY_CLASS = &H100
Private Const HIGH_PRIORITY_CLASS = &H80
Private Const NORMAL_PRIORITY_CLASS = &H20
Private Const IDLE_PRIORITY_CLASS = &H40
Private Declare Function OpenProcess _
Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long

Private Sub SetPriority(Priority As Long)
Dim ProcId As Long 'переменная для id процесса
Dim ProcHandle As Long 'переменная для handle процесса
ProcId = GetCurrentProcessId 'получим id
ProcHandle = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcId)
'получили Handle
Call SetPriorityClass(ProcHandle, Priority) ' ставим приоритет
End Sub

Private Sub Form_Load()
'ставим приоритет
SetPriority HIGH_PRIORITY_CLASS
End Sub


Сообщение отредактировал antbert - Понедельник, 22.10.2012, 17:34
 
xXxSh@dowxXxДата: Понедельник, 22.10.2012, 19:33 | Сообщение # 7
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
antbert ты хочешь всего навсего изменять приоритет для процесса, я правильно тебя понял, или ты хочешь добиться чего то большего?
 
antbertДата: Понедельник, 22.10.2012, 19:44 | Сообщение # 8
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
Quote (xXxSh@dowxXx)
antbert ты хочешь всего навсего изменять приоритет для процесса, я правильно тебя понял, или ты хочешь добиться чего то большего?

Неужели вот эти слова не дают ответа на мой вопрос - "Каким образом ограничивать потреблению приложением оперативки."?
Код, который мог бы менять приоритет я выше привел.
 
Don_DiegoДата: Понедельник, 22.10.2012, 19:48 | Сообщение # 9
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 251
Статус: Offline
Может я чего-то не пойму, но какая связь между приоритетом процесса и потребляемой им памятью? wacko
Или ты хочешь чтобы в диспетчере задач показывалось всегда фиксированное значение занимаемой памяти? Но на самом деле занимать будет больше?
 
antbertДата: Понедельник, 22.10.2012, 20:36 | Сообщение # 10
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
Quote (Don_Diego)
Может я чего-то не пойму, но какая связь между приоритетом процесса и потребляемой им памятью?
Или ты хочешь чтобы в диспетчере задач показывалось всегда фиксированное значение занимаемой памяти? Но на самом деле занимать будет больше?


Хм, в этом случае попытаюсь объяснить.

Windows поддерживает многозадачность. То есть допустимо выполнение одновременно нескольких задач. Различие между обычными процессами(запущенными приложениями) заключается в приоритете. То есть распределение ресурсов на эти процессы Windows осуществляет, используя приоритеты/потребности программы.
Суть моего вопроса в том, что я сам хочу распределять эти ресурсы для некоторых процессов(приложений).
 
Don_DiegoДата: Понедельник, 22.10.2012, 21:02 | Сообщение # 11
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 251
Статус: Offline
Quote (antbert)
Суть моего вопроса в том, что я сам хочу распределять эти ресурсы для некоторых процессов(приложений).

Хм... Ну в таком случае тебе уже очень правильно дал ответ XSPY. От себя только немного добавлю - это все встретишь при изучении уже азов ассемблера.
 
antbertДата: Понедельник, 22.10.2012, 22:19 | Сообщение # 12
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
Quote (Don_Diego)
Хм... Ну в таком случае тебе уже очень правильно дал ответ XSPY. От себя только немного добавлю - это все встретишь при изучении уже азов ассемблера.

smile
Не понимаю здешних людей. Попросил дать готовые реализации, если видел кто, а меня пытаются учить теории.
Во всяком случае спасибо за потраченное время.


Сообщение отредактировал antbert - Понедельник, 22.10.2012, 22:19
 
Don_DiegoДата: Вторник, 23.10.2012, 00:19 | Сообщение # 13
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 251
Статус: Offline
http://rutracker.org/forum/viewtopic.php?t=740288
Assembler для DOS, Windows и UNIX 3-е издание

Главы: 1.2.7, 2.1-2.2.8, 4.9 и т.д.

Там и конкретные примеры. Не поймите неправильно что посылаю на какую-то книжку (хоть она и заслуживает большого уважения), просто перепечатывать сюда от туда коды смысла большого нету. Если действительно Вам интересна эта тема - начинайте изучать. Для понимания того что Вы хотите - достаточно просмотреть первую главу. Если подойдет - можете дальше осваивать, лишним не будет.
 
XSPYДата: Вторник, 23.10.2012, 10:47 | Сообщение # 14
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 258
Статус: Offline
antbert,эта ересь не такая уж и ересь) без неё не было бы практических результатов... biggrin biggrin
А касательно кода-поищи сорсы Спермского и часть слитых сорцов Винды NT (NT2K имя архива)-там вроде были пару таких строк...
 
antbertДата: Вторник, 23.10.2012, 23:26 | Сообщение # 15
Участник
Зарегистрирован: 19.09.2012
Группа: Пользователи
Сообщений: 60
Статус: Offline
Благодарю, будет время - начну изучать.
 
C@TДата: Пятница, 26.10.2012, 19:35 | Сообщение # 16
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
SetProcessWorkingSetSize попробуй эту апишку smile
 
delfcode » Delphi » Вопросы по Delphi » Вопрос, Dephi, ужимание памяти процессу
Страница 1 из 11
Поиск:

delfcode.ru © 2008 - 2017 Хостинг от uCoz