В экспериментальных коммерческих ОС были опробованы различные подходы и структурные элементы, большинство из которых можно объединить в следующие категории:
– архитектура микроядра;
– многопоточность;
– симметричная многопроцессорность;
– распределенные ОС;
– объектно-ориентированный дизайн.
Многопоточность
Это технология, при которой процесс, выполняющий приложения, разделяется на несколько одновременно выполняющихся потоков.
Поток – это диспетчиризированная единица работы, включающая контекст процессора (куда входит счетчик команд и указатель на вершину стека), а также свою собственную область стека. Команды потока выполняется последовательно, и поток может быть прерван при переключении процессора на обработку другого потока. У потоков как правило общее адресное пространство, в отличии от процессов.
Процесс – это набор из одного или нескольких потоков, а также связанных с этими потоками системными ресурсами, такими как область памяти для хранения кода и данных, открытые файлы, различные устройства.
|
|
Концепция процесса близка к концепции выполняющейся программы. Разбивая приложения на несколько потоков, программист получает преимущество модульности приложения и возможность управления связанными с приложением временными событиями.
Многопоточность оказывается полезной для приложений, выполняющих несколько независимых заданий, которые не требуют последовательного выполнения.
Потоки иногда называют облегченными процессами.
Что касается симметричная многопроцессорность. Этот термин относится к архитектуре аппаратного обеспечения компьютера, предполагающую наличие нескольких процессов (минимум 2), а также образу ОС, поддерживающей такую аппаратную архитектуру.
Симметричная многопроцессорность определяется следующими характеристиками:
1) В системе имеется несколько процессоров;
2) Процессоры соединены меду собой коммуникационной шиной и совместно используют одну и ту же основную память и одни и те же устройства ввода-вывода;
3) Все процессоры могут выполнять одни и те же функции.
Считается, сто многопроцессорные системы имеют несколько потенциальных преимуществ по сравнению с однопроцессорными:
- производительность;
- надежность;
- наращивание;
- масштабирование.
В действительности эти преимущества не всегда реализуются. В частности, если задача строго линейна (т.е. не распараллеливается), то и выигрыша никакого не будет.