Программа которая находится в процессе выполнения компьютером
Интерпретаторы и компиляторы. Для того чтобы процессор мог выполнить программу, эта программа и данные, с которыми она работает, должны быть загружены в оперативную память.
Итак, мы создали программу на языке программирования (некоторый текст) и загрузили ее в оперативную память. Теперь мы хотим, чтобы процессор ее выполнил, однако процессор «понимает» команды только на машинном языке, а наша программа написана на языке программирования. Как быть?
Необходимо, чтобы в оперативной памяти находилась программа-переводчик (транслятор), автоматически переводящая программу с языка программирования на машинный язык. Компьютер может выполнять программы, написанные только на том языке программирования, транслятор которого размещен в оперативной памяти компьютера.
Трансляторы языков программирования бывают двух типов: интерпретаторы и компиляторы. Интерпретатор — это программа, которая обеспечивает последовательный перевод инструкций программы на машинный язык и их выполнение. Поэтому при каждом запуске программы на выполнение эта процедура повторяется. Достоинством интерпретаторов является удобство отладки программы (поиска в ней ошибок), так как возможно пошаговое ее выполнение, а недостатком — сравнительно малая скорость выполнения.
Компилятор действует иначе, он переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением ехе). Затем этот уже готовый к выполнению файл, записанный на машинном языке, можно запускать на исполнение многократно. Достоинством компиляторов является большая скорость выполнения программы, а недостатком — трудоемкость отладки, так как невозможно пошаговое выполнение программы.
Современные системы программирования, и в том числе Visual Basic, позволяют работать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки программы используется режим интерпретатора, а для получения готовой исполняемой программы — режим компилятора.
Процесс выполнения программы. Рассмотрим процесс выполнения программы на примере рассмотренной выше программы (проект «Переменные»), написанной на языке программирования Visual Basic.
Ввод текста программы в оперативную память. Текст программы вводится в оперативную память с помощью клавиатуры или считывается из внешней памяти. Текст программы займет в памяти определенное количество ячеек (например, с ячейки номер I по ячейку I+K).
Перевод программы на машинный язык. Наша программа будет записана в памяти во внутреннем представлении языка программирования Visual Basic, который процессор «не понимает». Для перевода программы на машинный язык, понятный процессору, в памяти должна находиться программа-транслятор языка Visual Basic. Программа-транс - лятор после считывания в оперативную память из внешней памяти будет занимать в памяти определенное количество ячеек (например, с ячейки номер N по ячейку N+M).
Выполнение программы. После запуска программы на выполнение процессор последовательно будет считывать из памяти операторы и их выполнять.
В процессе выполнения оператора объявления переменных Dim в оперативной памяти для их хранения отводится необходимое количество ячееек: для целочисленных переменных intA, intB — по две ячейки, для неотрицательной целочисленной переменной bytC — одна ячейка, для переменной одинарной точности sngD — четыре ячейки, для переменной двойной точности dblE — восемь ячеек, для строковых переменных strA и strB количество ячеек, равное количеству символов, составляющих их значения, для логических переменных ЫпА, ЫпВ, ЫпС — по две ячейки. Таким образом, в памяти для хранения данных (значений переменных) будет отведено определенное количество ячеек, например ячейки с 1-й по 39-ю (рис. 4.17).
Далее, в процессе выполнения операторов присваивания в отведенные переменным области оперативной памяти записываются их значения. Если в правой части оператора присваивания находятся арифметические выражения, то предварительно вычисляются их значения.
Затем с помощью метода Print производится вывод значений переменных на форму, реализующую графический интерфейс программы. В этом процессе значения переменных считываются из памяти и высвечиваются на экране монитора.
Вопросы для размышления
1. Какую функцию выполняют трансляторы языков программирования?
2. В чем состоит различие между интерпретаторами и компиляторами?
я
4.15. Какое количество ячеек памяти было бы занято переменными в проекте «Переменные», если бы переменные не были объяв-
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.
© cyberpedia.su 2017-2020 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!
Любая обработка информации на компьютере осуществляется по программе. Выполнением программы занимается процессор (см. “Процессор”), при этом сама программа хранится, как правило, в ОЗУ (см. “Память оперативная”) и считывается оттуда в процессор по мере необходимости. Вопрос о том, каким образом программа попадает в оперативную память, рассматривается отдельно в статье “Загрузка ПО”.
Каждая программа состоит из отдельных двоичных команд (см. “Машинная команда”), так что выполнение программы есть не что иное, как поочередное выполнение этих команд. Рассмотрим последовательность действий ЭВМ при выполнении каждой из команд программы.
Важной составной частью любой фоннеймановской машины является счетчик адреса команд. Этот специальный внутренний регистр в устройстве управления процессора постоянно указывает на ячейку памяти, в которой хранится следующая команда программы.
Пусть в рассматриваемый момент времени текущее значение счетчика команд уже определено. Тогда дальнейшие действия процессора определяются следующим алгоритмом.
1. Согласно содержимому счетчика адреса команд считывается очередная команда программы. Ее код обычно заносится на хранение в специальный регистр УУ, который носит название регистра команд.
2. Счетчик команд автоматически изменяется так, чтобы в нем содержался адрес следующей команды. В простейшем случае для этой цели достаточно к текущему значению счетчика прибавить некоторую константу, определяющуюся длиной команды.
3. Считанная в регистр команд операция расшифровывается, извлекаются необходимые данные, выполняются требуемые действия и, если это предусмотрено операцией, производится запись результата в ОЗУ.
Далее все действия повторяются заново. Поскольку на втором этапе счетчик адреса команд был изменен, то в ходе нового цикла будет выполняться другая команда.
Рассмотренный основной алгоритм работы ЭВМ (его также часто называют программным принципом работы ЭВМ) позволяет шаг за шагом выполнить хранящуюся в ОЗУ линейную программу. Если же требуется изменить порядок вычислений для реализации развилки или цикла, достаточно на этапе 3 в счетчик команд занести новый адрес (именно так происходит условный или безусловный переход).
Как отчетливо видно из приведенной выше блок-схемы, основной алгоритм не является “самостартующим”: ему требуется определить первоначальное содержимое счетчика, т.е. фактически адрес самой первой команды. В старых машинах это делал оператор ЭВМ. В современных компьютерах при включении питания или при нажатии на кнопку сброса (reset) в счетчик аппаратно заносится стартовый адрес находящейся в ПЗУ программы инициализации всех устройств и начальной загрузки ЭВМ (см. “Загрузка ПО”).
В любом случае, как только первоначальный адрес задан, все дальнейшие действия процессора предопределены выполняемой программой. Мы видим теперь, что вся деятельность ЭВМ есть непрерывное выполнение тех или иных программ, причем программы эти могут, в свою очередь, загружать новые программы и т.д.
В современных компьютерах для ускорения основного цикла выполнения команды используется метод конвейеризации, позволяющий реализовать перечисленные выше этапы алгоритма параллельно. Используются также и другие способы, которые направлены на ускорения выполнения команд программы.
Уместно подчеркнуть, что программный способ управления компьютером делает его необычайно гибким и позволяет на одном и том же оборудовании решать самые разнообразные задачи (включая даже такие, которые в момент изготовления машины еще не были известны!).
Методические рекомендации
Курс информатики основной школы
Школьникам следует дать представление об ЭВМ как об автомате, выполняющем программу в соответствии с относительно несложным алгоритмом. Авторы самого первого школьного учебника информатики 10 подчеркивали методическую важность этого понятия. “Основной алгоритм работы процессора является важнейшим материалом данного параграфа. Следуя командам этого алгоритма, процессор осуществляет автоматическое исполнение программы, находящейся в памяти ЭВМ. В принципе этот алгоритм чрезвычайно прост. Но его общеобразовательное значение очень велико: разобравшись в основном алгоритме процессора, учащиеся узнают, как происходит автоматическое исполнение программы, хранящейся в памяти компьютера, т.е. как осуществляет ЭВМ автоматическую обработку информации. Учитель должен добиваться от школьников понимания сути предлагаемого материала, а не его механического выучивания”.
Очень важно обратить внимание учеников на следующее обстоятельство: если посмотреть на основной алгоритм без учета деталей исполнения команды, то становится очевидным, что он годится практически для любого исполнителя, скажем, Кенгуренка. Так что ЭВМ — это самый настоящий исполнитель алгоритмов. Особенность данного исполнителя заключается в том, что команды, которые ЭВМ способна выполнять, являются максимально универсальными, в то время как Кенгуренок и остальные учебные исполнители способны работать только с узкоспециализированными командами. Важно понимать, что на базе относительно небольшого набора универсальных команд компьютера может быть смоделирован любой специализированный исполнитель: этим мы постоянно пользуемся на практике, когда работаем с программной поддержкой учебных исполнителей. Таким образом, компьютер — это универсальный исполнитель алгоритмов.
Курс информатики в старших классах
Стандарт не содержит прямого указания на необходимость повторения и углубления материала о программном принципе работы ЭВМ. Тем не менее, учитывая его важность, можно рекомендовать это сделать в рамках изучения темы “Аппаратное и программное обеспечение компьютера” (см. “Аппаратное и программное обеспечение”). Поскольку речь в ней обязательно пойдет о соотношении компонентов hard и soft, повторение принципов аппаратной основы выполнения программы видится вполне уместным. Более того, на новом уровне можно провести дискуссию о том, как в рамках основного алгоритма можно реализовать не только линейные задачи, но также разветвляющиеся или циклические. При наличии достаточного времени можно обсудить систему команд компьютера (см. “Машинная команда”).
Интересным мировоззренческим вопросом является исполнение команды “Останов”. Стоит объяснить ученикам, что в самых первых ЭВМ такая команда действительно завершала вычисления, после чего машина прекращала работу и ждала действий человека-оператора. Но позднее, когда задачи в машинах стали выполняться под руководством управляющих программ, окончание очередной задачи приводило к передаче управления программам-администраторам более высокого уровня; первоначально их называли мониторами, или супервизорами, сейчас этим занимается хорошо известная любому грамотному пользователю операционная система (см. “Операционная система”).
10 Изучение основ информатики и вычислительной техники: Методическое пособие для учителей и преподавателей средних учебных заведений. В 2 ч. Ч. 2 / А.П. Ершов, В.М. Монахов, М.В. Витиньш и др. М.: Просвещение, 1986, 207 с. (см. § 2 “Основной алгоритм работы процессора”).
Процессор компьютера непосредственно служит для восприятия языка машинных команд. Поэтому можно сказать, что компьютер - исполнитель алгоритмов, переведенных на машинный язык. Компьютерная программа — последовательность инструкций, предназначенная для исполнения устройством управления вычислительной машины. Чаще всего образ программы хранится в виде исполняемого модуля (отдельного файла или группы файлов). Процесс создания компьютерных программ носит название программирование, а людей, занимающихся этим видом деятельности, называют программистами.
Выполнение программ на компьютере
Программирование на языке машинных команд - дело сложное, объясняется высокой трудоемкостью программирования непосредственно в машинных кодах. Программист должен знать числовые коды всех машинных команд и сам распределять память под команды программы и данные.
Первым значительным шагом представляется переход к языку Ассемблера. Программисту не надо было больше вникать в хитроумные способы кодирования команд на аппаратном уровне. Числовые коды операций заменились мнемоническими (словесными) обозначениями. Однако разные компьютеры с различными типами компьютеров требуют свой язык Ассемблера. Поэтому его называют машинно-зависимым или языком низкого уровня. Следует отметить, что простейшая операция взятия логарифма на языке Ассемблера составляет несколько сотен строк кода, в то время как на языке высокого уровня - всего одну строчку.
На смену языкам Ассемблера были разработаны языки программирования высокого уровня (ЯПВУ). Они машинно-независимы.
Язык высокого уровня - язык программирования, средства которого обеспечивают описание задачи в наглядном, легко воспринимаемом виде, удобном для программиста. Он не зависит от внутренних машинных кодов ЭВМ любого типа, поэтому программы, написанные на языках высокого уровня, требуют перевода в машинные коды программами транслятора.
Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом (модулем). Выходной язык называется целевым языком или объектным кодом (модулем).
Трансляторы делятся на компиляторы и интерпретаторы.
Если цель трансляции - преобразование всего исходного текста программы на внутренний язык компьютера (т.е. получение некоторого нового кода), то такая трансляция называется также компиляцией.
При компиляции в память компьютера загружается программа-компилятор. Она воспринимает текст программы, написанной на языке высокого уровня, как исходную информацию, которая называется исходным модулем. После обработки исходный модуль, написанный на алгоритмическом языке, преобразуется в программу, состоящую из машинных команд. Это объектный модуль.
На следующем этапе компиляции выполняется специальная программа - редактор связей. Она подсоединяет к объектному модулю необходимые для его работы программные модули: все функции, процедуры, на которые он ссылается. Они выбираются из библиотеки подпрограмм соответствующей системы программирования и вставляются в объектный модуль. Этот процесс называется компоновкой(линкованием), и как его результат создается исполняемая программа. Ее также называют загрузочным модулем. Программа имеет расширение "ехе", загружается в память и выполняется.
Итак, при компиляции исполнение программы включает в себя три этапа: компиляция, компоновка и выполнение. Загрузочную программу можно записать на жесткий диск компьютера и использовать многократно для решения задачи, при этом трансляция программы уже не требуется.
Интерпретаторанализирует и тут же выполняет (собственно интерпретация) программу покомандно (или построчно), по мере поступления её исходного кода на вход интерпретатора. Интерпретатор в последовательности выполнения алгоритма считывает очередной оператор программы, переводит его в команды и тут же выполняет эти команды, после чего переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в оперативной памяти не сохраняются, т.е. при повторном выполнении одной и той же команды она снова будет транслировать.
При интерпретации, поскольку трансляция и выполнение совмещены, обработка программы на компьютере проходит в один этап. Однако откомпилированная программа выполняется быстрее, чем интерпретируемая.
Интерпретаторы возможностью создания загрузочных программ не обладают. В режиме интерпретации удобно отлаживать программу, а рабочие расчеты лучше осуществлять в режиме компиляции.
Для того чтобы программа могла быть выполненной, она должна быть помещена в оперативную память компьютера. Туда же должны быть помещены и исходные данные. Как правило, программа вводится в оперативную память с жесткого диска. Исходные данные вводятся с клавиатуры либо также с жесткого диска, куда они должны быть заранее помещены с помощью другой программы. Результаты своей работы программа помещает в определенную область оперативной памяти, откуда они могут быть выведены на какое-либо внешнее устройство, которым может быть жесткий диск, экран дисплея, печатающее устройство (рис.16).
Рис. 16. Распределение памяти при выполнении программы.
Процесс выполнения программы на ЭВМ разбивается на ряд этапов (рис. 17).
Рис.17. Процесс выполнения программы на ЭВМ.
Программа пишется программистом на одном из языков программирования. Процессор ЭВМ может реально выполнять только команды машинного языка. Преобразование исходного текста программы в машинные коды выполняется специальной программой – транслятором. Рассмотренный выше ассемблер является одной из разновидностей транслятора.
Трансляторы бывают двух видов: компиляторы и интерпретаторы.
Компилятор преобразует исходную программу на любом языке высокого уровня в некоторую стандартную форму на машинном языке, называемую объектным модулем.
Интерпретатор преобразует отдельные предложения исходного языка в машинный код и немедленно их исполняет. Интерпретатор не создает объектный модуль.
Преобразование текста на исходном языке, выполняемое транслятором, называется трансляцией. В процессе трансляции проверяется синтаксическая правильность предложений исходной программы и генерируется список обнаруженных ошибок. Объектный модуль формируется лишь при отсутствии синтаксических ошибок.
Некоторые части программы программист не пишет, а ссылается на них из своей программы, например, на программы управления вводом-выводом и пр. Они хранятся на внешнем запоминающем устройстве в библиотеке объектных модулей. Объектный модуль, сформированный компилятором, не может быть выполнен без объединения с этими модулями.
Все объектные модули генерируются в некотором стандартном виде. Поэтому различные части программы можно писать и транслировать независимо, помещая получаемые объектные модули в библиотеку объектных модулей. Это позволит разделить работу по написанию большой программы между несколькими программистами, каждый из которых может писать и отлаживать свою часть программы независимо. Даже если программист пишет программу самостоятельно, имеет смысл разбивать ее на ряд независимых частей, что позволяет вносить изменения в каждую из них, не затрагивая остальных частей.
Компилятор не может указать конкретный адрес оперативной памяти, начиная с которого будет располагаться формируемый объектный модуль, поскольку:
- размер получаемого объектного модуля не может быть заранее известен, поэтому существует опасность наложения в памяти различных модулей или появления неиспользуемых участков памяти;
- к моменту исполнения программы неизвестно, какие еще программы будут находиться в оперативной памяти.
Для решения этой проблемы транслятор формирует так называемые перемещаемые объектные модули. Начальный адрес перемещаемого объектного модуля в оперативной памяти компьютера определяется непосредственно при загрузке программы.
Программа, которая связывает независимо оттранслированные объектные модули в единую программу, называется редактором связей. Редактор связей имеет на входе объектные модули и генерирует на выходе загрузочный модуль, помещаемый на внешнее запоминающее устройство. Загрузочный модуль помещается в оперативную память специальной программой, называемой загрузчиком. Загрузчик определяет адрес загрузки программы в оперативную память исходя из сложившейся ситуации, помещает ее в оперативную память и передает управление на ее первую команду. Одна и та же программа при различных запусках может располагаться в различных местах оперативной памяти.
Работа операционной системы Windows основана на работе процессов. В этой статье разберём что такое Windows процессы, их свойства, состояния и другое.
Процессы
Процесс стоит воспринимать как контейнер с набором ресурсов для выполнения программы. То есть запускаем мы программу, для неё выделяется часть ресурсов компьютера и эта программа работает с этими ресурсами.
Процессы нужны операционной системе для многозадачности, так как программы работают в своих процессах и не мешают друг другу, при этом по очереди обрабатываются процессором.
Windows процессы состоят из следующего:
- Закрытое виртуальное адресное пространство, то есть выделенная для процесса часть оперативной памяти, которая называется виртуальной.
- Исполняемая программа выполняя свой код, помещает его в виртуальную память.
- Список открытых дескрипторов. Процесс может открывать или создавать объекты, например файлы или другие процессы. Эти объекты нумеруются, и их номера называют дескрипторами. Ссылаться на объект по дескриптору быстрее, чем по имени.
- Контекст безопасности. Сюда входит пользователь процесса, группа, привилегии, сеанс и другое.
- Идентификатор процесса, то есть его уникальный номер.
- Программный поток (как минимум один или несколько). Чтобы процесс хоть что-то делал, в нем должен существовать программный поток. Если потока нет, значит что-то пошло не так, возможно процесс не смог корректно завершиться, или стартовать.
У процессов есть еще очень много свойств которые вы можете посмотреть в “Диспетчере задач” или “Process Explorer“.
Процесс может быть в различных состояниях:
В Windows существуют процессы трёх типов:
- Приложения. Процессы запущенных приложений. У таких приложений есть окно на рабочем столе, которое вы можете свернуть, развернуть или закрыть.
- Фоновые процессы. Такие процессы работают в фоне и не имеют окна. Некоторые процессы приложений становятся фоновыми, когда вы сворачиваете их в трей.
- Процессы Windows. Процессы самой операционной системы, например “Диспетчер печати” или “Проводник”.
Дерево процессов
В Windows процессы знают только своих родителей, а более древних предков не знают.
Например у нас есть такое дерево процессов:
Если мы завершим дерево процессов “Процесс_1“, то завершатся все процессы. Потому что “Процесс_1” знает про “Процесс_2“, а “Процесс_2” знает про “Процесс_3“.
Если мы вначале завершим “Процесс_2“, а затем завершаем дерево процессов “Процесс_1“, то завершится только “Процесс_1“, так как между “Процесс_1” и “Процесс_3” не останется связи.
Например, запустите командную строку и выполните команду title parrent чтобы изменить заголовок окна и start cmd чтобы запустить второе окно командной строки:
Измените заголовок второго окна на child и из него запустите программу paint:
В окне командной строке child введите команду exit, окно закроется а paint продолжит работать:
После этого на рабочем столе останутся два приложения, командная строка parrent и paint. При этом parrent будет являться как бы дедом для paint.
Запустите “Диспетчер задач”, на вкладке “Процессы” найдите процесс “Обработчик команд Windows”, разверните список и найдите “parrent“. Затем нажмите на нём правой копкой мыши и выберите “Подробно”:
Вы переключитесь на вкладку “Подробно” с выделенным процессом “cmd.exe“. Нажмите правой кнопкой по этому процессу и выберите «Завершить дерево процессов»:
Окно командной строки Parrent завершится а Paint останется работать. Так мы убедились что связи между первым процессом и его внуком нет, если у внука нет непосредственного родителя.
Потоки
На центральном процессоре обрабатываются не сами процессы, а программные потоки. Каждый поток, это код загруженный программой. Программа может работать в одном потоке или создавать несколько. Если программа работает в несколько потоков, то она может выполняться на разных ядрах процессора. Посмотреть на потоки можно с помощью программы Process Explorer.
- два стека: для режима ядра и для пользовательского режима;
- локальную памятью потока (TLS, Thread-Local Storage);
- уникальный идентификатор потока (TID, Thread ID).
Приложение может создать дополнительный поток, например, когда у приложения есть графический интерфейс, который работает в одном потоке и ожидает от пользователя ввода каких-то данных, а второй поток в это время занимается обработкой других данных.
Изучение активности потока важно, если вам нужно разобраться, почему тот или иной процесс перестал реагировать, а в процессе выполняется большое число потоков. Потоков может быть много в следующих процессах:
Волокна и планирование пользовательского режима
Потоки выполняются на центральном процессоре, а за их переключение отвечает планировщик ядра. В связи с тем что такое переключение это затратная операция. В Windows придумали два механизма для сокращения таких затрат: волокна (fibers) и планирование пользовательского режима (UMS, User Mode Scheduling).
Во-первых, поток с помощью специальной функции может превратится в волокно, затем это волокно может породить другие волокна, таким образом образуется группа волокон. Волокна не видимы для ядра и не обращаются к планировщику. Вместо этого они сами договариваются в какой последовательности они будут обращаться к процессору. Но волокна плохо реализованы в Windows, большинство библиотек ничего не знает о существовании волокон. Поэтому волокна могут обрабатываться как потоки и начнутся различные сбои в программе если она использует такие библиотеки.
Потоки UMS (User Mode Scheduling), доступные только в 64-разрядных версиях Windows, предоставляют все основные преимущества волокон при минимуме их недостатков. Потоки UMS обладают собственным состоянием ядра, поэтому они «видимы» для ядра, что позволяет нескольким потокам UMS совместно использовать процессор и конкурировать за него. Работает это следующим образом:
- Когда двум и более потокам UMS требуется выполнить работу в пользовательском режиме, они сами могут периодически уступать управление другому потоку в пользовательском режиме, не обращаясь к планировщику. Ядро при этом думает что продолжает работать один поток.
- Когда потоку UMS все таки нужно обратиться к ядру, он переключается на специально выделенный поток режима ядра.
Задания
Задания Windows (Job) позволяют объединить несколько процессов в одну группу. Затем можно этой группой управлять:
- устанавливать лимиты (на память или процессорное время) для группы процессов входящих в задание;
- останавливать, приостанавливать, запускать такую группу процессов.
Посмотреть на задания можно с помощью Process Explorer.
Диспетчер задач
Чаще всего для получения информации о процессе мы используем «Диспетчер задач». Запустить его можно разными способами:
- комбинацией клавиш Ctrl+Shift+Esc;
- щелчком правой кнопкой мыши на панели задач и выборе «Диспетчер задач»;
- нажатием клавиш Ctrl+Alt+Del и выборе «Диспетчер задач»;
- запуском исполняемого файла C:\Windows\system32\Taskmgr.exe.
При первом запуске диспетчера задач он запускается в кратком режиме, при этом видны только процессы имеющие видимое окно. При нажатие на кнопку «Подробнее» откроется полный режим:
В полном режиме на вкладке «Процессы» виден список процессов и информация по ним. Чтобы получить больше информации можно нажать правой кнопкой мышки на заголовке и добавить столбцы:
Чтобы получить еще больше информации можно нажать правой кнопкой мышки на процессе и выбрать «Подробно». При этом вы переключитесь на вкладку «Подробности» и этот процесс выделится.
На вкладке «Подробности» можно получить ещё больше информации о процессе. А также здесь также можно добавить колонки с дополнительной информацией, для этого нужно щелкнуть правой кнопкой мыши по заголовку и нажать «Выбрать столбцы»:
Process Explorer
Установка и подготовка к работе
Более подробную информацию о процессах и потоках можно получить с помощью программы Process Explorer из пакета Sysinternals. Его нужно скачать и запустить.
Некоторые возможности Process Explorer:
- информация по правам процесса: кто владелец процесса, у кого есть доступ к нему;
- выделение разными цветами процессов и потоков, для удобного восприятия информации:
- процессы служб – розовый;
- ваши собственные процессы – синий;
- новые процессы – зелёный;
- завершенные процессы – красный;
- число дескрипторов у процесса;
- активность потоков в процессе;
- подробную информация о распределении памяти.
Запустите Process Explorer:
Для начала скачиваем установщик «Пакет SDK для Windows 10».
Устанавливать все не нужно, достаточно при установки выбрать “Debugging Tools for Windows“:
Для настройки символических имен перейдите в меню Options / Configure / Symbols. Введите путь к библиотеке Dbghelp.dll, которая находится внутри установленного «Пакета SDK для Windows 10» по умолчанию:
- C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\Dbghelp.dll.
И путь к серверу символической информации:
Некоторые основные настройки Process Explorer:
- Смена цветового выделения – Options / Configure Colors.
- Выбор колонок с информацией о процессах – View / Select Columns.
- Сортировка процессов – нужно щелкнуть на заголовке столбца Process, при первом щелчке сортировка будет в алфавитном порядке, при втором в обратном порядке, при третьем вернется в вид дерева.
- Просмотр только своих процессов – View / снять галочку Show Processes from All Users.
- Настройка времени выделения только что запущенных процессов и завершённых – Options / Difference Highlight Duration / введите количество секунд.
- Чтобы исследователь процесс подробнее можно дважды щелкнуть на нем и посмотреть информацию на различных вкладках.
- Открыть нижнюю панель для просмотра открытых дескрипторов или библиотек – Vies / Show Lower Panel.
Потоки в Process Explorer
Потоки отдельного процесса можно увидеть в программе Process Explorer. Для этого нужно дважды кликнуть по процессу и в открывшемся окне перейти на вкладку «Threads»:
В колонках видна информация по каждому потоку:
- TID — идентификатор потока.
- CPU — загрузка процессора.
- Cycles Delta — общее количество циклов процессора, которое этот процесс использовал с момента последнего обновления работы Process Explorer. Скорость обновления программы можно настроить, указав например 5 минут.
- Suspend Count — количество приостановок потока.
- Service — название службы.
- Start Address — начальный адрес процедуры, который начинает выполнение нового потока. Выводится в формате:«модуль!функция».
При выделении потока, снизу показана следующую информация:
- Идентификатор потока.
- Время начала работы потока.
- Состояние потока.
- Время выполнения в режиме ядра и в пользовательском режиме.
- Счетчик переключения контекста для центрального процессора.
- Количество циклов процессора.
- Базовый приоритет.
- Динамический приоритет (текущий).
- Приоритет ввода / вывода.
- Приоритет памяти.
- Идеальный процессор (предпочтительный процессор).
Есть также кнопки:
Задания в Process Explorer
Process Explorer может выделить процессы, управляемые заданиями. Чтобы включить такое выделение откройте меню «Options» и выберите команду «Configure Colors», далее поставьте галочку «Jobs»:
Более того, страницы свойств таких процессов содержат дополнительную вкладку Job с информацией о самом объекте задания. Например приложение Skype работает со своими процессами как за заданием:
Запустите командную строку и введите команду:
Таким образом вы запустите еще одну командную строку от имени этого пользователя. Служба Windows, которая выполняет команды runas, создает безымянное задание, чтобы во время выхода из системы завершить процессы из задания.
В новой командной строке запустите блокнот:
Далее запускаем Process Explorer и находим такое дерево процессов:
Как видим, процесс cmd и notepad это процессы связанные с каким-то заданием. Если дважды кликнуть по любому из этих процессов и перейти на вкладку Job, то мы увидим следующее:
Читайте также: