none
Диспетчер процессов и потоков RRS feed

  • Вопрос

  • Мой заголовок отображает тему курсовой работы по программированию в институте.

    Собственно, что моя программа должна уметь:

    1) Получать список процессов и принадлежащих к ним потоков;

    2) Распознавать физические и логические процессоры (количество);

    3) Распознавать, в каком физическом/логическом процессоре загружен выбранный процесс, или же определять, что указанный процесс использует "многоядерность";

    4) В случае "многоядерного" процесса определять, какие его потоки в каких логических/физических процессорах загружены;

    5) Возможности стандартного диспетчера задач для списка процессов: изменение приоритета, задание соответствий для логических/физических процессоров, открытие исполняемого файла выбранного процесса;

    6) Для красоты - для "многоядерных" процессов изменение логического/физического процессора, в который загружен тот или иной поток заданного процесса.

    Из всего этого понятно, что это должен быть продвинутый диспетчер задач.

    Собственно, вопрос: какие функции .NET мне необходимо использовать ? Вопрос задаю из нежелания лазить по всевозможным пространствам имён и тому подобное. На WinApi это будет ещё сложнее.

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


    16 апреля 2014 г. 22:20

Ответы

  • 1. См. классы Process и Thread.

    2. См. класс Environment.

    3-4. См. класс ProcessThread. В частности, свойство ProcessorAffinity.

    5. См. предыдущие пункты.

    6. Начиная с версии .net 3.5 можно использовать ProcessThread.ProcessorAffinity. Раньше приходилось юзать винапишную функцию SetThreadAffinityMask. Для XBox можно применять метод Thread.SetProcessorAffinity. Также курите метод Thread.BeginThreadAffinity.

    Чтобы в своём диспетчере отображать загрузку процессоров, потребляемую память и т. п. следует использовать счётчики производительности - PerformanceCounter.

    Как я уже сказал, много информации можно получить с помощью WMI - тынц.

    17 апреля 2014 г. 9:52

Все ответы

  • Вопрос задаю из нежелания лазить по всевозможным пространствам имён и тому подобное.


    Курсовая (да и дипломная) работа преследует цель научить студента заниматься исследовательской работой. В том-то самая суть, чтобы "облазить" много чего и придумать решение. Какой же и Вас получится специалист, если Вам уже сейчас лень этим заниматься :)

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 17 апреля 2014 г. 8:32
    17 апреля 2014 г. 8:29
  • "какие функции .NET мне необходимо использовать ?"
    В .NET нет функций в чистом виде. Есть классы, заключенные в пространства имён.
    Вам нужно в основном пространство имён System.Diagnostics.
    А примеры кода нужно гуглить, гуглить и ещё раз гуглить. Всё, что нагуглите, нужно пробовать, пробовать и ещё раз пробовать.
    Вот пара примеров правильных запросов к гуглу.
    https://www.google.ru/#newwindow=1&q=c%23+get+process+list
    https://www.google.ru/#newwindow=1&q=c%23+get+threads+of+process

    "Вопрос задаю из нежелания лазить по всевозможным пространствам имён"
    То есть Вы хотите, чтобы мы бросили свои дела и фактически сделали за Вас Вашу работу?
    И сколько Вы нам за это заплатите?
    Если нисколько, то никто Вам ничего не сделает.


    17 апреля 2014 г. 9:47
  • 1. См. классы Process и Thread.

    2. См. класс Environment.

    3-4. См. класс ProcessThread. В частности, свойство ProcessorAffinity.

    5. См. предыдущие пункты.

    6. Начиная с версии .net 3.5 можно использовать ProcessThread.ProcessorAffinity. Раньше приходилось юзать винапишную функцию SetThreadAffinityMask. Для XBox можно применять метод Thread.SetProcessorAffinity. Также курите метод Thread.BeginThreadAffinity.

    Чтобы в своём диспетчере отображать загрузку процессоров, потребляемую память и т. п. следует использовать счётчики производительности - PerformanceCounter.

    Как я уже сказал, много информации можно получить с помощью WMI - тынц.

    17 апреля 2014 г. 9:52
  • Не хочу никого обидеть, но я не то что бы не хочу лазить везде, мне нужно просто знать примерное направление. А по этому направлению я уже буду искать то, что мне нужно.

    kosuke904

    Лень и программист - это синонимы. Читайте то, что я только что написал выше.


    17 апреля 2014 г. 13:06
  • Petalvik

    Зачёт и спасибо за помощь.

    17 апреля 2014 г. 13:07
  • Лень и программист - это синонимы.



    "Больше вопросов не имею". Удачи.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    18 апреля 2014 г. 17:40