Варианты заданий к лабораторной работе №1

Лабораторная работа № 1. Управление процессами в ОС Windows

 

Цель: Изучение процессов и потоков в операционной системе Windows.

Задачи:

1. Изучение теоретического материала по управлению процессами.

2. Составление алгоритма программы.

3. Программная реализация.

 

Ход работы:

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

2. Используя изученные механизмы, разработать и отладить:

а. программу, реализующую полученное задание (запуск процессов);

б. программу, являющуюся дополнительным процессом.

3. Написать отчет.

 

Ход защиты:

1. Продемонстрировать преподавателю программу, запускающую дополнительные процессы.

2. Пояснить работу изученных механизмов по коду:

а. программы, реализующей полученное задание (запуск процессов);

б. программы, являющейся дополнительным процессом (по выбору преподавателя).

 

В современных ОС пользователям предлагается несколько типов параллельной работы, основными из которых являются процессы и потоки. Процессы – это программы на этапе выполнения.

В ОС типа Windows NT /2000/ XP создание процесса осуществляется с помощью вызова функции Win 32 API, описываемой на языке Си следующим образом.

BOOL CreateProcess (

PCTSTR pszApplicationName, //имя исполняемого файла

PTSTR pszCommandLine,    //командная строка

PSECURITY_ATTRIBUTES psaProcess, //атрибуты защиты процесса

PSECURITY_ATTRIBUTES psaThread, //атрибуты защиты потока

BOOL bInheritHandles,    //наследование описателей

DWORD fwdCreate,         //флаги процесса

PVOID pvEnvironment, //переменные окружения

PCTSTR pszCurDir,        //текущий каталог

PSTARTUPINFO psiStrartInfo,

//начальная информация при создании процесса

PPROCESS_INFORMATION ppiProcInfo);//описатель процесса

Функция CreateProcess возвращает значение TRUE, если системе удастся создать процесс и начальный поток, при этом созданному объекту ядра будет присвоен уникальный идентификатор.

Процесс в Windows NT /2000/ XP можно завершить с помощью вызовов функций Win 32 API под названием ExitProcess и TerminateProcess, описанные следующим образом:

 

VOID ExitProcess (

UINT fuExitCode);// код завершения процесса

 

Эта функция не возвращает значения.

VOID TerminateProcess (

HANDLE hProcess, // описатель завершаемого процесса

UINT fuExitCode); // код завершения процесса

 

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

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

 

#include <windows.h>

void WinMain ()

{

STARTUPINFO start = { sizeof (start) };

PROCESS_INFORMATION procinfo;

TCHAR CommandLine[] = TEXT (“CALC”);

 

CreateProcess (NULL, CommandLine, NULL, NULL, FALSE, 0, NULL,
           NULL, &start, &procinfo);

}

 



Варианты заданий к лабораторной работе №1

 

Вариант №1

    Разработать две программы. Первая вычисляет сумму и произведение чисел от L до U, где L – это нижняя граница диапазона, U – верхняя граница диапазона, границы вводятся пользователем, и выводит полученные значения на экран. Вторая программа запускает первую в качестве вновь созданного процесса.

Вариант №2

    Разработать две программы. Первая вычисляет число Фибоначчи по номеру, введенному пользователю, и формуле Fi = Fi –1 + Fi –2, F 0 = F 1= 1 и
выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса.

Вариант №3

    Разработать две программы. Первая принимает от пользователя строку, хранящую знаковое целое число, и выводит на экран строковый эквивалент этого числа прописью (например, ввод «-1211» должен приводить к выводу «минус тысяча двести одиннадцать»). Вторая программа запускает первую в качестве вновь созданного процесса.

 

Вариант №4

    Разработать две программы. Первая принимает от пользователя строку, хранящую число со знаком и плавающей точкой, и выводит на экран строковый эквивалент этого числа прописью (например, ввод «-12.11» должен приводить к выводу «минус двенадцать целых одиннадцать сотых»). Вторая программа запускает первую в качестве вновь созданного процесса.

 

Вариант №5

    Разработать две программы. Первая принимает от пользователя две строки. Далее, если обе строки хранят целые числа со знаком, то на экран выводится сумма чисел, в противном случае – конкатенация двух введенных строк. Вторая программа запускает первую в качестве вновь созданного
процесса.

Вариант №6

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

 

Вариант №7

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

Вариант №8

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

Вариант №9

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

 

Вариант №10

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

 

Вариант №11

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

 

Вариант №12

    Разработать две программы. Первая принимает от пользователя две даты – строки вида ЦЦ.ЦЦ.ЦЦЦЦ, где Ц – это любая цифра из диапазона [0-9]. Далее она вычисляет полное количество дней, прошедших между двумя введенными датами, и выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса.

 

 

Вариант №13

    Разработать две программы. Первая принимает от пользователя два значения времени – строки вида ЦЦ.ЦЦ.ЦЦ, где Ц – это любая цифра из диапазона [0-9]. Далее она вычисляет полное количество секунд, прошедших между двумя значениями времени, и выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса.

 

Вариант №14

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

Вариант №15

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

Вариант №16

    Разработать две программы. Первая принимает от пользователя дату – строку вида ЦЦ.ЦЦ.ЦЦЦЦ, где Ц – это любая цифра из диапазона [0-9,] и выводит на экран число и месяц прописью, а за последними четырьмя – слово «года» (например, ввод «29.02.2008» приводит к выводу «Двадцать девятое февраля 2008 года»). Вторая программа запускает первую в качестве вновь созданного процесса.

 

Вариант №17

    Разработать две программы. Первая принимает от пользователя значение времени – строку вида ЦЦ.ЦЦ.ЦЦ, где Ц – это любая цифра из диапазона [0-9] и выводит на экран значение часов минут и секунд прописью (например, ввод «12.01.20» приводит к выводу «двенадцать часов одна минута двадцать секунд»). Вторая программа запускает первую в качестве вновь созданного процесса.

 

Вариант №18

    Разработать две программы. Первая принимает от пользователя строку из нулей и единиц – «битовую строку», инвертирует ее, выводит на экран значение инвертированной строки, переводит ее в число в десятичном формате и выводит полученное число на экран. Вторая программа запускает первую в качестве вновь созданного процесса.

 

Вариант №19

    Разработать две программы. Первая принимает от пользователя строку из нулей и единиц – «битовую строку», осуществляет ее реверс, когда нули заменяются на единицы, а единицы на нули. Полученная строка выводится на экран, затем программа переводит ее в число в десятичном формате и выводит полученное число на экран. Вторая программа запускает первую в качестве вновь созданного процесса.

 

Вариант №20

    Разработать две программы. Первая вычисляет факториал числа,
введенного пользователем, по формуле N! = N * (N – 1)!, где 0!= 1, и выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса.

Вариант №21

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

 

Вариант №22

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

 

Вариант №23

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

 

Вариант №24

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

Вариант №25

    Разработать две программы. Первая принимает от пользователя беззнаковое целое число. Если оно является степенью двойки, то на экран выводится показатель степени, и сообщение «не является степенью двойки» в противном случае. Вторая программа запускает первую в качестве вновь созданного процесса.

 





Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: