Главная страница
Навигация по странице:

  • Варианты заданий

  • Управление процессами в ос windows


    Скачать 92.5 Kb.
    НазваниеУправление процессами в ос windows
    Дата17.09.2021
    Размер92.5 Kb.
    Формат файлаdoc
    Имя файла10_03_21_upravlenie_Protsessami_V_Os_Windows.doc
    ТипДокументы
    #233320

    Управление процессами в ОС Windows



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

    В ОС типа Windows создание процесса осуществляется с помощью вызова функции Win32 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 можно завершить с помощью вызовов функций Win32 API под названием ExitProcess и TerminateProcess, описанные следующим образом:
    VOID ExitProcess (

    UINT fuExitCode);// код завершения процесса
    Эта функция не возвращает значения.

    VOID TerminateProcess (

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

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

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

    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

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

    Вариант №2

    Разработать две программы. Первая вычисляет число Фибоначчи по номеру, введенному пользователю, и формуле Fi = Fi–1 + Fi–2, F0 = F1= 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

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






    написать администратору сайта