Необходимо для определенного пользователя установить лимит загрузки процессора (например, чтобы все процессы этого юзера занимали в сумме не более 30% процессорного времени). Понимаю, что нужно отталкиваться от процессорного времени, которое система выделяет на каждый процесс этого юзера. Только вот как? Подскажите.
Про шедулер я немного знаю - приоритеты потоков, процессов, классы приоритетов и т.п. Меня больше интересует а) возможно ли чисто теоретически с минимальными хаками ОС Вин ХР реализовать такое. б) реализовывал ли кто то хотя-бы нечто подобное?
я понимаю что бывают случаи когда некий код работает на повышенных уровнях IRQL и его прерывать не нужно, и опасно для стабильности ОС. Но ведь большинство кода работает на уровне PASSIVE_LEVEL и потому его можно спокойно приостанавливать. Пока в голову приходит только разве что по таймеру замораживать/размораживать потоки пользоателя, пока не добьешься нужного уровня загрузки процессора, но это как-то слишком медленно. Может быть в виндовом шедулере есть некоторая квота процессорного времени на каждый поток? тогда я бы ее просто уменьшил да и все.
ntcdm Можно вывести диалог, в котором спросить: сколько времени пользователь собирается работать? Разрешить ввод в пределах интервала: задать минимальный и максимальный пределы. После ответа, дать пользователю 30% времени от введенного значения.