Контакт:
  • Наши кнопки

  • Карта сайта
  • Вход для админа:

Для любого файлового сервиса, независимо от того, централизованный он или распределен, самым главным есть вопросы, что такое файл? Во многих системах, таких как UNIX и MS DOS, файл - это неинтерпретирует последовательность байтов. Значение и структура информации в файле является заботой прикладных программ, операционную систему это не интересует.

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

Когда два или более пользователи разделяют один файл, необходимо точно определить семантику чтения и записи, во избежание проблем. В централизованных системах, которые позволяют низменность файлов, таких как UNIX, обычно определяется, что, когда операция ЧТЕНИЯ вытекает за операцией ЗАПИСЬ, то читается только что обновленный файл. Аналогично, когда операция чтения вытекает за двумя операциями записи, то читается файл, измененный последней операцией записи. Тем самым система придерживается абсолютного временного упорядочивания всех операций, и всегда возвращает самое последнее значение.

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

Вызов подпрограмм без изменения кодового сегмента в защищенном режиме процессора i386 ведется аналогично вызова в реальном режиме с помощью команд JMP и CALL.

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

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

При объединении сетей разных типов в общем случае необходимо обеспечить двустороннее взаимодействие сетей, то есть решить две задачи (рисунок 3.17):

1. Обеспечение доступа клиентам сети A к ресурсам и сервисам серверов сети B.

2. Обеспечение доступа клиентам сети B к ресурсам и сервисам сети A.

Рис. 3.17.  Варианты сетевого взаимодействия

Эти задачи независимые и их можно решать отдельно.

Другой путь, заключается в том, чтобы оставить в ядре только небольшую часть серверу, который подает собой механизм реализации решения, а часть, ответственную за принятия решения, переместить в користувальну область. Согласно этому подходу, например, в микроядре Mach, на базе которого разработана Workplace OS, размещается только часть системы управления процессами (и нитями), что реализует диспетчеризацию (то есть непосредственно переключение из процесса на процесс), а все функции, связанные с анализом приоритетов, выбором очередного процесса для активизации, принятием решения о переключении на новый процесс и другие аналогичные функции выполняются вне микроядра.

Объектно-ориентированный подход к построения операционных систем, который предоставляет порядок процесса добавления модульных расширений к небольшому ядру был принят на вооружение многими известными фирмами, такими как Microsoft, Apple, IBM, Novell/USL (UNIX Systems Laboratories) и Sun Microsystems - все они развернули свои операционные системы в этом направлении. Taligent, общее предприятие IBM и Apple, надеется опередить всех из своей с начала до конца объектно-ориентированной операционной системой.

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

Первой системой, построенной таким способом была простая пакетная система THE, что построил Дейкстра и его студентов в 1968 году.

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

Некоторый прогресс в создании цифровых вычислительных машин состоялся после второй мировой войны.

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

В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:

ВЫПОЛНЕНИЕ - активное стостояние процесса, во время которого процесс имеет все необходимые ресурсы и непосредственно выполняется процессором;

ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции внедрения-висновка, получение сообщения от другого процесса, освобождение какого-то необходимого ему ресурса;

ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними относительно него обстоятельствами: процесс имеет все необходимые для него ресурсы, он готов выполняться, однако процессор занят выполнениям другого процесса.

В централизованной однопроцессорной системе, как правило, важно только относительное время и не важный точность времен. В распределенной системе, где каждый процессор имеет собственные времена со своей точностью хода, ситуация резко меняется: программы, которые используют время (например, программы, подобный команде make в UNIX, что используют время создания файлов, или программы, для которых важно время прибытия сообщений и т.п.) становятся зависимыми от того, временами какого компьютера они пользуются.

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

Для решения этой проблемы существует три подхода. Первый заключается в том, что система не берет на себя никаких обязательств по поводу доставки сообщений.

Функционирование любой файловой системы можно представить многоуровневой моделью (рисунок 2.36), у которой каждый уровень предоставляет некоторый интерфейс (набор функций)  уровню , который вышележит, а самый, в свою очередь, для выполнения своей работы использует интерфейс (оборачивается с набором запросов) уровня , который нижележит.

Рис. 2.36.  Общая модель файловой системы

Задачей символьного уровня являются определения по символьному имени файла его уникального имени.

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

создание файла,

уничтожение файла,

 открытие файла,

закрытие файла,

чтение файла,

запись в файл,

дополнение файла,

поиск в файле,

получение атрибутов файла,

установление новых значений атрибутов,

переименование,

выполнение файла,

чтение каталога,

и другие операции с файлами и каталогами.

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


s#0