- •Методические указания
- •230100.62 «Информатика и вычислительная техника»,
- •Лабораторная работа № 1. Информационная структура процессов и потоков в операционной системе
- •Теоретический материал
- •Программная реализация перечисления выполняющихся процессов
- •Программная реализация изучения конкретного процесса
- •Программная реализация изучения ряда потоков внутри процесса
- •Программная реализация изучения модулей внутри процесса
- •Лабораторная работа № 2. Дисковая память и файловая система операционной системы
- •Теоретический материал Организация работы пользователя с устройством хранения
- •Управление файлами в ос
- •Файловая система
- •Ход выполнения работы
- •Ход выполнения работы
- •Выполнение задания:
- •Библиографический список
- •Содержание Лабораторная работа № 1. Информационная структура процессов и потоков в операционной системе……………………….1
- •230100.62 «Информатика и вычислительная техника»,
- •3 94026 Воронеж, Московский просп., 14
Программная реализация изучения модулей внутри процесса
Рассмотрим, как проходить по загруженным модулям, которые обслуживаются в рамках конкретного процесса. Модуль представляет собой общий термин, используемый для описания определенного файла *.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. Продолжение листинга всей программы
Вопросы по теме:
Что такое процесс? В каких состояниях он может находиться?
Что такое поток? В чем отличие потока и процесса?
Какой информационной структурой процесс представляется в ОС?
Лабораторная работа № 2. Дисковая память и файловая система операционной системы
Цель работы: приобретение навыков создания приложений, использующих стандартные методы получения информации о дисковой памяти, с помощью библиотек базовых классов .NET языка программирования C#.
Теоретический материал Организация работы пользователя с устройством хранения
В настоящее время между пользователем и устройством хранения информации находятся три посредника. В порядке удаления от АО их перечень следующий:
BIOS,
ОС,
программа, в которой непосредственно работает пользователь.
Все они, в сущности, занимаются укрупнением, обобщением наборов действий с устройством для решаемой задачи.
Рассмотрим каждый из этих уровней.
Уровень общения BIOS с АО - с контроллером дисковода. Каждая операция состоит из последовательности команд:
• сброс контроллера;
• разрешение работы контроллера;
• инициализация контроллера;
• определение параметров носителя;
• включение двигателя устройства;
• задержка приблизительно в полсекунды для того, чтобы дать двигателю разогнаться;
• далее повторяются до полного успеха следующие действия:
– перемещение магнитной головки на нужную дорожку;
– проверка результата перемещения;
– установка скорости передачи данных;
– считывание данных с определенного сектора на выбранной дорожке.
Кроме того, в задачу BIOS также входит своевременное обслуживание контроллера, в противном случае он будет либо не готов к приему данных, либо будет простаивать без дела.
Общение на уровне BIOS. Используя прерывания BIOS, программа может за одно действие получить данные с одного или с нескольких секторов, находящихся на выбранной дорожке. Для получения информации с другой дорожки соответствующее прерывание необходимо вызвать повторно.
Понятно, что ни о какой файловой системе речь еще не идет, поскольку само понятие файла в BIOS не определено, и вся работа идет на уровне секторов.
Уровень ОС. Чаще операционная система создает, открывает на чтение и запись, удаляет файлы без ведома пользователя. Сам диск, как отвлеченная единица, не в состоянии обеспечить понятие файла.
Обязательный общий атрибут ОС – реестр (своего рода оглавление), т.е. учетные записи, описывающие принадлежность набора секторов диска конкретному именованному объекту – файлу.
Таблица 3
Некоторые типы System.IO для получения информации о дисках
Имя |
Тип |
Назначение |
DriveInfo |
конструктор |
Обеспечивает доступ к информации об указанном диске |
Name |
свойство |
Получает имя диска |
DriveType
|
свойство |
Получает тип диска |
Продолжение табл. 3
IsReady |
свойство |
Получает признак возможности чтения с диска |
DriveFormat |
свойство |
Получает имя файловой системы, такой как NTFS или FAT32 |
AvailableFreeSpace |
свойство |
Указывает сумму доступного свободного пространства на диске |
TotalFreeSpace |
свойство |
Получает общую сумму свободного пространства, доступного на диске |
TotalSize |
свойство |
Получает полный размер пространства памяти на диске |
RootDirectory |
свойство |
Получает корневой каталог диска |