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

Назначение потоков

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

Пока блокированы операции ввода-вывода, идут вычисления; когда начинают работу внешние устройства, вычисления приостанавливаются. Эта же причина – аргумент для создания процессов. Однако потоки создавать и уничтожать намного легче, чем процессы (поскольку с потоком не связаны никакие ресурсы). На создание потока уходит примерно в 100 раз меньше времени, чем на создание процесса.

ПРИМЕР: Многопоточность помогает работе многих интерактивных программ. Например, программы многих текстовых редакторов производят форматирование текста в фоновом режиме (один поток), предоставляя возможность в это же время производить другие операции (другой поток). Например, если удалить один абзац на первой странице в Word-е, редактор должен переформатировать весь текст. Если бы поток был один, до конца форматирования никакие другие операции были бы невозможны.

Реализация потоков

Рассмотрим два основных способа реализации потоков.

1. В пространстве процесса (пакет потоков целиком находится в пространстве процесса; ядро в этом случае о потоках ничего не знает; таблица потоков находится внутри пространства процесса). Достоинство этого способа – простота реализации.

2. В ядре (ядро управляет потоками). В ядре находится таблица потоков, которая содержит информацию о каждом потоке. Недостаток метода – большие затраты времени на блокировку и запуск потока, поскольку это реализуется как системный вызов к ядру операционной системы.

Для управления ресурсами и реализации многозадачности в ОС Windows существуют четыре сущности: задание, процесс, поток, нить.

Задание – это набор процессов с общими лимитами, управляемый как единое целое.

Нить – упрощенный поток, управляемый полностью в адресном пространстве пользователя.

Каждый процесс содержит по крайней мере один поток. Поток, в свою очередь, содержит как минимум одну нить.

В ОС UNIX при управлении процессами используются два основных типа информационных структур: дескриптор процесса и контекст процесса.

Дескрипторы процессов объединены в таблицу процессов. На основании таблицы процессов планировщик системы осуществляет переключение процессов и их синхронизацию. Дескриптор процесса содержит всю необходимую информацию о процессе.

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

Контекст содержит:

  1. Значения регистров процессора.

  2. Значение счетчика команд.

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

И дескриптор, и контекст процесса доступны только программам ядра ОС. Отличаются они тем, что дескриптор – описание процесса, а контекст – описание его окружения.