5.2. ФАЙЛОВАЯ СИСТЕМА.
Все системы поддерживают следующие элементы иерархических файловых систем: обычные файлы, каталоги, специальные байт-ориентированные и блок-ориентированные файлы. Файл является массивом байтов (блоков фиксированной длины). Каталоги обеспечивают связь между именами файлов и собственно файлами. Каждый элемент каталога содержит имя файла и ссылку на конкретный файл. Для именования файлов используются корневой и текущий каталоги. Имя файла состоит из последовательности компонентов - локальных имен, разделенных символами '\' (В операционной системе UNIX - '/').
ОС UNIX характеризуется единственной однородной файловой системой на один или несколько компьютеров. В Microsoft Windows и OS/2 файловые системы ассоциируются с носителями (посредством логических имен - букв латинского алфавита).
Операционная система OS/2, кроме того, поддерживает свою файловую систему - HPFS (High Performance File System - высокопроизводительная файловая система), характеризующаяся хранением имен файлов и каталогов в виде B-дерева.
Внешние устройства (такие как терминал, принтер) так же часто представляются как файлы для упрощения работы с ними.
Операционные системы предоставляют следующие системные вызовы: запрос на смену и получение имени текущего каталога; создание, открытие, закрытие, удаление, переименование и получение информации о файле или каталоге, позиционирование в них.
Все рассматриваемые операционные системы поддерживают операции блокировки файла для защиты доступа к нему со стороны других процессов в многозадачной среде.
5.3. УПРАВЛЕНИЕ ПРОЦЕССАМИ.
Единицей управления и потребления ресурсов в многозадачной системе является процесс. В частности, ввод-вывод выполняется синхронно, и процесс приостанавливается до его завершения. Если требуется продолжить выполнение процесса параллельно с инициированным им вводом-выводом, нужно предварительно породить другой процесс для реализации ввода-вывода. Microsoft Windows, OS/2 и UNIX предоставляют сходные системные вызовы для обслуживания и управления процессами ('сессия' в OS/2): порождение, уничтожение.
OS/2 предоставляет гораздо более широкий спектр системных вызовов для управления процессами. В OS/2 существуют три вида процессов: нити (цепи или треды), 'настоящие' процессы и экранные группы. Экранные группы - наиболее независимый тип процессов. Каждая экранная группа имеет свою собственную виртуальную консоль, адресное пространство, открытые файлы, очереди и каналы (см. ниже). Внутри экранной группы могут находится один или более 'настоящих' процессов, у каждого из которых могут быть свои открытые файлы и свое адресное пространство. Нити - самый простой класс процессов, они имеют только свое собственное адресное пространство, а все остальные ресурсы наследуют от породившего их 'настоящего' процесса.
В операционной системе OS/2 планировщик задач может выделять 'настоящим' процессам кванты времени по двум алгоритмам: динамического и абсолютного приоритетов. Алгоритм динамического приоритета выражается: система подсчитывает интенсивность операций ввода-вывода, использования процессорного времени, и по ним определяет количество квантов времени, предоставляемых процессу. При использовании абсолютных приоритетов ОС распределяет кванты времени согласно числовым значениям, заданным при старте процесса. Процесс может изменять свой приоритет в небольших пределах с помощью системной функции.
В Microsoft Windows планировщика задач распределяет кванты процессорного времени аналогично алгоритму абсолютных приоритетов в операционной системе OS/2. Программа никак не может повлиять на количество предоставляемого ей процессорного времени.
В операционной системе UNIX алгоритм работы планировщика задач зависит от реализации.
5.4. МЕЖПРОЦЕССНОЕ ВЗАИМОДЕЙСТВИЕ.
Операционные системы используют разные термины для определения способов межпроцессного взаимодействия.
Единственным видом межпроцессного взаимодействия в ОС UNIX является сигнальный механизм. Посредством сигналов передается информация о необходимости завершения процесса, об ошибке в программе пользователя, об исключительных ситуациях или завершении порожденного процесса. Сигнал генерируется, когда происходит событие, вызывающее данный сигнал. Одно и то же событие может вызвать посылку сигнала нескольким процессорам. На каждый сигнал, определенный в системе, процесс должен иметь реакцию - действие, которое он выполняет при получении сигнала.
Операционная система OS/2 предоставляет три типа межпроцессного взаимодействия: каналы, очереди и семафоры.
Канал представляет собой кольцевой буфер с двумя указателями - начала и конца; используется для перенаправления ввода-вывода и стандартных файлов между процессами. Только два процесса могут читать или писать в канал - сервер и клиент.
Очередь - это упорядоченный список из 32-битных значений, интерпретируемых процессом по контексту (это может быть целое, указатель на общую область памяти или просто флаг). Любой процесс может прочесть информацию из канала в любом порядке или записать туда любую информацию.
Семафор - это объект, имеющий два устойчивых состояния (рабочее и нерабочее) и используемый для синхронизации исполнения процессов. Существует несколько видов семафоров: семафор событий, взаимного исключения, взаимного ожидания и именованный.
Когда семафор событий находится в нерабочем состоянии, операционная система блокирует исполнение всех процессов, которые запрашивают состояние семафора.
Семафоры взаимного исключения предотвращают возникновение тупиков при обращении к разделяемым ресурсам. Операционная система блокирует доступ к разделяемому ресурсу до тех пор, пока соответствующий семафор не будет свободен. При использовании разделяемого ресурса система устанавливает значение семафора в рабочее состояние, показывая тем самым, что ресурс занят.
Семафор взаимного ожидания представляет собой пакет из семафоров взаимного исключения или семафоров событий. Система может приостановить процесс до тех пор, пока один или все семафоры внутри именованного семафора не окажутся в состоянии 'свободен'(в зависимости от потребности процесса).
Реакция на именованный семафор зависит от процессов, совместно использующих его.
В операционных системах OS/2 и Microsoft Windows существует специальный механизм для взаимодействия процессов в реальном масштабе времени. Этот механизм называется DDE (Dynamic Data Exchange - динамический обмен данными). Он стандартизирует процесс обмена командами, сообщениями и объектами для обработки между задачами. Наиболее распространенные действия, для которых используются DDE - печать.
Другим интерфейсом для обмена данными является OLE (Object Linking and Embedding - объектное связывание со встраиванием). Этот интерфейс позволяет хранить объекты, созданные одной программой, в объектах, созданных другой программой, а также редактировать (печатать) их без нарушения целостности информации и связей.
Одним из наиболее простых, удобных и интуитивных интерфейсов межпрограммного взаимодействия является буфер обмена - Clipboard. Буфер обмена может содержать в себе один информационный объект - кусок текста, картинку и т.д. С помощью системного вызова процесс может получить копию информации, содержащейся в буфере обмена или сам поместить объект в буфер, при этом старое содержимое буфера теряется. Таким образом программы получают простой, но эффективный способ обмена информацией в процессе своей работы.
Операционная система UNIX не предоставляет этого способа обмена информацией, Microsoft Windows же позволяет задачам обмениваться информацией таким образом, даже в DOS-сессиях.
5.5. ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ.
Графический интерфейс пользователя изначально был несвойственен неигровым программам, однако будучи призванным облегчить общение пользователя с компьютером и программой, хорошо прижился на IBM PC и стал неотъемлемой частью любой уважающей себя операционной системы.
Оболочка Microsoft Windows не была изначально операционной системой, да и сейчас не может считаться в полноценной операционной системой, так как она существует ’поверх’ операционной системы типа MS-DOS. Она возникла в виде стандартизатора графического интерфейса и прижилась исключительно потому, что пользователь хотел видеть программу, с которой ему часто приходится работать красивой, практичной, удобной и легкой в освоении и использовании.
Для ОС UNIX также был создан специальный графический интерфейс - X-Windows; промышленный гигант - фирма IBM выпустила вместе с операционной системой OS/2 свой вариант графического интерфейса пользователя (GUI - Graphics User Interface) - Presentation Manager.
Функции, используемые программой пользователя при работе с графическим пользовательским интерфейсом схожи, как и сами интерфейсы.
После запуска программа обычно создает одно окно, с которым она ассоциируется и работает. Пользователь, работая с окном и находящимися в нем объектами, заставляет операционную систему (или программную оболочку) посылать программе сообщения, активизирующие необходимые пользователю возможности программы. В процессе работы программа также может создавать другие окна (выбора, диалога, обрабатываемого файла и др.) и получать от них сообщения, таким образом стандартизируется часто используемые элементы диалога с пользователем.
Операционная система (оболочка), ориентированная на графический интерфейс пользователя, предоставляет не только функции, поддерживающие ввод-вывод, но и широкий спектр системных вызовов, позволяющих использовать различные графические примитивы: от самых простых (точки, линии, дуги) до самых сложных (области, окна, курсоры). Основным преимуществом использования графического интерфейса операционной системы является то, что с помощью него программа может создавать графические изображения, которые будут выглядеть одинаково на всех устройствах, поддерживаемых операционной системой (принцип What We See Is What We Get - что видим, то и получаем).