Лекция по дисциплине "Операционные системы"

0
0
Материал опубликован 6 October

Операционная система UNIX


Тонких Артём Петрович


Многие специалисты считают, что наибольшее влияние на развитие современных сетевых операционных систем оказали решения, использованные в ОС UNIX. Системы UNIX или типа UNIX работают на любых машинах. Доступность больших объемов оперативной памяти и мощных микропроцессоров привела к возрастанию интереса к многозадачности, системам мультипроцессирования - сфере, в которой UNIX имеет отличную репутацию.

Системная среда не просто включена в систему UNIX - она и есть система UNIX. Вся система - UNIX, Си, команды, файлы и т.д. - это просто логический подход к функционированию компьютера.

Среда UNIX - это сочетание двух важнейших вещей: файлового дерева и интерфейса системных вызовов. Это дерево допускает бесконечное расширение возможностей, позволяя монтировать внешние дисковые области в любой точке файловой системы. Дерево помогает также в сборе логически связанных файлов, что делает систему более организованной.

Интерфейс системных вызовов обеспечивает набор инструментов, из которых можно построить большинство других функций.

Каждая компьютерная система поддерживает много различных сред. Эти среды используются как строительные блоки для создания функциональных рабочих систем. Различные уровни необходимы как для сокращения объема работы по управлению машиной, так и для построения такого интерфейса, чтобы мы могли использовать компьютер на относительно высоком, удобном для человека уровне. Такая модель помогает выстроить в ряд уровни, на которых мы можем работать. Имея больше знаний о том, где мы находимся в системе, и о том, как она функционирует вокруг нас, мы можем легче строить растущие абстрактные модели на вершине тех моделей, которые уже имеются.

Компьютеры - это фактически рабочие модели абстракций, представленные на рис.1, который демонстрирует различные уровни, функционирующие внутри компьютера. Нижний слой - это стартовая точка, от которой многообразие растет вверх. Каждый уровень строится на предыдущем и используется для поддержки уровня, расположенного над ним. Для каждого более высокого уровня среда более объемна и более "виртуальна" в том смысле, что имеет место меньше условных ограничений. Верхние уровни используют для своей работы нижние и, таким образом, скрывают подробности, необходимые для работы этих нижних уровней. Можно создать модели высокого уровня, которые работают на машине более низкого уровня, не зная ничего о нижних уровнях.

t1728205636aa.gif

Рассмотрим более подробно уровни модели.

На самом нижнем уровне находятся аппаратные средства и логические схемы. Этот уровень определяет способ хранения и обработки данных во всех аппаратных средствах. Поскольку технология изготовления микросхем продолжает развиваться, этот уровень становится физически меньше и проще, тогда как скорости запоминания и обработки продолжают расти. На этом уровне компонентами являются центральный процессор (ЦП), память, микросхемы поддержки и системная шина. Хотя прогресс на этом уровне продолжается, это вызывает очень малые изменения на верхнем слое пирамиды. Философия системы UNIX состоит в том, чтобы изолировать низкоуровневый аппаратный слой и обеспечить единообразные интерфейсы к нему, которые не нуждаются в изменениях "наверху". Верхний слой даже не должен знать о нижнем слое. Это не значит, что события в мире аппаратуры не важны в реальном мире, ведь противоречия реального мира влияют на скорость и емкость ресурсов, не говоря уже об их стоимости

Уровень микропрограммной среды во многом похож на язык программирования. Он является инструментом, который использует архитектор системы для создания машинного языка. Машинный язык сообщает аппаратуре, какую конкретную команду следует выполнить. В начале эволюции ЭВМ большинство наборов команд были аппаратно кодированными. Это значит, что когда ЦП получал команду, декодирование и выполнение производилось непосредственно цепями в микросхеме. Благодаря прогрессу в технологии ЦП, некоторые микросхемы могут быть программируемыми на уровне исполнения команд, что позволяет конструкторам создавать и реализовывать новые наборы команд с минимальными усилиями.

Уровень виртуальной машины обеспечивает трансляцию из мнемонических команд языка ассемблера в коды операций и данные машинного языка. Язык ассемблера - это некоторая нотация, которая облегчает человеку понимание и управление работой компьютеров. Условная машина поддерживается ассемблером. Ассемблер может превращать идеи более высокого уровня в цепочки чисел (команды уровня процессора), которые затем выполняются. Наряду с ассемблером, применяются модели, помогающие использовать аппаратуру компьютера. Здесь определяются такие вещи, как стеки, вектора прерываний и периферийный ввод-вывод.

Ядро является следующим логическим продвижением вверх и концепцией, которую можно теперь реализовать программно на условной машине. Ядро предоставляет среду, поддерживающую еще большие абстракции, чем те, что рассматривались до сих пор. Двумя наиболее важными абстракциями на уровне ядра являются управление процессами для мультипрограммирования и многозадачности и файловая система, которая управляет хранением, форматом, поиском файлов и т.п. Когда эти две области интегрируются, мы имеем базовую функцию многополь­зовательской машины и ядро операционной системы.

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

Уровень ОС строится на ядре, чтобы создать полную операционную среду. Потребность в дополнительных функциях системы можно удовлетворить созданием автономных программ, имеющих конкретное назначение. Таким образом, совокупность всех специфических функций определяет операционную систему.

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

С помощью компилятора можно определить совершенно новый язык и сделать его рабочим на компьютере, написав компилирующую программу, которая читает этот новый язык. Это открывает новые области во взаимодействии человека с машиной. Высокоуровневые языки могут воплощать различные подходы к решению задач, например, процедур­ную модель или объектно-ориентированную модель.

Программа, которая сделана с помощью компилятора, является прикладной программой. Примерами возможных прикладных программ является следующее поколение языков, интерпретаторов и генераторов прикладных программ. Интерпретатор - это программа, написанная на распространенном языке высокого уровня, которая может декодировать и исполнять исходный текст (в системе UNIX - командный процессор shell). Это программа на языке Си, созданная для чтения и исполнения команд, записанных по правилам синтаксиса, определенных командным процессором shell.

Генератор прикладных программ - это программа, написанная на языке высокого уровня. Она предназначена для получения достаточной информации от пользователя о его приложении и может использовать компиляторный язык, например Си, для написания прикладной программы, реализующей то, что требуется. Пользователь ничего не программируем. Выходом генератора является рабочая программа.

UNIX не делает особых различий между уровнями, но она вносит единообразие в этот широкий диапазон функций.

Верхний уровень - UNIX содержит средства для построения интерфейсов любого требуемого уровня сложности. Поскольку UNIX создавалась как многопользовательская система, многое сделано для того, чтобы система была безопасной и удобной для каждого пользователя. Каждому пользователю выделяется определенная часть файловой системы, которая полностью находится в его распоряжении. Он можете заблокировать эту область так, чтобы никто не мог иметь доступ вовнутрь, или же может оставить ее открытой, чтобы другие пользователи могли читать эту область или писать в нее.

Регистрационный каталог - это не только область файловой памяти, но и вся пользовательская среда.

Решение, которое использует UNIX для создания файловой системы, - перевернутая модель дерева. Корень системы находится наверху, а ветви растут в стороны и вниз. Имеется один и только один корень наверху. Ветви могут исходить в любом направлении и простираться вниз на любую глубину. Кроме того, можно иметь присоединяемые ветви, которые изымают из системы, а затем возвращают обратно. Они монтируются на существующую в системе древовидную структуру.

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

Как только регистрационный каталог X присоединен к определен­ному месту дерева, X получает полное управление структурой, которая существует ниже этого места. X может оставить ее плоской или сделать подобной дереву. Эта структура зависит фактически от его потребностей и развития предметной области пользователя. Древовидная структура регистрационного каталога представляет собой каркас среды, который может быть заполнен соответствующей информацией.

Операционная система, особенно такая высокоразвитая, как UNIX, имеет множество утилит и характерных особенностей. Сердцем UNIX является ядро (kernel). Ядро управляет процессами и руководит выполняемой работой. Оно также является своего рода мостом между аппаратурой и внешним миром. При работе с машиной много времени тратится на передачу данных, а это значит, что необходимо иметь дело со множеством различных типов устройств, каждое из которых имеет свои особенности.

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

UNIX обращается к периферийным устройствам через "псевдофай­лы". Имеется два типа файлов - блочные и символьные. Оба типа имеют свое предназначение и особенности. Блочный - использует буфериза­цию и позволяет получить доступ к большим объемам данных на жестком диске. Символьный выполняет обмен с устройством по одному символу за обращение. Для этих файлов поддерживается все тот же механизм защиты, что и для всех других файлов в системе.

В заключение необходимо сказать, что система UNIX была полностью написана на языке Си.



5


в формате Microsoft Word (.doc / .docx)
Комментарии
Комментариев пока нет.