- •ОПЕРАЦИОННЫЕ
- •Лабораторная работа №1. Функции получения системной информации
- •Задание
- •Начинаем с определения и структуры работы
- •Пути получения имени компьютера
- •Примерный результат работы
- •Получение версии Windows
- •2.1. GetVersion()
- •2.2. GetVersionEx()
- •Версии Windows
- •4. Из реестра
- •Лабораторная работа №2.
- •Как делать
- •switch (pressedKey)
- •Результат работы
- •Лабораторная работа №3. Методы синхронизация потоков
- •Синхронизация
- •Межпроцессное
- •Используемые средства синхронизации
- •Критическая секция
- •Мьютексы
- •Пример. Критическая секция
- •Результат
- •Пример. Мьютекс
- •Пример. События
- •Результат
- •Лабораторная работа №4. Архитектура памяти Windows
- •Подзадача: вывод информации
- •Получение информации о памяти
- •Результат
- •Карта памяти
2.2. GetVersionEx()
Версии Windows
4. Из реестра
Лабораторная работа №2.
Процессы и потоки
■Цель работы: получение практических навыков использования Win32 API для исследования процессов
■Программа, которая
■принимая дескриптор, имя или полное имя модуля, возвращает другие два элемента в своих выходных параметрах (выполнить задание для своей программы и для любой известной библиотеки).
■будет выполнять последовательно по шагам следующее:
–Используя функцию GetCurrentProcessId определит идентификатор текущего процесса.
–Используя функцию GetCurrentProcess определит псевдодескриптор текущего процесса.
–Используя функцию DuplicateHandl и значение псевдодескриптора определит дескриптора текущего процесса.
–Используя функцию OpenProcess определит копию дескриптора текущего процесса.
–Закроет дескриптор, полученный функцией DuplicateHandl.
–Закроет дескриптор, полученный функцией OpenProcess.
■
– выдает список перечисления всех процессов, потоков, модулей и их свойства в системе:
Как делать
■Делаем меню? (switch)
■Последовательно реализуем по методичке
class Program
{ …static void Main(string[] args)
{
{
Console.WriteLine(
"1: Вывести все\n" + "2: По имени\n" +
"3: По полному имени\n" + "4: По дескриптору\n" +
"5: Информация о процессе\n" +
…
"6: Информация о процессах, потоках, модулях\n" );
switch (pressedKey)
{ case 1: //all init();
Console.WriteLine(
$"Имя: {shortFileName}\n" + $"Полное имя: {longFileName}\n" +
); $"Дескриптор: {processHandle}\n"
break;
…
case 2: //name
break;
…….
case 3: //fname
default:
break;
Результат работы
Лабораторная работа №3. Методы синхронизация потоков
■ Цель работы: получение практических навыков по
использованию Win32 API для синхронизации потоков.
■ Исследование на конкретном примере следующих методов синхронизации потоков:
– |
критические секции |
– |
мьтексы |
– |
события |
■ Задачу для синхронизации выбрать на свое усмотрение.
Синхронизация
Может быть реализована
1.С использованием Win32 API
2.Средствами языка программирования (C#)
■Задачи для каждого метода синхронизации должны быть
РАЗЛИЧНЫМИ.
■Задачи должны наглядно демонстрировать выбранный метод синхронизации и учитывать его особенности.
■Студент, сдающий работу, должен АРГУМЕНТИРОВАННО обосновать задачу, выбранную для синхронизации и метод синхронизации.
Межпроцессное
взаимодействие
согласование действий процессов
передача информации от одного процесса другому
контроль над деятельностью процессов