- •Методические указания
- •230100.62 «Информатика и вычислительная техника»,
- •Лабораторная работа № 1. Информационная структура процессов и потоков в операционной системе
- •Теоретический материал
- •Программная реализация перечисления выполняющихся процессов
- •Программная реализация изучения конкретного процесса
- •Программная реализация изучения ряда потоков внутри процесса
- •Программная реализация изучения модулей внутри процесса
- •Лабораторная работа № 2. Дисковая память и файловая система операционной системы
- •Теоретический материал Организация работы пользователя с устройством хранения
- •Управление файлами в ос
- •Файловая система
- •Ход выполнения работы
- •Ход выполнения работы
- •Выполнение задания:
- •Библиографический список
- •Содержание Лабораторная работа № 1. Информационная структура процессов и потоков в операционной системе……………………….1
- •230100.62 «Информатика и вычислительная техника»,
- •3 94026 Воронеж, Московский просп., 14
ФГБОУ ВПО «Воронежский государственный
технический университет»
Кафедра автоматизированных и вычислительных систем
Методические указания
по выполнению лабораторных работ
на языке программирования С#
по дисциплине
«Системное программное обеспечение»
для студентов направления
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).