- •Министерство связи республики беларусь
- •1. Однозадачные ос
- •2. Основы работы многозадачных ос
- •Рис 2. Виды состояний процесса
- •Управление памятью
- •Управление вводом-выводом
- •Файловые системы
- •Системные средства взаимодействия процессов
- •Интерфейс ос
- •Часть 3. Основы работы в среде ос
- •Основные виды Windows (3.Х, 9x, nt, xp, ce)
- •Способность совместной работы
- •Ос реального времени
Интерфейс ос
Здесь рассматривается взаимодействие пользователя с ОС вне программы - через команды, вводимые с клавиатуры терминала в интерактивных системах или поступающие во вводном потоке в пакетных системах. В первом случае, как правило, новая команда вводится после выполнения предыдущей и сама новая команда или ее параметры могут выбираться в зависимости от результатов этого выполнения. Во втором случае задается сразу целая последовательность команд и возможные отклонения от последовательного их выполнения должны задаваться явным образом. Из таких различий в технологии взаимодействия пользователей с системой вытекают естественные различия в интерактивных и пакетных командных языках, но по мере расширения командных языков они имеют тенденцию к сближению: в интерактивные командные языки включаются возможности задания последовательностей команд, а в пакетные - более гибкие средства управления последовательностью выполнения.
Командный язык и командный процессор
Команды представляют собой инструкции, сообщающие ОС, что нужно делать. Команды могут восприниматься и выполняться либо модулями ядра ОС, либо отдельным процессом, в последнем случае такой процесс называется командным интерпретатором или оболочкой - shell). Набор допустимых команд ОС и правил их записи образует командный язык (CL - control language).
Большинство запросов пользователя к ОС состоят из двух компонент: какую операцию следует выполнить и в каком окружении (environment) должно происходить выполнение операции. Могут различаться внутренние и внешние операции-команды. Выполнение внутренних операций производится самим командным интерпретатором, выполнение внешних требует вызова программ-утилит. Вызов и выполнение программ-утилит ничем не отличаются от вызова и выполнения приложений. Командный интерпретатор порождает процессы-потомки и выполняет в них заданные программы, используя для этого те же самые системные вызовы, которые может использовать и прикладная программа.
Окружением или средой называется то, что отличает одно выполнение программы от другого. Окружение конкретного выполнения может формироваться одним из следующих способов или их комбинациями:
командами установки локального окружения;
параметрами программы;
командами установки глобального окружения.
Окружение может быть локальным или глобальным. В первом случае параметры окружения устанавливаются только для данного конкретного выполнения данной конкретной программы-процесса и теряются по окончании выполнения. Во втором случае параметры окружения сохраняются и действуют все время до их явной отмены или переустановки.
Переменные окружения могут быть системными или пользовательскими. Системные имеют зарезервированные символьные имена и интерпретируются командным интерпретатором либо другими системными утилитами. Пользовательские переменные создаются, изменяются и интерпретируются пользователями и приложениями. Чтобы окружение могло быть использовано, в системе должны быть средства доступа к нему. На уровне команд - это должна быть команда типа, выводящая на терминал имена и значения всех переменных глобального окружения, на уровне API - системный вызов, возвращающий адрес блока глобального окружения.
В ОС, позволяющих легко порождать новые процессы, предполагается выполнение сложных действий как результата совместной (последовательной или параллельной) работы нескольких простых процессов. Поэтому командный язык таких ОС включает в себя средства интеграции процессов. К числу таких средств относятся:
командные списки - простое перечисление в одной командной строке нескольких команд, которые будут выполняться последовательно;
переадресация системного ввода-вывода - переадресация ввода дает возможность использовать в качестве входных данных программы данные, заранее записанные в файл, причем программа вводит и интерпретирует эти данные как введенные с клавиатуры; переадресация вывода сохраняет данные, которые должны выводиться на экран, в файле;
конвейеризация - сочетание командного списка с переадресацией ввода-вывода; выходные данные программы 1 направляются не на экран, а сохраняются и затем используются, как входные для программы 2;
параллельное выполнение - специальный признак в командной строке применяется в качестве указания командному интерпретатору вводить и выполнять следующую команду, не дожидаясь окончания выполнения предыдущей.
Командные файлы и язык процедур
Соображения удобства пользователя диктуют необходимость короткого обращения к часто выполняемым последовательностям команд. Простым и эффективным решением этой задачи является запись такой последовательности в текстовый файл и обращение к ней в дальнейшем по имени файла. Такие файлы называются командными файлами. В интерактивных системах их иногда также называют пакетными файлами, а в пакетных - файлами процедур. Командный интерпретатор должен при вводе команды-обращения к такому файлу распознать тип файла и далее считывать и интерпретировать команды из файла.
В простейшем случае командный файл содержит неизменяемую последовательность команд и является просто аббревиатурой этой последовательности. Несколько более сложные средства позволяют управлять последовательностью выполнения команд в командном сценарии. Простейшим вариантом такого управления является включение в команду условия ее выполнения, более сложный и гибкий вариант - условный переход на ту или иную команду. В условии выполнения или перехода должен анализироваться код завершения одной или нескольких предыдущих команд.
Развитые же командные языки обладают всеми наборами свойств алгоритмических языков и позволяют писать целые программы в командных файлах, включающие в себя как обращения к командам системы, так и обработку их результатов. Наиболее развитыми из таких языков являются shell (ОС Unix и ее клоны) и REXX (все ОС фирмы IBM).
Полноэкранный интерфейс
Интерфейс командной строки на сегодняшний день используется только системными программистами и администраторами. Программируемые видеотерминалы дают возможность выводить информацию в любую позицию экрана и, следовательно, использовать все пространство экрана для организации взаимодействия между ОС и пользователем.
Полноэкранный интерфейс строится на основе принципа согласованности, который состоит в том, что у пользователя формируется система ожидания одинаковых реакций на одинаковые действия. Общие принципы панельного интерфейса в основном не зависят от типа применяемых терминалов. Однако, сочетание графических видеоадаптеров с высокой разрешающей способностью с общим увеличением вычислительной мощности персональных вычислительных систем позволяет существенно изменить общий облик экрана. Основные направления этих изменений: многооконность, объемность, иконика. Приоритет в разработке графических интерфейсов (в том числе и объектно-ориентированных) принадлежит фирме Apple, но повсеместное распространение интерфейсная графика получила, прежде всего, в ОС Windows фирмы Microsoft.
Даже на чисто текстовых видеотерминалах имелась возможность вывода на экран нескольких окон одновременно, но для графического режима эта возможность значительно расширилась. В многооконном интерфейсе значительно увеличивается роль мыши, как средства выбора окна и как средства целеуказания внутри выбранного окна. Высокая разрешающая способность графических дисплеев позволяет также имитировать объемные панели. На "объемной" панели применяются также дополнительные графические элементы - органы управления.
Главное изменение в облике интерфейса - иконика - представление объектов (файлов) в виде миниатюрных графических изображений - пиктограмм (icon). Помимо чисто внешних изменений иконика породила возможность манипулировать объектами через манипулирование их изображениями. Широкое распространение получила техника перемещения/копирования файлов, именуемая транспортировкой. Дальнейшее развитие графика интерфейсов получает в объектно-ориентированном интерфейсе.
Объектно-ориентированный интерфейс
В противовес обычному интерфейсу, который представляет пользователю практически единственный тип объекта - файл, единицу хранения информации в ОС, объектно-ориентированный (ОО) интерфейс представляет объекты различных типов. Файлы могут быть разными типами объектов - в зависимости от типа информации в них хранящейся и способов ее обработки. Кроме того, объектами могут быть устройства, сетевые ресурсы и т.д. В ОО программировании под объектом понимается абстрактный тип данных, включающий в себя как сами данные, так и процедуры их обработки. Аналогично объекты понимаются и в ОО интерфейсе. Среди свойств, присущих объекту, имеется и указание на способ его обработки - в том числе и на приложение, обрабатывающее данные этого типа. Выполнение некоторых действий над объектом включает в себя автоматический запуск приложений, которые эти действия выполняют.
В современных ОС ОО интерфейс пользователя основывается на концепции рабочего стола - оболочки ОС, представляющей экран в виде ровной поверхности, на которой расположены объекты и папки. Сам рабочий стол также является объектом, имеющим определенный набор свойств и возможных операций. Папкой называется объект, в котором содержатся другие объекты и/или папки. Объекты и папки представляются пиктограммами, для них целеуказателем является мышь, для задания практически всех необходимых действий используются клавиши мыши. Операции копирования, перемещения и т.п. выполняются с применением техники транспортирования. Определенное действие пользователя (нажатие кнопки мыши) вызывает появление меню действий - списка операций, возможных для объекта данного типа. Меню действий будут различными для разных типов объектов. Многие действия, названия которых общие для всех объектов, выполняются, однако, по-разному, и требуют вызова разных приложений. Одним из действий, общим для всех объектов является чтение/установка свойств объекта. При выборе этого действия на экран выводится список свойств, специфицированных для объекта выбранного типа, и их значений для данного объекта.