Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NewОтветыОС_1.doc
Скачиваний:
37
Добавлен:
07.02.2015
Размер:
2.67 Mб
Скачать
  1. Потоки: Модель потока, Элементы потока.

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

Потоки являются объектами, поочередно исполняющимися на центральном процессоре.

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

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

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

При запуске многопоточного процесса в системе с одним процессором потоки работают поочередно.

Элементы процесса - совместно используемые всеми потоками процесса: адресное пространство, глобальные переменные, открытые файлы, дочерние процессы, необработанные аварийные сигналы, сигналы и их обработчики, информация об использовании ресурсов

Элементы потока - индивидуальные для каждого потока: счетчик команд, регистры, стек, состояние

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

Концепция потоков состоит в возможности совместного использования набора ресурсов несколькими потоками для выполнения некой задачи в тесном взаимодействии. Как и любой обычный процесс (то есть процесс с одним потоком), поток может находиться в одном из нескольких состояний: рабочем, заблокированном, готовности или завершенном. Действующий поток взаимодействует с процессором.

У каждого потока свой собственный стек.

Запуск процесса -> 1 поток: Вызыв.библиотечная проц.:

Thread_create – создать новые потоки.

Thread_wait – ждать прекращения работы другого.

Thread_exit – прекратить работу.

Thread_yield – уступить очередь.

  1. Использование потоков: почему потоки необходимы? Тpи способа констpуиpования Web-сеpвеpа.

Если 1.Большие программы-много бит =>м.б блокированы, если несколько || процессов используют одно адресное пространство.

2.Поток можно создать или уничтожить.

3.Увеличивается производительность, когда много вв/выв.

4.когда несколько ЦП, тогда начинается настоящий параллелизм.

Пример:

А. текстовый процессор

Text 300 страниц, 5 стр-> изменили предложение.

1 поток-user-под вв/выв

2 поток-форматирование

3 поток-периодическое сохранение

В. Большая электронная таблица

1. ввод чисел 2. Пересчет 3. AutoSave

C1. сервер Web-сайта Сервер<->запрос->в ком?:с HDD-блок, page, рабочий поток…

Диск while (true)

{get_next_regust(&Buf);

hand_on_work(&Buf);}

рабочий поток

while (true){

wait_for_work(&Buf);

look_for_page_in_cashe(&Buf,page);

if(page_not_in_cache(&page))

renl_page_from_disk(&Buf,&page);

return_page(&page);}

C2. Нет потока->сервер блокир->производ↓

C3. пусть readDisk без блокир. Процедуры должны вызывать рез-т:

-сразу запустила

-что-то произошло.

Сервер записывает следующее состояние потока, затем переходит к next запросу.

Сервер должен хранить состояние всех потоков. Получается конечный автомат.

Преимущества потока:

-Сохраняет модель послед-х процессов

-используются запросы с блокировкой, есть параллелизм(↑производит)

3 способа конструирования сервера:

Потоки - Параллелизм, системные запросы с блокировкой

Процесс с одним потоком - Нет параллелизма, системные запросы с блокировкой

Конечный автомат - Параллелизм, системные запросы без блокировки, прерывания

D. процес., которые обрабатывают много данных: чт, зп, обраб.

1 поток-читает

2 поток-cal_обраб.

3 поток-запись.

R/W блокир поток, а не процесс. Общение ч/з буфера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]