Студопедия

Главная страница Случайная страница

Разделы сайта

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






Последовательность выполнения курсовой работы

Выполнение курсовой работы студента производится во время завершающего этапа теоретического обучения дисциплины и базируется на обобщении ранее выполненных лабораторных работ.

Руководитель работы выдает задание студенту, оказывает помощь в разработке календарного плана выполнения работы, проводит регулярные консультации, контролирует ход выполнения работы. Ответственность за выбор того или иного решения, правильность расчетов, оформление работы несет студент. Руководитель предостерегает его от ошибочных решений и характеризует достоинства и недостатки различных вариантов решений, при этом право окончательного выбора предоставляется студенту.

Последовательность выполнения включает следующие этапы:

· уточнение задания с преподавателем;

· анализ возможных методов решения поставленных в задании задач;

· разработка блок-схем основных процедур;

· разработка интерфейса приложения;

· написание кода приложения;

· отладка и тестирование приложения;

· анализ полученных результатов и выводы по работе;

· оформление пояснительной записки.

Для выполнения курсовой работы рекомендуется использовать одну из следующих сред разработки (по выбору студента): Visual C++6.0, Visual C++2005, Visual C++2008.

Подготовка курсовой работы к защите

Оформленная курсовая работа представляется студентом преподавателю для просмотра в соответствии с учебным планом за 2-3 дня до защиты.

График защиты курсовых работ составляется преподавателем и доводится до сведения студентов. При необходимости демонстрации программных продуктов защита назначается в компьютерных классах, где есть необходимое программное обеспечение.

Во время защиты курсовой работы студент должен кратко сформулировать цель работы, изложить содержание, акцентируя внимание на наиболее важных и интересных с его точки зрения решениях, в первую очередь, принятых студентом самостоятельно. При выступлении может быть использована демонстрация созданного программного обеспечения.

Результаты работы оцениваются с учетом качества ее выполнения и ответов на вопросы.


Варианты заданий для курсовой работы

Тема 1. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 API по управлению им.

Содержание задания.

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

Для операций с файлом использовать функции управления файлами Win 32 API. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться в отдельном фоновом потоке с низким приоритетом. Для синхронизации его с главным потоком использовать критическую секцию.

Поля данных: Наименование товара (20 символов), Цена, Количество, Дата (поступления на склад).

Тема 2. Разработка приложения по поддержке набора данных на основе файла, проецируемого в память.

Содержание задания.

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

Набор данных хранится в файле. Для операций с файлом использовать механизм проецирования файла в память. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться в отдельном фоновом потоке с низким приоритетом. Для синхронизации его с главным потоком использовать мьютекс.

Поля данных: Преподаватель (30 символов), Дисциплина (20 символов), Факультет (20 символов), Группа (10 символов), Число студентов, Дата экзамена.

Тема 3. Разработка приложения по поддержке набора данных на основе двухстороннего связного списка, хранимого в файле.

Содержание задания.

Разработать приложение по поддержке набора данных с использованием двустороннего связного списка. Связный список реализовать с использованием семейства функций HeapXXX() Win 32 API по работе с динамически распределяемой памятью (кучей). Должны поддерживаться следующие функции: добавление записи, изменение записи, удаление записи, навигация по записям (вперед, назад, выбор записи с заданным номером). Разработайте необходимый пользовательский интерфейс по работе с набором данных (поля ввода с подписями названий полей, кнопки для выполнения команд управления, метка с отображением полного количества записей и т.д.).

Удаляемые записи должны помечаться как удаленные, само же удаление записей (уборка мусора) должно производиться в отдельном фоновом потоке с низким приоритетом. Для синхронизации его с рабочим потоком использовать событие с автоматическим сбросом.

Набор данных должен записываться в файл перед закрытием приложения. Предусмотреть возможность загрузки набора данных из этого файла после открытия приложения. Для операций с файлом использовать функции управления файлами Win 32 API.

Поля данных: Студент (20 символов), Факультет (10 символов), Курс, Группа (8 символов), Дата рождения, Дата поступления.

Тема 4. Разработка многопоточного приложения, использующего синхронизацию потоков с помощью событий с ручным сбросом.

Содержание задания.

Разработать приложение, подсчитывающее число символов, слов и строк в любом текстовом ANSI файле. Один рабочий поток должен считывать выбранный в диалоговом окне текстовый файл, загружая последовательно его содержимое в буфер размером в 1024 символа. Три других потока после очередной загрузки буфера должны подсчитывать, соответственно, число символов, число слов и число строк. Поток, подсчитывающий число строк в файле, должен также отображать окно содержимого файла в 15 строк в окне приложения (используйте многострочное поле ввода). Синхронизацию потоков осуществите с помощью событий со сбросом вручную. Подсчитываемые количества символов, слов и строк должны отображаться в окне программы по мере обработки буфера. Для операций с файлом использовать функции управления файлами Win 32 API. В потоки введите необходимые временные задержки. Предусмотрите в интерфейсе приложения поля ввода для задания этих временных задержек. Необходимый текстовый файл для тестирования и демонстрации работы программы можно создать в редакторе Edit, запускаемого в интерфейсе командной строки, или редакторе WordPad с выбором MS DOS формата файла.

Тема 5. Создание многопоточного приложения, иллюстрирующего решение проблемы синхронизации потоков-производителей и потоков-потребителей.

Содержание задания.

Создать приложение по следующему описанию. Периодически случайным образом с некоторым интервалом, задаваемым в соответствующем поле ввода окна приложения, генерируются потоки, имитирующие создание заказов на покупку товаров из следующего списка: пылесос (цена 3000 р.), холодильник (цена 8000 р.), телевизор (цена 7000 р.). Заказ включает в себя следующие реквизиты: товар, количество (шт.) Реквизиты заказа генерируются случайным образом. Реквизит количество должно быть в интервале от 1 до 10. Заказы образуют очередь (первый пришел – первый обслужен) в количестве p. Каждый заказчик ждет входа в очередь некоторое конечное время, задаваемое в поле ввода окна приложения, после чего уходит, что соответствует уничтожению потока (не забудьте при создании этих потоков закрывать их дескрипторы во избежание утечки памяти). Заказчиков обслуживают потоки – продавцы в количестве n. Каждый товар у потоков продавцов (у них общий склад) имеется в определенном количестве и периодически пополняется отдельным потоком в количестве, вводимом в соответствующие поля ввода, и с интервалом, вводимом в соответствующее поле ввода приложения. Потоки продавцы обслуживают заказ только в том случае, если товар имеется на складе в нужном количестве. В окне программы необходимо отображать количество каждого товара и сумму выручки у каждого продавца, а также общее количество обслуженных заказчиков и не дождавшихся своей очереди. Необходимо вести также журнал заказов, в который записывается информация о поступающих заказах. Формат файла – текстовый. Синхронизацию потоков заказчиков и потоков продавцов выполнить с помощью семафоров, для остальных объект синхронизации выбрать самостоятельно. Предусмотреть время обслуживания, по истечении которого поступление новых заказов прекращается. Величина этого времени должна задаваться в соответствующем поле ввода окна приложения. Для операций с файлом использовать функции управления файлами Win 32 API. Предусмотреть в окне приложения поля для ввода значений p (максимальный размер очереди) и n (число продавцов).

Тема 6. Разработка двух приложений, взаимодействующих между собой на основе сообщений.

Содержание задания.

Создайте приложения A и B (имена дайте сами), взаимодействующие между собой посредством посылки друг другу сообщений. Приложение B по полученным в сообщении (использовать сообщение WM_COPYDATA) от приложения A первому члену a1, разности d и числу членов n рассчитывает n-й член и сумму Sn первых n членов арифметической прогрессии и отправляет результат приложению A. В окне приложения B должны отображаться полученные от приложения A параметры арифметической прогрессии a1, d и n. В окне приложения A должны отображаться принятые от приложения B результаты bn и Sn. Приложение B должно вести протокол получаемых запросов и выданных на них ответов в текстовом файле. Каждая строка файла имеет вид типа: “Первый член =1, разность = 2, n = 3, последний член = 4, сумма = 7». Для операций с файлом использовать функции управления файлами Win 32 API. Интерфейс приложения A должен быть построен на основе диалогового окна. Файл для ведения протокола должен задаваться в поле ввода окна приложения B. Вычисления в приложении B должны выполняться в отдельном рабочем потоке. Интерфейс приложения B построить на основе окна приложения общего вида. При запуске одного из приложений второе приложение должно запускаться автоматически, если оба файлы обоих приложений расположены в одном каталоге. При закрытии одного из приложений второе приложение должно закрываться автоматически, если оба файлы обоих приложений расположены в одном каталоге. В противном случае приложения запускаются и останавливаются порознь.

Тема 7. Разработка двух приложений, взаимодействующих между собой на основе проецируемых в память файлов.

Содержание задания.

Создайте приложения A и B (имена дайте сами), взаимодействующие между собой посредством проецируемого в память файла и посылки друг другу пользовательских сообщений. Сообщения (использовать сообщения, определенные пользователем) лишь служат для информирования приложений о подготовленности для них данных. Сами данные передаются через проецируемый в память файл. Приложение B по полученным в сообщении от приложения A первому члену b1, разности q и числу членов n рассчитывает n-й член и сумму Sn первых n членов геометрической прогрессии и отправляет результат приложению A. В окне приложения B должны отображаться полученные от приложения A параметры геометрической прогрессии b1, q и n. В окне приложения A должны отображаться принятые от приложения B результаты bn и Sn. Приложение B должно вести протокол получаемых запросов и выданных на них ответов в текстовом файле. Каждая строка файла имеет вид типа: “Первый член =1, знаменатель = 2, n = 3, последний член = 5, сумма = 9». Для операций с файлом протокола использовать функции управления файлами Win 32 API. Интерфейс приложения A должен быть построен на основе диалогового окна. Файл для ведения протокола должен задаваться в поле ввода окна приложения B. Вычисления в приложении B должны выполняться в отдельном рабочем потоке. Интерфейс приложения B построить на основе окна приложения общего вида. При запуске одного из приложений второе приложение должно запускаться автоматически, если оба файлы обоих приложений расположены в одном каталоге. При закрытии одного из приложений второе приложение должно закрываться автоматически, если оба файлы обоих приложений расположены в одном каталоге. В противном случае приложения запускаются и останавливаются порознь.

Тема 8. Разработка двух приложений, взаимодействующих между собой на основе буфера обмена.

Содержание задания.

Создайте приложения A и B (имена дайте сами), взаимодействующие между собой посредством буфера обмена и посылки друг другу пользовательских сообщений. Сообщения (использовать сообщения, определенные пользователем) лишь служат для информирования приложений о подготовленности для них данных. Сами данные передаются через буфер обмена. Приложение B по полученным в сообщении от приложения A координатам a x, a y, a z вектора и координатам b x, b y, b z вектора рассчитывает скалярное произведение и угол j между векторами и и отправляет результат приложению A. В окне приложения B должны отображаться полученные от приложения A координаты a x, a y, a z вектора и координаты b x, b y, b z вектора . В окне приложения A должны отображаться принятые от приложения B результаты и угол j. Приложение B должно вести протокол получаемых запросов и выданных на них ответов в текстовом файле. Каждая строка файла имеет вид типа: “Координаты первого вектора = (1, 2, -1); координаты второго вектора = (2, 1, 4), скалярное произведение = 0, угол = 90 градусов». Для операций с файлом протокола использовать функции управления файлами Win 32 API. Интерфейс приложения A должен быть построен на основе диалогового окна. Файл для ведения протокола должен задаваться в поле ввода окна приложения B. Вычисления в приложении B должны выполняться в отдельном рабочем потоке. Интерфейс приложения B построить на основе окна приложения общего вида. При запуске одного из приложений второе приложение должно запускаться автоматически, если оба файлы обоих приложений расположены в одном каталоге. При закрытии одного из приложений второе приложение должно закрываться автоматически, если оба файлы обоих приложений расположены в одном каталоге. В противном случае приложения запускаются и останавливаются порознь.

Тема 9. Разработка многопоточного приложения, демонстрирующего распараллеливание вычислений на примере расчета произведения матриц произвольных размерностей m × n и n × k и использующего механизм управления памятью на основе виртуальной памяти.

Содержание задания.

Разработайте многопоточное приложение, выполняющее вычисление произведения матриц A (m × n) и B (n × k). Элементы cij матрицы произведения С = A× B вычисляются параллельно p однотипными потоками. Если некоторый поток уже вычисляет элемент cij матрицы C, то следующий приступающий к вычислению поток выбирает для расчета элемент cij+1, если j< k, и ci+1k, если j=k. Выполнив вычисление элемента матрицы-произведения, поток проверяет, нет ли элемента, который еще не рассчитывается. Если такой элемент есть, то приступает к его расчету. В противном случае отправляет (пользовательское) сообщение о завершении своей работы и приостанавливает своё выполнение. Главный поток, получив сообщения о завершении вычислений от всех потоков, выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой организуйте через критическую секцию, мьютекс или событие с автоматическим сбросом. Для хранения перемножаемых матриц и матрицы-результата перемножения используйте функции семейства Win 32 API VitrualXXX() для управления виртуальной памятью. Разработайте необходимый пользовательский интерфейс для ввода размерностей перемножаемых матриц M, N и K, и их элементов; запуска расчета, задания количества вычисляющих потоков, вывода матрицы-произведения. Для ускорения ввода предусмотрите возможность не заполнять нулевые элементы (не заполненные элементы матриц должны сами инициализироваться нулями). Например, для ввода каждой матрицы предусмотрите три поля ввода: номер строки, номер столбца, элемент матрицы (на пересечении этой строки и этого столбца); и кнопку для команды ввода элемента в матрицу. Для вывода результата предусмотрите использование прокруток по строкам и столбцам матрицы-результата с окном вывода 10× 10. Разработайте файл протокола, в который должна записываться следующая информация: размерности перемножаемых матриц, их элементы, элементы результата, а также информацию о том, каким потоком (номером) вычислен данный элемент матрицы. В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.

Тема 10. Разработка многопоточного приложения, демонстрирующего распараллеливание вычислений на примере расчета произведения матриц произвольных размерностей m × n и n × k и использующего механизм управления памятью на основе проецируемого в память файла.

Содержание задания.

Разработайте многопоточное приложение, выполняющее вычисление произведения матриц A (m × n) и B (n × k). Элементы cij матрицы произведения С = A× B вычисляются параллельно p однотипными потоками. Если некоторый поток уже вычисляет элемент cij матрицы C, то следующий приступающий к вычислению поток выбирает для расчета элемент cij+1, если j< k, и ci+1k, если j=k. Выполнив вычисление элемента матрицы-произведения, поток проверяет, нет ли элемента, который еще не рассчитывается. Если такой элемент есть, то приступает к его расчету. В противном случае отправляет (пользовательское) сообщение о завершении своей работы и приостанавливает своё выполнение. Главный поток, получив сообщения о завершении вычислений от всех потоков, выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой организуйте через критическую секцию или мьютекс. Для хранения перемножаемых матриц и матрицы-результата перемножения используйте функции семейства Win 32 API для управления проецируемыми в память файлами. Разработайте необходимый пользовательский интерфейс для ввода размерностей перемножаемых матриц M, N и K, и их элементов; запуска расчета, задания количества вычисляющих потоков, вывода матрицы-произведения. Для ускорения ввода предусмотрите возможность не заполнять нулевые элементы (не заполненные элементы матриц должны сами инициализироваться нулями). Например, для ввода каждой матрицы предусмотрите три поля ввода: номер строки, номер столбца, элемент матрицы (на пересечении этой строки и этого столбца); и кнопку для команды ввода элемента в матрицу. Для вывода результата предусмотрите использование прокруток по строкам и столбцам матрицы-результата с окном вывода 10× 10. Разработайте файл протокола, в который должна записываться следующая информация: размерности перемножаемых матриц, их элементы, элементы результата, а также информацию о том, каким потоком (номером) вычислен данный элемент матрицы. В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.

Тема 11. Разработка многопоточного приложения, демонстрирующего распараллеливание вычислений на примере расчета произведения матриц произвольных размерностей m × n и n × k и использующего механизм управления динамически распределяемой памятью.

Содержание задания.

Разработайте многопоточное приложение, выполняющее вычисление произведения матриц A (m × n) и B (n × k). Элементы cij матрицы произведения С = A× B вычисляются параллельно p однотипными потоками. Если некоторый поток уже вычисляет элемент cij матрицы C, то следующий приступающий к вычислению поток выбирает для расчета элемент cij+1, если j< k, и ci+1k, если j=k. Выполнив вычисление элемента матрицы-произведения, поток проверяет, нет ли элемента, который еще не рассчитывается. Если такой элемент есть, то приступает к его расчету. В противном случае отправляет (пользовательское) сообщение о завершении своей работы и приостанавливает своё выполнение. Главный поток, получив сообщения о завершении вычислений от всех потоков, выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой организуйте через критическую секцию или мьютекс. Для хранения перемножаемых матриц и матрицы-результата перемножения используйте функции семейства Win 32 API HeapXXX() для управления динамически распределяемой памятью. Разработайте необходимый пользовательский интерфейс для ввода размерностей перемножаемых матриц M, N и K, и их элементов; запуска расчета, задания количества вычисляющих потоков, вывода матрицы-произведения. Для ускорения ввода предусмотрите возможность не заполнять нулевые элементы (не заполненные элементы матриц должны сами инициализироваться нулями). Например, для ввода каждой матрицы предусмотрите три поля ввода: номер строки, номер столбца, элемент матрицы (на пересечении этой строки и этого столбца); и кнопку для команды ввода элемента в матрицу. Для вывода результата предусмотрите использование прокруток по строкам и столбцам матрицы-результата с окном вывода 10× 10. Разработайте файл протокола, в который должна записываться следующая информация: размерности перемножаемых матриц, их элементы, элементы результата, а также информацию о том, каким потоком (номером) вычислен данный элемент матрицы. В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.

Тема 12. Разработка многопоточного приложения, демонстрирующего распараллеливание вычислений на примере вычисления нормы вектора в Евклидовом линейном пространстве большой размерности и использующего механизм управления памятью на основе виртуальной памяти.

Содержание задания.

Разработайте многопоточное приложение, выполняющее вычисление нормы вектора a. Каждый из p потоков вычисляет частичную сумму квадратов компонент вектора: от некоторого элемента a i до a i+k-1 (k последовательных элемента). Параметры k и p должны быть варьируемыми (предусмотреть поля ввода для них в диалоговом окне приложения). Если некоторый поток уже вычисляет сумму квадратов элементов от a i до a i+k-1, то следующий приступающий к вычислению поток выбирает для расчета последовательность элементов от a i+k до a i+2k-1. Выполнив вычисление частичной суммы квадратов компонентов вектора a, поток проверяет, нет ли последовательности элементов в количестве не более k, сумма квадратов которой еще не вычислялась. Если такая последовательность есть, то приступает к суммированию квадратов ее элементов. В противном случае приостанавливает своё выполнение. Суммирование частичных сумм выполняется путем их накопления (сложения) в глобальной переменной, первоначально инициализированной нулевым значением, самими потоками. Вычислительный поток после завершения работы отправляет (пользовательское) сообщение главному потоку. Главный поток, получив сообщения о завершении вычислений всеми потоками, извлекает квадратный корень из результата суммирования и выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой для выбора суммируемой подпоследовательности компонент вектора и доступа к накапливающей сумму квадратов компонент вектора переменной организуйте через критические секции, мьютексы или события с автоматическим сбросом (в любой комбинации). Для хранения компонент вектора используйте функции семейства Win 32 API VitrualXXX() для управления виртуальной памятью. Разработайте необходимый пользовательский интерфейс для ввода размерности вектора N и значений его компонент, запуска расчета, задания количества вычисляющих частичные суммы потоков, задания количества суммируемых квадратов элементов одним потоком, вывода нормы вектора. Для ускорения ввода предусмотрите возможность не заполнять нулевые компоненты вектора (не заполненные компоненты вектора должны сами инициализироваться нулями). Например, для ввода вектора предусмотрите два поля ввода: номер компоненты, значение компоненты; и кнопку для команды задания компоненты вектора. Разработайте файл протокола, в который должна записываться следующая информация: размерность вектора, его компоненты, результат (норма), а также информацию о том, каким потоком (номером) и какая подпоследовательность элементов просуммирована (задать ее номером первого элемента). В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.

Тема 13. Разработка многопоточного приложения, демонстрирующего распараллеливание вычислений на примере вычисления нормы вектора в Евклидовом линейном пространстве большой размерности и использующего механизм управления памятью на основе проецируемого в память файла.

Содержание задания.

Разработайте многопоточное приложение, выполняющее вычисление нормы вектора a. Каждый из p потоков вычисляет частичную сумму квадратов компонент вектора: от некоторого элемента a i до a i+k-1 (k последовательных элемента). Параметры k и p должны быть варьируемыми (предусмотреть поля ввода для них в диалоговом окне приложения). Если некоторый поток уже вычисляет сумму квадратов элементов от a i до a i+k-1, то следующий приступающий к вычислению поток выбирает для расчета последовательность элементов от a i+k до a i+2k-1. Выполнив вычисление частичной суммы квадратов компонентов вектора a, поток проверяет, нет ли последовательности элементов в количестве не более k, сумма квадратов которой еще не вычислялась. Если такая последовательность есть, то приступает к суммированию квадратов ее элементов. В противном случае приостанавливает своё выполнение. Суммирование частичных сумм выполняется путем их накопления (сложения) в глобальной переменной, первоначально инициализированной нулевым значением, самими потоками. Вычислительный поток после завершения работы отправляет (пользовательское) сообщение главному потоку. Главный поток, получив сообщения о завершении вычислений всеми потоками, извлекает квадратный корень из результата суммирования и выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой для выбора суммируемой подпоследовательности компонент вектора и доступа к накапливающей сумму квадратов компонент вектора переменной организуйте через критические секции, мьютексы или события с автоматическим сбросом (в любой комбинации). Для хранения компонент вектора используйте функции семейства Win 32 API для управления проецируемыми в память файлами. Разработайте необходимый пользовательский интерфейс для ввода размерности вектора N и значений его компонент, запуска расчета, задания количества вычисляющих частичные суммы потоков, задания количества суммируемых квадратов элементов одним потоком, вывода нормы вектора. Для ускорения ввода предусмотрите возможность не заполнять нулевые компоненты вектора (не заполненные компоненты вектора должны сами инициализироваться нулями). Например, для ввода вектора предусмотрите два поля ввода: номер компоненты, значение компоненты; и кнопку для команды задания компоненты вектора. Разработайте файл протокола, в который должна записываться следующая информация: размерность вектора, его компоненты, результат (норма), а также информацию о том, каким потоком (номером) и какая подпоследовательность элементов просуммирована (задать ее номером первого элемента). В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.

Тема 14. Разработка многопоточного приложения, демонстрирующего распараллеливание вычислений на примере вычисления нормы вектора в Евклидовом линейном пространстве большой размерности и использующего механизм управления динамически распределяемой памятью.

Содержание задания.

Разработайте многопоточное приложение, выполняющее вычисление нормы вектора a. Каждый из p потоков вычисляет частичную сумму квадратов компонент вектора: от некоторого элемента a i до a i+k-1 (k последовательных элемента). Параметры k и p должны быть варьируемыми (предусмотреть поля ввода для них в диалоговом окне приложения). Если некоторый поток уже вычисляет сумму квадратов элементов от a i до a i+k-1, то следующий приступающий к вычислению поток выбирает для расчета последовательность элементов от a i+k до a i+2k-1. Выполнив вычисление частичной суммы квадратов компонентов вектора a, поток проверяет, нет ли последовательности элементов в количестве не более k, сумма квадратов которой еще не вычислялась. Если такая последовательность есть, то приступает к суммированию квадратов ее элементов. В противном случае приостанавливает своё выполнение. Суммирование частичных сумм выполняется путем их накопления (сложения) в глобальной переменной, первоначально инициализированной нулевым значением, самими потоками. Вычислительный поток после завершения работы отправляет (пользовательское) сообщение главному потоку. Главный поток, получив сообщения о завершении вычислений всеми потоками, извлекает квадратный корень из результата суммирования и выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой для выбора суммируемой подпоследовательности компонент вектора и доступа к накапливающей сумму квадратов компонент вектора переменной организуйте через критические секции, мьютексы или события с автоматическим сбросом (в любой комбинации). Для хранения компонент вектора используйте функции семейства Win 32 API HeapXXX() для управления динамически распределяемой памятью. Разработайте необходимый пользовательский интерфейс для ввода размерности вектора N и значений его компонент, запуска расчета, задания количества вычисляющих частичные суммы потоков, задания количества суммируемых квадратов элементов одним потоком, вывода нормы вектора. Для ускорения ввода предусмотрите возможность не заполнять нулевые компоненты вектора (не заполненные компоненты вектора должны сами инициализироваться нулями). Например, для ввода вектора предусмотрите два поля ввода: номер компоненты, значение компоненты; и кнопку для команды задания компоненты вектора. Разработайте файл протокола, в который должна записываться следующая информация: размерность вектора, его компоненты, результат (норма), а также информацию о том, каким потоком (номером) и какая подпоследовательность элементов просуммирована (задать ее номером первого элемента). В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.

Тема 15. Разработка приложения по поиску заданной строки во всех текстовых файлах заданного каталога с использованием функции управления файлами Win 32 API.

Содержание задания.

Создать приложение, осуществляющее поиск заданной текстовой строки в текстовых файлах стандарта ANSI (расширение txt) из заданного каталога и его подкаталогов.

Создайте в приложении необходимые элементы управления по выбору текущего каталога для поиска и задания режима поиска: только текстовые файлы самого каталога или текстовые файлы каталога и всех его подкаталогов.

Создайте также поле ввода для строки поиска и список с вертикальной линейкой прокрутки для выдачи результатов поиска. В этот список должны добавляться имена файлов с полным маршрутом доступа к ним и количество вхождений заданной строки.

Операции поиска должны выполняться в отдельном рабочем потоке. Синхронизацию рабочего потока с первичным потоком осуществите с помощью событий с автоматическим сбросом. Для операций с файлами использовать функции управления файлами Win 32 API.

Используя редактор Edit (или WordPad с выбором MS DOS формата файла), подготовьте несколько файлов (~10) для тестирования и демонстрации программы.

Тема 16. Разработка приложения по поиску заданной строки во всех текстовых файлах заданного каталога с использованием механизма проецирования файла в память.

Содержание задания.

Создать приложение, осуществляющее поиск заданной текстовой строки в текстовых файлах стандарта ANSI (расширение txt) из заданного каталога и его подкаталогов. Создайте в приложении необходимые элементы управления по выбору текущего каталога для поиска и задания режима поиска: только текстовые файлы самого каталога или текстовые файлы каталога и всех его подкаталогов. Создайте также поле ввода для строки поиска и список с вертикальной линейкой прокрутки для выдачи результатов поиска. В этот список должны добавляться имена файлов с полным маршрутом доступа к ним и количество вхождений заданной строки. Операции поиска должны выполняться в отдельном рабочем потоке. Синхронизацию рабочего потока с первичным потоком осуществите с помощью событий с автоматическим сбросом. Для выполнения операций поиска строки в файлах использовать механизм проецирования файлов в память. Используя редактор Edit (или WordPad с выбором MS DOS формата файла), подготовьте несколько файлов (~10) для тестирования и демонстрации программы.

Тема 17. Создание набора из трех приложений, моделирующего работу автоматизированной системы продажи билетов, и иллюстрирующего решение проблемы синхронизации процессов-писателей и процессов-читателей.

Содержание задания.

Набор состоит из трех приложений: приложение базы данных билетов, приложение кассир (писатель), приложение справочная информация (читатель). Приложение базы данных билетов запускается в единственном экземпляре. Оно должно хранить набор записей о номерах рейсов с указанием текущего числа свободных мест. Для хранения этого набора записей используйте динамически распределяемую память. Должен быть предусмотрен интерфейс для ввода записи о рейсе и количестве первоначального количества свободных мест. Приложение кассир может быть запущено в нескольких экземплярах. В нем должен быть предусмотрен интерфейс для задания номера рейса, на который приобретается один билет. После удовлетворения запроса приложение закрывается. Если удовлетворить запрос нельзя должно быть выдано уведомление, что свободных мест на рейс нет. Приложение должно ожидать появления свободных мест, если только не будет закрыто принудительно, что означает снятие заявки на билет на соответствующий рейс. Приложение справочник запускается в любом числе экземпляров. Оно должно выдавать список имеющихся рейсов с текущим количеством свободных мест на каждый. Синхронизацию процессов осуществить помощью семафоров.

Тема 18. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 API по управлению им и взаимоисключением при чтении, изменении, добавлении и удалении записей разными экземплярами этого приложения на основе механизма блокировки части файла.

Содержание задания.

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

Для операций с файлом использовать функции управления файлами Win 32 API. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться по отдельной команде “сжатие файла набора данных”.

Приложение должно корректно работать при запуске нескольких его копий. Для этого использовать блокирование отдельной записи при выполнении ее чтения, изменения, добавления или удаления. Процедура сжатия файла должна выполняться только, если запущен один экземпляр приложения (в противном случае приложение должно операцию не выполнять и уведомлять о невозможности ее выполнить; при выполнении этой операции должны блокироваться все записи файла).

Поля данных: Наименование товара (20 символов), Цена, Количество, Дата (поступления на склад).

Тема 19. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 API по управлению им и взаимоисключением при добавлении, изменении и удалении записей разными экземплярами этого приложения на основе механизма блокировки части файла.

Содержание задания.

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

Для операций с файлом использовать функции управления файлами Win 32 API. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться по отдельной команде “сжатие файла набора данных”.

Приложение должно корректно работать при запуске нескольких его копий. Для этого использовать блокирование отдельной записи при выполнении ее изменения, добавления или удаления. Процедура сжатия файла должна выполняться только, если запущен один экземпляр приложения (в противном случае приложение должно операцию не выполнять и уведомлять о невозможности ее выполнить). Должно допускаться чтение одной и той же записи одновременно несколькими экземплярами приложений. Если одно из приложений в этот момент изменяет запись, то в других приложениях она должна тут же отобразиться (используйте по своему выбору один из механизмов оповещения об этом других экземпляров приложения, например механизм сообщений).

Поля данных: Наименование товара (20 символов), Цена, Количество, Дата (поступления на склад).

Тема 20. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе механизма блокировки части файла.

Содержание задания.

Разработать приложение с тремя рабочими потоками. Первоначально по команде главный поток заполняет файл 10000 – ми трехбайтовых записей, поля каждой из которых формируются случайным образом. Каждая запись интерпретируется как цвет в модели RGB и используется для закраски квадрата, отображаемого в области рисунка диалогового окна приложения. Область рисунка окна приложения разбивается на 100× 100 квадратов. Записи файла отображаются на матрицу квадратов области рисунка построчно. После создания файла записей главный поток прорисовывает соответствующие им квадраты в области рисунка. Далее, по соответствующей команде запускаются одновременно три рабочих потока. Первый рабочий поток упорядочивает записи файла в порядке возрастания по первому полю (интенсивность красного цвета). Второй рабочий поток упорядочивает записи по второму полю (интенсивность зеленого цвета) в порядке возрастания при равенстве у записей первых полей. Третий рабочий поток упорядочивает записи по третьему полю (интенсивность синего цвета) в порядке возрастания при равенстве у записей первых полей и вторых полей. Упорядочение производится перестановкой двух соседних записей путем циклического продвижения по записям файла каждым из потоков. Перед сравнением пара соседних записей файла блокируется для обеспечения взаимоисключения потоков. После каждой перестановки пары соседних записей должна происходить перерисовка соответствующей пары квадратов в области рисунка окна приложения. Остановка работы потоков производится по соответствующей команде. Предусмотрите все необходимые элементы управления в интерфейсе приложения. Для лучшего наблюдения за работой потоков предусмотрите временные задержки в их работе. Управление величиной задержки вынесите в интерфейс приложения.

Тема 21. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 API по управлению им и взаимоисключением при чтении, изменении, добавлении и удалении записей разными экземплярами этого приложения на основе объекта мютекс без блокировки частей файла.

Содержание задания.

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

Для операций с файлом использовать функции управления файлами Win 32 API. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться по отдельной команде “сжатие файла набора данных”.

Приложение должно корректно работать при запуске нескольких его копий. Для этого использовать синхронизацию процессов экземпляров приложения при выполнении чтения, изменения, добавления или удаления записи на основе объекта мютекс. Процедура сжатия файла должна выполняться только, если запущен один экземпляр приложения (в противном случае приложение должно операцию не выполнять и уведомлять о невозможности ее выполнить). Механизм блокировки файла или его части не использовать.

Поля данных: Преподаватель (30 символов), Дисциплина (20 символов), Факультет (20 символов), Группа (10 символов), Число студентов, Дата экзамена.

Тема 22. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 API по управлению им и взаимоисключением при изменении, добавлении и удалении записей разными экземплярами этого приложения на основе объекта мютекс без блокировки частей файла.

Содержание задания.

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

Для операций с файлом использовать функции управления файлами Win 32 API. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться по отдельной команде “сжатие файла набора данных”.

Приложение должно корректно работать при запуске нескольких его копий. Для этого использовать синхронизацию процессов экземпляров приложения при выполнении изменения, добавления или удаления записи на основе объекта мютекс. Процедура сжатия файла должна выполняться только, если запущен один экземпляр приложения (в противном случае приложение должно операцию не выполнять и уведомлять о невозможности ее выполнить). Должно допускаться чтение одной и той же записи одновременно несколькими экземплярами приложений. Если одно из приложений в этот момент изменяет запись, то в других приложениях она должна тут же отобразиться (используйте по своему выбору один из механизмов оповещения об этом других экземпляров приложения, например механизм сообщений).

Поля данных: Преподаватель (30 символов), Дисциплина (20 символов), Факультет (20 символов), Группа (10 символов), Число студентов, Дата экзамена.

Тема 23. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе объекта мютекс без блокировки частей файла.

Содержание задания.

Разработать приложение с тремя рабочими потоками. Первоначально по команде главный поток заполняет файл 10000 – ми трехбайтовых записей, поля каждой из которых формируются случайным образом. Каждая запись интерпретируется как цвет в модели RGB и используется для закраски квадрата, отображаемого в области рисунка диалогового окна приложения. Область рисунка окна приложения разбивается на 100× 100 квадратов. Записи файла отображаются на матрицу квадратов области рисунка построчно. После создания файла записей главный поток прорисовывает соответствующие им квадраты в области рисунка. Далее, по соответствующей команде запускаются одновременно три рабочих потока. Первый рабочий поток упорядочивает записи файла в порядке возрастания по первому полю (интенсивность красного цвета). Второй рабочий поток упорядочивает записи по второму полю (интенсивность зеленого цвета) в порядке возрастания при равенстве у записей первых полей. Третий рабочий поток упорядочивает записи по третьему полю (интенсивность синего цвета) в порядке возрастания при равенстве у записей первых полей и вторых полей. Упорядочение производится перестановкой двух соседних записей путем циклического продвижения по записям файла каждым из потоков. Для обеспечения взаимоисключения потоков при сравнении и перестановке соседних записей использовать объект мьютекс. Блокировку файла и его частей не использовать. После каждой перестановки пары соседних записей должна происходить перерисовка соответствующей пары квадратов в области рисунка окна приложения. Остановка работы потоков производится по соответствующей команде. Предусмотрите все необходимые элементы управления в интерфейсе приложения. Для лучшего наблюдения за работой потоков предусмотрите временные задержки в их работе. Управление величиной задержки вынесите в интерфейс приложения.

Тема 24. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 API по управлению им и взаимоисключением при чтении, изменении, добавлении и удалении записей разными экземплярами этого приложения на основе объекта событие с автоматическим сбросом без блокировки частей файла.

Содержание задания.

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

Для операций с файлом использовать функции управления файлами Win 32 API. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться по отдельной команде “сжатие файла набора данных”.

Приложение должно корректно работать при запуске нескольких его копий. Для этого использовать синхронизацию процессов экземпляров приложения при выполнении чтения, изменения, добавления или удаления записи на основе объекта событие с автоматическим сбросом. Процедура сжатия файла должна выполняться только, если запущен один экземпляр приложения (в противном случае приложение должно операцию не выполнять и уведомлять о невозможности ее выполнить). Механизм блокировки файла или его части не использовать.

Поля данных: Студент (20 символов), Факультет (10 символов), Курс, Группа (8 символов), Дата рождения, Дата поступления.

Тема 25. Разработка приложения по поддержке набора данных на основе файла с использованием функций Win 32 API по управлению им и взаимоисключением при изменении, добавлении и удалении записей разными экземплярами этого приложения на основе объекта событие с автоматическим сбросом без блокировки частей файла.

Содержание задания.

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

Для операций с файлом использовать функции управления файлами Win 32 API. Удаляемые записи должны помечаться как удаленные, само же удаление записей с дефрагментацией файла должно производиться по отдельной команде “сжатие файла набора данных”.

Приложение должно корректно работать при запуске нескольких его копий. Для этого использовать синхронизацию процессов экземпляров приложения при выполнении изменения, добавления или удаления записи на основе объекта событие с автоматическим сбросом. Процедура сжатия файла должна выполняться только, если запущен один экземпляр приложения (в противном случае приложение должно операцию не выполнять и уведомлять о невозможности ее выполнить). Должно допускаться чтение одной и той же записи одновременно несколькими экземплярами приложений. Если одно из приложений в этот момент изменяет запись, то в других приложениях она должна тут же отобразиться (используйте по своему выбору один из механизмов оповещения об этом других экземпляров приложения, например механизм сообщений).

Поля данных: Студент (20 символов), Факультет (10 символов), Курс, Группа (8 символов), Дата рождения, Дата поступления.

Тема 26. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе объекта событие с автоматическим сбросом без блокировки частей файла.

Содержание задания.

Разработать приложение с тремя рабочими потоками. Первоначально по команде главный поток заполняет файл 10000 – ми трехбайтовых записей, поля каждой из которых формируются случайным образом. Каждая запись интерпретируется как цвет в модели RGB и используется для закраски квадрата, отображаемого в области рисунка диалогового окна приложения. Область рисунка окна приложения разбивается на 100× 100 квадратов. Записи файла отображаются на матрицу квадратов области рисунка построчно. После создания файла записей главный поток прорисовывает соответствующие им квадраты в области рисунка. Далее, по соответствующей команде запускаются одновременно три рабочих потока. Первый рабочий поток упорядочивает записи файла в порядке возрастания по первому полю (интенсивность красного цвета). Второй рабочий поток упорядочивает записи по второму полю (интенсивность зеленого цвета) в порядке возрастания при равенстве у записей первых полей. Третий рабочий поток упорядочивает записи по третьему полю (интенсивность синего цвета) в порядке возрастания при равенстве у записей первых полей и вторых полей. Упорядочение производится перестановкой двух соседних записей путем циклического продвижения по записям файла каждым из потоков. Для обеспечения взаимоисключения потоков при сравнении и перестановке соседних записей использовать объект событие с автоматическим сбросом. Блокировку файла и его частей не использовать. После каждой перестановки пары соседних записей должна происходить перерисовка соответствующей пары квадратов в области рисунка окна приложения. Остановка работы потоков производится по соответствующей команде. Предусмотрите все необходимые элементы управления в интерфейсе приложения. Для лучшего наблюдения за работой потоков предусмотрите временные задержки в их работе. Управление величиной задержки вынесите в интерфейс приложения.

Тема 27. Разработка приложения с несколькими обрабатывающими файл потоками, использующими взаимоисключение на основе критической секции без блокировки частей файла.

Содержание задания.

Разработать приложение с тремя рабочими потоками. Первоначально по команде главный поток заполняет файл 10000 – ми трехбайтовых записей, поля каждой из которых формируются случайным образом. Каждая запись интерпретируется как цвет в модели RGB и используется для закраски квадрата, отображаемого в области рисунка диалогового окна приложения. Область рисунка окна приложения разбивается на 100× 100 квадратов. Записи файла отображаются на матрицу квадратов области рисунка построчно. После создания файла записей главный поток прорисовывает соответствующие им квадраты в области рисунка. Далее, по соответствующей команде запускаются одновременно три рабочих потока. Первый рабочий поток упорядочивает записи файла в порядке возрастания по первому полю (интенсивность красного цвета). Второй рабочий поток упорядочивает записи по второму полю (интенсивность зеленого цвета) в порядке возрастания при равенстве у записей первых полей. Третий рабочий поток упорядочивает записи по третьему полю (интенсивность синего цвета) в порядке возрастания при равенстве у записей первых полей и вторых полей. Упорядочение производится перестановкой двух соседних записей путем циклического продвижения по записям файла каждым из потоков. Для обеспечения взаимоисключения потоков при сравнении и перестановке соседних записей использовать критическую секцию. Блокировку файла и его частей не использовать. После каждой перестановки пары соседних записей должна происходить перерисовка соответствующей пары квадратов в области рисунка окна приложения. Остановка работы потоков производится по соответствующей команде. Предусмотрите все необходимые элементы управления в интерфейсе приложения. Для лучшего наблюдения за работой потоков предусмотрите временные задержки в их работе. Управление величиной задержки вынесите в интерфейс приложения.

Тема 28. Разработка приложения, моделирующего возникновение взаимоблокировок и восстановление после них.

Содержание задания.

Разработайте приложение, моделирующее обнаружение взаимоблокировок в системе, включающей набор из нескольких типов ресурсов в количестве n каждого типа и m потоков. Заставьте каждый поток сгенерировать необходимый ему набор ресурсов (например, три ресурса типа A, один ресурс типа B и пять ресурсов типа C). Затем каждый раз запрашивайте из конкретного набора ресурс одного определенного типа в произвольном порядке с паузами разной длительности. Сделайте так, чтобы каждый поток удерживал полученные ресурсы, пока не будут удовлетворены все его дополнительные запросы. С этого момента должны начать возникать взаимоблокировки. Запустите другой поток, который бы проверял наличие взаимоблокировок каждые несколько секунд. В случае возникновения тупиковой ситуации он должен будет сообщить об этом и начать уничтожение потоков, вовлеченных во взаимоблокировку. Испытайте различные эвристические подходы к выбору жертвы среди потоков и проанализируйте, при использовании какого метода среднее время между возникновением взаимоблокировок является наименьшим. Реализуйте в приложении также аналитический метод обнаружения взаимоблокировок. Разработайте необходимый пользовательский интерфейс приложения.

Тема 29. Разработка приложений, моделирующих работу дискового накопителя.

Содержание задания.

Разработайте приложение, моделирующее работу дискового накопителя с двумя пластинами (т.е. четырьмя поверхностями), четырьмя головками чтения/записи, 25 цилиндрами и 20 секторами на каждой дорожке. Накопитель должен помнить текущую позицию головок чтения/записи и выполнять операции чтения, записи и позиционирования. Эти операции должны возвращать время в миллисекундах, необходимое для выполнения запроса (для примера можно задать время перемещения между дорожками 2 мс, среднее время позиционирования 10 мс и вращательную задержку 5 мс). После этого напишите приложение, генерирующее равномерно распределенные запросы с указанием пластины, цилиндра, сектора и количества запрашиваемых секторов. Эти запросы должны отправляться диспетчеру дисковых операций (первое приложение), который будет упорядочивать их и посылать накопителю (первое приложение) для выполнения. Накопитель должен выполнять операции чтения, записи и позиционирования. Используйте возвращаемые накопителем величины, чтобы определить пропускную способность каждого алгоритма, время его реагирования и разброс этого времени. Рабочие операции обоих приложений должны выполняться в отдельных рабочих потоках.


Литература

1. А.В. Гордеев. Операционные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2007. – 416 с.: ил.

2. С.В. Назаров. Операционные среды, системы и оболочки. Основы структурной и функциональной организации: Учеб. пособие. – М.: КУДИЦ-ПРЕСС, 2007. – 504 с., илл.

3. С.В. Назаров, Л.П. Гудыно, А.А. Кириченко. Операционные системы. Практикум. Под ред. С.В. Назарова – М.: КУДИЦ-ПРЕСС, 2008. – 464 с., илл.

4. В.Г. Олифер, Н.А. Олифер. Сетевые операционные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2008. – 669 с.: ил.

5. Д.В. Иртегов. Введение в операционные системы. – 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2008. – 1040 с.: ил. – (Учебное пособие)

6. Х.М. Дейтел, П.Дж. Дейтел, Д.Р. Чофнес. Операционные системы. Основы и принципы: Третье издание. Пер. с англ. – М.: ООО «Бином-Пресс», 2006 г. – 1024 с.: ил.

7. Х.М. Дейтел, П.Дж. Дейтел, Д.Р. Чофнес. Операционные системы. Распределенные системы, сети, безопасность: Третье издание. Пер. с англ. – М.: ООО «Бином-Пресс», 2006 г. – 704 с.: ил.

8. Э. Таненбаум. Современные операционные системы. 2-е изд. – СПб.: Питер, 2006. – 1038 с.: ил.

9. Д. Бэкон, Т. Харрис. Операционные системы. – СПб.: Питер; Киев: Издательская группа BHV, 2004. – 800 с.: ил.

10. Джеффри Рихтер. Windows для профессионалов (программирование в Win32 API для Windows NT 3.5 и Windows 95) /Пер. с англ. – М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1995. – 720 с.: ил.

11. Джеффри Рихтер. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной Windows /Пер. с англ. – 4-е изд. - Спб.: Питер; М.: Издательство «Русская редакция», 2008. – 722 с.: ил.

12. Ч.Петзолд. Программирование для Windows 95. Том 1: пер. с англ. – СПб.: BHV – Санкт-Петербург, 1997. – 752 с., ил.

13. Ч.Петзолд. Программирование для Windows 95. Том 2: пер. с англ. – СПб.: BHV – Санкт-Петербург, 1997. – 368 с., ил.

<== предыдущая лекция | следующая лекция ==>
 | ВВЕДЕНИЕ. по дисциплине «Теория государства и права»




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.