Методические указания к курсовой по дисциплине «операционные системы»


Скачать 340.35 Kb.
НазваниеМетодические указания к курсовой по дисциплине «операционные системы»
страница2/2
ТипМетодические указания
1   2

Функции WinAPI по управлению потоками

В современных операционных системах широко используются нити (потоки), как части процесса, способные выполняться параллельно, конкурируя за главный ресурс - процессор, но

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

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

В операционной системе Windows накопилось несколько функций порождения нитей. Самой ранней является функция CreateThread, но из-за обнаруженных у нее и нескольких последующих версий недостатков (в редких, но возможных ситуациях), были введены еще несколько, отличающихся по порядку и , частично, по набору аргументов. В настоящее время наиболее безопасной функцией порождения нити является _beginthreadNT, описанной в заголовочном файле process.h и имеющей следующий прототип:

unsigned long _beginthreadNT(void (*proc)(void*), unsigned stack_size,void *arglist, void *security_attrib, unsigned long flag,unsigned long* tid).

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

Вторым аргументом указывается размер стека, округляемый практически до значения, кратного 4096.

Третий аргумент arglist задает указатель на строку аргументов, в простейшем случае отсутствия аргументов он может быть задан значением NULL.

Аргумент security attrib используется в более сложных программах, реализующих всю мощь встроенной защиты в WindowsNT. В обычных случаях его также можно задавать равным NULL.

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

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

Следующий ниже пример иллюстрирует построение и использование нитей.

#include #include
#include #include

char lbuk[]="abcdefghijklmnoprqstuwxy";

void procthread1(void *arg) { int k,j;

for (k=0;k<24;k++) { gotoxy(2 0,k+1);

textcolor(LIGHTBLUE); for (j=0;j<(int)arg;j++) cprinf("%c",lbuk[k]);

}

}

void procthread2(void *arg) { int k,j;

for (k=0;k<24;k++){ gotoxy(40,k+1);

textcolor(LIGHTGREEN); for (j=0;j<(int)arg;j++) cprinf("%c",lbuk[k]);

}

void procthread3(void *arg) { int k,j;

for (k=0;k<24;k++) { gotoxy(60,k+1); textcolor(RED); for (j=0;j<(int)arg;j++) cprinf("%c",lbuk[k]);

}

}

void main()

{ HANDLE hthread1,hthread2,hthread3;

unsigned long threadid1,threadid2,threadid3; int k;

hthread1=(HANDLE)_beginthreadNT(procthread1,4096,(void *)2,NULL,0,&threadid1); hthread2=(HANDLE)_beginthreadNT(procthread2,4096,(void *)3,NULL,0,&threadid2); hthread3=(HANDLE)_beginthreadNT(procthread3,4096,(void *)4,NULL,0,&threadid3); for (k=0;k<24;k++) { gotoxy(1,k+1);

textcolor(WHITE); for (j=0;j<(int)arg;j++) cprinf("%c",lbuk[k]);

}

getchar();

CloseHandle(hthreadl); CloseHandle(hthread2);

CloseHandle(hthread3); }

Для уничтожения нитей в операционных системах Windows служит системная функция TerminateThread, которая имеет следующий прототип:

BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode).

Обычно эту функцию используют только тогда, когда управление нитью потеряно и она ни на что не реагирует.

Код возврата из нити, завершившейся самостоятельно или прекращенной приказом TerminateThread, может быть получен в другой нити того же процесса путем вызова вспомогательной функции GetExitCodeThread со следующим прототипом: BOOL GetExitCodeThread(HANDLE hThread, LPDWORD lpExitCode). Если задача, указанная аргументом hThread в момент запроса кода еще работает, то функция возвращает значение STILL_ACTIVE в качестве значения второго аргумента.

Код возврата из нормально завершающейся нити формирует системная функция ExitThread, имеющая прототип

voidExitThread(DWORD dwExitCode).

Задание

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


№ вар.

Задание В

Задание С

1

Сортировка массива в порядке убывания

Деление массива на подмассивы отрицательных и положительных чисел и вывод сначала отрицательных чисел, а затем положительных

2

Сортировка массива в порядке возрастания

Перестановка чисел A[j] и A[n-j], где n- текущее число элементов массива

3

Вычисление среднего арифметического и среднего квадратичного значений

Сортировка чисел в порядке убывания абсолютного значения

4

Вычисление минимального и максимального значений

Вычисление отклонений каждого значения от среднего арифметического

5

Вычисление количества чисел в каждой сотне возможных значений

Сортировка чисел в порядке возрастания абсолютного значения

6

Вычисление квадратов разностей чисел и их среднего арифметического

Вычисление, сколько раз повторяется каждое число в массиве

7

Вычисление произведений вида A[j]*A[n-j]? где n-текущее число элементов массива

Определение разности сумм четных и нечетных элементов массива

8

Определение суммарного количества цифр (от 0 до 9), встречающихся во всех числах

Подсчет количества чисел, попадающих в заданный пользователем набор интервалов с постоянным шагом (гистограмма)

9

Вычисление общего количества цифр всех элементов массива

Определение и вывод чисел, являющихся простыми числами

10

Определение и вывод чисел, состоящих из различных цифр

Определение длины плоской ломаной линии, соединяющей точки, координаты которых заданы каждой парой чисел

11

Определение длины пространственной ломаной линии, соединяющей точки, координаты которых заданы каждой тройкой чисел

Вычисление отклонений всех чисел от округленного среднего арифметического

12

Определение и вывод элементов массива, являющихся квадратами целых числа

Вычисление отклонений всех чисел от максимального значения

13

Вычисление отклонений всех чисел от минимального значения

Определение и вывод чисел, являющихся целыми степенями двойки

14

Случайное перемешивание элементов массива

Определение и вывод чисел, состоящих только из одинаковых цифр

15

Определение и вывод чисел, содержащими нули как цифры

Определение количеств чисел, меньших и больших среднего арифметического

16

Определение и вывод элементов массива, являющихся палиндромами

Сортировка и перестановка трех чисел массива: первого, среднего и последнего, в порядке возрастания

17

Определение и вывод элементов массива, имеющих совпадающие первую и последнюю цифры

Вычисление модулей отклонений чисел от среднего арифметического и их сортировка в порядке возрастаний

18

Определение максимального расстояния от центра системы координат точек, заданных каждой парой чисел

Определение отклонений каждого числа от моды (полусуммы наибольшего и наименьшего значений)

19

Определение минимального расстояния от центра системы координат точек, заданных каждой парой чисел

Вычисление нормализованных значений (отношение числа к среднему квадратическому отклонению)

20

Определение среднего расстояния от центра системы координат точек, заданных каждой парой чисел

Вычисление отношений чисел к размаху (разности наибольшего и наименьшего значений), выраженных в процентах







Содержание пояснительной записки

Титульный лист Задание на курсовую работу

  1. Описание общего алгоритма и интерфейса программы

  2. Описание методов решения и алгоритмов задач, реализуемых каждым потоком

  3. Описание методов создания, уничтожения и синхронизации потоков, примененных в программе

  4. Листинг программы Заключение

Список использованной литературы
1   2

Похожие:

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине «Микроэкономика»
Методические указания предназначены для студентов очной и заочной форм обучения по направлению 080100. 62 «Экономика» (программа...

Методические указания к курсовой по дисциплине «операционные системы» iconМетодическИе указания к выполнению курсового проекта пм. 01 Эксплуатация и модификация
Методические указания предназначены для студентов четвёртого курса специальности 230401 Информационные системы (по отраслям) и составлены...

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания и задания к курсовому проекту по дисциплине «Робототехнические системы»
Курсовое проектирование – вид учебного процесса по изучаемой дисциплине, результатом которого является курсовой проект или курсовая...

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания к выполнению курсовой работы по дисциплине...
Рассматриваются вопросы, связанные с условиями и порядком выполнения курсовой работы. Даны общие требования к курсовой работе, выбору...

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания к выполнению практических занятий по дисциплине «системы качества»
Горяистова т. В. Методические указания к выполнению практических занятий по дисциплине «Системы качества». – М.: Ргу нефти и газа...

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

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания к выполнению и оформлению курсовой работы по «Экономической теории»
Методические указания содержат общие положения, организационные вопросы выполнения и защит работ, требования к оформлению курсовой...

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания к выполнению практических занятий и курсовой...
Методические указания предназначены для изучения дисциплины «Сертификация» студентами всех форм обучения специальностей 072000, 340100...

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания содержат общие понятие объектно-ориентированного...
Методические указания предназначены для выполнения курсовой работы по дисциплине «Объектно-ориентированное программирование» для...

Методические указания к курсовой по дисциплине «операционные системы» iconМетодические указания по выполнению курсовой работы по дисциплине...
Порядок выполнения курсовой работы по теме «Учёт материально-производственных запасов»

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск