Безопасность операционных систем. Безбогов А.А - 30 стр.

UptoLike

стояний: выполнение, ожидание и готовность. Пока одна нить заблокирована, другая нить того же процесса может выпол-
няться. Нити разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования.
Однако различные нити в рамках одного процесса не настолько независимы, как отдельные процессы. Все такие нити
имеют одно и то же адресное пространство. Это означает, что они разделяют одни и те же глобальные переменные. По-
скольку каждая нить может иметь доступ к каждому виртуальному адресу, одна нить может использовать стек другой нити.
Между нитями нет полной защиты, потому что, во-первых, это невозможно, а во-вторых, не нужно. Все нити одного процес-
са всегда решают общую задачу одного пользователя, и аппарат нитей используется здесь для более быстрого решения зада-
чи путем ее распараллеливания. При этом программисту очень важно получить в свое распоряжение удобные средства орга-
низации взаимодействия частей одной задачи. Кроме разделения адресного пространства, все нити разделяют также набор
открытых файлов, таймеров, сигналов и т.п.
Итак, нити имеют собственные:
программный счетчик;
стек;
регистры;
нити-потомки;
состояние.
Нити разделяют:
адресное пространство;
глобальные переменные;
открытые файлы;
таймеры;
семафоры;
статистическую информацию.
Многонитевая обработка повышает эффективность работы системы по сравнению с многозадачной обработкой. На-
пример, в многозадачной среде Windows можно одновременно работать с электронной таблицей и текстовым редактором.
Однако, если пользователь запрашивает пересчет своего рабочего листа, электронная таблица блокируется до тех пор, пока
эта операция не завершится, что может потребовать значительного времени. В многонитевой среде в случае, если электрон-
ная таблица была разработана с учетом возможностей многонитевой обработки, предоставляемых программисту, этой про-
блемы не возникает, и пользователь всегда имеет доступ к электронной таблице.
Широкое применение находит многонитевая обработка в распределенных системах.
Некоторые прикладные задачи легче программировать, используя параллелизм, например задачи типа "писатель-
читатель", в которых одна нить выполняет запись в буфер, а другая считывает записи из него. Поскольку они разделяют об-
щий буфер, не стоит их делать отдельными процессами. Другой пример использования нитейэто управление сигналами,
такими как прерывание с клавиатуры (del или break). Вместо обработки сигнала прерывания одна нить назначается для по-
стоянного ожидания поступления сигналов. Таким образом, использование нитей может сократить необходимость в преры-
ваниях пользовательского уровня. В этих примерах не столь важно параллельное выполнение, сколь важна ясность про-
граммы.
Наконец, в мультипроцессорных системах для нитей из одного адресного пространства имеется возможность выполняться
параллельно на разных процессорах. Это действительно один из главных путей реализации разделения ресурсов в таких систе-
мах. С другой стороны, правильно сконструированные программы, которые используют нити, должны работать одинаково хо-
рошо как на однопроцессорной машине в режиме разделения времени между нитями, так и на настоящем мультипроцессоре.
3.3.2.2. СОСТАВ АЛГОРИТМОВ ВНУТРЕННЕГО ПЛАНИРОВАНИЯ
Важнейшим фактором, влияющим на эффективность вычислительных систем, являются потери времени на организа-
цию мультизадачного режима, поэтому в состав алгоритмов внутреннего планирования входят:
алгоритм управления количеством процессов в рабочей смеси;
алгоритм планирования очередности выбора задач для исполнения их на ЦП;
алгоритмы выбора величины кванта времени, в течение которого процесс, получивший ЦП, может использовать его.
Особой функцией, возлагаемой на внутреннее планирование, является синхронизация параллельных процессов, проте-
кающих в системе.
3.3.2.3. АЛГОРИТМ УПРАВЛЕНИЯ КОЛИЧЕСТВОМ ПРОЦЕССОВ В
РАБОЧЕЙ СМЕСИ
Управление служит для повышения производительности системы на основе рационального использования аппаратуры
ЭВМ. Для режима вытесняющей мультизадачности количество процессов, одновременно допускаемых в систему, представляет
собой объем рабочей смеси
N. Выбор значения N осуществляется с учетом величины кванта и длительности цикла. Введем сле-
дующие обозначения:
q
i
величина кванта процессорного времени, отводимого i-му процессу; T
i
длительность одного цикла
обработки для
i-го процесса; T
з i
, T
в i
длительность перемещения i-го процесса из ОЗУ в ВЗУ и обратно при его вытеснении и
восстановлении;
T
c i
затраты времени ОС на организацию работы i-го процесса.
Тогда имеем:
Т
ц i
= Т
з i
+ T
в i
+ q
i
+ T
c i
,
=
+++=
N
i
iiii
qTTTT
1
cвз
)( .
Если
T
з i
= T
в i
= T
п
; T
c i
= T
c
; q
i
= q, i = 1, ..., N, то
T
= (2T
п
+ q + T
c
) N; N = T / (2T
п
+ q + T
c
) . (3.1)