Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60143.doc
Скачиваний:
6
Добавлен:
01.05.2022
Размер:
1.21 Mб
Скачать

ФГБОУ ВПО «Воронежский государственный

технический университет»

Кафедра автоматизированных и вычислительных систем

Методические указания

по выполнению лабораторных работ

на языке программирования С#

по дисциплине

«Системное программное обеспечение»

для студентов направления

230100.62 «Информатика и вычислительная техника»,

профиля «Вычислительные машины, комплексы,

системы и сети»

заочной формы обучения

Воронеж 2012

Составитель канд. техн. наук О.Б. Кремер

УДК 004.45

Методические указания по выполнению лабораторных работ на языке программирования С# по дисциплине «Системное программное обеспечение» для студентов направления 230100.62 «Информатика и вычислительная техника», профиля «Вычислительные машины, комплексы, системы и сети» заочной формы обучения / ФГБОУ ВПО «Воронежский государственный технический университет»; сост. О.Б. Кремер. Воронеж, 2012. 32 с.

Методические указания включают краткие сведения по каждой теме лабораторной работы, задания, ход выполнения заданий, примеры листингов программ.

Методические указания подготовлены в электронном виде в текстовом редакторе MS Word и содержатся в файле СПО_МУ-ЗО.doc.

Табл. 4. Ил. 15. Библиогр.: 4 назв.

Рецензент канд. техн. наук, доц. Е.А. Ганцева

Ответственный за выпуск зав. кафедрой д-р техн. наук, проф. С.Л. Подвальный

Издается по решению редакционно-издательского совета Воронежского государственного технического университета

© ФГБОУ ВПО «Воронежский государственный технический университет», 2012

Лабораторная работа № 1. Информационная структура процессов и потоков в операционной системе

Цель работы: приобретение навыков создания приложений, использующих информационную структуру процессов и потоков, с помощью библиотек базовых классов .NET языка программирования C#.

Задание. Разработать программу, которая выводит следующую информацию: полный перечень выполняющихся процессов с указанием идентификатора (PID) и имени каждого процесса; идентификатор, временя запуска и уровень приоритета каждого потока, который используется в указанном пользователем процессе; перечень модулей в конкретном процессе на основании предоставляемого PID-идентификатора.

Теоретический материал

Одним из основных понятий, связанных с операционными системами, является процесс - выполняемая программа, включая текущие значения счетчика команд, регистров и переменных. С каждым процессом связывается его адресное пространство, содержащее саму программу, данные к ней и ее стек. Все функционирующее на компьютере программное обеспечение, включая и операционную систему, можно пред­ставить набором процессов.

В настоящее время в большинстве операционных систем определены два типа единиц работы: более крупная единица – процесс или задача, и менее крупная – поток или нить. Причем процесс выполняется в форме одного или нескольких потоков.

Управление процессами ОС. Подсистема управления процессами непосредственно влияет на функционирование вычислительной системы. Для каждой выполняемой программы ОС организует один или более процессов. Каждый такой процесс представляется в ОС информационной структурой (таблицей, дескриптором, контекстом процесса), содержащей данные о потребностях процесса в ресурсах, а также о фактически выделенных ему ресурсах (области оперативной памяти, количестве процессорного времени, файлах, устройствах ввода-вывода и др.). Кроме того, в этой информационной структуре хранятся данные, характеризующие историю пребывания процесса в системе: текущее состояние (активное или заблокированное), приоритет, состояние регистров, программного счетчика и др.

В современных многозадачных ОС может существовать одновременно несколько процессов, порожденных по инициативе пользователей и их приложений, а также инициированных ОС для выполнения своих функций (системные процессы).

Рассмотрим взаимодействие с процессами с помощью библиотек базовых классов .NET языка программирования C#.

В пространстве имен System.Diagnostics существует ряд типов, которые позволяют программно взаимодействовать с процессами. Некоторые члены данного пространства имен представлены в табл. 1.

Таблица 1

Некоторые члены пространства имен System.Diagnostics

Название

Назначение

Process

Предоставляет доступ к локальным и удаленным процессам, а также позволяет запускать и останавливать процессы программным образом.

ProcessModule

Позволяет представлять модуль (*.dll или *.ехе), который должен загружаться в определенный процесс.

Продолжение табл. 1

Этот тип может применяться для представления любого модуля: на базе СОМ, на базе .NET или традиционного двоичного модуля на базе С.

ProcessModuleCollection

Позволяет создавать строго типизированную коллекцию объектов ProcessModule.

ProcessStartInfo

Позволяет указывать ряд значений, которые должны использоваться при запуске процесса посредством метода Process. Start().

ProcessThread

Позволяет представлять поток внутри определенного процесса. Этот тип применяется для осуществления диагностики ряда потоков в процессе, но не для ответвления внутри него новых потоков.

ProcessThreadCollection

Позволяет создавать строго типизованную коллекцию объектов ProcessThread.

Тип System.Diagnostics.Process позволяет анализировать процессы, выполняющиеся на определенной машине (как локальной, так и удаленной). Класс Process обладает членами, которые позволяют запускать и останавливать процессы программным образом, просматривать приоритет процесса, а также получать список активных потоков и/или загруженных модулей, которые выполняются в рамках конкретного процесса. В таблице 2 перечислены некоторые наиболее важные члены System.Diagnostics.Process.

Таблица 2

Некоторые члены типа Process

Название

Назначение

Id

Представляет собой свойство и позволяет получать идентификатор (PID) соответствующего процесса.

ProcessName

Представляет собой свойство и позволяет получать имя процесса, которое совпадает с именем самого приложения.

GetProcesses ()

Представляет собой статический метод и возвращает массив новых компонентов Process, которые выполняются на текущей машине.

Threads

Представляет собой свойство и позволяет получать информацию о потоках, которые выполняются в рамках соответствующего процесса (в виде массива типов ProcessThread).

StartTime

Представляет собой свойство и позволяет получать информацию о времени, когда был запущен соответствующий процесс (в виде типа DateTime).

PriorityLevel

Позволяет получать или устанавливать уровень приоритета потока.

Статический метод Process.GetProcessById() помимо полного перечня всех выполняющихся на конкретной машине процессов также позволяет получать информацию о конкретном типе Process с помощью соответствующего идентификатора (PID).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]