Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Теоретические сведения.

Читайте также:
  1. I. Общие сведения о больном
  2. I. Общие сведения о больном
  3. I. Теоретические аспекты управления качеством медицинской помощи.
  4. I. Теоретические основы изучения туристских информационных систем как новой модели туристского бизнеса
  5. II. Общие сведения о горных породах
  6. А) Знакомство с краткими биографическими сведениями
  7. Абсорбция. Общие сведения и области его применения.
  8. ВВЕДЕНИЕ И НЕКОТОРЫЕ ТЕОРЕТИЧЕСКИЕ ОСНОВЫ
  9. Введение. Общие сведения
  10. ВВЕДЕНИЕ. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ УПРАВЛЕНИЯ СИСТЕМАМИ
  1. В текстовом файле перевести все символы к верхнему регистру. Использовать отображение файла в память. Для взаимодействия с пользователем использовать кнопки и поле для ввода имени файла.
  2. Организовать умножение матриц заданного размера с параллельными вычислениями с использованием нитей. Для синхронизации использовать семафоры. Для взаимодействия с пользователем использовать меню.
  3. Организовать запись и выборку данных в циклическом буфере разными нитями одного процесса. Для решения задачи „производители-потребители” использовать критические секции. Для взаимодействия с пользователем использовать ввод данных из клавиатуры.
  4. Организовать умножение матриц заданного размера с использованием отдельного волокна для формирования каждой строки, но результат формировать по столбцам. Для взаимодействия с пользователем использовать мышь, при нажатии на левую клавишу которой в заданной области окна программы начинается расчет.
  5. Организовать при нажатии на кнопку запуск программы – калькулятора, которая должна завершаться через 15 секунд. Количество запущенных копий программы – калькулятора не ограничивается. Использовать нити. Для взаимодействия с пользователем использовать кнопки.
  6. В текстовом файле перевести все символы к нижнему регистру. Использовать отображение файла в память. Для взаимодействия с пользователем использовать меню, имя файла фиксированное.
  7. Выполнить передачу данных от одного экземпляра программы другому через почтовые ящики. Для взаимодействия с пользователем использовать мышь, при нажатии на левую клавишу которой в заданной области окна программы выполняется передача. Результат отображать по центру окна в каждом экземпляре программы.
  8. Организовать определение количества запущенных на выполнение копий программы. Для решения использовать события. Результат отображать по центру окна в каждом экземпляре программы и динамически его корректировать. Размер шрифта при отображении зависит от количества активных экземпляров программы.
  9. Разработать программу, количество запущенных экземпляров на выполнение которой не должно превышать 5. Для решения использовать семафоры. Завершение программы должно выполняться по нажатию кнопки в окне программы.
  10. Выполнить передачу данных от одного экземпляра программы другому через каналы. Для взаимодействия с пользователем использовать кнопки. Результат отображать по центру окна в каждом экземпляре программы.
  11. В текстовом файле перевести все символы к верхнему регистру. Для работы с файлом использовать функции работы с файловой системой (не использовать отображение файла в память). Для взаимодействия с пользователем использовать короткие клавиши, имя файла фиксированное.
  12. Организовать запись и выборку данных в буфере типа „стек” разными нитями одного процесса. Для решения задачи „производители-потребители” использовать семафоры. Для взаимодействия с пользователем использовать меню.
  13. Реализовать решение задачи „читатели-писатели” на событиях. Для взаимодействия с пользователем использовать ввод данных из клавиатуры.
  14. Написать программу, которая накапливает статистику нажатий на клавиши и на кнопки мыши. Результат отображать по центру окна в каждом экземпляре программы и динамически его корректировать.
  15. Выполнить передачу данных от одного экземпляра программы другому через отображение файлов в память. Для взаимодействия с пользователем использовать меню. Результат отображать по центру окна в каждом экземпляре программы.
  16. Разработать программу, количество запущенных экземпляров на выполнение которой не должно превышать 2. Для решения использовать события. Завершение программы должно выполняться с помощью меню.
  17. Реализовать решение задачи „читатели-писатели” на семафорах. Для взаимодействия с пользователем использовать меню.
  18. Организовать при нажатии на одну кнопку запуск программы – калькулятора, которая должна завершаться при нажатии на другую кнопку. Количество запущенных копий программы – калькулятора не ограничивается. Для взаимодействия с пользователем использовать кнопки.
  19. Разработать программу, которая рассылает сообщения всем своим копиям в памяти при нажатии на кнопку. Результат отображать по центру окна в каждом экземпляре программы.
  20. Разработать программу, которая определяет время, которое она выполнялась в режиме ядра и пользователя. Результат отображать по центру окна программы.
  21. Разработать программу, в состав которой входят нити с разными (всеми возможными приоритетами). Каждая нить в цикле отображает и стирает в заданном месте окна значение своего приоритета.
  22. Организовать запись и выборку данных в циклическом буфере разными нитями одного процесса. Для решения задачи „производители-потребители” использовать мьютексы. Для взаимодействия с пользователем использовать короткие клавиши.
  23. Выполнить копирование файла с помощью отображения файла в память. Для взаимодействия с пользователем использовать мышь, при нажатии на левую клавишу которой в заданной области окна программы выполняется копирование.
  24. Организовать умножение матриц заданного размера с использованием нитей. Для синхронизации использовать события. Для взаимодействия с пользователем использовать кнопки.
  25. Организовать определение количества запущенных на выполнение нитей программы. Запуск новой нити выполнять по нажатию на кнопку. Для решения использовать события. Результат отображать по центру окна в каждом экземпляре программы и динамически его корректировать.
  26. Экспериментальным методом определить максимальное количество нитей, которое может создать одна программа. Результат отображать по центру окна программы и динамически его корректировать.

 

Теоретические сведения

 

Для работы с файловой системой могут использоваться следующие функции:

 

GetVolumeInformation – получение информации о томе, где расположен указанный корневой каталог.

FindFirstFile – поиск файла в директории с заданным именем (можно задать маску имени).

FindFirstFileEx – поиск файла в директории с заданным именем и атрибутами.

FindNextFile – продолжение поиска файла. Вызывается после FindFirstFile или FindFirstFileEx.

GetBinaryType – определение, является ли файл исполняемым, и если это так, то определяет его тип (для какой системы).

GetCurrentDirectory – получение полного имени текущего каталога для текущего процесса.

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

GetDriveType – получение информации о типе диска: сменный носитель, жесткий диск, CD-ROM, RAM диск, сетевой диск.

GetFileAttributes – получение атрибутов для указанного файла или каталога.

GetFileInformationByHandle – получение подробной информации о файле по его дескриптору.

GetFileSize – получение размера указанного файла.

GetFileSizeEx – получение размера указанного файла (для хранения размера требуется тип больше чем DWORD (больше 4 ГБ)).

GetFileType – получение типа указанного файла: блочный, символьный, канал.

GetFullPathName – получение полного пути и имени указанного файла.

GetLogicalDrives – получение битовой маски с информацией об отображении логических дисков.

GetLogicalDriveStrings – получение строки с информацией об отображении логических дисков.

GetLongPathName – преобразует указанный путь в его длинную форму представления.

GetShortPathName – преобразует указанный путь в его короткую форму представления.

SearchPath – поиск указанного файла.

SetCurrentDirectory – изменяет текущий каталог для текущего процесса.

 

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

 

CopyMemory – копирование блока памяти с одного места в другое.

FillMemory – заполнение блока памяти указанным значением.

MoveMemory – перемещение блок памяти с одного места в другое.

ZeroMemory – заполнение блока памяти нулями.

GlobalAlloc – выделение указанного числа байт из глобальной кучи.

GlobalFree – освобождение объекта глобальной кучи.

GlobalReAlloc – изменение размера или атрибутов объекта глобальной кучи.

GlobalSize – получение текущего размера указанного глобального объекта.

LocalAlloc – выделение указанного числа байт из локальной кучи.

LocalFree – освобождение объекта глобальной кучи.

LocalReAlloc – изменение размера или атрибутов объекта глобальной кучи.

LocalSize – получение текущего размера указанного глобального объекта.

GetProcessHeap – получение дескриптора кучи вызывающего процесса.

HeapAlloc – выделение блока памяти из кучи.

HeapCompact – попытка сжать кучу.

HeapCreate – создание объекта кучи.

HeapDestroy – разрушение объекта кучи.

HeapFree – освобождение блока памяти, выделенного в куче.

HeapQueryInformation – получение информации о куче.

HeapReAlloc – изменение размера или атрибутов объекта глобальной кучи.

HeapSize – получение размера блока памяти, выделенного в куче.

 

Дополнительная информация о работе с файловой системой и памятью может быть получена из соответствующей литературы и из системы помощи MS SDK.

Пример. Функция рекурсивного обхода дерева каталогов.

 

void GetDIR(char *dir, char *ext)

{

WIN32_FIND_DATA FileData;

HANDLE hSearch;

BOOL fFinished=FALSE;

char *path = new char [strlen(dir)+strlen(ext)+1];

strcpy (path, dir);

strcat (path, "*.*");

hSearch = FindFirstFile(path, &FileData); \\ ищем первый файл

while (!fFinished)

{

\\ если это каталог

if(FileData.dwFileAttributes ==

FILE_ATTRIBUTE_DIRECTORY&&(FileData.cFileName[0]!='.'))

{

char *newdir=new char [strlen(dir)+strlen(FileData.cFileName)+2];

strcpy (newdir, dir);

strcat (newdir, FileData.cFileName);

strcat (newdir, "\\");

GetDIR (newdir, ext); //рекурсивный вызов функции

delete newdir;

}

if ((FileData.cFileName[0]!='.')&&(FileData.dwFileAttributes!=

FILE_ATTRIBUTE_DIRECTORY)) // если не каталог

/* то обрабатываем полученный файл */

if (!FindNextFile(hSearch, &FileData))

{

if (GetLastError() == ERROR_NO_MORE_FILES)

// если файлов больше нет, то выходим из рекурсии

{

fFinished = TRUE;

}

}

}

}

 

Постановка задачи: разработать оконное приложение в среде программирования Visual C, которое решает поставленную задачу в соответствии со своим вариантом (учесть наличие алиасов и косвенных файлов). Для хранения промежуточных результатов можно использовать средства WIN32 API для работы с памятью.

 




Дата добавления: 2014-12-18; просмотров: 25 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Теоретические сведения| Для баз данных, специализированных приложений и бизнес-приложений с высокой степенью масштабируемости

lektsii.net - Лекции.Нет - 2014-2024 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав