Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания к РГР_варианты.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
137.22 Кб
Скачать

ПЕРЕЧЕНЬ РАСЧЕТНО – ГРАФИЧЕСКИХ РАБОТ

по дисциплине: «Системное программирование и операционные системы»

очной и заочной формы обучения.

Тема: Синхронизация потоков и процессов в ОС Windows

Учебная цель: Изучение программного интерфейса приложений(API) операционных систем Windows 9x, NT, ME, XP. Приобретение практических навыков синхронизации потоков, используя Win32 API и семафоры в средах программирования Borland Delphi и C++ Builder.

Расчетно – графические работы выполняются в электронном виде и виде отчетов.

Отчет должен содержать следующие пункты:

- титульный лист;

  • постановка задачи;

  • тексты программ с комментариями;

  • результаты выполнения программ;

  • выводы.

Содержание работ:

Вариант № 1

Написать программу Sort, реализующую следующий алгоритм:

  1. Зафиксировать время начала Tstrt выполнения программы.

  2. Вывести на экран время Tstrt в формате: минуты:секунды: миллисекунды;

  3. Для i от 1 до 100 (количество повторений может быть изменено в зависимости от быстродействия процессора) повторять:

  • заполнение массива целых чисел случайными значениями из диапазона 0-1000;

  • зафиксировать текущий момент времени t1;

  • отсортировать массив;

  • зафиксировать текущий момент времени t2;

  • определить время i-той сортировки dti=t2-t1;

  1. Определение среднего времени сортировки: dti/100;

  2. Вывести на экран среднее время одной сортировки;

  3. Зафиксировать время окончания Tend выполнения программы;

  4. Вывести на экран время Tend в формате: минуты:секунды: миллисекунды;

Метод сортировки – пузырька; направление сортировки – возрастание; количество элементов массива N – 85; количество процессов = 3.

Вариант № 1а

Написать программу Master, создающую два процесса Sort, используя системные вызовы CreateProcess. Необходимо, чтобы каждый процесс имел собственную консоль и класс приоритета NORMAL_PRIORITY_CLASS. Зафиксировать время начала, окончания и длительность сортировки для обоих процессов.

Изменяя приоритеты процессов, как показано ниже, зафиксировать время начала, окончания и длительность сортировки для обоих процессов:

Первый процесс

Второй процесс

NORMAL_PRIORITY_CLASS

HIGH_PRIORITY_CLASS

HIGH_PRIORITY_CLASS

IDLE_PRIORITY_CLASS

IDLE_PRIORITY_CLASS

NORMAL_PRIORITY_CLASS

Вариант № 1б

Написать программу Threads, содержащую процедуру сортировки массива (разработанную при выполнении пункта 1.1), содержащего N/5 элементов и процедуру вывода массива на экран – mass_print. Программа должна выполнять следующие действия:

- Генерировать случайный массив содержащий N/5 элементов;

- используя системные вызовы CreateThread, создать программные потоки sort и mass_print в приостановленном состоянии;

- установить приоритеты потоков в THREAD_PRIORITY_NORMAL, используя системный вызов SetThreadPriority;

- активизировать потоки, используя системные вызовы ResumeThread;

Изменяя приоритеты потоков в разработанной программе в различных сочетаниях фиксировать получаемые результаты.

Вариант № 2

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

Количество элементов Nbuf = 5, вид последовательности – натуральные числа и длина буфера = 500.

Определить максимальную длину буфера при различных приоритетах потоков.

Вариант № 3

Написать программу Sort, реализующую следующий алгоритм:

  1. Зафиксировать время начала Tstrt выполнения программы.

  2. Вывести на экран время Tstrt в формате: минуты:секунды: миллисекунды;

  3. Для i от 1 до 100 (количество повторений может быть изменено в зависимости от быстродействия процессора) повторять:

  • заполнение массива целых чисел случайными значениями из диапазона 0-1000;

  • зафиксировать текущий момент времени t1;

  • отсортировать массив;

  • зафиксировать текущий момент времени t2;

  • определить время i-той сортировки dti=t2-t1;

  1. Определение среднего времени сортировки: dti/100;

  2. Вывести на экран среднее время одной сортировки;

  3. Зафиксировать время окончания Tend выполнения программы;

  4. Вывести на экран время Tend в формате: минуты:секунды: миллисекунды;

Метод сортировки – выборка; направление сортировки – убывание; количество элементов массива N – 70; количество процессов – 4.