Рассмотрим, как проходить по загруженным модулям, которые обслуживаются в рамках конкретного процесса. Модуль представляет собой общий термин, используемый для описания определенного файла *.dll (или даже *.ехе), который обслуживается в определенном процессе. При получении доступа к ProcessModuleCollection через свойство Process.Module можно извлекать перечень всех модулей, которые обслуживаются внутри процесса: NET-, COM- или традиционных основанных на С библиотек.
Создадим следующую дополнительную вспомогательную функцию, способную перечислять модули в конкретном процессе на основании предоставляемого PID-идентификатора:
static void EnumModsForPid(int pID)
{
Process theProc = null;
try
{
theProc = Process.GetProcessById(pID);
}
catch
{
Console.WriteLine("-> Неверный PID!");
Console.WriteLine("***********************\n");
return;
}
Console.WriteLine("Модули для процеса: {0}", theProc.ProcessName);
try
{
ProcessModuleCollection theMods = theProc.Modules;
foreach (ProcessModule pm in theMods)
{
string info = string.Format("-> Mod Name: {0}", pm.ModuleName);
Console.WriteLine(info);
}
Console.WriteLine(" *********************** *\n");
}
catch
{
Console.WriteLine("Модули не обнаружены!");
}
}
Результаты работы данного фрагмента программы представлены на рис. 9.
Рис. 9. Перечень модулей в конкретном процессе
Листинг всей программы представлен на рис. 10, рис. 11.
Рис. 10. Листинг всей программы
Рис. 11. Продолжение листинга всей программы
Вопросы по теме:
Что такое процесс? В каких состояниях он может находиться?
Что такое поток? В чем отличие потока и процесса?
Какой информационной структурой процесс представляется в ОС?
Цель работы: приобретение навыков создания приложений, использующих стандартные методы получения информации о дисковой памяти, с помощью библиотек базовых классов .NET языка программирования C#.
В настоящее время между пользователем и устройством хранения информации находятся три посредника. В порядке удаления от АО их перечень следующий:
BIOS,
ОС,
программа, в которой непосредственно работает пользователь.
Все они, в сущности, занимаются укрупнением, обобщением наборов действий с устройством для решаемой задачи.
Рассмотрим каждый из этих уровней.
Уровень общения BIOS с АО - с контроллером дисковода. Каждая операция состоит из последовательности команд:
• сброс контроллера;
• разрешение работы контроллера;
• инициализация контроллера;
• определение параметров носителя;
• включение двигателя устройства;
• задержка приблизительно в полсекунды для того, чтобы дать двигателю разогнаться;
• далее повторяются до полного успеха следующие действия:
– перемещение магнитной головки на нужную дорожку;
– проверка результата перемещения;
– установка скорости передачи данных;
– считывание данных с определенного сектора на выбранной дорожке.
Кроме того, в задачу BIOS также входит своевременное обслуживание контроллера, в противном случае он будет либо не готов к приему данных, либо будет простаивать без дела.
Общение на уровне BIOS. Используя прерывания BIOS, программа может за одно действие получить данные с одного или с нескольких секторов, находящихся на выбранной дорожке. Для получения информации с другой дорожки соответствующее прерывание необходимо вызвать повторно.
Понятно, что ни о какой файловой системе речь еще не идет, поскольку само понятие файла в BIOS не определено, и вся работа идет на уровне секторов.
Уровень ОС. Чаще операционная система создает, открывает на чтение и запись, удаляет файлы без ведома пользователя. Сам диск, как отвлеченная единица, не в состоянии обеспечить понятие файла.
Обязательный общий атрибут ОС – реестр (своего рода оглавление), т.е. учетные записи, описывающие принадлежность набора секторов диска конкретному именованному объекту – файлу.
Таблица 3
Некоторые типы System.IO для получения информации о дисках
Имя |
Тип |
Назначение |
DriveInfo |
конструктор |
Обеспечивает доступ к информации об указанном диске |
Name |
свойство |
Получает имя диска |
DriveType
|
свойство |
Получает тип диска |
Продолжение табл. 3
IsReady |
свойство |
Получает признак возможности чтения с диска |
DriveFormat |
свойство |
Получает имя файловой системы, такой как NTFS или FAT32 |
AvailableFreeSpace |
свойство |
Указывает сумму доступного свободного пространства на диске |
TotalFreeSpace |
свойство |
Получает общую сумму свободного пространства, доступного на диске |
TotalSize |
свойство |
Получает полный размер пространства памяти на диске |
RootDirectory |
свойство |
Получает корневой каталог диска |
Функции управления файлами сосредоточены в файловой системе ОС. Операционная система представляет отдельный набор данных, хранящихся на внешнем накопителе, в виде файла – простой неструктурированной последовательности байтов, имеющих символьное имя. Для удобства работы с данными файлы группируются в каталоги, которые, в свою очередь, образуют группы – каталоги более высокого уровня. Файловая система преобразует символьные имена файлов, с которыми работает пользователь или программист, в физические адреса данных на дисках, организует совместный доступ к файлам, защищает их от несанкционированного доступа.
Способом работы с файлами является использование системы управления файлами или иначе - файловой системы. Файловая система – это часть операционной системы, включающая:
– совокупность всех файлов на носителе информации (магнитном или оптическом диске, магнитной ленте и др.);
– наборы структур данных, используемых для управления файлами (каталоги и дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске и др.);
– комплекс системных программных средств, реализующих различные операции над файлами (создание, уничтожение, чтение, запись и др.).
Задачи, решаемые файловой системой, во многом определяются способом организации вычислительного процесса (наиболее простые – в однопрограммных и однопользовательских ОС, наиболее сложные – в сетевых ОС).
В многозадачных, многопользовательских ОС задачами файловой системы являются:
1) соответствие требованиям управления данными и требованиям со стороны пользователей, включающим возможность хранения данных и выполнения операций с ними;
2) гарантирование корректности данных, содержащихся в файле; оптимизация производительности, как с точки зрения системы (пропускная способность), так и с точки зрения пользователя (время отклика); поддержка ввода-вывода для различных типов устройств хранения информации; минимизация или полное исключение возможных потерь или повреждений данных; защита файлов от несанкционированного доступа;
3) обеспечение поддержки совместного использования файлов несколькими пользователями (в том числе средства блокировки файла и его частей, исключение тупиков, согласование копий и т. п.);
4) обеспечение стандартизированного набора подпрограмм интерфейса ввода-вывода.
Минимальным набором требований к файловой системе со стороны пользователя диалоговой системы общего назначения можно считать следующую совокупность возможностей, предоставляемую пользователю:
– создание, удаление, чтение и изменение файлов;
– контролируемый доступ к файлам других пользователей.
– структурирование файлов в соответствии с решаемой задачей;
– перемещение данных между файлами;
– резервирование и восстановление файлов в случае повреждения;
– доступ к файлам по символьным именам.
Файловая система играет роль промежуточного слоя, экранизирующего все сложности физической организации долговременного хранилища данных и создающего для программ более простую логическую модель этого хранилища, а затем предоставляя им набор удобных в использовании команд для манипулирования файлами.
Файлы
Понятие файла включает не только хранимые им данные и имя, но и информацию, описывающую свойства файла. Эта информация составляет атрибуты (дескриптор) файла. Список атрибутов может быть различным в различных ОС. Пример приведен в табл. 4.
Таблица 4
Примеры атрибутов файла
Атрибут |
Значение |
Тип файла |
Обычный, каталог, специальный и т. д. |
Владелец файла |
Текущий владелец |
Владелец файла |
Текущий владелец |
Создатель файла |
Идентификатор пользователя, создавшего файл |
Пароль |
Пароль для получения доступа к файлу |
Время |
Создания, последнего доступа, последнего изменения |
Продолжение табл. 4
Текущий размер файла |
Количество байт в записи |
Максимальный размер |
Количество байтов, до которого можно увеличивать размер файла |
Флаг «только чтение» |
0 - чтение / запись, 1 - только чтение |
Флаг «скрытый» |
0 - нормальный, 1 - не показывать в перечне файлов каталога |
Флаг «системный» |
0 - нормальный, 1 - системный |
Флаг «архивный» |
0 - заархивирован, 1 - требуется архивация |
Флаг «ASCII / двоичный» |
0 - ASCII, 1 – двоичный |
Флаг «произвольного доступа» |
0 - только последовательный доступ, 1 - произвольный доступ |
Флаг «временный» |
0 - нормальный, 1 - удаление после окончания работы процесса |
Пользователь может получить доступ к атрибутам, используя средства, предоставляемые для этой цели файловой системой. Обычно разрешается читать значение любых атрибутов, а изменять только некоторые.
Задание 1. Разработать консольное приложение, позволяющее пользователю определять размер диска и его свободное пространство.