- •Отчет по лабораторной работе №2 По дисциплине «Операционные системы»
- •Порядок выполнения работы
- •Контрольные вопросы
- •Определение потока. Для чего используются потоки?
- •Для чего используется функция потока?
- •Какие параметры можно передавать в функцию потока?
- •Как запускаются потоки? Как запустить поток в приостановленном
- •Как остановить поток?
- •Как возобновить выполнение потока?
- •Как поток может отказаться от своего кванта времени?
- •В чем состоит проблема синхронизации потоков?
- •Что такое критические секции и для чего они используются?
- •Какие правила необходимо соблюдать при использовании критических секций?
Министерство образования и науки Российской Федерации
Казанский государственный технический университет
имени А.Н. Туполева
Отчет по лабораторной работе №2 По дисциплине «Операционные системы»
Выполнили:
Студент гр.4303
Саттаров Риназ Р.
Проверил:
Миннибаев Р.Ф.
КАЗАНЬ 2011
Порядок выполнения работы
Создать консольное приложение.
Создать поток. Функция потока должна выдавать сообщение о запуске потока. Чтобы поток успел стартовать и вывести сообщение необходимо после его запуска ожидать нажатия клавиши или вызвать задержку.
Переделать запуск потока, так чтобы он стартовал в приостановленном состоянии и возобновлялся по нажатию клавиши – 1 и приостанавливался по клавише - 2. Вставить в функцию потока бесконечный цикл внутри, которого выдавать сообщение каждые 500 мс о том, что тот активен. Управление потоком осуществлять из функции main.
Передать в функцию потока в качестве параметра адрес строки. Поток должен выводить строку, а также выводить количество заглавных букв в строке. Поместить обработку строки в бесконечный цикл см. предыдущий пункт.
Завести второй поток. В функцию второго потока также передавать адрес той же строки, что и функции первого потока. Функция второго потока должна каждые 300 мс менять содержимое строки случайным образом (можно завести несколько вариантов строк одинакового размера и менять их случайным образом).
Реализовать управление вторым потоком из функции main: клавиша 3 – приостановка, 4 – возобновление.
Поуправлять потоками, посмотреть, как обрабатывается и выводится строка. Реализовать синхронизацию потоков с помощью критической секции, разграничить доступ к строке, то есть сделать так, чтобы пока первый поток выводит строку, второй не мог менять ее. При захвате ресурса каждый поток должен сообщать об этом.
Модифицировать программу так, чтобы поток сообщал о том, что ресурс занят другим потоком (только под Windows 2000 – TryEnterCriticalSection).
Попробовать добавить в функцию одного из потоков после вызова функции Sleep – вызов SwitchToThread (только под Windows 2000).
Расширить возможности управления потоками, так чтобы можно было из функции main убить первый поток – клавиша 5, второй – клавиша 6, запустить первый поток – клавиша 7, второй – клавиша 8.
Попробовать остановить один из потоков. Посмотреть и объяснить реакцию программы. Попробовать убить один из потоков, затем вновь создать его. Посмотреть и объяснить реакцию программы.
Контрольные вопросы
Дайте определение потоку. Для чего используются потоки?
Для чего используется функция потока?
Какие параметры можно передавать в функцию потока?
Как запускаются потоки? Как запустить поток в приостановленном состоянии?
Как остановить поток?
Как возобновить выполнение потока?
Как поток может отказаться от своего кванта времени?
В чем состоит проблема синхронизации потоков?
Что такое критические секции и для чего они используются?
Какие правила необходимо соблюдать при использовании критических секций?
Ответы