Заранее извиняюсь за возможно глупые вопросы. Вчера, работая за ноутбуком, заметил, что загрузка процессора - около 100%. В Windows Task Manager увидел что систему грузит процесс System. Как я понимаю к этому процессу относятся все низкоуровневые подсистемы ОС, в т.ч. работа с аппаратными средствами, менеджер памяти, обрабтчик аппаратных прерываний и, в том числе, драйвера режима ядра. Быстрый поиск в сети не помог найти информацию о том, как определить какой именно драйвер (грешу именно на кривой драйвер, т.к. после перезагрузки ОС стала работать нормально) загружает процессор. Поговорил с местным системщиком. По его словам, если производитель драйвера не встроит в него определение загрузки процессора и памяти, эти данные не получится узнать. То есть сама ОС этого узнать не может из-за наслоения драйверов. Хотелось узнать так ли это, и как этот вопрос решается в других ОС. Попутно возник вопрос - что есть такое "загрузка процессора" по "мнению" Windows Task Manager вообще? То есть хочется услышать определение понятия, т.к. сам я до этого не "дошёл". Что это - загрузка определённых компонентов процессора, или относительная ресурсоёмость процессов по сравнению с его максимальной производительностью (что есть тоже весьма расплывчатое понятие). В принципе, думаю можно какую-то информацию об этом почерпнуть из исходных текстов ядра Linux, но там их сотни мегабайт и я просто не знаю где и что конкретно смотреть. Спасибо.
nimdamsk в таск менеджере можно включить отображение загрузки в режиме ядра (будет красным рисовать). По крайней мере можно будет определить загрузку создает код ядра или пользовательский.
RKU тебе в помощь!!! Главное окно программы содержит шесть вкладок: Детектирование и снятие перехватов SSDT Детектор скрытых процессов Детектор скрытых драйверов Детектор скрытых файлов Детектор перехватов кода Отчет http://rootkits.ru/app/ShowApp.aspx?id_a=1
Я тут навёл справки... В общем понятно что есть "загрузка процессора" и как она считается. Менеджер процессов просто-напросто считает какое количество квантов времени от, к примеру, секунды, кушает тот или иной процесс, а остальное - уже понятно. Ясное дело, сюда не входят ресурсы на обслуживание этих самых квантов времени, т.к. сами себя они считать не в состоянии. Вопрос же с драйвером остаётся открытым.
Да, и ещё один вопрос - как получается, что у System Idle Process может быть значение 99%? Ведь если диспетчер потоков пытается выделить время этим потокам, а им не надо, они находятся в ожидании - тогда получается что диспетчер потоков будет всё время бегать по потокам предлагая им ресурсы. А для постоянного опроса нужно время процессора. Как это можно связать с почти полностью свободным процессорным временем?
Их ожидание может прекратиться почти всегда не раньше первого прерывания, соответственно нет нужды предлагать процессорное время.
nimdamsk для начала System Idle теоретически может быть и 100% так как ето не процес, а просто вреся простоя системы по сравнению с временем работы всёх процесов. Но вот напр. диспетчер задач, сам потребляет минимум 1%, лишь для считывания данных о системе и их отображения, и ещо сама система потребляет минимум около 0.3% чтобы упорядочить списки закрывать ненужные хендлы, подгружать страницы и т.д. Да и по сути воможно вычыслить что за драйвер или служба подвисает систему, даже если их работает куча. Но для етого надо сидеть и разбиратся что там виснет. Ето может быть даже исключение с установленным обработчиком, который не может толком его обработать (у меня такое было). Словом, разбиратся надо...