Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС Laba2 Саттаров РР.doc
Скачиваний:
7
Добавлен:
29.07.2019
Размер:
97.79 Кб
Скачать

Министерство образования и науки Российской Федерации

Казанский государственный технический университет

имени А.Н. Туполева

Отчет по лабораторной работе №2 По дисциплине «Операционные системы»

Выполнили:

Студент гр.4303

Саттаров Риназ Р.

Проверил:

Миннибаев Р.Ф.

КАЗАНЬ 2011

Порядок выполнения работы

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

  2. Создать поток. Функция потока должна выдавать сообщение о запуске потока. Чтобы поток успел стартовать и вывести сообщение необходимо после его запуска ожидать нажатия клавиши или вызвать задержку.

  3. Переделать запуск потока, так чтобы он стартовал в приостановленном состоянии и возобновлялся по нажатию клавиши – 1 и приостанавливался по клавише - 2. Вставить в функцию потока бесконечный цикл внутри, которого выдавать сообщение каждые 500 мс о том, что тот активен. Управление потоком осуществлять из функции main.

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

  5. Завести второй поток. В функцию второго потока также передавать адрес той же строки, что и функции первого потока. Функция второго потока должна каждые 300 мс менять содержимое строки случайным образом (можно завести несколько вариантов строк одинакового размера и менять их случайным образом).

  6. Реализовать управление вторым потоком из функции main: клавиша 3 – приостановка, 4 – возобновление.

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

  8. Модифицировать программу так, чтобы поток сообщал о том, что ресурс занят другим потоком (только под Windows 2000 – TryEnterCriticalSection).

  9. Попробовать добавить в функцию одного из потоков после вызова функции Sleep – вызов SwitchToThread (только под Windows 2000).

  10. Расширить возможности управления потоками, так чтобы можно было из функции main убить первый поток – клавиша 5, второй – клавиша 6, запустить первый поток – клавиша 7, второй – клавиша 8.

  11. Попробовать остановить один из потоков. Посмотреть и объяснить реакцию программы. Попробовать убить один из потоков, затем вновь создать его. Посмотреть и объяснить реакцию программы.

Контрольные вопросы

  1. Дайте определение потоку. Для чего используются потоки?

  2. Для чего используется функция потока?

  3. Какие параметры можно передавать в функцию потока?

  4. Как запускаются потоки? Как запустить поток в приостановленном состоянии?

  5. Как остановить поток?

  6. Как возобновить выполнение потока?

  7. Как поток может отказаться от своего кванта времени?

  8. В чем состоит проблема синхронизации потоков?

  9. Что такое критические секции и для чего они используются?

  10. Какие правила необходимо соблюдать при использовании критических секций?

Ответы