Операционные системы
ожный. Простой - потому что мы
скажем о нем буквально несколько фраз, а сложный, потому что существуют
проблемы, о которых можно говорить долго.
Персонификация - это возможность операционной системы идентифицировать
конкретного пользователя и в соответствии с этим принимать те или иные
действия, в частности, по защите данных.
Если мы с вами посмотрим на любимую нами операционную систему MS-DOS,
то там не было понятия пользователя со всеми вытекающими последствиями -
она однопользовательская.
Второй уровень операционных систем - это операционные системы, которые
позволяют регистрировать пользователей, но все пользователи представляются
в виде единого набора некоторых субъектов и не связаны друг с другом никак.
Примером таких операционных систем могут служить некоторые операционные
системы фирмы IBM для mainframe-компьютеров. Например, лектор не знает, кто
из его слушателей к какой группе относится, но все, сидящие перед ним,
пользователи его курса. Это и хорошо, и плохо. С точки зрения прослушивания
курса лекций - это хорошо, но для проведения этим лектором какого-то опроса
это плохо, потому что за один день он не успеет опросить всех. Ему надо
будет всех слушателей как-то поделить, а как - не известно.
Соответственно, при такой одномерной персонификации обеспечиваются все
те функции, о которых мы с вами говорили (в частности защита), но такая
организация пользователей не предполагает образования групп пользователей.
А мне удобно, чтобы, предположим, на нашем факультетском сервере моя
лаборатория была выделена, и в рамках этой лаборатории можно было бы
предоставлять друг другу права доступа к файлам и т.д.
Соответственно, аналогично файловой системе, появляется иерархическая
организация пользователей. То есть у нас имеется понятие «все пользователи»
и понятие «группа пользователей». В группе есть реальные пользователи.
Такая иерархическая организация персонификации влечет за собой следующие
моменты. При регистрации какого-то пользователя необходимо сначала
привязать его к какой-то группе - это может быть лаборатория, кафедра или
учебная группа. Так как пользователи объединены в группы, то появляется
возможность разделения прав доступа к ресурсам пользователей. То есть
пользователь может, например, заявить, что все его ресурсы доступны для
всех пользователей группы. Такая схема может быть многоуровневой (группы
делятся на подгруппы и т.д.) с соответственным распределением прав и
возможностей. Сейчас появляются операционные системы, в которых права
доступа могут определяться не только такой иерархической структурой, но и
могут быть более сложными, т. е. права доступа можно добавлять, нарушая эту
иерархию.
Лекция №7
3. Операционная система UNIX.
Мы переходим к изучению операционной системы UNIX, поскольку многие
решения, которые принимаются в операционных системах, мы будем
рассматривать на примере этой операционной системы.
В середине 60-х годов в Bell Laboratories фирмы AT&T проводились
исследования и разработка одной из первых операционных систем в современном
ее понимании - операционной системы Multix. Эта операционная система
обладала свойствами операционной системы разделения времени,
многопользовательской системы, а также в этой системе были предложены
основные решения по организации файловых систем, в частности, была
предложена иерархическая древообразная файловая система. От этой разработки
через некоторое время получила начало операционная система UNIX. Одна из
историй разработки этой системы говорит о том, что на фирме был ненужный
компьютер PDP-7 с очень малоразвитым программным обеспечением и требовалась
машина, которая позволяла бы организовывать комфортную работу пользователя,
в частности, обработку текстовой информации. Известная группа людей - это
Кен Томпсон и Деннис Ритчи, занялись разработкой новой операционной
системы. Другой вариант этой истории гласит о том, что якобы они занимались
реализацией некоторой игры и те средства, которые были им доступны,
оказались неудобны - тогда они решили поиграть с этой машиной. В результате
появилась операционная система UNIX.
Особенностью этой системы являлось то, что она была первой системной
программой, которая была написана с использованием языка, отличного от
машинного языка (ассемблера). Для целей написания этого системного
программного обеспечения, в частности, операционной системы UNIX, также
проводились работы, которые начинались от языка BCPL. Из него был образован
язык B, который оперировал с машинными словами. Далее абстракция машинных
слов - BN, и наконец язык Си. С 1983 года операционная система UNIX (ее
первоначальная версия) была переписана на язык Си, и получилось, что около
90% операционной системы было написано на языке высокого уровня, не
зависящем от архитектуры машины, а 10% этой системы были написаны на
ассемблере. В эти десять процентов вошли наиболее критичные по времени
части операционной системы.
Итак, первым важным и революционным результатом было использование
языка высокого уровня. Этот факт вызывал обсуждения, потому что никто не
верил, что это может быть долговременно, поскольку всегда язык высокого
уровня ассоциировался с большой неэффективностью. Язык Си был
сконструирован таким образом, что позволял, с одной стороны, писать
достаточно эффективные программы, с другой стороны, транслировать его в
эффективный код.
Первое свойство языка Си, которое повышало его эффективность, - это
работа с указателями. Второе свойство заключается в том, что при
программировании на ассемблере мы часто используем побочные эффекты.
Например, эффект, когда результатом вычисления какого-то выражения является
не только записанной значение, но и какие-то промежуточные значения,
которые можно по ходу записать для последующего их использования. Эти
возможности стали доступны и в языке Си, потому что понятие выражения в
языке Си гораздо шире, чем в тех языках, которые имелись в наличии в то
время. В частности, появилась операция присваивания, вместо оператора
присваивания, которая позволила программировать побочные эффекты. Эти
свойства и определили «живучесть» языка, пригодность для программирования
системных компонентов и возможность оптимальной трансляции кода различных
машин.
С профессиональной (канонической) точки зрения, язык Си - ужасный
язык. Основным требованием, которое предъявляется к языкам
программирования, является обеспечение безопасности программирования.
Средства языка должны минимизировать вероятность внесения ошибок в
программу, и заведомо к таким средствам современных языков относится
следующее: жесткий контроль типов (т.е. нельзя, например, сложить
целочисленную переменную с вещественной, не преобразовав перед этим тип
одной из них к типу другой). Язык Си обладает возможностью преобразования
типов по умолчанию. Другая криминальная вещь - это обеспечение контроля за
доступом к памяти программы (т.е. если в ячейке памяти хранится
вещественное число, то мы не можем его проинтерпретировать никак иначе).
Возможность бесконтрольного использования этих значений предоставляют
указатели. Более того, через указатель можно «обманывать» функции в
соответствии и несоответствии фактических параметров формальным параметрам
и т.д. Третье свойство - это контроль за взаимодействием модулей. Много
ошибок появляется в том случае, если в функции продекларирован один набор
формальных параметров, а обращение к ней происходит по другому набору
(причем отличия могут быть как по количеству параметров, так и по типам). В
языке Си всегда можно обмануть программу - вместо формального параметра
одного типа дать параметр другого типа, и вместо десяти параметров передать
один. Это приводит к ошибкам.
Вот три позиции, по которым язык Си не удовлетворяет требованиям
безопасности. Однако опыт показывает, что наиболее живучими оказываются
плохие (с этой точки зрения) языки.
Итак, 1973 год - год появления написанной на языке Си операционной
системы UNIX. Какими основными свойствами обладала эта система? Первое
свойство - это концепция файлов. Основным объектом, которым оперирует
операционная система, является файл. Файл, с точки зрения операционной
системы UNIX, - это внешнее устройство. Файл - это каталог, который
содержит информацию о содержащихся в нем файлах. И так далее, на
сегодняшний день, файлом может считаться, в некотором смысле и процесс,
который может работать.
Второе свойство - это особая структура операционной системы. В отличие
от предыдущих операционных систем, в которых каждая команда была «зашита»
внутрь операционной системы, т.е. ее нельзя было как -либо модифицировать,
в UNIX-е проблемы команд решены очень элегантно. Во-первых, UNIX
декларирует стандартный интерфейс передачи параметров извне внутрь
процесса. Во-вторых, все команды реализованы в виде файлов. Это означает,
что можно свободно добавлять новые команды в систему, а также убирать и
модифицировать их. То есть система UNIX открыта и ее можно легко развивать.
Начнем рассмотрение конкретных свойств операционной системы.
Файловая система. Организация файлов. Работа с файлами.
Файловая система UNIX-а - это многопользовательск
| | скачать работу |
Операционные системы |