Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
avmis.docx
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
428.29 Кб
Скачать

64) Ос: многопоточность. Реализации.

Многопото́чность — свойство платформы (например, операционной системы, виртуальной машины и т. д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины.

Такие потоки называют также потоками выполнения (от англ. thread of execution); иногда называют «нитями» (буквальный перевод англ. thread) или неформально «тредами».

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

Многопоточность (как доктрину программирования) не следует путать ни с многозадачностью, ни с многопроцессорностью, несмотря на то, что операционные системы, реализующие многозадачность, как правило реализуют и многопоточность.

К достоинствам многопоточности в программировании можно отнести следующее:

Упрощение программы в некоторых случаях за счет использования общего адресного пространства.

Меньшие относительно процесса временны́е затраты на создание потока.

Повышение производительности процесса за счет распараллеливания процессорных вычислений и операций ввода/вывода.

Типы реализации потоков

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

Достоинства и недостатки этого типа следующие: Недостатки

Отсутствие прерывания по таймеру внутри одного процесса

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

Сложность реализации

Поток в пространстве ядра. Наряду с таблицей процессов в пространстве ядра имеется таблица потоков.

«Волокна» (англ. fibers). Несколько потоков режима пользователя, исполняющихся в одном потоке режима ядра. Поток пространства ядра потребляет заметные ресурсы, в первую очередь физическую память и диапазон адресов режима ядра для стека режима ядра. Поэтому было введено понятие «волокна» — облегчённого потока, выполняемого исключительно в режиме пользователя. У каждого потока может быть несколько «волокон».

65) Модули ядра Linux: назначение.

Модуль — это программный код, который может быть загружен или выгружен ядром

по мере необходимости. Модули расширяют функциональные возможности ядра без

необходимости перезагрузки системы. Одна из разновидностей модулей ядра – драйверы

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

В Linux ядро монолитное, т.е. все его драйвера и подсистемы работают в своем адресном пространстве, отделенном от пользовательского. Сам термин «монолит» говорит о том, что в ядре сконцентрировано всё, и, по логике, ничего не может в него добавляться или удаляться. В случае с ядром Linux — это правда лишь отчасти: ядро Linux может работать в таком режиме, однако, в подавляющем большинстве сборок возможна модификация части кода ядра без его перекомпиляции, и даже без его выгрузки. Это достигается путем загрузки и выгрузки некоторых частей ядра, которые называются модулями. Чаще всего в процессе работы необходимо подключать модули драйверов устройств, поддержки криптографических алгоритмов, сетевых средств.

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