Бесплатные звонки через интернет на телефон
Всем привет, мои дорогие друзья! В своей первой статье 2018 года я хотел бы рассказать вам, как позвонить с компьютера на...
Значение слова “приоритет”? А, слабо? Это привилегия, как в Египте была иерархия: фараоны и рабы, чуете разницу? Одни камни для пирамид таскают, а другие командуют – демократия!))
Так и у процессов бывают приоритеты, ах, вы же не знаете чего означает процессы!
Активный процесс – это любое запущенное приложение: браузер, игра, программа и тому подобное. Вот приоритет и позволяет нам выделить все ресурсы для поддержания процесса, либо наоборот ограничить процесс в мощностях.
Представим, что вы играете в компьютерную игрушку, но часть ресурсов забирают другие приложения, особенно, которые тоже любят потреблять.
Так вот, чтобы операционная система windows понимала, что все возможные мощности нужно отдавать одному единственному процессу, то бишь, игре – нам и нужно выставить наивысший приоритет этому процессу (в нашем примере – компьютерной игре).
Фух, надеюсь, вы поняли мой посыл. А теперь поговорим о главном..
Я сейчас буду говорить про windows 7, ибо именно эта у меня на данный момент система.
1. Нужно нажать сочетание кнопок Alt -Ctrl – D и откроется списочек, вам надобно выбрать “диспетчер задач”.
2. Если вы желаете изменить приоритет громоздких и видимых приложений, допустим, браузера, то надобно выбрать вкладку “приложения” и щелкнуть правой кнопкой мышки по подходящему активному приложению, а после нажать “перейти к процессу”.
3. Далее, вы увидите, что во вкладке процессы выделился нужный процесс, обычно, он называется как и само указанное приложение, остается лишь брякнуть по процессу правой кнопкой мышки и навести курсор на приоритет, ну а далее уже выбрать подходящий.
Как уже освещалось, что лучше давать высокие приоритеты приложениям, которые потребляют много ресурсов и которые вы используете в данный момент – это может быть всё что угодно: игры, программы, браузеры и т.д.
Спасибо за просмотр, оставляйте комментарии, ежели возникли вопросы!
zavlekyxa.ru
Далее в нем создать еще один раздел, т.е. уже подраздел с названием PerfOptions, а уже в нем создать параметр DWORD (32бита) с названием CpuPriorityClass и задать ему одно из десятичных значений - 1, 2, 3, 5, 6.
1 - приоритет Idle (низкий); 2 - приоритет Normal (средний); 3 - приоритет High (высокий); 5 - приоритет BelowNormal (ниже среднего);
6 - приоритет AboveNormal (выше среднего);
Разберем на примере sidebar.exe.
В ветке ресстра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windows NT\CurrentVersion\Image File Execution Options я создаю раздел sidebar.exe. В нем создаю подраздел PerfOptions. И в этом подразделе создаю параметр DWORD (32бита) с названием CpuPriorityClass c десятичным значением 1.
Таким образом sidebar.exe теперь у меня всегда будет запускаться с низким приоритетом (Idle).
Так же все вышеописанные операции можно делать и через командную строку (cmd).
Я написал небольшой универсальный пакетный файл, который все это делает за пользователя. Ссылка на пакетный файл: save_process_priority.cmd В пакетном файле все пункты расписаны на русском языке. От пользователя потребуется только вводить нужное ему имя процесса и выбирать приоритет. Для того что бы ваши настройки приоритета вступили в силу, необходимо перезапустить процесс. Если же вы внесли сразу несколько системных процессов, перезагрузите систему, так будет проще. Это необходимо потому, что данные с реестра считываются только при загрузке и запуске программ, но не при их работе. Вот и все, спасибо за внимание =) Если заметили ошибку, обязательно сообщите, буду очень благодарен.
Copyright © 2011 Tsiryuta G. N.
stopgame.ru
Давайте поговорим о приоритетах windows процессов. В большинстве случаев «играться» с настройкой приоритетов нет необходимости, но, иногда, грамотный системный администратор может помочь системе более правильно распределить процессорное время между запущенными задачами. Единого рецепта нет, но путем «подбора и перебора» это вполне реализуемо. Где это может понадобиться? Например, в связке 1С-SQL можно дать больше процессорного времени 1С и SQL, как наиболее критичным к ресурсам процессам.
В общем случае, посмотреть и изменить приоритет запущенного процесса можно через Task Manager
windows NT/2000/7/2008
В windows 2012 это “закопали» чуть глубже
Как видно из приведенных примеров, вам доступно всего 6 приоритетов (как выяснится позже, это классы приоритетов). Достаточно? Microsoft считает, что да. Но давайте вспомним «легендарную» фразу Билла Гейста, который сказал, что «640 KB of RAM will be enough for everybody”. Но время показало, что это далеко не так. :)
А теперь давайте разберемся, как это есть на самом деле.
На самом деле в windows существует 32 уровня приоритета, от 0 до 31.
Они группируются так:
При создании процесса, ему назначается один из шести классов приоритетов:
Посмотреть приоритет процесса, как писалось выше, можно, используя Task Manager.
Приоритет каждого потока (базовый приоритет потока) складывается из приоритета его процесса и относительного приоритета самого потока. Есть семь относительных приоритетов потоков:
В следующей таблице показаны приоритеты процесса, относительный и базовый приоритеты потока.
Приоритет потока | Класс процесса | Класс процесса | |||||
Idle class | Below normal class | Normal class | Above normal class | High class | Real time class | ||
1 | Idle | Idle | Idle | Idle | Idle | ||
2 | Lowest | ||||||
3 | Below … | ||||||
4 | Idle class | Normal | Lowest | ||||
5 | Above … | Below … | |||||
6 | Below normal class | Highest | Normal | Lowest | |||
7 | Above … | Below … | |||||
8 | Normal class | Highest | Normal | Lowest | |||
9 | Above … | Below … | |||||
10 | Above normal class | Highest | Normal | ||||
11 | Above … | Lowest | |||||
12 | Highest | Below … | |||||
13 | High class | Normal | |||||
14 | Above … | ||||||
15 | Highest | ||||||
15 | Time critical | Time critical | Time critical | Time critical | Time critical | ||
16 | Idle | ||||||
17 | |||||||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | Lowest | ||||||
23 | Below … | ||||||
24 | Real time class | Normal | |||||
25 | Above … | ||||||
26 | Highest | ||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | Time critical |
Теперь, когда мы все это узнали, что же с этим всем можно сделать? Ну, например, начать использовать.
Как еще можно запустить процесс с «нестандартным» приоритетом или изменить?
Метод 1. Запустить задачу/процесс и изменить приоритет через Task Manager.
Минусы метода:
Метод 2. Можно воспользоваться командой START с соответствующими ключами
Доступные ключи, отвечающие за приоритеты, следующие (я умышленно опускаю ключи командной строки команды START не имеющие отношения к описываемому процессу работы с приоритетами):
C:\>start /? Starts a separate window to run a specified program or command. START ["title"]
LOW Start application in the IDLE priority class.
NORMAL Start application in the NORMAL priority class. HIGH Start application in the HIGH priority class. REALTIME Start application in the REALTIME priority class. ABOVENORMAL Start application in the ABOVENORMAL priority class. BELOWNORMAL Start application in the BELOWNORMAL priority class.
Как видим, команда START дает возможность запустить процесс все с теми же 6-ю приоритетами, которые доступны через Task Manager
Минус метода:
Метод 3. Использование утилиты wmic.exe
Как было показано выше, Task Manager, и команда START достаточно неуклюжи для задачи назначения приоритетов. Посмотрим, как это применять более гибко. Будем использовать утилиту wmic.exe.
Командная строка:
wmic process where name="AppName" CALL setpriority ProcessIDLevel
wmic process where name="calc.exe" CALL setpriority 32768
wmic process where name="calc.exe" CALL setpriority "above normal"
Приоритеты (предопределенные):
Вот короткий пример запуска wmic.exe для получения необходимой информации
Используем команду:
wmic process list brief
Вы получите список процессов, запущенных на вашем локальном компьютере. Теперь выполните команду:
wmic process list brief | find "cmd.exe"
Результат:
Специально запустил несколько копий cmd.exe, чтобы иллюстрация была более полной.
Теперь список процессов ограничен только теми процессами, в имени исполняемого модуля которых присутствует строка «cmd.exe». Обратите внимание на PID процесса(ов).
Теперь давайте попробуем отобрать интересующие нас процессы, используя непосредственно WMI и не прибегая к стандартным средствам командной строки. Для этого просто напишите:
wmic process where description="cmd.exe" list brief
Результат:
Сравните полученные результаты. Запомните PID процесса CMD.EXE.
Командная строка для запуска wmic.exe
wmic process where processid="XXXX" CALL setpriority ProcessIDLevel
Ну а теперь можем изменить приоритет конкретного процесса (например с PID=8476):
wmic process where processid="8476" CALL setpriority 32768
wmic process where processid="8476" CALL setpriority "above normal"
winitpro.ru
Скорость работы компьютера интересует каждого пользователя, в большей или меньшей степени. Для того чтобы выжать из windows 7 максимум, можно прибегнуть к ряду известных способов, как самых простых, так и более сложных для обычного пользователя.
В этой статье мы рассмотрим методы ручной настройки системы, и не будем прибегать к помощи специльных программ, предназначенных для увеличения производительности системы.
Многие программы, которые вы устанавливаете, прописываются в автозагрузку при старте windows. Они автоматически запускаются при включении компьютера. Проверив список этих программ, и удалив те из них, которыми вы пользуетесь не часто (или вообще не пользуетесь), вы сможете ускорить работу систему.
Для этого нужно запустить средство управления конфигурацией системы:
Пуск -> Панель управления -> Система и безопасность -> Администрирование -> Конфигурация системы
или ввести в командной строке значение «
msconfig» и нажать Enter.
На вкладке «Автозагрузка» вы найдете все программы, которые автоматически запускаются при старте windows, и сможете удалить не нужные. Это можно также сделать вручную, удалив соответствующие значения из системного реестра. Перечень программ, которые находятся в автозагрузке, находится в следующих ветках реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Run
Отключение не нужных, или редко используемых служб позволит немного разгрузить оперативную память, что предоставит возможность другим приложениям работать быстрее. Перед тем, как отключать какие либо службы, рекомендуем создать точку восстановления системы на случай каких-либо осложнений (особенно для не опытных пользователей): Панель управления -> Система -> Защита системы -> Создать... Итак, список служб находится здесь: Пуск -> Панель управления -> Система и безопасность -> Администрирование -> Службы
Здесь вы можете отключить мало используемые службы. Безопасно можно отключить следующие:
· Служба ввода планшетного ПК · Обозреватель компьютеров · Вспомогательная служба IP · Удаленный реестр · Службы помощника по совместимости программ (для опытных пользователей)
Для того, чтобы запущенные приложения работали быстрее нужно задать им более высокий приоритет, по сравнению с фоновыми процессами. В этом случае активным приложениям будет выделяться больше процессорного времени. По умолчании система так и настроена, но баланс между ресурсами для активный, и для фоновых процессов можно сдвинуть еще больше. За это отвечает значение Win32PrioritySeparation, которое лежит в ветке реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\PriorityControl. Для открытия системного реестра – наберите «regedit» в командной строке.
По умолчанию стоит шестнадцатеричное значение – 2 (hex)Рекомендуемое значение – 6 (hex)Диапазон допустимых значений: от 1 до 26 (hex)
Вы можете попробовать другие значения, чтобы максимально ускорить работу вашей системы. Внимание: использовать значение 0 нельзя, ваш компьютер сразу же зависнет!
Кроме изменения общего баланса ресурсов процессора, вы можете устанавливать более высокий приоритет отдельным программам. Сделать это можно через Диспетчер задач.
Иногда это бывает полезно. Например, если какая-то программа проводит очень длительную операцию, и вам нужно, чтобы она сделала это быстрее, то установка для нее более высокого приоритета может помочь.
Операционная система windows 7 дает возможность настроить некоторые параметры, которые могут ускорить систему. Чтобы открыть диалог Параметры взаимодействия нужно пройти сюда: Пуск -> Панель управления -> Система и безопасность -> Система -> Дополнительные параметры системы -> Параметры (на вкладке Дополнительно).
Здесь на вкладке Визуальные эффекты вы можете отключить анимацию в меню Пуск, отключить функцию Aero Peek, прозрачность окон и другие параметры. Если вы выберите опцию «Обеспечить наилучшее быстродействие», то будут отключены все визуальные эффекты windows Aero, и система будет работать быстрее, однако, вы пожертвуете всей той красотой, которую дает нам windows 7.
Aero Peek – это функция, которая делает все окна прозрачными при наведении курсора мыши на маленький квадратик, находящийся справа от часиков. Чтобы уменьшить время отклика этой функции нужно изменить ключ DesktopLivePreviewHoverTime типа DWORD, который находится в ветке реестра HKEY_CURRENT_USER\Software\Microsoft\windows\CurrentVersion\Explorer\Advanced
Если в данной ветке нет такого ключа, его нужно создать и затем просто менять его значения. Десятичное значение 1000 равно задержке в одну секунду, 500 – полсекунды и так далее.
Контроль учетных записей (UAC) уведомляет пользователя о тех изменениях в системе, которые требуют прав администратора. Эта служба выводит уведомления при попытке установить новую программу, при внесении изменений в файловую систему и т.д. Это может быть полезно новичкам, но опытным пользователям зачастую мешает. Чтобы отключить вывод уведомлений от User Account Control нужно проделать слудующее:
· Запустить Конфигурацию системы («msconfig» без кавычек в командной строке). · Перейти на вкладку «Сервис» и в списке найти пункт «Настройка контроля учетных записей» · Выделить этот пункт и нажать кнопку «Запустить». · Откроется диалог, в котором ползунком нужно отрегулировать выдачу уведомлений.
Внесенные изменения активируются после перезагрузки компьютера.
mydiv.net
tipskettle.blogspot.ru
Давайте поговорим о приоритетах Windows процессов . В большинстве случаев «играться» с настройкой приоритетов нет необходимости, но, иногда, грамотный системный администратор может помочь системе более правильно распределить процессорное время между запущенными задачами. Единого рецепта нет, но путем «подбора и перебора» это вполне реализуемо. Где это может понадобиться? Например, в связке 1С-SQL можно дать больше процессорного времени 1С и SQL, как наиболее критичным к ресурсам процессам.
В общем случае, посмотреть и изменить приоритет запущенного процесса можно через Task Manager
Windows NT/2000/ 7 /2008
В Windows 2012 это “закопали» чуть глубже
Как видно из приведенных примеров, вам доступно всего 6 приоритетов (как выяснится позже, это классы приоритетов ). Достаточно? Microsoft считает, что да. Но давайте вспомним «легендарную» фразу Билла Гейста, который сказал, что «640 KB of RAM will be enough for everybody”. Но время показало, что это далеко не так. :)
А теперь давайте разберемся, как это есть на самом деле.
На самом деле в Windows существует 32 уровня приоритета, от 0 до 31.
Они группируются так:
При создании процесса, ему назначается один из шести классов приоритетов :
Посмотреть приоритет процесса, как писалось выше, можно, используя Task Manager.
Примечание : Приоритеты Above normal и Below normal появились, начиная с Windows 2000.
Приоритет каждого потока (базовый приоритет потока ) складывается из приоритета его процесса и относительного приоритета самого потока. Есть семь относительных приоритетов потоков:
В следующей таблице показаны приоритеты процесса, относительный и базовый приоритеты потока.
Приоритет потока | Класс процесса | Класс процесса | |||||
Idle class | Below normal class | Normal class | Above normal class | High class | Real time class | ||
1 | Idle | Idle | Idle | Idle | Idle | ||
2 | Lowest | ||||||
3 | Below … | ||||||
4 | Idle class | Normal | Lowest | ||||
5 | Above … | Below … | |||||
6 | Below normal class | Highest | Normal | Lowest | |||
7 | Above … | Below … | |||||
8 | Normal class | Highest | Normal | Lowest | |||
9 | Above … | Below … | |||||
10 | Above normal class | Highest | Normal | ||||
11 | Above … | Lowest | |||||
12 | Highest | Below … | |||||
13 | High class | Normal | |||||
14 | Above … | ||||||
15 | Highest | ||||||
15 | Time critical | Time critical | Time critical | Time critical | Time critical | ||
16 | Idle | ||||||
17 | |||||||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | Lowest | ||||||
23 | Below … | ||||||
24 | Real time class | Normal | |||||
25 | Above … | ||||||
26 | Highest | ||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | Time critical |
Теперь, когда мы все это узнали, что же с этим всем можно сделать? Ну, например, начать использовать.
Как еще можно запустить процесс с «нестандартным» приоритетом или изменить?
Метод 1. Запустить задачу/процесс и изменить приоритет через Task Manager.
Минусы метода:
Метод 2. Можно воспользоваться командой START с соответствующими ключами
Доступные ключи, отвечающие за приоритеты, следующие (я умышленно опускаю ключи командной строки команды START не имеющие отношения к описываемому процессу работы с приоритетами):
C:\>start /?
Starts a separate window to run a specified program or command.
START ["title"]
LOW
Start application in the IDLE priority class.
NORMAL
Start application in the NORMAL priority class.
HIGH
Start application in the HIGH priority class.
REALTIME
Start application in the REALTIME priority class.
ABOVENORMAL
Start application in the ABOVENORMAL priority class.
BELOWNORMAL
Start application in the BELOWNORMAL priority class.
Как видим, команда START дает возможность запустить процесс все с теми же 6-ю приоритетами, которые доступны через Task Manager
Минус метода:
Метод 3. Использование утилиты wmic.exe
Как было показано выше, Task Manager, и команда START достаточно неуклюжи для задачи назначения приоритетов. Посмотрим, как это применять более гибко. Будем использовать утилиту wmic.exe .
Командная строка:
wmic process where name="AppName" CALL setpriority ProcessIDLevel
wmic process where name="calc.exe" CALL setpriority 32768
wmic process where name="calc.exe" CALL setpriority "above normal"
Приоритеты (предопределенные):
Отступление . Что делать если существует несколько одноименных процессов? Приоритет процесса можно менять как по имени процесса, так и с использованием PID (Process ID) процесса.
Вот короткий пример запуска wmic.exe для получения необходимой информации
Используем команду:
Примечание : пример выполнения этой команды приводить не буду. Слишком большой список процессов получается. Сделаете это самостоятельно, при желании.
Вы получите список процессов, запущенных на вашем локальном компьютере. Теперь выполните команду:
wmic process list brief | find "cmd.exe"
Результат:
Специально запустил несколько копий cmd.exe, чтобы иллюстрация была более полной.
Теперь список процессов ограничен только теми процессами, в имени исполняемого модуля которых присутствует строка «cmd.exe». Обратите внимание на PID процесса(ов).
Теперь давайте попробуем отобрать интересующие нас процессы, используя непосредственно WMI и не прибегая к стандартным средствам командной строки. Для этого просто напишите:
wmic process where description="cmd.exe" list brief
Результат:
Сравните полученные результаты. Запомните PID процесса CMD.EXE.
Командная строка для запуска wmic.exe
wmic process where processid="XXXX" CALL setpriority ProcessIDLevel
Ну а теперь можем изменить приоритет конкретного процесса (например с PID=8476):
wmic process where processid="8476" CALL setpriority 32768
wmic process where processid="8476" CALL setpriority "above normal"
7 ответов
Нить приоритета в реальном времени никогда не может быть предотвращена прерываниями таймера и работает с более высоким приоритетом, чем любой другой поток в системе. Поскольку такой связанный с процессором поток приоритетов в реальном времени может полностью разрушить машину.
Создание потоков приоритета в реальном времени требует привилегии (SeIncreaseBasePriorityPrivilege), поэтому это может быть сделано только администратором.
Для Vista и за ее пределами одним из вариантов для приложений, которые требуют, чтобы они выполнялись в приоритетах в реальном времени, является использование Служба планировщика мультимедийных классов (MMCSS) и пусть он управляет приоритетом ваших потоков. MMCSS не позволит вашему приложению использовать слишком много процессорного времени, поэтому вам не нужно беспокоиться о том, чтобы танкить машину.
Просто класс приоритета "В реальном времени" выше класса приоритетов "Высокий". Я не думаю, что там гораздо больше. О да, вы должны иметь SeIncreaseBasePriorityPrivilege , чтобы поместить поток в класс Real Time.
Windows иногда повышает приоритет потока по разным причинам, но не увеличит приоритет потока в другом классе приоритета. Это также не повысит приоритет потоков в классе приоритетов в реальном времени. Таким образом, поток с высоким приоритетом не получит никакого автоматического временного повышения в классе приоритетов реального времени.
Руссинович "Внутри Windows" глава о том, как Windows обрабатывает приоритеты, - отличный ресурс для изучения того, как это работает:
Обратите внимание, что нет абсолютно никаких проблем с потоком, имеющим приоритет в реальном времени в обычной системе Windows, - они не обязательно для специальных процессов, запущенных на машинах dedicatd. Я полагаю, что для мультимедийных драйверов и/или процессов могут потребоваться потоки с приоритетом в реальном времени. Однако такой поток не должен требовать большого количества CPU - он должен блокировать большую часть времени, чтобы нормальные системные события могли обрабатывать.
Это будет самый высокий доступный параметр приоритета и обычно будет использоваться только в поле, предназначенном для запуска этой конкретной программы. Он на самом деле достаточно высок, чтобы он мог вызвать голод на клавиатуре и мышиных потоках в той степени, в которой они перестали отвечать.
Итак, если вам нужно спросить, не используйте его:)
В режиме реального времени это класс с наивысшим приоритетом, доступный для процесса. Поэтому он отличается от "Высокого" тем, что он на один шаг больше, и "Выше Нормальный" тем, что он на два шага больше.
Аналогично, в режиме реального времени также есть уровень приоритета потока.
Класс приоритета процесса повышает или понижает все эффективные приоритеты потоков в процессе и поэтому считается "базовым приоритетом".
Итак, процесс имеет:
Так как предполагается, что в режиме реального времени зарезервированы приложения, которые абсолютно должны упредить другие запущенные процессы, существует специальная привилегия безопасности для защиты от случайного ее использования. Это определяется политикой безопасности.
В NT6 + (Vista +) использование планировщика классов мультимедиа Vista - это правильный способ добиться операций в реальном времени в том, что не является оперативной ОС. Он работает, по большей части, хотя и не идеален, поскольку ОС не предназначена для операций в реальном времени.
Microsoft считает этот приоритет очень опасным, справедливо. Ни одно приложение не должно использовать его, кроме как в особых обстоятельствах, и даже тогда попытаться ограничить его использование во временные потребности.
Как только Windows узнает, что программа использует более высокий приоритет, кажется, что она ограничивает приоритет процесса.
Установка приоритета из IDLE в REALTIME НЕ меняет использование ЦП.
Я нашел на своем многопроцессорном процессоре AMD, что, если я отброшу один из процессоров, как LAST, использование процессора будет MAX OUT, а последний CPU останется бездействующим. Скорость процессора увеличивается до 75% на моей Quad AMD.
Используйте Диспетчер задач → выберите процесс- > Щелкните правой кнопкой мыши процесс- > Выбрать- > Установить аффинность Нажмите все, кроме последнего процессора. Использование процессора будет увеличиваться до MAX на оставшихся процессорах и количество кадров, если обработка видео увеличится.
По определению, Windows является многозадачной операционной системой. То есть одновременно в ней могут выполняться несколько задач. Однако задача задаче рознь. И различие это заключается в приоритете. То есть, при выполнении какой-либо программы Windows распределяет ресурсы определенным образом, в зависимости от того, какой приоритет у какого процесса (программы). Программы в дальнейшем я буду называть процессами, так проще. Каждая запущенная программа в Windows представляет собой процесс. Приоритеты бывают разные - большие, маленькие, но об этом потом. Чем это может нам помочь? А вот чем. Многие сетуют на медленность выполнения программ на Vb. В свое время я на это наткнулся на самом наглядном примере. Представьте себе программу, которая должна через определенный интервал времени выполнять какое-либо действие - ну, например, что-то выводить пользователю. Просто - скажете Вы. Берем таймер и вперед. А если помимо этого периодически программа должна что-то еще считать, и не один раз, а таймеров много? Будет тормозить. Причем не Windows, а только программа. Несправедливо? Да. Это значит, что Windows отделяет мало ресурсов Вашей программе, которых ей явно недостаточно. Значит попросить у Windows больше, только как?
Значит надо менять приоритет. Самое время о них поговорить. В Windows"98 приоритетов меньше, чем в Windows Me или 2000, но они таки есть J. Вот они.
Приоритет реального времени (real time) - программа выполняется так, как будто она одна и есть цель жизни Windows. Все ресурсы отдаются ей.
Высокий приоритет (high) - программа выполняется так, чтобы оставить чуть-чуть остальным приложениям.
Нормальный (normal) - выполнение идет обычным путем.
Низкий (idle) - если выполнение и идет, то только когда Windows делать нечего.
Ну так вот, запущенная программа сначала получает приоритет Normal, и выполняется своим чередом. При этом приоритете, что бы программа ни делала, она не сможет съесть ресурсов столько, чтобы повис Windows. В теории. Но нам так не подходит. Нам надо приоритет high или, если все очень напряжно, real time. Но real time - вещь опасная. Может запросто затормозиться даже мышка. А об остальных программах я и говорить на хочу. Просто копец и все тут. Итак, как же все таки приоритет поменять.
Да, за установку приоритета отвечает функция SetPriorityClass. То есть, вызвав ее, и передав все, что ей надо, мы получим нужный приоритет.
Private Declare Function SetPriorityClass _ Lib "kernel32" (ByVal hProcess As Long, _ ByVal dwPriorityClass As Long) As Long
Все просто - берем константу и вперед, но нам надо получить Handle процесса. То есть, процесс и окно для Windows вещи хоть и почти синонимичные, но не всегда. Handle окна - одна вещь, Handle процесса - совсем другая. То есть, у процесса может быть много окон, но у окна только один процесс владелец. Значит, нам надо научиться находить Handle именно процесса. В этом нам поможет функция OpenProcess, которая после передачи ей параметров, скажет, что за Handle у процесса.
Private Declare Function OpenProcess _ Lib "kernel32" (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
dwDesiredAccess - что мы хотим узнать (Handle у процесса бывают разные, для завершения процесса - одни, для получения информации - другой). Мы будем использовать константу PROCESS_QUERY_INFORMATION, то есть опрашивать процесс.
Private Const PROCESS_QUERY_INFORMATION = &H400
bInheritHandle - переменная Boolean. Если ее передать True, то полученный Handle может в будущем быть использован другим процессом. Но нам это не надо. Передаем туда False.
DwProcessId - так, а это очередная вещь - идентификатор (id) процесса. Нам надо и его получить. Как? Просто! Функция GetCurrentProcessId, вызываемая без параметров (слава Богу) просто возвращает id текущего процесса.
Private Declare Function GetCurrentProcessId _ Lib "kernel32" Alias "GetCurrentProcessId" () As Long
Все. Можно вздохнуть и все сделать красиво.
Немного кода
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
Пользуемся словарём. Если программы не закрыты, они используют ресурс нашего компьютера. Посмотреть, что в реальности происходит, можно в специальной программе ОС Windows. Но не просто посмотреть, а управлять распределением ресурсов с целью повышения быстродействия. Рассмотрим, как повысить приоритет в Диспетчере задач Windows.
Работая со многими программами, компьютер переключается от одной к другой в определённой очерёдности. Те, которые он считает наиболее важными, выполняются первыми. Степень важности и называется приоритетом. Как правило, он управляется кодом самой программы. Но пользователь может сам сменить базовый параметр на какой-либо другой, тем самым сделав более быстрым то, что ему важно в данный момент.
Степень важности имеет следующие градации:
Рассмотрим, как выставить приоритет в Диспетчере задач:
ВАЖНО. Помните, что высокие значения для какой-то одной программы могут существенно снизить производительность машины в целом. Повышайте постепенно, и опытным путём найдите ту степень, которая сделает работу комфортной.
Когда это применяется? В основном для решения временных заданий. Например, вы смотрите фильм, и одновременно скачиваете какие-либо данные с интернета, и видео периодически прерывается. Повысив важность плеера, вы решите эту проблему. Ещё этим часто пользуются для повышения быстродействия браузера при работе в сети.
Как уже было сказано, изменение действует лишь определённый момент времени, пока работает программа. Когда она перезапускается, опять будут базовые значения. Рассмотрим, как можно более удобным способом сменить приоритет задач Windows.
Согласитесь, каждый раз экспериментировать с настройками весьма неудобно. Существуют специальные программы, которые позволяют упростить процедуру. Например, Process Explorer и Mz CPU Accelerator. Подробно на них останавливаться не будем, отметим лишь суть их работы.
Mz CPU Accelerator позволяет автоматически повышать значения для программы активного окна, делая это весьма эффективно. Кроме того, она позволяет управлять распределением ресурсов процессора, например, выделить программе одно или два ядра вместо всех. В общем, программа позволяет увеличить скорость работы приложений.
Process Explorer позволяет получить подробную информацию обо всех процессах, происходящих на компьютере и задать более продвинутые настройки, чем стандартное средство windows.
Таким образом, зная, как можно поменять уровень приоритета в Диспетчере задач, можно повысить скорость работы компьютера , избежать ошибок и зависания. Если у вас есть советы, как изменить этот параметр в той или иной ситуации при работе в windows, поделитесь ими с другими пользователями, оставив комментарий ниже.