Операционные системы: архитектура и управление процессами. Макаров П.С. - 74 стр.

UptoLike

Составители: 

74
Использование потоков на пользовательском уровне обладает двумя явны-
ми недостатками по сравнению с использованием потоков на уровне ядра.
1. В типичной операционной системе многие системные вызовы явля-
ются блокирующими. Когда в потоке, работающем на пользователь-
ском уровне, выполняется системный вызов, блокируется не только
данный поток, но и все потоки того процесса, к которому он отно-
сится.
2. В стратегии с наличием потоков только на пользовательском уровне
приложение не может воспользоваться преимуществами многопро-
цессорной системы, так как ядро закрепляет за каждым процессом
только один процессор. Поэтому несколько потоков одного и того же
процесса не могут выполняться одновременно. В сущности у нас по-
лучается многозадачность на уровне приложения в рамках одного
процесса. Несмотря на то, что даже такая многозадачность может
привести к значительному увеличению скорости работы приложения,
имеются приложения, которые работали бы гораздо лучше, если бы
различные части их кода могли выполняться одновременно.
Эти две проблемы разрешимы. Например, их можно преодолеть, если пи-
сать приложение не в виде нескольких потоков, а в виде нескольких процессов.
Однако при таком подходе основные преимущества потоков сводятся на нет:
каждое переключение становится не переключением потоков, а переключением
процессов, что приведет к значительно большим накладным затратам.
Другим методом преодоления проблемы блокирования является исполь-
зование преобразования блокирующего системного вызова в неблокирующий.
Например, вместо непосредственного вызова системной процедуры ввода-
вывода поток вызывает подпрограмму-оболочку, которая производит ввод-
вывод на уровне приложения. В этой программе содержится код, который про-
веряет, занято ли устройство ввода-вывода. Если оно занято, поток передает
управление другому потоку (что происходит с помощью библиотеки потоков).
Когда наш поток вновь получает управление, он повторно осуществляет про-
верку занятости устройства ввода-вывода.