Большая часть программного обеспечения ввода вывода есть независимой от устройств. Точная граница между драйверами и независимыми от устройств программами определяется системой, потому что некоторые функции, которые могли бы быть реализованы независимым средством, в действительности выполненные в виде драйверов для повышения эффективности или по другим причинах.
Типичными функциями для независимой от устройств прослойки есть:
обеспечение общего интерфейса к драйверам устройств,
именование устройств, защита устройств,
обеспечение независимого размера блока,
буферизация,
распределение памяти на блок-ориентированных устройствах,
распределение и освобождения выделенных устройств,
сообщение об ошибках.
Примитивы бывают что блокируют и не блокируют, иногда они называются соответственно синхронными и асинхронными. При использовании примитива, который блокирует, процесс, который выдал запрос на его выполнение, прекращается к полному завершению примитива. Например, вызов примитива ПОЛУЧИТЬ прекращает процесс, который вызывает, к получению сообщения.
При использовании примитива, который не блокирует, управления поворачивается процесса, который вызывает, немедленно, еще до того, как необходимая работа будет выполнена.
При вызовах кодов, которые владеют разными уровнями привилегий, возникает проблема передачи параметров между разными стеками, потому что для надежной защиты задачи разного уровня привилегий имеют разные сегменты стеков. Селекторы этих сегментов хранятся в контексте задача - сегменте TSS (Task State Segment). Если визивається подпрограмма, которая имеет другой уровень привилегий, то из текущего стека у стек уровня доступа что вызывается сегмента копируется столько 32- разрядных слов, сколько указано в поле счетчика слов дескриптора шлюза.
Планирование процессов содержит в себе решение таких задач:
определение момента времени для изменения выполняемого процесса;
выбор процесса на выполнение с очереди готовых процессов;
переключение контекстов "старого" и "нового" процессов.
Первые две задачи решаются программными средствами, а последняя в значительной мере аппаратно (см. раздел 2.3. "Средства аппаратной поддержки управления памятью и многозадачной средой в микропроцессорах Intel 80386, 80486 и Pentium").
Такой период в эволюции операционных систем связан с появлением больших интегральных схем (БИС). В эти года состоялся резкий рост степени интеграции и удешевление микросхем. Компьютер стал доступный отдельному человеку, и наступила эра персональных компьютеров. С точки зрения архитектуры персональные компьютеры ничем не отличались от класса миникомпьютеров типа PDP-11, но вот цена в них существенным образом отличалась. Если миникомпьютер дал возможность иметь собственную вычислительную машину отдела предприятия или университета, то персональный компьютер сделал это возможным для отдельного человека.
На протяжении существования процесса его выполнение может быть многократно прерванное и продлено. Для того, чтобы восстановить выполнение процесса, необходимо восстановить состояние его операционного среды. Состояние операционного среды отображается по состоянию регистров и программного счетчика, режимом работы процессора, указателями на открытые файлы, информацией о незавершенных операциях внедрения-висновка, кодами ошибок выполняемых данным процессом системных вызовов и т.д. Эта информация называется контекстом процесса.
При многозадачности, что не выжимает, механизм планирования распределен между системой и прикладными программами. Прикладная программа, получивши управление от операционной системы, самая определяет момент завершения своей очередной итерации и передает управление ОС с помощью некоторого системного вызова, а ОС формирует очереди задач и выбирает согласно некоторому алгоритму (например, с учетом приоритетов) такую задачу на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков.
На свойстве операционной системы непосредственное влияние делают аппаратные средства, на которые она ориентирована. По типу аппаратуры различают операционные системы персональных компьютеров, мини-компьютеров, мейнфреймов, кластеров и сетей ЭВМ. Среди перечисленных типов компьютеров могут встречаться как однопроцессорные варианты, так и многопроцессорные. В любом случае специфика аппаратных средств, как правило, отбивается на специфике операционных систем.
Очевидно, что ОС большой машины есть более сложной и функциональной, чем ОС персонального компьютера.
AFS была разработана в университете Карнеги-Меллона и названная в честь основателей-спонсоров-основателей университета Andrew Carnegie и Andrew Mellon. Эта система, созданная для студентов университета, не является прозрачной системой, в которой все ресурсы динамично назначаются всем пользователям при возникновении нужд. Несмотря на это, файловая система была спроектирована так, чтобы обеспечить прозрачность доступа каждому пользователю, независимо от того, какой рабочей станцией он пользуется.
Особенностью этой файловой системы есть возможность работы по большим (до 10 000) числом рабочих станций.
Hewlett-Packard, Sun Microsystems и DEC экспериментируют с объектами уже много лет. Теперь эти компании и много других объединились вместе, основав промышленную коалицию по названию OMG (Object Management Group), что разрабатывает стандарты для обмена объектами. OMG CORBA (Common Object Request Broker Architecture - Общая архитектура посредника обработки объектных запросов) закладывает фундамент распределенных вычислений с переносимыми объектами. CORBA задает средство поиска объектами других объектов и вызова их методов.
В данное время именно операционные системы, построенные с использованием модели клиент-сервер и концепции микроядра, в найбольшей мерей удовлетворяют требованиям, предложенным к современным ОС.
Высокая степень переносимости обусловленный тем, что весь машинно-зависимый код изолирован в микроядре, поэтому для переноса системы на новый процессор нужно меньше изменений и все они логически сгруппированы вместе.
Технология микроядер является основой построения множественных прикладных сред, которые обеспечивают совместимость программ, написанных для разных ОС.
Природа сервиса каталогов не зависит от типа используемой модели файлового сервиса. В распределенных системах используются те же принципы организации каталогов, что и в централизованных, в том числе многоуровневая организация каталогов.
Принципиальной проблемой, связанной со средствами именования файлов, есть обеспечения прозрачности. В данном контексте прозрачность понимается в двух слабо заметных содержаниях. Первый - прозрачность расположения - означает, что имена не дают возможности определить местоположение файла.
Структура с диспетчером не единый путь организации многонитевой обработка. В модели "команда" все нити эквивалентные, каждая получает и обрабатывает свои собственные запросы. Иногда работы приходят, а нужна нить занята, особенно, если каждая нить специализируется на выполнении особого вида работ. В этом случае может создаваться очередь незавершенных работ. При такой организации нити должны сначала просматривать очередь работ, а потом почтовый ящик.
Нити могут быть также организованные в виде конвейера.
Служба NDS определяет права доступа одних сетевых объектов к другим. Различаются права доступа к объекту в целом и права доступа к его атрибутам.
Относительно объектов существует такой набор прав:
Browse - просмотр;
Add - добавление;
Delete - удаление;
Rename - переименование;
Supervisor - обеспечивает все вышеперечисленные права.
Относительно атрибутов объектов используются такие права:
Compare - сравнение значения атрибута;
Read - чтение значения атрибута;
Write - запись нового значения атрибута;
Self - присвоение себя в качестве значения атрибута другого объекта, например, если объект-группа позволяет право Self для объекта User, то последний может сделать себя членом этой группы;
Supervisor - все права по доступу к атрибутам.
Более всего очевидный и простой путь реализации взаимного исключения в распределенных системах - это применения тех же методов, которые используются в однопроцессорных системах. Один из процессов выбирается в качестве координатора (например, процесс, который выполняется на машине, которая имеет самое большое значение сетевого адреса). Когда какой-либо процесс хочет войти в критическую секцию, он посылает сообщение с запросом к координатору, оповещая его о том, в какую критическую секцию он хочет войти, и ждет от координатора разрешение.
Существует два подхода к управлению нитями: статический и динамический. При статическом подходе вопроса, сколько будет нитей, решается уже на стадии написания программы или на стадии компиляции. Каждой нити назначается фиксированный стек. Этот подход простой, но негибкий. Более общим есть динамический подход, который позволяет создавать и удалять нити оперативно по ходу выполнения. Системный вызов для создания нити обычно содержится в нити главной программы в виде указателя на процедуру с указанием размера стека, а также других параметров, например, диспетчерского приоритета.
s#0