- •Появление первых операционных систем
- •Раздел 1. Общие сведения об операционных системах
- •2.2.2 Wimp – интерфейс
- •2.3 Речевая технология
- •2.4 Биометрическая технология
- •2.5 Семантический (общественный) интерфейс
- •2.6 Типы интерфейсов
- •3. Методы и средства разработки пользовательского интерфейса
- •Алгоритмы распределения памяти с использованием внешней памяти.
- •Раздел 2 Операционная система ms-dos
- •Дефрагментация диска
- •Вопросы для размышления
- •Практические задания
- •Команды dos для работы с каталогами
- •Команды dos для работы с файлами
- •Команды dos для работы с дисками
- •Программы и команды dos общесистемного назначения
- •Раздел 3 Операционная система Windows (36ч.)
- •Тема 3.14 Обработка ошибок и исключений. (2ч.)
- •Раздел 4 Операционная система Linux (32ч.)
3. Методы и средства разработки пользовательского интерфейса
Интерфейс имеет важное значение для
любой программной системы и является
неотъем-лемой ее составляющей,
ориентированной, прежде всего, на
конечного пользователя. Имен-но через
интерфейс пользователь судит о прикладной
программе в целом; более того, часто
решение об использовании прикладной
программы пользователь принимает по
тому, нас-колько ему удобен и понятен
пользовательский интерфейс. Вместе с
тем, трудоемкость про-ектирования и
разработки интерфейса достаточно
велика. По оценкам специалистов в
сред-нем она составляет более половины
времени реализации проекта. Актуальным
является снижение затрат на разработку
и сопровождение программных систем или
разработка эффективного программного
инструментария.
Одним из путей снижения затрат на
разработку и сопровождение программных
систем яв-ляется наличие в инструментарии
средств четвертого поколения, позволяющих
на высоком уровне описать (специфицировать)
создаваемое программное средство и
далее по спецификации автоматически
сгенерировать исполнимый код.
В литературе не существует единой
общепринятой классификации средств
для разработки пользовательского
интерфейса. Так, программное обеспечение
для разработки пользова-тельского
интерфейса можно разделить на две
основные группы - инструментарий для
раз-работки пользовательского интерфейса
(toolkits) и высокоуровневые средства
разработки интерфейса (higher-level development
tools). Инструментарий для разработки
пользовательс-кого интерфейса, как
правило, включает в себя библиотеку
примитивов компонентов ин-терфейса
(меню, кнопки, полосы прокрутки и др.) и
предназначен для использования
программистами. Высокоуровневые средства
разработки интерфейса могут быть
использо-ваны непрограммистами и
снабжены языком, который позволяет
специфицировать функции ввода-вывода,
а также определять, используя технику
непосредственного манипулирования,
интерфейсные элементы. К таким средствам
относятся построители диалога (interface
builders) и СУПИ - системы управления
пользовательским интерфейсом (User
Interface Management Systems - UIMS). Помимо СУПИ,
некоторые авторы используют такие
термины, как User Interface Development Systems (UIDS) -
системы разработки пользовательского
интерфейса, User Interface Design Environment (UIDE) -
среда разработки пользовательского
интерфейса и др.
Специализированные средства для
разработки интерфейса позволяют
упростить разра-ботку пользовательского
интерфейса, предлагая разработчику
специфицировать компоненты пользовательского
интерфейса с использованием языков
спецификаций. Можно выделить несколько
основных способов спецификации
интерфейса:
1.
Языковой, когда применяются специальные
языки для задания синтаксиса интерфейса
(декларативные, объектно-ориентированные,
языки событий и др.).
2.
Графическая спецификация связана с
определением интерфейса, как правило,
средствами визуального программирования,
программированием демонстраций и по
примерам. Подобный способ поддерживает
ограниченный класс интерфейсов.
3.
Спецификация интерфейса, основанная
на объектно-ориентированном подходе,
связана с принципом, называемым
непосредственное манипулирование.
Основное его свойство - взаимодействие
пользователя с индивидуальными объектами,
а не со всей системой как единым целым.
Типичными компонентами, используемыми
для манипуляций с объектами и управляющими
функциями, являются обработчики, меню,
зоны диалога, кнопки различного вида.
4.
Спецификация интерфейса по спецификации
прикладной задачи. Здесь интерфейс
создается автоматически по спецификации
семантики прикладной задачи. Однако
сложность описания интерфейса затрудняет
возможности скорого появления систем,
реализующих данный подход.
Основной
концепцией СУПИ является отделение
разработки пользовательского интерфейса
от остального приложения. В настоящее
время идея раздельного проектирования
интерфейса и приложения либо закреплена
в определении СУПИ либо является основным
его свойством.
В
состав СУПИ определен как набор
инструментов этапа разработки и периода
исполнения. Инструменты этапа разработки
оперируют с моделями интерфейса для
построения их проектов. Они могут
разделяться на две группы: интерактивные
инструменты, например редакторы моделей,
и автоматические инструменты, например
генератор форм. Инструменты периода
исполнения используют модель интерфейса
для поддержки деятельности пользователя,
например, для сбора и анализа используемых
данных.
Функциями
СУПИ является содействие и облегчение
разработки и сопровождения пользовательского
интерфейса, а также управление
взаимодействием между пользователем
и прикладной программой.
Таким
образом, в настоящее время существует
большое количество инструментальных
средств для разработки интерфейса,
поддерживающих различные методы его
реализации.
Основное
назначение тех средств разработки
пользовательских графических интерфейсов,
которые разрабатываются и поставляются
отдельно от оконной системы, является
облегчение создания нового графического
интерфейса за счет использования
существующих параметризованных
заготовок. Как видно, в принципе это те
же самые идеи, на которых основана
объектно-ориентированная библиотека
оконной системы X Xt Intrinsics.
И
действительно, наиболее распространенный
пакет, предназначенный для быстрой и
качественной разработки графических
пользовательских интерфейсов, Motif,
который был спроектирован и разработан
в северо-американском консорциуме OSF,
в основном является развитием идей Xt
Intrinsics. Motif является сугубо коммерческим
продуктом. Дело дошло до того, что
компания OSF запатентовала внешний
интерфейс продуктов, входящих в состав
Motif, чтобы не дать кому-нибудь возможность
воспроизвести этот интерфейс.
Это
привело к настоящему скандалу в сообществе
американских программистов, потому что
создало опасный прецедент патентования
интерфейсов. Если можно закрыть своим
авторским правом возможность повторения
графического интерфейса, то почему
нельзя запатентовать синтаксис языка
программирования, интерфейс операционной
системы и т.д.? Однако строгость
американских законов не оправдывается
необязательностью их исполнения, и
поэтому недовольные свободолюбивые
американские программисты ропчат, но
терпят, а тем временем пытаются
сагитировать восточно-европейских
программистов (не так сильно зависящих
от американских законов) на нелегальную
свободно доступную реализацию интерфейсов
Motif.
С
другой стороны, сравнительно недавно
(4-5 лет тому назад) в Калифорнийском
университете г. Беркли был создан
альтернативный механизм под названием
Tcl/Tk. Этот механизм основан на наличии
специализированного командного языка,
предназначенного для описания графических
пользовательских интерфейсов,
соответствующего интерпретатора и
библиотеки ранее разработанных заготовок
интерфейсов. Пакет Tcl/Tk распространяется
(вместе с полной документацией) свободно,
и многие профессиональные программисты
находят его более удобным, чем
Motif.
3.1Пакет
Motif
Motif
(официальное название этого продукта
- OSF/Motif) представляет собой программный
пакет, включающий оконный менеджер,
набор вспомогательных утилит, а также
библиотеку классов, построенных на
основе Xt Intrinsics. Для конечных пользователей
оконных систем, опирающихся на Motif,
основной интерес представляет менеджер
окон, хотя, скорее всего, вы не сможете
определить, применяется ли оконный
менеджер Motif в используемой вами
установке.
Для
разработчиков же графических интерфейсов
важны все три компонента Motif. Новый
интерфейс разрабатывается в графическом
же режиме с использованием оконного
менеджера. При этом полезно использование
утилит Motif и необходимо использование
библиотеки классов Motif.
Библиотека
классов Motif является расширением
библиотеки Xt Intrinsics с целью предания
этой библиотеке практического смысла
(по-другому можно сказать, что Motif - это
то, чем должен был бы быть Xt, если бы при
его создании ставились коммерческие
цели). Все графические объекты (правильнее
сказать, классы) Xt Intrinsics включаются в
библиотеку классов Motif, хотя в ней
используются другие имена.
Но
Motif существенно расширяет возможности
Xt Intrinsics. В его библиотеке поддерживается
большое число классов, позволяющих
создавать меню, "нажимаемые" кнопки
и т.д. Основное назначение этих классов
- определение новых виджетов, связанных
с окнами.
Однако
в Motif поддерживается и новый вид
графических объектов (их классов) - так
называемые гаджеты (gadgets). Гаджет
отличается от виджета тем, что
соответствующий класс также может
использоваться для создания элементов
интерфейса, но графический объект не
привязывается к определенному окну.
При отображении на экран гаджета
используется окно объекта, относящегося
к суперклассу класса гаджета.
Понятно,
что здесь мы не можем привести подробное
описание Motif (еще раз повторим, что
соответствующий материал содержится
в нескольких солидных книгах). Однако
основная идея должна быть понятна:
развитая библиотека классов языка Си++,
возможности применения этих классов
при использовании обычного стиля
программирования и поддержка визуального
программирования с немедленным
отображением получающихся графических
объектов.
3.2
Язык и интерпретатор Tcl/Tk
Продукт
Tcl/Tk в действительности представляет
собой два связанных программных пакета,
которые совместно обеспечивают
возможность разработки и использования
приложений с развитым графическим
пользовательским интерфейсом. Название
Tcl относится к "командному языку
инструментальных средств - tool command
language", и, как не странно, его рекомендуется
произносить "тикл". Это простой
командный язык для управления приложениями
и расширения их возможностей. Язык Tcl
является "встраиваемым": его
интерпретатор реализован в виде
библиотеки функций языка Си, так что
интерпретатор может быть легко пристыкован
к любой прикладной программе, написанной
на языке Си.
Tk
(рекомендуемое произношение - "ти-кей")
является библиотекой Си-функций,
ориентированной на облегчение создания
пользовательских графических интерфейсов
в среде оконной системы X (т.е., по сути
дела, некоторый аналог Xt Intrinsics). С другой
стороны, аналогично тому, как это делается
в командных языках семейства shell, функции
библиотеки Tk являются командами языка
Tcl, так что любой программист может
расширить командный репертуар языка
Tcl путем написания новой функции на
языке Си.
Совместно,
Tcl и Tk обеспечивают четыре преимущества
для разработчиков приложений и
пользователей (мы используем здесь
авторские тексты разработчиков).
Во-первых, наличие командного языка Tcl
дает возможность в каждом приложении
использовать мощный командный язык.
Все, что требуется от разработчика
приложения, чтобы удовлетворить его/ее
специфические потребности, - это создать
несколько новых команд Tcl, требующихся
приложению (и, возможно, другим приложениям
- явно традиционный стиль командного
программирования в ОС UNIX). После этого
нужно связать прикладную программу с
интерпретатором Tcl и пользоваться
полными возможностями командного
языка.
Вторым
преимуществом использования Tcl/Tk является
возможность быстрой разработки
графических интерфейсов. Многие
интересные оконные приложения могут
быть написаны в виде скриптов языка Tcl
без привлечения языков Си или Си++ (а Tcl
позволяет скрыть многие несущественные
детали). Как утверждают разработчики
Tcl/Tk, пользователи оказываются способными
к созданию новых графических интерфейсов
уже после нескольких часов знакомства
с продуктом. Другой особенностью языка
Tcl, способствующей быстрой разработке
оконных приложений, является то, что
язык является интерпретируемым. Можно
опробовать новую идею интерфейса,
выражающуюся в сотнях или тысячах строк
кода на языке Tcl, без потребности вызова
новых программных средств, путем простого
нажатия на клавишу мыши (не наблюдая
существенных задержек при использовании
современных рабочих станций).
Третьим
преимуществом языка Tcl является то, что
его можно применять в качестве языка
"склейки" приложений. Например,
любое основанное на Tcl и использующее
Tk оконное приложение может направить
свой скрипт любому другому аналогично
ориентированному приложению. С
использованием Tcl/Tk можно создавать
приложения, работающие в стиле мультимедиа,
и опять же они смогут обмениваться
скриптами, поскольку пользуются общим
интерпретатором командного языка Tcl и
общей внешней библиотекой Tk.
Наконец,
четвертым удобством интегрированного
пакета Tcl/Tk является удобство пользователей.
Для написания нового приложения в среде
Tcl/Tk достаточно выучить несколько
совершенно необходимых команд, и этого
окажется достаточно. Другими словами
оказывается возможным инкрементальный
(пошаговый) стиль погружения в предмет.
Такая возможность всегда радует сердце
и греет душу.
Впрочем,
заметим, что далеко не все программисты
разделяют выраженное выше глубоко
радостное отношение разработчиков
Tcl/Tk к своему продукту.
3.3
Microsoft Expression Blend – инструмент создания
интерфейсов
Появление
языка описания пользовательских
интерфейсов XAML (произносится – зáммель)
и новой среды разработки Expression Blend
позволяет заметно ускорить и облегчить
проектирование и построение пользовательских
интерфейсов как для веб-, так и для
настольных приложений.
Данный
язык позволяет описывать внешний вид
и поведение интерфейсных элементов,
устанавливать взаимодействие этих
элементов с различными данными и
событиями. Допускает прямое подключение
к Common Language Runtime (CLR), что обеспечивает
большую гибкость при проектировании
ПО.
Функциональность,
взаимодействие XAML и процедурного
кода
XAML
– это скриптовый язык, базирующийся на
XML, он имеет набор правил, которые
устанавливают взаимодействие между
объектами и классами, атрибутами и
свойствами или событиями и пространствами
имен XML и CLR. Для описания элементов,
панелей, свойств текста, векторной
графики и т.п. используются теги.
<Button
VerticalAlignment="Top" Width="Auto"
Height="Auto" Content="Button"/>
Каждый
тег в XAML имеет соответствующий класс в
WPF, который имеет набор инструкций, как
выполнить этот тег. XAML включает в себя:
панели, элементы управления, элементы
управления документами и элементы
векторной графики.
При
создании проекта в Expression Blend каждый файл
на XAML имеет файл-соратник (code-behind) на C#
или VB.
XAML
взаимодействует с кодом на C# или VB
посредством обработчика событий, который
прописывается внутри тега объекта.
Код
на XAML
<Button
Content="Button" Click="Button_Click"/>
Пример
обработчика события Button_Click на C#
private
void Button_Click(object sender, System.Windows.RoutedEventArgs
e)
{
MessageWindow
MessageWindow = new
MessageWindow();
MessageWindow.ShowDialog();
Microsoft
Expression Blend
Есть
несколько визуальных редакторов
позволяющих создавать и редактировать
XAML: Microsoft XamlPad, Microsoft Visual Studio 2005, 2008,
Microsoft Expression Blend, Mobiform Avrora, XamlHack.
Подробно
хочу остановиться на основном приложении
для работы с XAML – Microsoft Expression Blend, далее
просто Blend.
Blend
представляет собой современное средство
визуального проектирования интерфейсов,
оснащенное встроенным редактором XAML,
что позволяет, с одной стороны проектировать
интерфейсы не обращая внимания на
исходный код, а с другой стороны, позволяет
более «тонко» настраивать создаваемый
интерфейс.
Так
как свойства объектов в Blend неразрывно
связаны с возможностями XAML, дальнейшее
описание элементов проводится через
представление этих объектов в Blend, как
графических, так и интерактивных, т.е.
так как видит это дизайнер.
Интерфейс
Blend
Blend
имеет современный интерфейс, привычный
как дизайнерам графикам, так и
веб-дизайнерам.
Рабочее
пространство разделено на три основные
части.
Рисунок
4 - Рабочее пространство Microsoft Expression
Blend
Панель
инструментов (подкрашена красным),
панели Interaction и Objects and Timeline (пурпурным)
слева, основное рабочее пространство
с панелью инструментов и вкладками
переключения вида Design, XAML или Split
посередине и панель Results в центре снизу
(подкрашено зеленым) и панели Project,
Properties, Resourses и Data справа (синие).
Все
панели позволяют переключаться в
«плавающий» режим или исчезать с экрана
при помощи «горячих» клавиш. В меню
Tools/Options/Workspace есть возможность настройки
размеров панелей. Blend использует большое
количество «горячих» клавиш, спасибо
разработчикам о заботе, большинство
сочетаний хорошо известны всем дизайнерам,
работающим с графическими программами
от Adobe.
Панель
инструментов имеет практически
стандартный вид для программ редакторов
векторной графики и включает в себя
основные инструменты создания и
редактирования графики плюс специфичные
для Blend инструменты и библиотеки
стандартных и пользовательских
элементов.
По
умолчанию в Blend включены две библиотеки
интерфейсных элементов System Controls –
стандартные элементы и Simple Styles –
библиотека-пример построения
пользовательских интерфейсных элементов,
раскрывающая возможности XAML.
Инструменты
рисования
Векторный
редактор Blend обладает всеми возможностями
современного векторного редактора плюс
обладает некоторыми уникальными
свойствами.
Инструменты
для построения и редактирования векторной
графики типичны для многих векторных
редакторов и включают в себя редактор
кривых, представленный инструментами:
Перо (Pen), Карандаш (Pencil), инструмент
выделения (Selection) и инструмент
непосредственного выделения (Direct
Selection), а также инструментами для
построения простых геометрических
форм: Прямоугольник (Rectangle), Овал (Ellipse)
и Линия (Line).
Blend
позволяет:
создавать
составные векторные объекты (Compound
paths);
создавать
векторные объекты посредством логических
операций (вычитание, сложение и т.д.)
(Combining paths);
переводить
шрифт в векторный объект (Convert to
Path);
кадрировать
как растровое, так и векторное изображение
(Clipping paths);
создавать
маски прозрачности (Opacity masks).
Настройка
свойств графических элементов, имеет
ряд особенностей, делающих работу
дизайнера более удобной, и позволяет
достигнуть большей гибкости в построении
интерфейса по сравнению с обычными
(классическими) способами.
Остановимся
подробнее на некоторых из них:
Возможность
раздельно задавать толщину линий
образующих стороны объектов типа Граница
(Border) и Прямоугольник (Rectangle).
Возможность
раздельно задавать радиус скругления
для всех углов в объекте Граница
(Border).
Рисунок
5 - Пример построения пользовательского
элемента с кодом на XAML
<Border
Height="22" BorderThickness="1,0,1,3"
BorderBrush="#FFFF0000"
CornerRadius="0,0,2,2"
Width="100"/>
Настройка
внешнего вида объектов
Внешний
вид объектов зависит от свойств, которые
задаются как при помощи прямых настроек,
так и при помощи кистей (Brushes):
Прозрачность
(Opacity)
Видимость
(Visibility)
Заливка
(Fill)
Штрих
(Stroke)
Фон
(Background)
Передний
план (Foreground)
BorderBrush
(Граница)
Маска
прозрачности (Opacity masks)
Кисти
используются для задания внешнего вида
объектов и могут быть следующих
типов:
Одноцветная
кисть (Solid color brush)
Линейный
градиент (Linear gradient brush)
Радиальный
градиент (Radial gradient brush)
Кисть
растровое изображение (Image brush)
Кисть
векторное изображение (Drawing brush)
Кисть
визуальных эффектов (Visual brush)
Кисти
можно конвертировать в ресурсы и
многократно применять к различным
объектам.
Blend
имеет стандартный редактор цветов
позволяющий оперировать четырьмя
цветовыми моделями: RGB, HLS, HSB и CMYK, а так
же специальный инструмент для настройки
градиентов (Brush transform tool) и инструменты
для переноса свойств объектов (Eyedropper и
Paint Bucket).
Особо
бы хотелось отметить наличие в Blend
специальных растровых эффектов (Bitmap
effects):
Размытие
(Blur)
Внешнее
свечение (Outer glow)
Тень
(Drop shadow)
Фаска
(Bevel)
Рельеф
(Emboss)
Все
фильтры работают в реальном масштабе
времени и могут применяться ко всем без
исключения интерфейсным элементам, в
том числе и генерируемым «на лету».
Работа
с текстом
Blend
является специализированным инструментом
для построения пользовательских
интерфейсов и имеет несколько типов
текстовых объектов:
Текстовое
поле (TextBox)
Текстовое
поле с расширенными возможностями
(RichTextBox)
Текстовый
блок (TextBlock)
Поле
пароля (PasswordBox)
Метка
(Label)
Текстовый
блок с расширенным содержимым и полосой
прокрутки (FlowDocumentScrollViewer)
Настройки
текста зависят от типа объекта и его
функциональности.
Библиотека
интерфейсных элементов
Библиотека
интерфейсных элементов содержит все
типы стандартных интерфейсных элементов,
специфические элементы Blend и элементы,
содержащиеся в стиле SimpleStyles.
Рисунок
6 - Список интерфейсных элементов,
доступных из встроенной библиотеки
Элементы
подразделяются на следующие
категории:
Панели
разметки (Layout Panels), используются как
контейнеры для других элементов,
определяя их местоположение относительно
друг друга.
Интерфейсные
элементы (Controls).
Построение
интерфейса в общем случае сводится к
переносу интерфейсных элементов из
библиотеки на рабочее пространство с
последующей их компоновкой.
Создание
интерфейсов в Expression Blend
Blend
обладает разветвленными возможностями
для построения качественных интерфейсов
и главной возможностью, на мой взгляд,
является создание пользовательских
библиотек-стилей, содержащих интерфейсные
элементы с заранее заданным внешним
видом и поведением.
Стили
и шаблоны
Стили
и шаблоны уникальная возможность XAML,
позволяющая сочетать в себе мощность
стилей CSS и гибкость шаблонов графических
программ.
Стили
описываются содержимым заключенным в
тег <Style> и могут содержать следующие
элементы:
Кисти
всех типов (Brush)
Геометрические
свойства элементов (Высота, ширина,
скругление углов, толщина линий и
т.д.)
Специальные
эффекты (BitmapEffects и Visual brush)
Интерфейсные
элементы
Векторные
графические объекты.
Как
видно из списка элементов, стиль может
содержать в себе полное описание всех
интерфейсных элементов и их составляющих
и позволяет гибко управлять внешним
видом интерфейса.
Стиль
может содержаться как в самом файле
проекта, так и в отдельном файле,
содержащем только стили. Второй вариант
предпочтительней, т.к. позволяет иметь
столько стилей для приложения, сколько
может позволить ваше воображение и в
этом главное преимущество новой
технологии: код на процедурном языке,
а интерфейс на скриптовом языке, что
позволяет улучшить или заменить интерфейс
без больших ресурсоемких и временных
издержек.
Создание
пользовательских интерфейсных
элементов
Есть
два пути для создания элементов: можно
выучить синтаксис XAML и «писать» элементы
кодом или же можно воспользоваться
Blend. Второй способ проще, нагляднее и
быстрее.
Для
создания пользовательского вида
интерфейсного элемента в Blend имеется
возможность как редактирования
существующего, так и создания нового
элемента. Для того чтобы отредактировать
элемент достаточно «щелкнуть» по нему
правой кнопкой мыши и выбрать Edit Control
Parts (Template). Появится «начинка» элемента
и вы можете изменить внешний вид – с
помощью графического редактора Blend или
изменить поведение элемента, редактируя
переключатели событий (Event Triggers) или
задать анимацию, используя
Timeline.
Разметка
Разметка
документа осуществляется специальными
панелями (Layout Panels), которые могут включать
в себя как сами панели, так и интерфейсные
элементы. Доступ к панелям осуществляется
на панели инструментов и что самое
неожиданное, как функция Группировки
(Group), наконец то группировка перестала
быть абстрактной сущностью!
Панели
разметки могут быть следующих типов:
Холст
(Canvas panel)
Стыковочная
панель (Dock panel), содержимое панели может
пристыковываться к заданным сторонам
панели
Таблица
(Grid panel), содержимое находится внутри
ячеек таблицы
Стопка
(Stack panel), содержимое группируется в
последовательном порядке по горизонтали
или вертикали
Панель
с возможностью скрытия содержимого
(Wrap panel) – если содержимое не помещается
внутри панели, например, при изменении
размера панели, содержимое скрывается
определенным образом.
Расположение
объектов, привязки и выравнивание
Как
известно, внешний вид эстетичного
интерфейса определяется месторасположением
формирующих его элементов, а также
наличием пустого пространства (отступов)
и пропорциональным строем его составляющих,
т.е. то, что зовется композицией. Blend
обладает рядом гибких инструментов,
помогающих дизайнеру точно располагать
и компоновать элементы интерфейса.
Рисунок
7 - Визуальная привязка
Инструмент
визуальной привязки (Snap) имеет уникальное
свойство, а именно предопределяемое
свойство показывать заданный размер
границы между элементами (Default margin и
Default padding). Эта функция здорово ускоряет
расположение элементов в форме: достаточно
просто выбросить элемент на плоскость
и Blend сам покажет нужные для него
отступы.
Визуальная
привязка позволяет точно позиционировать
элементы относительно друг друга,
соблюдая заданные размеры границ между
элементами, и показывает, как эти границы,
так и местоположение элементов
относительно друг друга и базовую линию
текста (для элементов, содержащих
текст).
Функция
выравнивания (Align) работает не совсем
обычно: выравнивание элементов происходит
не относительно друг друга, как это
обычно практикуется в графических
программах, а относительно Панели
разметки (Layout Panels), в которой находятся
элементы, что очень удобно, но непривычно.
Если элементы находятся внутри Таблицы
(Grid Panel), то появляется возможность
управлять поведением элементов при
изменении размеров окна приложения,
имеется 3 вида поведения:
Auto
– при изменении размеров таблицы
изменяется размер заключенных в нее
элементов.
Pixel
– строка или столбец таблицы имеют
фиксированное значение в пикселях.
Star
– изменяет размеры элементов аналогично
изменению размеров в процентах в
HTML.
Данные
свойства устанавливаются, как на строки,
так и столбцы таблицы и могут применяться
в любой комбинации.
Плюсы
и минусы Expression Blend
Как
мы видим, Blend является мощным приложением
для создания пользовательских интерфейсов
и, подводя итоги, хотелось бы указать
на плюсы и минусы данного инструмента
с точки зрения дизайнера
интерфейсов:
Плюсы:
Удобный
минималистический интерфейс
Встроенный
редактор векторной графики с разветвленным
инструментарием
Встроенный
редактор XAML с подсветкой синтаксиса
Встроенный
компилятор
Наличие
привычных для дизайнеров «горячих»
клавиш
Наличие
уникальных инструментов и интерфейсных
решений
Минусы:
Программа
предназначена для дизайнеров с хорошим
знанием или отношением к XML подобным
языкам разметки
Требует
установки .NET Framework 3 или 3.5 (даже для
просмотра готового проекта.exe) и еще
желательно Visual Studio (для редактирования
C# файлов)
Неустойчиво
и медленно работает (Бета-версия).
Требует
вмешательство в XAML код, т.к. не все
свойства могут устанавливаться из
графического интерфейса Blend.
Стандартные
библиотечные элементы не всегда корректно
сверстаны, требуется переделка некоторых
из них.
Справочная
система не достаточно проработана.
Разветвленная
система файлов, необходимых для
проекта.
Blend
и классические способы создания
прототипов интерфейсов
По
большому счету, сравнение классических
технологий прототипирования интерфейсов
и новой технологии WPF – представителем
которой является Blend, является не совсем
корректным.
Классическое
прототипирование это в первую очередь,
проектирование взаимодействия, создание
внешнего вида приложения уже вторично,
хотя и немаловажно.
Blend
программа для создания уже готовых
интерфейсов, т.е. дизайнер выдает
программистам готовый интерфейс, не
требующий их вмешательства в графическое
решение. Программист только подключает
интерфейс к процедурному коду. Данная
концепция является достаточно новаторской,
как для дизайнеров интерфейсов, так и
для программистов. С точки зрения
дизайнера интерфейсов, Blend является
дополнительным инструментом при
проектировании интерфейсов, так как
проектирование интерфейсов это не
только и даже не совсем внешний вид, а
в первую очередь взаимодействие программы
и человека, а инструменты, позволяющие
это делать в Blend, малоразвиты или
отсутствуют совсем.
Что
несет нам новая технология?
Прежде
всего, гибкость при создании приложений,
которая обеспечивается наличием
современных средств визуализации и
новых технологий:
Векторная
графика: теперь интерфейс состоит
полностью из векторных объектов
(интерфейсные элементы, графика,
пиктограммы).
Новые
экранные шрифты.
Новая
технология попиксельного позиционирования
изображения на экране.
Одна
программа может содержать несколько
интерфейсов (разные разрешения, веб и
настольные приложения и т.д.).
Дизайнер
и программист могут одновременно
работать над одним проектом, каждый
выполняя свою функцию, что обеспечивает,
как гибкость при создании приложений,
так и увеличивает скорость работы.
(http://gendocs.ru/v10991)
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Т.Б. Большаков, Д.В. Иртегов. Оперционные системы[Электронный ресурс]. Материалы сайта http: // www. citforum. ru / operating_systems / ois / introd. shtml.
Методы и средства разработки пользовательского интерфейса: современное состояние, Клещев А.С. , Грибова В.В. , 2001[Электронный ресурс]. Материалы сайта http: // www. swsys. ru / index. php? page=article&id=765.
Дейтел Г. Введение в операционные системы. В двух томах / Пер, с англ. Л.А. Теп-лицкого, А.Б. Ходулева, В.С. Штаркмана под ред.В.С. Штаркмана.[текст] - М.: Мир, 1987.
Программная инженерия. Стандартизация пользовательского интерфейса. Евгений Волченков. М, 2002[Электронный ресурс]. Материалы сайта http: // tizer. adv. vz. ru.
Т е м а 1.2. Структура операционных систем (2ч)
Структура операционных систем. Классификация операционных систем по различным критериям: количеству пользователей, обрабатываемых процессов, разрядности кода, типу интерфейса, использования ресурсов, методу организации вычислительных процессов.
Основным предназначением ОС является организация эффективных и надежных вычислений, создание различных интерфейсов для взаимодействия с этими вычислениями и с самой вычислительной системой.
Широко известно высказывание, согласно которому любая наука начинается с классификации. Само собой, что вариантов классификации может быть очень много, здесь все будет зависеть от выбранного признака, по которому один объект мы будем отличать от другого. Однако, что касается ОС, здесь уже давно сформировалось относительно небольшое количество классификаций:
по назначению,
по режиму обработки задач,
по способу взаимодействия с системой,
по способам построения (архитектурным особенностям системы).
Прежде всего, традиционно различают ОС общего и специального назначения.
ОС специального назначения, в свою очередь, подразделяются на ОС для носимых микрокомпьютеров и различных встроенных систем, организации и ведения баз данных, решения задач реального времени и т. п. Еще не так давно операционные системы для персональных компьютеров относили к ОС специального назначения. Сегодня современные мультизадачные ОС для персональных компьютеров уже многими относятся к ОС общего назначения, поскольку их можно использовать для самых разнообразных целей — так велики их возможности.
По режиму обработки задач различают ОС, обеспечивающие однопрограммный и мультипрограммный (мультизадачный) режимы.
К однопрограммным ОС относится, например, всем известная, хотя нынче уже практически и не используемая MS DOS. Напомним, что под мультипрограммированием понимается способ организации вычислений, когда на однопроцессорной вычислительной системе создается видимость одновременного выполнения нескольких программ. Любая задержка в решении программы (например, для осуществления операций ввода-вывода данных) используется для выполнения других (таких же либо менее важных) программ. Иногда при этом говорят о мультизадачном режиме, причем, вообще говоря, термины «мультипрограммный режим» и «мультизадачный режим» — это не синонимы, хотя и близкие понятия. Основное принципиальное отличие этих терминов заключается в том, что мультипрограммный режим обеспечивает параллельное выполнение нескольких приложений, и при этом программисты, создающие эти программы, не должны заботиться о механизмах организации их параллельной работы (эти функции берет на себя сама ОС; именно она распределяет между выполняющимися приложениями ресурсы вычислительной системы, осуществляет необходимую синхронизацию вычислений и взаимодействие). Мультизадачный режим, наоборот, предполагает, что забота о параллельном выполнении и взаимодействии приложений ложится как раз на прикладных программистов. Хотя в современной технической и тем более научно-популярной литературе об этом различии часто забывают и тем самым вносят некоторую путаницу.
Можно, однако, заметить, что современные ОС для персональных компьютеров реализуют и мультипрограммный, и мультизадачный режимы.
Если принимать во внимание способ взаимодействия с компьютером, то можно говорить о диалоговых системах и системах пакетной обработки. Доля последних хоть и не убывает в абсолютном исчислении, но в процентном отношении она существенно сократилась по сравнению с диалоговыми системами.
При организации работы с вычислительной системой в диалоговом режиме можно говорить об однопользовательских (однотерминальных) и мультитерминальных ОС.
В мультитерминальных ОС с одной вычислительной системой одновременно могут работать несколько пользователей, каждый со своего терминала. При этом у пользователей возникает иллюзия, что у каждого из них имеется собственная вычислительная система.
Очевидно, что для организации мультитерминального доступа к вычислительной системе необходимо обеспечить мультипрограммный режим работы. В качестве одного из примеров мультитерминальных операционных систем для персональных компьютеров можно назвать Linux. Некая имитация мультитерминальных возможностей имеется и в системе Windows XP. В этой операционной системе каждый пользователь после регистрации (входа в систему) получает свою виртуальную машину. Если необходимо временно предоставить компьютер другому пользователю, вычислительные процессы первого можно не завершать, а просто для этого другого пользователя система создает новую виртуальную машину. В результате компьютер будет выполнять задачи и первого, и второго пользователя. Количество параллельно работающих виртуальных машин определяется имеющимися ресурсами.
Основной особенностью операционных систем реального времени (ОСРВ) является обеспечение обработки поступающих заданий в течение заданных интервалов времени, которые нельзя превышать. Поток заданий в общем случае не является планомерным и не может регулироваться оператором (характер следования событий можно предсказать лишь в редких случаях), то есть задания поступают в непредсказуемые моменты времени и без всякой очередности. В то время как в ОС, не предназначенных для решения задач реального времени, имеются некоторые накладные расходы процессорного времени на этапе инициирования задач (в ходе которого ОС распознает все пожелания пользователей относительно решения своих задач, загружает в оперативную память нужную программу и выделяет другие необходимые для ее выполнения ресурсы), в ОСРВ подобные затраты могут отсутствовать, так как набор задач обычно фиксирован, и вся информация о задачах известна еще до поступления запросов. Для подлинной реализации режима реального времени необходима (хотя этого и недостаточно) организация мультипрограммирования. Мультипрограммирование является основным средством повышения производительности вычислительной системы, а для решения задач реального времени производительность становится важнейшим фактором. Лучшие характеристики по производительности для систем реального времени обеспечиваются однотерминальными ОСРВ. Средства организации мультитерминального режима всегда замедляют работу системы в целом, но расширяют функциональные возможности системы. Одной из наиболее известных ОСРВ для персональных компьютеров является ОС QNX.
По основному архитектурному принципу операционные системы разделяются на микроядерные и макроядерные (монолитные).
В некоторой степени это разделение тоже условно, однако можно в качестве яркого примера микроядерной ОС привести ОСРВ QNX, тогда как в качестве монолитной можно назвать Windows 95/98 или ОС Linux. Если ядро ОС Windows мы не можем изменить, нам недоступны его исходные коды и у нас нет программы для сборки (компиляции) этого ядра, то в случае с Linux мы можем сами собрать то ядро, которое нам необходимо, включив в него те программные модули и драйверы, которые мы считаем целесообразным включить именно в ядро (ведь к ним можно обращаться и из ядра).
Т е м а 1.3 Виды программ операционной системы (2ч)
Управляющая программа. Системные обрабатывающие программы. ОС в процессе программирования.
ОС – комплекс программ, которые обеспечивают управление аппаратурой ЭВМ, планирование эффективного использования ее ресурсов, автоматизацию процесса подготовки программ и прохождения их в ЭВМ.
ОС является посредником между ЭВМ и человеком (пользователь, программист, инженер, оператор…). Другими словами ОС – логическое расширение аппаратуры в сторону человека, позволяя перейти от физического уровня аппаратуры к более высокому логическому уровню.
ОС осуществляет достаточно сложный процесс управления ресурсами ЭВМ, все нюансы которого скрыты от пользователя. Взаимодействие с программистами, операторами и т.д. осуществляется через интерфейс пользователя, который поддерживается ОС.
Компонентный состав ОС определяется набором функций, для выполнения которых она предназначена. Все программы ОС можно разбить на две группы: управляющая программа и системные обрабатывающие программы.
Управляющая программа – обязательный компонент любой ОС. Ее функции – планирование прохождения непрерывного потока заданий, управление распределением ресурсов, реализация принятых методов организации данных, управление операциями ввода-вывода (В-В), организация мультипрограммной работы, управление работоспособностью системы после сбоев и др.
Управляющая программа состоит из ряда компонентов, среди которых следует выделить четыре основных.
Управление статическими ресурсами (управление заданиями) осуществляет предварительное планирование потока заданий для выполнения и статич. распределение ресурсов между одновременно выполняемыми заданиями в процессе подготовки к выполнению. К статическим ресурсам относят разделы памяти (основной, виртуальной, внешней), доступные для использования устройства, допускающие только монопольное использование, наборы данных и др. такие ресурсы закрепляются за заданием или его частью с момента инициализации до момента завершения и используются обычно в монопольном порядке.
Управление динамическими ресурсами (управление задачами) осуществляет динамическое распределение ресурсов системы между несколькими задачами, решаемых одновременно в мультипрограммном режиме для выполняемого потока заданий. Входящие в ядро ОС и постоянно находящиеся в ОП.
Управление данными обеспечивает все операции В-В (т.е. обмен между ОП и ПУ) на физическом и логическом уровнях. Оно включает в себя ряд служб, обеспечивающих выполнение таких функций, как управление каталогом, управление распределением памяти прямого доступа, обработку ошибок В-В и др., реализует различные структуры данных и возможность доступа к ним.
Управление восстановлением регистрирует машинные сбои и отказы и восстанавливает работоспособность системы после сбоев, если это возможно.
Системные обрабатывающие программы выполняются под управлением управляющей системы, так же как и любая обрабатывающая программа, в т.ч. пользовательская. Это значит, что она в полном объеме может пользоваться услугами управляющей программы и не может самостоятельно выполнять системные функции. Так, обрабатывающая программа не может самостоятельно осуществлять собственный В-В. операции В-В обрабатывающая программа реализует с помощью запросов к управляющей программе, которая и выполняет непосредственно ввод и вывод данных. Централизованное выполнение системных функций управляющей программой позволяет выполнять их более эффективно и обеспечивает высокий уровень услуг для пользователя.
К системным обрабатывающим программам относятся программы, входящие в состав ОС: ассемблеры, трансляторы, редакторы связей, загрузчик, программы обслуживания и ряд других. Трансляторы, редактор связей и загрузчик образуют основу систем программирования, построенных на базе ОС.
Обзор современного ПО-Операционные системы
Операционная система является важнейшим программным компонентом любой вычислительной машины, поэтому от уровня реализации политики безопасности в каждой конкретной ОС во многом зависит и общая безопасность информационной системы. В первую очередь необходимо рассмотреть безопасное разделение оперативной памяти и файлов между процессами и пользователями и устойчивость ОС к сетевым атакам.
Операционная система MS-DOS является ОС реального режима микропроцессора Intel, а потому здесь не может идти речи о разделении оперативной памяти между процессами. Все резидентные программы и основная программа используют общее пространство ОЗУ. Защита файлов отсутствует, о сетевой безопасности трудно сказать что-либо определенное, поскольку на том этапе развития ПО драйверы для сетевого взаимодействия разрабатывались не фирмой MicroSoft, а сторонними разработчиками.
Семейство операционных систем Windows 95, 98, Millenium – это клоны, изначально ориентированные на работу в домашних ЭВМ. Эти операционные системы используют уровни привилегий защищенного режима, но не делают никаких дополнительных проверок и не поддерживают системы дескрипторов безопасности. В результате этого любое приложение может получить доступ ко всему объему доступной оперативной памяти, как с правами чтения, так и с правами записи. Меры сетевой безопасности присутствуют, однако, их реализация не на высоте. Более того, в версии Windows 95 была допущена основательная ошибка, позволяющая удаленно буквально за несколько пакетов приводить к "зависанию" ЭВМ, что также значительно подорвало репутацию ОС, в последующих версиях было сделано много шагов по улучшению сетевой безопасности этого клона.
Поколение операционных систем Windows NT, 2000 уже значительно более надежная разработка компании MicroSoft. Они явялются действительно многопользовательскими системами, надежно защищающими файлы различных пользователей на жестком диске (правда, шифрование данных все же не производится и файлы можно без проблем прочитать, загрузившись с диска другой операционной системы – например, MS-DOS). Данные ОС активно используют возможности защищенного режима процессоров Intel, и могут надежно защитить данные и код процесса от других программ, если только он сам не захочет предоставлять к ним дополнительного доступа извне процесса.
За долгое время разработки было учтено множество различных сетевых атак и ошибок в системе безопасности. Исправления к ним выходили в виде блоков обновлений (англ. service pack). На сегодняшний день для Windows NT 4.0 самым последним является обновление "Service Pack 6", естественно все исправления, включенные в него были учтены и при разработке Windows 2000 (service pack 4). Таким образом, две эти операционные системы имеют примерно равную (и очень высокую) систему безопасности, которая постоянно повышается за счет выхода новых блоков обновлений.
Другая ветвь ОС основана на операционной системе UNIX. Эта ОС изначально разрабатывалась как сетевая и многопользовательская, а потому сразу же содержала в себе средства информационной безопасности. Практически все широко распространенные UNIX подобные ОС прошли долгий путь разработки и по мере модификации учли все открытые за это время способы атак. Хорошо себя зарекомендовали: LINUX (S.U.S.E.), OpenBSD, FreeBSD, Sun Solaris. Естественно все сказанное относится к последним версиям этих операционных систем. Основные ошибки в этих системах относятся уже не к ядру, которое работает безукоризненно, а к системным и прикладным утилитам. Наличие ошибок в них часто приводит к потере всего запаса прочности системы.
Т е м а 1.4 Сетевые операционные системы.
Структура сетевой операционной системы. Одноранговые сетевые ОС и ОС с выделенными серверами. ОС для рабочих групп и ОС для сетей масштаба предприятия
Сетевая операционная система составляет основу любой вычислительной сети. Каждый компьютер в сети в значительной степени автономен, поэтому под сетевой операционной системой в широком смысле понимается совокупность операционных систем отдельных компьютеров, взаимодействующих с целью обмена сообщениями и разделения ресурсов по единым правилам - протоколам. В узком смысле сетевая ОС - это операционная система отдельного компьютера, обеспечивающая ему возможность работать в сети.
Рис. 1.1. Структура сетевой ОС
В сетевой операционной системе отдельной машины можно выделить несколько частей (рисунок 1.1):
Средства управления локальными ресурсами компьютера: функции распределения оперативной памяти между процессами, планирования и диспетчеризации процессов, управления процессорами в мультипроцессорных машинах, управления периферийными устройствами и другие функции управления ресурсами локальных ОС.
Средства предоставления собственных ресурсов и услуг в общее пользование - серверная часть ОС (сервер). Эти средства обеспечивают, например, блокировку файлов и записей, что необходимо для их совместного использования; ведение справочников имен сетевых ресурсов; обработку запросов удаленного доступа к собственной файловой системе и базе данных; управление очередями запросов удаленных пользователей к своим периферийным устройствам.
Средства запроса доступа к удаленным ресурсам и услугам и их использования - клиентская часть ОС (редиректор). Эта часть выполняет распознавание и перенаправление в сеть запросов к удаленным ресурсам от приложений и пользователей, при этом запрос поступает от приложения в локальной форме, а передается в сеть в другой форме, соответствующей требованиям сервера. Клиентская часть также осуществляет прием ответов от серверов и преобразование их в локальный формат, так что для приложения выполнение локальных и удаленных запросов неразличимо.
Коммуникационные средства ОС, с помощью которых происходит обмен сообщениями в сети. Эта часть обеспечивает адресацию и буферизацию сообщений, выбор маршрута передачи сообщения по сети, надежность передачи и т.п., то есть является средством транспортировки сообщений.
В зависимости от функций, возлагаемых на конкретный компьютер, в его операционной системе может отсутствовать либо клиентская, либо серверная части.
На рисунке 1.2 показано взаимодействие сетевых компонентов. Здесь компьютер 1 выполняет роль "чистого" клиента, а компьютер 2 - роль "чистого" сервера, соответственно на первой машине отсутствует серверная часть, а на второй - клиентская. На рисунке отдельно показан компонент клиентской части - редиректор. Именно редиректор перехватывает все запросы, поступающие от приложений, и анализирует их. Если выдан запрос к ресурсу данного компьютера, то он переадресовывается соответствующей подсистеме локальной ОС, если же это запрос к удаленному ресурсу, то он переправляется в сеть. При этом клиентская часть преобразует запрос из локальной формы в сетевой формат и передает его транспортной подсистеме, которая отвечает за доставку сообщений указанному серверу. Серверная часть операционной системы компьютера 2 принимает запрос, преобразует его и передает для выполнения своей локальной ОС. После того, как результат получен, сервер обращается к транспортной подсистеме и направляет ответ клиенту, выдавшему запрос. Клиентская часть преобразует результат в соответствующий формат и адресует его тому приложению, которое выдало запрос.
Рис. 1.2. взаимодействие компонентов операционной системы при взаимодействии компьютеров
На практике сложилось несколько подходов к построению сетевых операционных систем (рисунок 1.3).
Рис. 1.3. Варианты построения сетевых ОС
Первые сетевые ОС представляли собой совокупность существующей локальной ОС и надстроенной над ней сетевой оболочки. При этом в локальную ОС встраивался минимум сетевых функций, необходимых для работы сетевой оболочки, которая выполняла основные сетевые функции. Примером такого подхода является использование на каждой машине сети операционной системы MS DOS (у которой начиная с ее третьей версии появились такие встроенные функции, как блокировка файлов и записей, необходимые для совместного доступа к файлам). Принцип построения сетевых ОС в виде сетевой оболочки над локальной ОС используется и в современных ОС, таких, например, как LANtastic или Personal Ware.
Однако более эффективным представляется путь разработки операционных систем, изначально предназначенных для работы в сети. Сетевые функции у ОС такого типа глубоко встроены в основные модули системы, что обеспечивает их логическую стройность, простоту эксплуатации и модификации, а также высокую производительность. Примером такой ОС является система Windows NT фирмы Microsoft, которая за счет встроенности сетевых средств обеспечивает более высокие показатели производительности и защищенности информации по сравнению с сетевой ОС LAN Manager той же фирмы (совместная разработка с IBM), являющейся надстройкой над локальной операционной системой OS/2.
Одноранговые сетевые ОС и ОС с выделенными серверами
В зависимости от того, как распределены функции между компьютерами сети, сетевые операционные системы, а следовательно, и сети делятся на два класса: одноранговые и двухранговые (рисунок 1.4). Последние чаще называют сетями с выделенными серверами.
(а)
(б)
Рис. 1.4. (а) - Одноранговая сеть, (б) - Двухранговая сеть
Если компьютер предоставляет свои ресурсы другим пользователям сети, то он играет роль сервера. При этом компьютер, обращающийся к ресурсам другой машины, является клиентом. Как уже было сказано, компьютер, работающий в сети, может выполнять функции либо клиента, либо сервера, либо совмещать обе эти функции.
Если выполнение каких-либо серверных функций является основным назначением компьютера (например, предоставление файлов в общее пользование всем остальным пользователям сети или организация совместного использования факса, или предоставление всем пользователям сети возможности запуска на данном компьютере своих приложений), то такой компьютер называется выделенным сервером. В зависимости от того, какой ресурс сервера является разделяемым, он называется файл-сервером, факс-сервером, принт-сервером, сервером приложений и т.д.
Очевидно, что на выделенных серверах желательно устанавливать ОС, специально оптимизированные для выполнения тех или иных серверных функций. Поэтому в сетях с выделенными серверами чаще всего используются сетевые операционные системы, в состав которых входит нескольких вариантов ОС, отличающихся возможностями серверных частей. Например, сетевая ОС Novell NetWare имеет серверный вариант, оптимизированный для работы в качестве файл-сервера, а также варианты оболочек для рабочих станций с различными локальными ОС, причем эти оболочки выполняют исключительно функции клиента. Другим примером ОС, ориентированной на построение сети с выделенным сервером, является операционная система Windows NT. В отличие от NetWare, оба варианта данной сетевой ОС - Windows NT Server (для выделенного сервера) и Windows NT Workstation (для рабочей станции) - могут поддерживать функции и клиента и сервера. Но серверный вариант Windows NT имеет больше возможностей для предоставления ресурсов своего компьютера другим пользователям сети, так как может выполнять более широкий набор функций, поддерживает большее количество одновременных соединений с клиентами, реализует централизованное управление сетью, имеет более развитые средства защиты.
Выделенный сервер не принято использовать в качестве компьютера для выполнения текущих задач, не связанных с его основным назначением, так как это может уменьшить производительность его работы как сервера. В связи с такими соображениями в ОС Novell NetWare на серверной части возможность выполнения обычных прикладных программ вообще не предусмотрена, то есть сервер не содержит клиентской части, а на рабочих станциях отсутствуют серверные компоненты. Однако в других сетевых ОС функционирование на выделенном сервере клиентской части вполне возможно. Например, под управлением Windows NT Server могут запускаться обычные программы локального пользователя, которые могут потребовать выполнения клиентских функций ОС при появлении запросов к ресурсам других компьютеров сети. При этом рабочие станции, на которых установлена ОС Windows NT Workstation, могут выполнять функции невыделенного сервера.
Важно понять, что несмотря на то, что в сети с выделенным сервером все компьютеры в общем случае могут выполнять одновременно роли и сервера, и клиента, эта сеть функционально не симметрична: аппаратно и программно в ней реализованы два типа компьютеров - одни, в большей степени ориентированные на выполнение серверных функций и работающие под управлением специализированных серверных ОС, а другие - в основном выполняющие клиентские функции и работающие под управлением соответствующего этому назначению варианта ОС. Функциональная несимметричность, как правило, вызывает и несимметричность аппаратуры - для выделенных серверов используются более мощные компьютеры с большими объемами оперативной и внешней памяти. Таким образом, функциональная несимметричность в сетях с выделенным сервером сопровождается несимметричностью операционных систем (специализация ОС) и аппаратной несимметричностью (специализация компьютеров).
В одноранговых сетях все компьютеры равны в правах доступа к ресурсам друг друга. Каждый пользователь может по своему желанию объявить какой-либо ресурс своего компьютера разделяемым, после чего другие пользователи могут его эксплуатировать. В таких сетях на всех компьютерах устанавливается одна и та же ОС, которая предоставляет всем компьютерам в сети потенциально равные возможности. Одноранговые сети могут быть построены, например, на базе ОС LANtastic, Personal Ware, Windows for Workgroup, Windows NT Workstation.
В одноранговых сетях также может возникнуть функциональная несимметричность: одни пользователи не желают разделять свои ресурсы с другими, и в таком случае их компьютеры выполняют роль клиента, за другими компьютерами администратор закрепил только функции по организации совместного использования ресурсов, а значит они являются серверами, в третьем случае, когда локальный пользователь не возражает против использования его ресурсов и сам не исключает возможности обращения к другим компьютерам, ОС, устанавливаемая на его компьютере, должна включать и серверную, и клиентскую части. В отличие от сетей с выделенными серверами, в одноранговых сетях отсутствует специализация ОС в зависимости от преобладающей функциональной направленности - клиента или сервера. Все вариации реализуются средствами конфигурирования одного и того же варианта ОС.
Одноранговые сети проще в организации и эксплуатации, однако они применяются в основном для объединения небольших групп пользователей, не предъявляющих больших требований к объемам хранимой информации, ее защищенности от несанкционированного доступа и к скорости доступа. При повышенных требованиях к этим характеристикам более подходящими являются двухранговые сети, где сервер лучше решает задачу обслуживания пользователей своими ресурсами, так как его аппаратура и сетевая операционная система специально спроектированы для этой цели.
ОС для рабочих групп и ОС для сетей масштаба предприятия
Сетевые операционные системы имеют разные свойства в зависимости от того, предназначены они для сетей масштаба рабочей группы (отдела), для сетей масштаба кампуса или для сетей масштаба предприятия.
Сети отделов - используются небольшой группой сотрудников, решающих общие задачи. Главной целью сети отдела является разделение локальных ресурсов, таких как приложения, данные, лазерные принтеры и модемы. Сети отделов обычно не разделяются на подсети.
Сети кампусов - соединяют несколько сетей отделов внутри отдельного здания или внутри одной территории предприятия. Эти сети являются все еще локальными сетями, хотя и могут покрывать территорию в несколько квадратных километров. Сервисы такой сети включают взаимодействие между сетями отделов, доступ к базам данных предприятия, доступ к факс-серверам, высокоскоростным модемам и высокоскоростным принтерам.
Сети предприятия (корпоративные сети) - объединяют все компьютеры всех территорий отдельного предприятия. Они могут покрывать город, регион или даже континент. В таких сетях пользователям предоставляется доступ к информации и приложениям, находящимся в других рабочих группах, других отделах, подразделениях и штаб-квартирах корпорации.
Главной задачей операционной системы, используемой в сети масштаба отдела, является организация разделения ресурсов, таких как приложения, данные, лазерные принтеры и, возможно, низкоскоростные модемы. Обычно сети отделов имеют один или два файловых сервера и не более чем 30 пользователей. Задачи управления на уровне отдела относительно просты. В задачи администратора входит добавление новых пользователей, устранение простых отказов, инсталляция новых узлов и установка новых версий программного обеспечения. Операционные системы сетей отделов хорошо отработаны и разнообразны, также, как и сами сети отделов, уже давно применяющиеся и достаточно отлаженные. Такая сеть обычно использует одну или максимум две сетевые ОС. Чаще всего это сеть с выделенным сервером NetWare 3.x или Windows NT, или же одноранговая сеть, например сеть Windows for Workgroups.
Пользователи и администраторы сетей отделов вскоре осознают, что они могут улучшить эффективность своей работы путем получения доступа к информации других отделов своего предприятия. Если сотрудник, занимающийся продажами, может получить доступ к характеристикам конкретного продукта и включить их в презентацию, то эта информация будет более свежей и будет оказывать большее влияние на покупателей. Если отдел маркетинга может получить доступ к характеристикам продукта, который еще только разрабатывается инженерным отделом, то он может быстро подготовить маркетинговые материалы сразу же после окончания разработки.
Итак, следующим шагом в эволюции сетей является объединение локальных сетей нескольких отделов в единую сеть здания или группы зданий. Такие сети называют сетями кампусов. Сети кампусов могут простираться на несколько километров, но при этом глобальные соединения не требуются.
Операционная система, работающая в сети кампуса, должна обеспечивать для сотрудников одних отделов доступ к некоторым файлам и ресурсам сетей других отделов. Услуги, предоставляемые ОС сетей кампусов, не ограничиваются простым разделением файлов и принтеров, а часто предоставляют доступ и к серверам других типов, например, к факс-серверам и к серверам высокоскоростных модемов. Важным сервисом, предоставляемым операционными системами данного класса, является доступ к корпоративным базам данных, независимо от того, располагаются ли они на серверах баз данных или на миникомпьютерах.
Именно на уровне сети кампуса начинаются проблемы интеграции. В общем случае, отделы уже выбрали для себя типы компьютеров, сетевого оборудования и сетевых операционных систем. Например, инженерный отдел может использовать операционную систему UNIX и сетевое оборудование Ethernet, отдел продаж может использовать операционные среды DOS/Novell и оборудование Token Ring. Очень часто сеть кампуса соединяет разнородные компьютерные системы, в то время как сети отделов используют однотипные компьютеры.
Корпоративная сеть соединяет сети всех подразделений предприятия, в общем случае находящихся на значительных расстояниях. Корпоративные сети используют глобальные связи (WAN links) для соединения локальных сетей или отдельных компьютеров.
Пользователям корпоративных сетей требуются все те приложения и услуги, которые имеются в сетях отделов и кампусов, плюс некоторые дополнительные приложения и услуги, например, доступ к приложениям мейнфреймов и миникомпьютеров и к глобальным связям. Когда ОС разрабатывается для локальной сети или рабочей группы, то ее главной обязанностью является разделение файлов и других сетевых ресурсов (обычно принтеров) между локально подключенными пользователями. Такой подход не применим для уровня предприятия. Наряду с базовыми сервисами, связанными с разделением файлов и принтеров, сетевая ОС, которая разрабатывается для корпораций, должна поддерживать более широкий набор сервисов, в который обычно входят почтовая служба, средства коллективной работы, поддержка удаленных пользователей, факс-сервис, обработка голосовых сообщений, организация видеоконференций и др.
Кроме того, многие существующие методы и подходы к решению традиционных задач сетей меньших масштабов для корпоративной сети оказались непригодными. На первый план вышли такие задачи и проблемы, которые в сетях рабочих групп, отделов и даже кампусов либо имели второстепенное значение, либо вообще не проявлялись. Например, простейшая для небольшой сети задача ведения учетной информации о пользователях выросла в сложную проблему для сети масштаба предприятия. А использование глобальных связей требует от корпоративных ОС поддержки протоколов, хорошо работающих на низкоскоростных линиях, и отказа от некоторых традиционно используемых протоколов (например, тех, которые активно используют широковещательные сообщения). Особое значение приобрели задачи преодоления гетерогенности - в сети появились многочисленные шлюзы, обеспечивающие согласованную работу различных ОС и сетевых системных приложений.
К признакам корпоративных ОС могут быть отнесены также следующие особенности.
Поддержка приложений. В корпоративных сетях выполняются сложные приложения, требующие для выполнения большой вычислительной мощности. Такие приложения разделяются на несколько частей, например, на одном компьютере выполняется часть приложения, связанная с выполнением запросов к базе данных, на другом - запросов к файловому сервису, а на клиентских машинах - часть, реализующая логику обработки данных приложения и организующая интерфейс с пользователем. Вычислительная часть общих для корпорации программных систем может быть слишком объемной и неподъемной для рабочих станций клиентов, поэтому приложения будут выполняться более эффективно, если их наиболее сложные в вычислительном отношении части перенести на специально предназначенный для этого мощный компьютер - сервер приложений.
Сервер приложений должен базироваться на мощной аппаратной платформе (мультипроцессорные системы, часто на базе RISC-процессоров, специализированные кластерные архитектуры). ОС сервера приложений должна обеспечивать высокую производительность вычислений, а значит поддерживать многонитевую обработку, вытесняющую многозадачность, мультипроцессирование, виртуальную память и наиболее популярные прикладные среды (UNIX, Windows, MS-DOS, OS/2). В этом отношении сетевую ОС NetWare трудно отнести к корпоративным продуктам, так как в ней отсутствуют почти все требования, предъявляемые к серверу приложений. В то же время хорошая поддержка универсальных приложений в Windows NT собственно и позволяет ей претендовать на место в мире корпоративных продуктов.
Справочная служба. Корпоративная ОС должна обладать способностью хранить информацию обо всех пользователях и ресурсах таким образом, чтобы обеспечивалось управление ею из одной центральной точки. Подобно большой организации, корпоративная сеть нуждается в централизованном хранении как можно более полной справочной информации о самой себе (начиная с данных о пользователях, серверах, рабочих станциях и кончая данными о кабельной системе). Естественно организовать эту информацию в виде базы данных. Данные из этой базы могут быть востребованы многими сетевыми системными приложениями, в первую очередь системами управления и администрирования. Кроме этого, такая база полезна при организации электронной почты, систем коллективной работы, службы безопасности, службы инвентаризации программного и аппаратного обеспечения сети, да и для практически любого крупного бизнес-приложения.
База данных, хранящая справочную информацию, предоставляет все то же многообразие возможностей и порождает все то же множество проблем, что и любая другая крупная база данных. Она позволяет осуществлять различные операции поиска, сортировки, модификации и т.п., что очень сильно облегчает жизнь как администраторам, так и пользователям. Но за эти удобства приходится расплачиваться решением проблем распределенности, репликации и синхронизации.
В идеале сетевая справочная информация должна быть реализована в виде единой базы данных, а не представлять собой набор баз данных, специализирующихся на хранении информации того или иного вида, как это часто бывает в реальных операционных системах. Например, в Windows NT имеется по крайней мере пять различных типов справочных баз данных. Главный справочник домена (NT Domain Directory Service) хранит информацию о пользователях, которая используется при организации их логического входа в сеть. Данные о тех же пользователях могут содержаться и в другом справочнике, используемом электронной почтой Microsoft Mail. Еще три базы данных поддерживают разрешение низкоуровневых адресов: WINS - устанавливает соответствие Netbios-имен IP-адресам, справочник DNS - сервер имен домена - оказывается полезным при подключении NT-сети к Internet, и наконец, справочник протокола DHCP используется для автоматического назначения IP-адресов компьютерам сети. Ближе к идеалу находятся справочные службы, поставляемые фирмой Banyan (продукт Streettalk III) и фирмой Novell (NetWare Directory Services), предлагающие единый справочник для всех сетевых приложений. Наличие единой справочной службы для сетевой операционной системы - один из важнейших признаков ее корпоративности.
Безопасность. Особую важность для ОС корпоративной сети приобретают вопросы безопасности данных. С одной стороны, в крупномасштабной сети объективно существует больше возможностей для несанкционированного доступа - из-за децентрализации данных и большой распределенности "законных" точек доступа, из-за большого числа пользователей, благонадежность которых трудно установить, а также из-за большого числа возможных точек несанкционированного подключения к сети. С другой стороны, корпоративные бизнес-приложения работают с данными, которые имеют жизненно важное значение для успешной работы корпорации в целом. И для защиты таких данных в корпоративных сетях наряду с различными аппаратными средствами используется весь спектр средств защиты, предоставляемый операционной системой: избирательные или мандатные права доступа, сложные процедуры аутентификации пользователей, программная шифрация. http://citforum.ru/operating_systems/sos/glava_4.shtml
Т е м а 1.5 Функции, выполняемые операционной системой
Супервизор задач и его функции. Мультипрограммный режим работы.
Основные функции операционных систем:
Прием от пользователя (или от оператора системы) заданий, или команд, сформулированных на соответствующем языке, и их обработка. Задания могут передаваться в виде текстовых директив (команд) оператора или в форме указаний, выполняемых с помощью манипулятора (например, с помощью мыши). Эти команды связаны, прежде всего, с запуском (приостановкой, остановкой) программ, с операциями над файлами (получить перечень файлов в текущем каталоге, создать, переименовать, скопировать, переместить тот или иной файл и др.), хотя имеются и иные команды.
Загрузка в оперативную память подлежащих исполнению программ.
Распределение памяти, а в большинстве современных систем и организация виртуальной памяти.
Запуск программы (передача ей управления, в результате чего процессор исполняет программу).
Идентификация всех программ и данных.
Прием и исполнение различных запросов от выполняющихся приложений. Операционная система умеет выполнять очень большое количество системных функций (сервисов), которые могут быть запрошены из выполняющейся программы. Обращение к этим сервисам осуществляется по соответствующим правилам, которые и определяют интерфейс прикладного программирования (Application Program Interface, API) этой операционной системы.
Обслуживание всех операций ввода-вывода.
Обеспечение работы систем управлений файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения.
Обеспечение режима мультипрограммирования, то есть организация параллельного выполнения двух или более программ на одном процессоре, создающая видимость их одновременного исполнения.
Планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания.
Организация механизмов обмена сообщениями и данными между выполняющимися программами.
Для сетевых операционных систем характерной является функция обеспечения взаимодействия связанных между собой компьютеров.
Защита одной программы от влияния другой, обеспечение сохранности данных, защита самой операционной системы от исполняющихся на компьютере приложений.
Аутентификация и авторизация пользователей (для большинства диалоговых операционных систем). Под аутентификацией понимается процедура проверки имени пользователя и его пароля на соответствие тем значениям, которые хранятся в его учетной записи. Очевидно, что если входное имя (login) пользователя и его пароль совпадают, то, скорее всего, это и будет тот самый пользователь. Термин авторизация означает, что в соответствии с учетной записью пользователя, который прошел аутентификацию, ему (и всем запросам, которые будут идти к операционной системе от его имени) назначаются определенные права (привилегии), определяющие, что он может, а что не может делать на компьютере.
Удовлетворение жестким ограничениям на время ответа в режиме реального времени (характерно для операционных систем реального времени).
Обеспечение работы систем программирования, с помощью которых пользователи готовят свои программы.
Предоставление услуг на случай частичного сбоя системы.
Операционная система изолирует аппаратное обеспечение компьютера от прикладных программ пользователей. И пользователь, и его программы взаимодействуют с компьютером через интерфейсы операционной системы.
Выводы
ОС - это комплекс взаимосвязанных программ, предназначенный для повышения эффективности аппаратуры компьютера путем рационального управления его ресурсами ему расширенной виртуальной машины.
К числу основных ресурсов, управление которыми осуществляет ОС, относятся процессоры, основная память, таймеры, наборы данных, диски, накопители на магнитных лентах, принтеры, сетевые устройства и некоторые другие. Ресурсы распределяются между процессами. Для решения задач управления ресурсами разные ОС используют различные алгоритмы, особенности которых в конечном счете и определяют облик ОС.
Наиболее важными подсистемами ОС являются подсистемы управления процессами, памятью, файлами и внешними устройствами, а также подсистемы пользовательского интерфейса, защиты данных и администрирования.
Прикладному программисту возможности ОС доступны в виде функций, составляющих интерфейс прикладного программирования (API).
Супервизор обеспечивает выполнение как одной задачи, так и нескольких одновременно. Управление задачами основывается на формальном представлении их в системе. Каждой задаче присваивается приоритет и определяется ее состояние. Если задача ожидает завершения какого-либо события, она находится в состоянии ожидания. Задача может ожидать, например, окончания операции ввода-вывода, загрузки подпрограммы, выполнения какой-либо функции Супервизора. Задача, имеющая все ресурсы, кроме времени центрального процессора, находится в состоянии готовности. http://www.ngpedia.ru/id493711p1.html
Надо отметить, что самые первые программисты работали непосредственно за пультом ЭВМ (т.е.
в так называемом диалоговом режиме). Затем из экономических соображений это стало нерациональ-
ным, так как программисты слишком долго искали и исправляли ошибки в своих программах или
анализировали результаты расчётов, и в это время ЭВМ простаивала. Тогда и появился новый, па-
кетный режим работы, и программистов перестали пускать в машинный зал за пульт ЭВМ. Это на-
звание подразумевает, что подлежащие счёту программы собираются в некоторый "пакет" (для ЭВМ
первых поколений это был деревянный или металлический ящик, наполненный программами, каждая
программа была в отдельной пачке перфокарт, скреплённой резинками).
Одним из принципов Фон Неймана, как мы знаем, является принцип последовательного выпол-
нения команд программы. Более того, архитектура машин Фон Неймана предполагает, что последо-
вательно выполняются не только команды текущей программы, но также и сами эти программы.
Другими словами, пока одна программа полностью не заканчивается, следующая программа не за-
гружается в память и не начинает выполняться. Именно так и работали первые ЭВМ (вспомним, как
работала наша учебная трёхадресная ЭВМ УМ-3).
Сейчас мы познакомимся с новым и весьма важным понятием – мультипрограммным (иногда го-
ворят, многопрограммным) режимом работы ЭВМ. Мультипрограммный режим работы означает, что
в оперативной памяти компьютера одновременно находятся несколько независимых друг от друга и
готовых к счёту программ пользователей, времена выполнения которых перекрываются.
1
Заметим
также, что при мультипрограммном режиме работы в памяти ЭВМ одновременно могут находиться
не только программы разных пользователей, но и несколько независимых программ одного пользо-
вателя. Независимость программ означает, что они автоматически не обмениваются между собой
данными в процессе счёта.
Как Вы уже наверно знаете, компьютеры принято делить на поколения. Мультипрограммный
режим работы появился только на ЭВМ, начиная с 3-го поколения, на первых компьютерах его не
было [3]. Сейчас нам сначала предстоит разобраться, а для чего вообще может потребоваться, чтобы
в памяти одновременно находилось несколько программ пользователей. Этот вопрос вполне естест-
венный, так как раньше у большинства компьютеров был только один центральный процессор, так
что одновременно могли выполняться команды только одной программы, а остальные программы в
это время будут просто занимать место в оперативной памяти.
Частично мы уже обосновали необходимость присутствия в оперативной памяти нескольких
программ, когда изучали систему прерываний. Как правило, при возникновении прерывания цен-
тральный процессор производит автоматическое переключение на некоторую другую программу,
которая тоже, конечно, должна при этом находиться в оперативной памяти. Здесь, однако, можно
возразить, что все программы, на которые производится автоматическое переключение при прерыва-
нии, являются системными программами (входят в операционную систему),
2
а при определении
мультипрограммного режима работы мы особо подчёркивали, что в оперативной памяти могут одно-
временно находиться несколько разных программ обычных пользователей.
Следует указать две основные причины, по которым может понадобиться мультипрограммный
режим работы. Во-первых, может потребоваться одновременно выполнять несколько программ. На-
пример, это могут быть программы, которые в диалоговом режиме работают с разными пользовате-
лями (программисты Вася и Петя одновременно с разных терминалов, подключённых к одной ЭВМ,
отлаживают свои программы, см. рис. 13.1).
Правда, здесь имеет место уже упомянутая ранее трудность: так как центральный процессор на
компьютере может быть только один, то в каждый момент времени может выполняться или програм-
ма Васи, или программа Пети (ну, или служебная программа операционной системы при обработке
1
Эти программы, вообще говоря, могут присутствовать в оперативной памяти не целиком. Во-первых, они
могут использовать знакомую нам схему динамической загрузки, и, во-вторых, работать на так называемой
виртуальной памяти, при этом некоторые части программы могут временно отсутствовать в оперативной памя-
ти, находясь в так называемом файле подкачки (swap file) на внешней памяти.
2
На ЭВМ первых поколений "обычным" пользователям разрешалось писать свои собственные процедуры-
обработчики прерываний, однако в операционных системах современных ЭВМ это, как правило, запрещено.
Причина такого запрета будет понятна из нашего дальнейшего изложения мультипрограммного режима работы
ЭВМ. 2
прерывания). Эта трудность преодолевается введением специального режима работы ЭВМ – режима
разделения времени, который является частным случаем мультипрограммного режима. В режиме
разделения времени, используя сигналы прерывания от встроенных в компьютер часов (таймера),
служебная процедура-диспетчер переключает центральный процессор с одной задачи пользователя
на другую по истечении определённого кванта времени (обычно порядка единиц или десятков мил-
лисекунд). В таком режиме разделения времени (в русскоязычной литературе этот режим иногда
метко называли коммунальным использованием ЭВМ) и у Васи, и у Пети создаётся иллюзия, что
только его программа всё время считается на компьютере (правда, почему-то медленно ☺).
Оперативная память
Программа Васи
Программа Пети
. . .
Программы операци-
онной системы
Рис. 13.1. Одновременное нахождение в памяти
нескольких программ пользователей.
На рис. 13.2 показана временная диаграмма переключения времени работы центрального процес-
сора ЭВМ между находящимися в памяти программами.
Программа Васи
Программа Пети
Программа ОС
Рис. 13.2. Диаграмма загрузки центрального процессора ЭВМ
Если отвлечься от несколько шутливого примера с Васей и Петей, то можно заметить, что по-
требность в таком псевдо-одновременном счёте нескольких программ на компьютере с одним цен-
тральным процессором весьма распространена. Пусть, например, наш компьютер предназначен для
управления несколькими различными химическими реакторами на каком-нибудь заводе, или обслу-
живает запросы сразу многих абонентов в библиотеке и т.д. Заметим, что даже если центральных
процессоров на компьютере несколько (наиболее широко сейчас распространены так называемые
многоядерные процессоры), но одновременно находящихся в памяти задач может быть много боль-
ше, чем процессоров, поэтому этот вопрос по-прежнему актуален.
Другая причина широкого распространения мультипрограммного режима заключается в сле-
дующем. Наряду с главной частью – центральным процессором и оперативной памятью – в компью-
тере существует и большое количество так называемых периферийных (внешних) устройств, это дис-
ки, клавиатура, мышь, печатающие устройства, сетевые карты для работы с линиями связи и т.д. (см.
рис. 13.3). Все эти периферийные устройства предназначены для связи центральной части машины с
"внешним миром", и работают значительно более медленно, чем центральный процессор и оператив-
ная память. Имеется в виду, что все они значительно медленнее манипулируют данными. Например,
за то время, за которое лазерный принтер напечатает на бумаге всего один символ, оперативная па-3
мять способна выдать центральному процессору порядка нескольких миллионов байт, а сам цен-
тральный процессор способен за это время выполнить около одного миллиона команд.
Сеть
Клавиатура
Диски
Мышь
Оперативная
Память
Дисплей
Центральный
процессор
Печать
Рис. 13.3. Центральная и периферийная части компьютера.
Из этих соображений, очевидно, что в то время, когда по запросу некоторой программы произво-
дится обмен данными с медленными внешними устройствами, центральный процессор, как правило,
не сможет выполнять команды этой программы, т.е. будет простаивать. Например, рассмотрим слу-
чай, когда в программе Васи, написанной на Паскале, выполняются операторы:
Read(MyFile,X); Y:=X+1
Очевидно, что оператор присваивания Y:=X+1 не сможет начать выполняться, пока из файла не
будет прочитано значение переменной X. Вот здесь нам и пригодится способность программы-
диспетчера переключаться на выполнение других программ пользователей, тоже расположенных в
оперативной памяти. Теперь, пока одна программа пользователя выполняет свои команды на цен-
тральном процессоре, другая может выводить свои данные на принтер, третья – читать массив с дис-
ка в оперативную память, четвёртая – ждать ввода символа с клавиатуры и т.д. Правда, для того, что-
бы обеспечить такую возможность, мало наличия на компьютере одной системы прерываний. Преж-
де всего, необходимо научить периферийные устройства компьютера работать параллельно и отно-
сительно независимо от центрального процессора. Действительно, вспомните, что в машине Фон
Неймана всеми операциями с внешними устройствами управлял именно центральный процессор по
командам ввода/вывода, посылая им особые управляющие сигналы, которые мы изображали на схеме
одинарными стрелками, и, естественно, занимаясь этой работой, у центрального процессора уже не
было возможности выполнять ещё и другие команды программы.
Итак, мы обосновали полезность режима мультипрограммирования. Как уже говорилось, на пер-
вых ЭВМ этого режима работы не было. Сейчас мы сформулируем необходимые требования, кото-
рые предъявляются к аппаратуре компьютера, чтобы на этом компьютере было возможно реализо-
вать мультипрограммный режим работы.
Сначала заметим, что требование параллельной работы центрального процессора и периферий-
ных устройств не является совершенно необходимым для режима разделения времени, который, как
мы уже говорили, является частным случаем мультипрограммного режима работы. Поэтому мы не
будем включать это требование в перечень обязательных свойств аппаратуры ЭВМ для обеспече-
ния работы в мультипрограммном режиме. Скажем, однако, что параллельная работа периферийных
устройств и центрального процессора сильно повышает производительность компьютера и реализо-
вана практически на всех современных ЭВМ и на всех больших и супер-ЭВМ.
13.1. Требования к аппаратуре для обеспечения возможности работы в
мультипрограммном режиме
Итак, сформулируем необходимые требования к аппаратуре ЭВМ для обеспечения возможности
мультипрограммной работы. Особо подчеркнём, что это требования именно к аппаратуре ЭВМ, а не
к программному обеспечению.
Система прерываний. Система прерываний необходима как для режима разделения времени,
так и для обеспечения параллельной работы центрального процессора и периферийных устройств,
так как она обеспечивает саму возможность реакции на события и автоматического переключения с
одной программы на другую.
Механизм защиты памяти. Этот механизм обеспечивает безопасность одновременного нахож-
дения в оперативной памяти нескольких независимых программ. Защита памяти гарантирует, что од-
на программа не сможет случайно или же предумышленно обратиться в память другой программы4
(по записи или даже по чтению данных). Очевидно, что без такого механизма мультипрограммный
режим просто невозможен. Даже если не принимать во внимание "вредных" программистов, которые
специально захотят испортить или незаконно прочитать данные других программ, всегда существуют
большая вероятность таких действий из-за семантических ошибок в программах даже у "добропоря-
дочных" программистов (например, при выходе индекса за границу массива). Незаконное обращение
к чужым ресурсам (в частности, к чужой оперативной памяти) "по научному" называется несанкцио-
нированным доступом.
Механизм защиты оперативной памяти на современных ЭВМ устроен весьма сложно, и часто
связан с механизмом так называемой виртуальной памяти, который в полном объёме изучается в кур-
се, посвящённом операционным системам. Сейчас мы рассмотрим одну из простейших реализаций
механизма защиты памяти, так эта защита была сделана на некоторых первых ЭВМ 3-го поколения,
способных работать в мультипрограммном режиме.
В центральный процессор добавляются два новых регистра защиты памяти, обозначим их А
нач и Акон. На каждый из этих регистров можно загрузить любой адрес оперативной памяти (или адрес
начала и конца любого сегмента при сегментной организации памяти). Предположим теперь, что по-
сле загрузки некоторой программы в оперативную память она занимает сплошной участок памяти с
адресами от 20000010 до 50000010 включительно. Тогда загрузчик, перед передачей управления на
первую команду программы (у нас это часто была команда с меткой Start), присваивал регистрам
защиты памяти соответственно значения
Анач:=20000010 и Акон:=50000010
Далее, в центральный процессор добавлена способность, перед каждым обращением в опера-
тивную память по физическому адресу Афиз автоматически проверять условие
Анач ≤ Афиз ≤ Акон
Если условие истинно, т.е. программа обращается в свою область памяти, выполняется требуе-
мое обращение к памяти по записи или чтению данных. В противном случае доступ в оперативную
память не производится, и центральный процессор вырабатывает сигнал прерывания по событию
"попытка нарушения защиты памяти".
Описанный механизм защиты памяти очень легко реализовать, однако он обладает существен-
ным недостатком: каждая программа может занимать только один сплошной участок в оперативной
памяти. В то же время, как мы знаем, архитектура нашего компьютера допускает, чтобы каждый сег-
мент программы мог быть размещён на любом свободном месте оперативной памяти. В современных
ЭВМ это ограничение несущественно, так как на них реализован уже упоминавшейся механизм вир-
туальной памяти, который позволяет выделять для каждой программы любые участки адресов памя-
ти, независимо от того, заняты ли эти, как говорят, логические адреса другими программами или нет.
С другой стороны, если реализован механизм виртуальной памяти, то на его базе легко сделать и
другой, более совершенный механизм защиты памяти.
Аппарат привилегированных команд. Сейчас мы рассмотрим ещё одно необходимое свойст-
во аппаратуры, без которого невозможно реализовать мультипрограммный режим работы ЭВМ. Это
свойство иногда называется аппаратом привилегированных команд, а иногда – защищённым режи-
мом работы центрального процессора, и заключается оно в следующем: все команды, которые может
выполнять центральный процессор, разбиваются на два класса. Команды из одного класса называют-
ся обычными командами или командами пользователя, а команды из другого класса – привилеги-
рованными или запрещёнными командами.
Далее, в центральном процессоре располагается специальный одноразрядный регистр режима
работы, который может, естественно, принимать только два значения: 0 и 1. Значение этого регист-
ра и определяют тот режим, в котором в данный момент работает центральный процессор: обычный
режим (или режим пользователя) или привилегированный режим.
1
В привилегированном режиме
центральному процессору разрешается выполнять все команды языка машины, а в режиме пользова-
теля – только обычные (не привилегированные) команды. При попытке выполнить привилегирован-
ную команду в пользовательском режиме центральным процессором вырабатывается сигнал преры-
1
В архитектуре нашего компьютера регистр режима работы содержит два разряда и может принимать
значения 0, 1, 2 и 3. Практически всегда, однако, для указанных выше целей реализации защищённого режима
работы используются только два из этих четырёх значений (0 и 3). 5
вания, а сама команда, естественно, не выполняется. Из этого правила выполнения команд легко по-
нять и другое название для привилегированных команд – запрещённые команды, так как их выпол-
нение запрещено в режиме пользователя. Объясним теперь, почему без аппарата привилегированных
команд невозможно реализовать мультипрограммный режим работы ЭВМ.
Легко понять, что, например, команды, которые для рассмотренного выше механизма защиты
памяти заносят на регистры защиты Анач и Акон новые значения, должны быть привилегированными.
Действительно, если бы это было не так, то любая программа могла бы занести на эти регистры адре-
са начала и конца всей оперативной памяти, после чего получила бы возможность записывать данные
в любые области памяти. Ясно, что при этом и описанный выше механизм защиты памяти становится
совершенно бесполезным.
Привилегированными должны быть и все команды, которые обращаются к внешним (перифе-
рийным) устройствам. Например, нельзя разрешать запись на диск в режиме пользователя, так как
диск – это тоже общая память для всех программ, только внешняя, и одна программа может испор-
тить на диске данные (файлы), принадлежащие другим программам. То же самое относится и к печа-
тающему устройству: если разрешить всем программам бесконтрольно выводить свои данные на пе-
чать, то, конечно, разобраться в том, что же получится на бумаге, будет чаще всего невозможно. По-
этому, если работающие в мультипрограммном режиме программы Васи и Пети производят вывод на
единственный общий принтер, то на самом деле данные, которые печатает каждая программа пользо-
вателя, не выводятся сразу на печать, а записываются в специальный файл, который будет выводить-
ся на печать только после полного завершения этой программы. Таким образом, выводимые на пе-
чать данные Васи и Пети не перепутаются.
Итак, в мультипрограммном режиме программе пользователя запрещается выполнять многие
"опасные" команды, в частности команды, работающие с внешними устройствами (дисками, принте-
рами, линиями связи и т.д.). Как же тогда быть, если программе необходимо, например, считать дан-
ные из своего файла на диске в оперативную память? Выход один – программа пользователя должна
обратиться к определённым служебным процедурам, с просьбой выполнить для неё ту работу, кото-
рую сама программа пользователя сделать не в состоянии. Эти служебные процедуры, естественно,
должны работать в привилегированном режиме. Перед выполнением запроса из программы пользо-
вателя, такая служебная процедура проверяет, имеет ли эта программа пользователя право на запра-
шиваемое действие, например, что эта программа имеет необходимые полномочия на чтение из ука-
занного файла.
Переключение из привилегированного режима в режим пользователя обычно производится по
некоторой (не привилегированной) машинной команде. Значительно сложнее обстоит дело с такой
опасной операцией, как переключение центрального процессора из обычного режима работы в при-
вилегированный режим. Это переключение невозможно выполнить по какой-либо машинной коман-
де (чтобы это понять, достаточно задаться вопросом, должна ли сама эта команда переключения быть
привилегированной, или нет). Обычно переключение в привилегированный режим производится ав-
томатически при обработке центральным процессором сигнала прерывания, в этом случае процедура-
обработчик прерывания уже начинает свою работу в привилегированном режиме. Иногда переклю-
чение в привилегированный режим производится центральным процессором при вызове специаль-
ных системных процедур, которые имеют полномочия для работы в привилегированном режиме.
Таймер. Встроенные в компьютер электронные часы (таймер) появились ещё до возникновения
мультипрограммного режима работы. Тем не менее, легко понять, что без таймера мультипрограмм-
ный режим тоже невозможен. Действительно, это единственное внешнее устройство, которое гаран-
тированно и периодически посылает центральному процессору сигналы прерываний. Без таких сиг-
налов некоторые программы могли бы войти в выполнение бесконечного цикла (как говорят про-
граммисты – зациклиться), и ничто не могло бы вывести компьютер из этого состояния.
1
Итак, мы рассмотрели аппаратные средства, необходимые для обеспечения мультипрограмм-
ного режима работы ЭВМ. Остальные аппаратные возможности ЭВМ, которые часто называются при
1
Обычно при счёте в мультипрограммном режиме программа пользователя может сообщить операцион-
ной системе своё максимальное время счёта. Это не физическое время, а сумма всех квантов времени централь-
ного процессора, выделяемых для этой задачи. Можно сказать, что программа заводит для себя "будильник", на
котором выставляется время окончания её работы. По истечению этого максимального времени счёта програм-
ма пользователя получит соответствующий сигнал и может быть завершена. 6
ответе на этот вопрос (такие, как большая оперативная память, высокое быстродействие центрально-
го процессора, большая ёмкость дисков и другие) являются, конечно, желательными, но не являются
необходимыми.
Разумеется, кроме перечисленных аппаратных средств, для обеспечения мультипрограммной
работы совершенно необходимы и специальные программные средства, прежде всего операционная
система, поддерживающая режим мультипрограммной работы. Такая операционная система является
примерно на порядок более сложной, чем её предшественницы – операционные системы, не поддер-
живающие мультипрограммный режим работы. Всё это, однако, тема отдельного курса, а мы про-
должаем изучать архитектуру современных ЭВМ.
Вопросы и упражнения
1. Что называется пакетным режимом работы ЭВМ?
2. Дайте определение мультипрограммного режима работы ЭВМ. Когда этот режим необходим?
3. Что такое режим разделения времени и для чего он нужен?
4. Для чего нужна параллельная работа центрального процессора и устройств ввода/вывода?
5. Что такое аппарат привилегированных команд и почему он необходим для мультипрограммного режима работы ЭВМ?
6. Какие команды машины необходимо делать привилегированными?
7. Почему в языке машины не может существовать команды для переключения центрального процессора из обычного режима работы в привилегированный режим?
8. Что такое таймер и почему он необходим в мультипрограммном режиме работы?
9. Объясните, почему на рис. 13.2 между любыми двумя программами пользователя центральный процессор обязательно на некоторое время переключается на программу операционной cистемы. http://arch.cs.msu.su/Text/Chapter_13.pdf
Мультипрограммный режим работы. Современные вычислительные системы функционируют, как правило, в мультипрограммном режиме, в котором выполняется несколько программ одновременно. Для вычислительных систем с несколькими процессорами число одновременно выполняемых программ обычно существенно превосходит число используемых процессоров.
В режиме мультипрограммирования в основной памяти одновременно находится несколько программ, загруженных для выполнения. Число одновременно выполняемых программ определяет уровень мультипрограммирования. Центральный процессор в каждый момент времени может выполнять лишь одну из программ. Таким образом, параллельно выполняемые программы конкурируют между собой за обладание ресурсами вычислительной системы и в первую очередь за время центрального процессора. Каждая программа представляется в системе как задача (процесс). Таким образом, принято говорить об одновременно выполняемых задачах (или процессах), основой которых являются соответствующие программы, причем задача является единицей мультипрограммирования.
Задача, обладающая в текущий момент центральным процессором, называется активной. Она выполняется до тех пор, пока не окажется в состоянии ожидания какого-либо события (например, завершения операции ввода-вывода) или не будет прервана по каким-либо причинам операционной системой. Остальные задачи (кроме активной) находятся в состоянии готовности использования центрального процессора, либо ожидания какого-либо события (завершения операции ввода-вывода, истечения заданного интервала времени, завершения выполнения какой-либо программы и т.д.). После перевода активной задачи в состояние ожидания выбирается одна из готовых для выполнения задач, которая становится активной.
Программы, одновременно претендующие на использование центрального процессора, в мультипрограммном режиме упорядочиваются по приоритетам. В случае конфликтов управление получает программа с наивысшим приоритетом. Она переводится в активное состояние. Остальные конкурирующие программы, находящиеся в состоянии готовности, получают управление, если программы с более высокими приоритетами окажутся в состоянии ожидания.
Основой мультипрограммирования является совмещение операций центрального процессора с операциями ввода-вывода. Такое совмещение возможно в связи с тем, что центральный процессор не занимается выполнением операций ввода-вывода, а только инициирует их. После этого операции ввода-вывода выполняются каналами или процессорами ввода-вывода по самостоятельным программам параллельно с другими каналами и центральным процессором. http://www.electriz.ru
Т е м а 1.6 Система прерываний как средство организации многопрограммной работы ОС.
Виды прерываний. Алгоритмы обработки прерываний. Слово состояния процессора, векторы прерываний. Управление обработкой прерываний по маске и приоритету. Система обработки прерываний в микропроцессорах Intel. Программные прерывания, системные вызовы.
Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств вычислительной системы и реагировать на особые состояния, возникающие при работе процессора, то есть прерывание — это принудительная передача управления от выполняемой программы к системе (а через нее — к соответствующей программе обработки прерывания), происходящая при возникновении определенного события.
Идея прерывания была предложена также очень давно — в середине 50-х годов, — и можно без преувеличения сказать, что она внесла наиболее весомый вклад в развитие вычислительной техники. Основная цель введения прерываний — реализация асинхронного режима функционирования и распараллеливание работы отдельных устройств вычислительного комплекса.
Механизм прерываний реализуется аппаратно-программными средствами. Структуры систем прерывания (в зависимости от аппаратной архитектуры) могут быть самыми разными, но все они имеют одну общую особенность — прерывание непременно влечет за собой изменение порядка выполнения команд процессором.
Механизм обработки прерываний независимо от архитектуры вычислительной системы подразумевает выполнение некоторой последовательности шагов:
Установление факта прерывания (прием сигнала запроса на прерывание) и идентификация прерывания (в операционных системах идентификация прерывания иногда осуществляется повторно, на шаге 4).
Запоминание состояния прерванного процесса вычислений. Состояние процесса выполнения программы определяется, прежде всего, значением счетчика команд (адресом следующей команды, который, например, в 180x86 определяется регистрами CS и IP — указателем команды), содержимым регистров процессора, и может включать также спецификацию режима (например, режим пользовательский или привилегированный) и другую информацию.
Управление аппаратно передается на подпрограмму обработки прерывания. В простейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры — информация из слова состояния. В более развитых процессорах, например в 32-разрядных микропроцессорах фирмы Intel (начиная с i80386 и включая последние процессоры Pentium IV) и им подобных, осуществляются достаточно сложная процедура определения начального адреса соответствующей подпрограммы обработки прерывания п не менее сложная процедура инициализации рабочих регистров процессора.
Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью аппаратуры. В некоторых процессорах предусматривается запоминание довольно большого объема информации о состоянии прерванных вычислений.
Собственно выполнение программы, связанной с обработкой прерывания. Эта работа может быть выполнена той же подпрограммой, на которую было передано управление на шаге 3, но в операционных системах достаточно часто она реализуется путем последующего вызова соответствующей подпрограммы.
Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).
Возврат на прерванную программу.
Шаги 1-3 реализуются аппаратно, шаги 4-7 — программно.
На рис. показано, что при возникновении запроса на прерывание естественный ход вычислений нарушается и управление передается на программу обработки возникшего прерывания. При этом средствами аппаратуры сохраняется (как правило, с помощью механизмов стековой памяти) адрес той команды, с которой следует продолжить выполнение прерванной программы. После выполнения программы обработки прерывания управление возвращается на прерванную ранее программу посредством занесения в указатель команд сохраненного адреса команды, которую нужно было бы выполнить, если бы не возникло прерывание. Однако такая схема используется только в самых простых программных средах. В мультипрограммных операционных системах обработка прерываний происходит по более сложным схемам.
Итак, главные функции механизма прерываний — это:
распознавание или классификация прерываний;
передача управления соответствующему обработчику прерываний;
корректное возвращение к прерванной программе.
Переход от прерываемой программы к обработчику и обратно должен выполняться как можно быстрей. Одним из самых простых и быстрых методов является использование таблицы, содержащей перечень всех допустимых для компьютера прерываний и адреса соответствующих обработчиков. Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке (system stack).
Прерывания, возникающие при работе вычислительной системы, можно разделить на два основных класса: внешние (их иногда называют асинхронными) и внутренние (синхронные).
Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса, например:
прерывания от таймера;
прерывания от внешних устройств (прерывания по вводу-выводу);
прерывания по нарушению питания;
прерывания с пульта оператора вычислительной системы;
прерывания от другого процессора или другой вычислительной системы.
Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями. Примерами являются следующие запросы на прерывания:
при нарушении адресации (в адресной части выполняемой команды указан запрещенный или несуществующий адрес, обращение к отсутствующему сегменту или странице при организации механизмов виртуальной памяти);
при наличии в поле кода операции незадействованной двоичной комбинации;
при делении на ноль;
вследствие переполнения или исчезновения порядка;
от средств контроля (например, вследствие обнаружения ошибки четности, ошибок в работе различных устройств).
Могут еще существовать прерывания в связи с попыткой выполнить команду, которая сейчас запрещена. Во многих компьютерах часть команд должна выполняться только кодом самой операционной системы, но не прикладными программами. Это делается с целью повышения защищенности выполняемых на компьютере вычислений. Соответственно в аппаратуре предусмотрены различные режимы работы, и пользовательские программы выполняются в режиме, в котором некоторое подмножество команд, называемых привилегированными, не исполняется. К привилегированным командам помимо команд ввода-вывода относятся и команды переключения режима работа центрального процессора, и команды инициализации некоторых системных регистров процессора. При попытке использовать команду, запрещенную в данном режиме, происходит внутреннее прерывание, и управление передается самой операционной системе.
Наконец, существуют собственно программные прерывания. Эти прерывания происходят по соответствующей команде прерывания, то есть по этой команде процессор осуществляет практически те же действия, что и при обычных внутренних прерываниях. Этот механизм был специально введен для того, чтобы переключение на системные программные модули происходило не просто как переход на подпрограмму, а точно таким же образом, как и обычное прерывание. Этим, прежде всего, обеспечивается автоматическое переключение процессора в привилегированный режим с возможностью исполнения любых команд.
Сигналы, вызывающие прерывания, формируются вне процессора или в самом процессоре, они могут возникать одновременно. Выбор одного из них для обработки осуществляется на основе приоритетов, приписанных каждому тину прерывания. Так, со всей очевидностью, прерывания от схем контроля процессора должны обладать наивысшим приоритетом (действительно, если аппаратура работает неправильно, то не имеет смысла продолжать обработку информации). На рис. изображен обычный порядок (приоритеты) обработки прерываний в зависимости от типа прерываний. Учет приоритета может быть встроен в технические средства, а также определяться операционной системой, то есть кроме аппаратно реализованных приоритетов прерывания большинство вычислительных машин и комплексов допускают программно-аппаратное управление порядком обработки сигналов прерывания.
В
торой
способ, дополняя первый, позволяет
применять различные дисциплины
обслуживания прерываний.
Наличие сигнала прерывания не обязательно должно вызывать прерывание исполняющейся программы. Процессор может обладать средствами защиты от прерываний: отключение системы прерываний, маскирование (запрет) отдельных сигналов прерывания. Программное управление этими средствами (существуют специальные команды для управления работой системы прерываний) позволяет операционной системе регулировать обработку сигналов прерывания, заставляя процессор обрабатывать их сразу по приходу; откладывать обработку на некоторое время; полностью игнорировать прерывания. Обычно операция прерывания выполняется только после завершения выполнения текущей команды. Поскольку сигналы прерывания возникают в произвольные моменты времени, то на момент прерывания может существовать несколько сигналов прерывания, которые могут быть обработаны только последовательно. Чтобы обработать сигналы прерывания в разумном порядке, им (как уже отмечалось) присваиваются приоритеты. Сигнал с более высоким приоритетом обрабатывается в первую очередь, обработка остальных сигналов прерывания откладывается.
Программное управление специальными регистрами маски (маскирование сигналов прерывания) позволяет реализовать различные дисциплины обслуживания:
С относительными приоритетами, то есть обслуживание не прерывается даже при наличии запросов с более высокими приоритетами. После окончания обслуживания данного запроса обслуживается запрос с наивысшим приоритетом. Для организации такой дисциплины необходимо в программе обслуживания данного запроса наложить маски на все остальные сигналы прерывания или просто отключить систему прерываний.
С абсолютными приоритетами, то есть всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на время обработки прерывания замаскировать все запросы с более низким приоритетом. При этом возможно многоуровневое прерывание, то есть прерывание программ обработки прерываний. Число уровней прерывания в этом режиме изменяется и зависит от приоритета запроса.
По принципу стека, или, как иногда говорят, по дисциплине LCFS (Last Come First Served — последним пришел, первым обслужен), то есть запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Дли этого необходимо не накладывать маску ни на один из сигналов прерывания и не выключать систему прерываний.
Следует особо отметить, что для правильной реализации последних двух дисциплин нужно обеспечить полное маскирование системы прерываний при выполнении шагов 1-4 и 6-7. Это необходимо для того, чтобы не потерять запрос и правильно его обслужить. Многоуровневое прерывание должно происходить на этапе собственно обработки прерывания, а не на этапе перехода с одного процесса вычислений на другой.
Управление ходом выполнения задач со стороны операционной системы заключается в организации реакций на прерывания, в организации обмена информацией (данными и программами), в предоставлении необходимых ресурсов, в динамике выполнения задачи и в организации сервиса. Причины прерываний определяет операционная система (модуль, который называют супервизором прерываний), она же и выполняет действия, необходимые при данном прерывании и в данной ситуации. Поэтому в состав любой операционной системы реального времени прежде всего входят программы управления системой прерываний, контроля состояний задач и событий, синхронизации задач, средства распределения памяти и управления ею, а уже потом средства организации данных (с помощью файловых систем и т. д.). Следует однако заметить, что современная операционная система реального времени должна вносить в аппаратно-программный комплекс нечто большее, нежели просто обеспечение быстрой реакции на прерывания.
Как мы уже знаем, при появлении запроса на прерывание система прерываний идентифицирует сигнал и, если прерывания разрешены, то управление передается на соответствующую подпрограмму обработки. Из рис. 1.2 видно, что в подпрограмме обработки прерывания имеется две служебные секции. Это — первая секция, в которой осуществляется сохранение контекста прерываемых вычислений, который не смог быть сохранен на шаге 2, и последняя, заключительная секция, в которой, наоборот, осуществляется восстановление контекста. Для того чтобы система прерываний не среагировала повторно на сигнал запроса на прерывание, она обычно автоматически «закрывает» (отключает) прерывания, поэтому необходимо потом в подпрограмме обработки прерываний вновь включать систему прерываний. В соответствии с рассмотренными режимами обработки прерываний (с относительными и абсолютными приоритетами и по правилу LCFS) установка этих режимов осуществляется в конце первой секции подпрограммы обработки. Таким образом, на время выполнения центральной секции (в случае работы в режимах с абсолютными приоритетами и по дисциплине LCFS) прерывания разрешены. На время работы заключительной секции подпрограммы обработки система прерываний вновь должна быть отключена и после восстановления контекста опять включена. Поскольку эти действия необходимо выполнять практически в каждой подпрограмме обработки прерываний, во многих операционных системах первые секции подпрограмм обработки прерываний выделяются в уже упоминавшийся специальный системный программный модуль, называемый супервизором прерываний.
Супервизор прерываний прежде всего сохраняет в дескрипторе текущей задачи рабочие регистры процессора, определяющие контекст прерываемого вычислительного процесса. Далее он определяет ту подпрограмму, которая должна выполнить действия, связанные с обслуживанием настоящего (текущего) запроса на прерывание. Наконец, перед тем, как передать управление на эту подпрограмму, супервизор прерываний устанавливает необходимый режим обработки прерывания. После выполнения подпрограммы обработки прерывания управление вновь передается ядру операционной системы. На этот раз уже на тот модуль, который занимается диспетчеризацией задач. И уже диспетчер задач, в свою очередь, в соответствии с принятой дисциплиной распределения процессорного времени (между выполняющимися вычислительными процессами) восстановит контекст той задачи, которой будет решено выделить процессор. Рассмотренную нами схему иллюстрирует рис. 1.4.
К
ак
мы видим из рисунка, здесь отсутствует
возврат в прерванную ранее программу
непосредственно из самой подпрограммы
обработки прерывания. Для прямого
возврата
достаточно адрес возврата сохранить в
стеке, что и делает аппаратура процессора.
При этом стек легко обеспечивает
возможность возврата в случае вложенных
прерываний, поскольку он всегда реализует
дисциплину LCFS.
Однако если бы контекст вычислительных процессов сохранялся просто в стеке, как это обычно реализуется аппаратурой, а не в специальных структурах данных, называемых дескрипторами, о чем будет подробно изложено чуть позже, то у нас не было бы возможности гибко подходить к выбору той задачи, которой нужно передать процессор после завершения работы подпрограммы обработки прерывания. Естественно, что это только общин принцип. В конкретных процессорах и в конкретных операционных системах могут существовать некоторые отступления от рассмотренной схемы и/или дополнения. Например, в современных процессорах часто имеются специальные аппаратные возможности для сохранения контекста прерываемого вычислительного процесса непосредственно в его дескрипторе, то есть дескриптор процесса (по крайней мере его часть) становится структурой данных, которую поддерживает аппаратура.
Прерывание – это приостановка выполнения в процессоре программы с целью выполнения какой-то более важной программы или нужной в данный момент другой программы или процедуры, после завершения которой продолжается выполнения прерванной программы с момента ее прерывания. Прерывание позволяет компьютеру приостановить любое свое действие и временно переключиться на другое, как заранее запланированное, так и неожиданное, вызванное непредсказуемой ситуацией в работе машины или ее компонента. Каждое прерывание вызывает загрузку определенной программы, предназначенной для обработки возникшей ситуации, - программу обработки прерывания.
Организация и управление прерываниями функционально во многом смыкается с управлением задачами – одной из базовых функций ОС. Основой для управления процессом одновременного решения нескольких задач (равно как и управления прерываниями) являются процедуры:
выбора очередной задачи для определения приоритета задачи;
сохранения информации о статусе задачи при ее прерывании
недопущения и устранения конфликтов между задачами (координации и синхронизации выполнения задач).
Классификация видов прерывания
ПРЕРЫВАНИЯ
Пользовательские
Системные Справочные
Прикладные Внутренние Внешние Псевдопрерывания
Планируемые Непланируемые Аппаратные
Программные BIOS Программные DOS Технические Логические
Прикладные прерывания временно устанавливаются пользователем при многопрограммной работе МП для указания приоритета выполнения прикладных программ (при появлении необходимости выполнения более приоритетной программы текущая менее приоритетная программа прерывается).
Псевдопрерывания используются для запоминания важных фиксированных адресов, которые могут быть использованы в программах, в частности, при условных и безусловных передачах управления (запоминания адресов передачи управления как векторов прерывания возможно благодаря аналогии выполнения прерывания и обращения к процедурам).
Аппаратные прерывания инициируются при обращении к МП со стороны внешних устройств с требованием уделить им внимание и выполнить совместно с ними те или иные процедуры. Аппаратные прерывания не координируются с работой программ и могут быть весьма разнообразны. Для из систематизации и определения очередности выполнения при одновременном возникновении нескольких из них обычно используется контроллер прерываний.
Программные прерывания – это обычные процедуры, которые вызывает текущая программа для выполнения предусмотренных в ней стандартных подпрограмм, чаще всего подпрограмм – служебных функций работы с внешними устройствами, то есть фактически программные прерывания ничего не прерывают. Программные прерывания делятся на две большие группы вызывающие служебные функции:
базовой системы ввода-вывода - прерывания BIOS;
операционной системы - прерывания DOS.
Технические прерывания (или, иначе, прерывания от схем контроля) возникают при появлении отказов и сбоев в работе технических средств (аппаратуре) ПК. Большенство технических прерываний не маскируются, то есть они разрешаются всегда, а некоторые из них относятся к категории «аварийных» (например, отключение питания), и при их возникновении даже не запрашивается причина прерывания.
Логические прерывания возникают при появлении ошибок в выполняемых программах (деление на 0, потеря значности мантиссы, нарушение защиты памяти и т.п.)
Прерывания обслуживаются базовой системой ввода-вывода - модулем расширения BIOS и модулем обработки прерывания DOS. BIOS и блок расширения BIOS имеют дело в основном с ее не планируемыми техническими и логическими прерываниями, пользовательскими прикладными прерываниями, а также со многими планируемыми прерываниями, обслуживающими систему ввода-вывода, детализированными и не очень детализированными (прерывания, обслуживаемые BIOS, часто называют прерываниями нижнего уровня).
Модуль обработки прерываний DOS обслуживает в основном планируемые прерывания, в том числе и прерывания системы ввода-вывода. Прерывания DOS часто называют прерывания верхнего уровня, так как, с одной стороны, в этих прерываниях меньше учитываются технические особенности элементов ПК, с другой стороны, при обработке этих прерываний часто имеют место обращения к программам прерываний системы BIOS. Большенство прерываний BIOS имеют близкие аналоги среди прерываний DOS.
Всего предусмотрено 256 типов (0-255) прерываний. Из них только 5 жестко закреплены в МП, остальные используются системами BIOS и DOS.
Т е м а 1.7 Управление памятью.
Многоуровневое распределение памяти. Защита памяти. Организация работы виртуальной памяти. http://www.electriz.ru
Управление памятью заключается в:
− распределении имеющейся физической памяти между всеми существующими в системе процессами,
− загрузке кодов и данных процессов в отведенные им области памяти,
− настройке адресно-зависимых частей кодов процесса на физические адреса выделенной области,
− защите областей памяти каждого процесса.
Одним из самых популярных способов управления памятью в современных операционных системах является так называемая виртуальная память. Наличие в операционной системе механизма виртуальной памяти позволяет программисту писать программу так, как будто в его распоряжении имеется однородная оперативная память большого объема. Часто этот объем существенно превышает объем имеющейся физической памяти. Обычно этот объем определяется максимально адресуемым адресным пространством процессора. На самом деле большая часть данных, используемых программой, хранятся на диске, и при необходимости частями (сегментами или страницами) отображаются в оперативную память.
При перемещении кодов и данных между оперативной памятью и диском подсистема виртуальной памяти выполняет преобразование (трансляцию) виртуальных адресов, полученных в результате компиляции и компоновки программы, в физические адреса ячеек оперативной памяти. Очень важен тот факт, что все операции по перемещению кодов и данных между оперативной памятью и диском, а также трансляцию адресов выполняются операционной системой прозрачно для программиста. http://window.edu.ru
Многоуровневое распределение основной памяти. Как уже отмечалось, в операционных системах широко используется многоуровневое распределение основной памяти, при котором выделенный участок памяти на верхнем уровне подлежит дальнейшему распределению на нижнем. Рассмотрим три уровня распределения основной памяти:
уровень заданий, на котором осуществляется выделение разделов основной памяти для выполнения заданий (пунктов заданий). Размер выделяемых участков на этом уровне колеблется от десятков килобайт до мегабайт.
уровень задач, на котором осуществляется выделение участков памяти для подпулов, связанных с задачами. В подпулы помещаются запросы одного класса. Использование подпулов позволяет уменьшить проблемы фрагментации основной памяти. Каждая задача имеет один или несколько подпулов. Подпул может находиться или в монопольном использовании задачи, или в совместном использовании нескольких задач. Размер выделяемых участков на этом уровне (размер подпула) кратен 2 Кбайт. Минимальный размер подпула 2 Кбайт. Максимальный размер не фиксируется.
уровень запросов, самый нижний. Запрос на выделение участка памяти выражается макрокомандойGETMAIN; на освобождение участка памяти — макрокомандой FREEMAIN. Участки памяти выделяются для загрузочных модулей, буферов, рабочих областей и т. д. Минимальный размер запроса — 8 байт (определяется размером FQE).
Защита памяти – это избирательная способность предохранять выполняемый процесс от записи или чтения памяти, назначенной другому процессу. В принципе, корректно и правильно написанная программа и не должна пытаться обратиться к чужой памяти. Если подобные попытки все же предпринимаются, это значит, что, либо в программе рисутствуют
ошибки, либо имеется злой умысел. Подсистема защиты памяти операционной системы должна пресекать попытки несанкционированного доступа процессов к чужим областям памяти. От того, насколько удачно реализована подсистема защиты памяти, во многом зависит стабильность операционной системы. http://window.edu.ru
Оперативная память — это важнейший ресурс любой вычислительной системы, поскольку без нее (как, впрочем, и без центрального процессора) невозможно выполнение ни одной программы.
Память является разделяемым ресурсом. От выбранных механизмов распределения памяти между выполняющимися процессорами в значительной степени зависит эффективность использования ресурсов системы, ее производительность, а также возможности, которыми могут пользоваться программисты при создании своих программ.
Желательно так распределять память, чтобы выполняющаяся задача имела возможность обратиться по любому адресу в пределах адресного пространства той программы, в которой идут вычисления. С другой стороны, поскольку любой процесс имеет потребности в операциях ввода-вывода, и процессор достаточно часто переключается с одной задачи на другую, желательно в оперативной памяти расположить достаточное количество активных задач с тем, чтобы процессор не останавливал вычисления из-за отсутствия очередной команды или операнда. Некоторые ресурсы, которые относятся к неразделяемым, из-за невозможности их совместного использования делают виртуальными. Таким образом, чтобы иметь возможность выполняться, каждый процесс может получить некий виртуальный ресурс. Виртуализация ресурсов делается программным способом средствами операционной системы, а значит, для них тоже нужно иметь ресурс памяти. Поэтому вопросы организации разделения памяти для выполняющихся процессов и потоков являются очень актуальными, ибо выбранные и реализованные алгоритмы решения этих вопросов в значительной степени определяют и потенциальные возможности системы, и общую ее производительность, и эффективность использования имеющихся ресурсов.
Память и отображения, виртуальное адресное пространство.
Если не принимать во внимание программирование на машинном языке (эта технология практически не используется уже очень давно), то можно сказать, что программист обращается к памяти с помощью некоторого набора логических имен, которые чаще всего являются символьными, а не числовыми, и для которого отсутствует отношение порядка. Другими словами, в общем случае множество переменных в программе не упорядочено, хотя отдельные переменные могут иметь частичную упорядоченность (например, элементы массива). Имена переменных и входных точек программных модулей составляют пространство символьных имен. Иногда это адресное пространство называют логическим.
С другой стороны, при выполнении программы мы имеем дело с физической оперативной памятью, собственно с которой и работает процессор, извлекая из нее команды и данные и помещая в нее результаты вычислений. Физическая память представляет собой упорядоченное множество ячеек реально существующей оперативной памяти, и все они пронумерованы, то есть к каждой из них можно обратиться, указав ее порядковый номер (адрес). Количество ячеек физической памяти ограниченно и фиксировано.
Системное программное обеспечение должно связать каждое указанное пользователем символьное имя с физической ячейкой памяти, то есть осуществить отображение пространства имен на физическую память компьютера. В общем случае это отображение осуществляется в два этапа (рис. 3.1): сначала системой программирования, а затем операционной системой. Это второе отображение осуществляется с помощью соответствующих аппаратных средств процессора — подсистемы управления памятью, которая использует дополнительную информацию, подготавливаемую и обрабатываемую операционной системой. Между этими этапами обращения к памяти имеют форму виртуального адреса. При этом можно сказать, что множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство, или виртуальную память.
Виртуальное адресное пространство программы зависит, прежде всего, от архитектуры процессора и от системы программирования и практически не зависит от объема реальной физической памяти компьютера. Можно еще сказать, что адреса команд и переменных в машинной программе, подготовленной к выполнению системой программирования, как раз и являются виртуальными адресами.
Как мы знаем, система программирования осуществляет трансляцию и компоновку программы, используя библиотечные программные модули. В результате работы системы программирования полученные виртуальные адреса могут иметь как двоичную форму, так и символьно-двоичную. Это означает, что некоторые программные модули (их, как правило, большинство) и их переменные получают какие-то числовые значения, а те модули, адреса для которых пока не могут быть определены, имеют по-прежнему символьную форму, и их окончательная привязка к физическим ячейкам будет осуществлена на этапе загрузки программы в память перед ее непосредственным выполнением.
Одним из частных случаев отображения пространства символьных имен на физическую память является полная тождественность виртуального адресного пространства физической памяти. При этом нет необходимости осуществлять второе отображение. В таком случае говорят, что система программирования генерирует абсолютную двоичную программу; в этой программе все двоичные адреса таковы, что программа может исполняться только тогда, когда ее виртуальные адреса будут точно соответствовать физическим. Часть программных модулей любой операционной системы обязательно должна быть абсолютными двоичными программами. Эти программы размещаются по фиксированным адресам физической памяти, и с их помощью уже можно впоследствии реализовывать размещение остальных программ, подготовленных системой программирования таким образом, что они могут работать на различных физических адресах (то есть на тех адресах, на которые их разместит операционная система).
В качестве примера таких программ можно назвать программы загрузки операционной системы. Другим частным случаем этой общей схемы трансляции адресного пространства является тождественность виртуального адресного пространства исходному логическому пространству имен. Здесь уже отображение выполняется самой операционной системой, которая во время исполнения использует таблицу символьных имен. Такая схема отображения используется чрезвычайно редко, так как отображение имен на адреса необходимо выполнять для каждого вхождения имени (каждого нового имени), и особенно много времени тратится на квалификацию имен. Данную схему можно было встретить в интерпретаторах, в которых стадии трансляции и исполнения практически неразличимы. Это характерно для простейших компьютерных систем, в которых вместо операционной системы использовался встроенный интерпретатор (например, Basic).
Возможны и промежуточные варианты. В простейшем случае транслятор-компилятор генерирует относительные адреса, которые, по сути, являются виртуальными адресами, с последующей настройкой программы на один из непрерывных разделов. Второе отображение осуществляется перемещающим загрузчиком. После загрузки программы виртуальный адрес теряется, и доступ выполняется непосредственно к физическим ячейкам.
Более эффективное решение достигается в том случае, когда транслятор вырабатывает в качестве виртуального адреса относительный адрес и информацию о начальном адресе, а процессор, используя подготавливаемую операционной системой адресную информацию, выполняет второе отображение не один раз (при загрузке программы), a пpи каждом обращении к памяти. Термин виртуальная память фактически относится к системам, которые сохраняют виртуальные адреса во время исполнения. Так как второе отображение осуществляется в процессе исполнения задачи, то адреса физических ячеек могут изменяться. При правильном применении такие изменения улучшают использование памяти, избавляя программиста от деталей управления ею, и даже повышают надежность вычислений.
Если рассматривать общую схему двухэтапного отображения адресов, то с позиции соотношения объемов упомянутых адресных пространств можно отметить наличие следующих трех ситуаций:
объем виртуального адресного пространства программы Vv меньше объема физической памяти Vp (Vv < Vp);
объем виртуального адресного пространства программы Vv равен объему физической памяти Vp (Vv = Vp);
О объем виртуального адресного пространства программы Vv больше объема физической памяти Vp (Vv > Vp). I
Первая ситуация (Vv < Vp) ныне практически не встречается, но, тем не менее, это реальное соотношение. Скажем, не так давно 16-разрядные мини-ЭВМ имели систему команд, в которых пользователи-программисты могли адресовать до 216 - 64 Кбайт адресов (обычно в качестве адресуемой единицы выступала ячейка памяти размером с байт). А физически старшие модели этих мини-ЭВМ могли иметь объем оперативной памяти в несколько мегабайтов. Обращение к памяти столь большого объема осуществлялось с помощью специальных регистров, содержимое которых складывалось с адресом операнда (или команды), извлекаемым из поля операнда или указателя команды (и/или определяемым по значению поля операнда или указателя команды). Соответствующие значения в эти специальные регистры, выступающие как базовое смещение в памяти, заносила операционная система. Для одной задачи в регистр заносилось одно значение, а для второй (третьей, четвертой и т. д.) задачи, размещаемой одновременно с первой, но в другой области памяти, заносилось, соответственно, другое значение. Вся физическая память таким образом разбивалась на разделы объемом по 64 Кбайт, и на каждый такой раздел осуществлялось отображение своего виртуального адресного пространства.
Вторая ситуация (Vv = Vp) встречается очень часто, особенно характерна она была для недорогих вычислительных комплексов. Для этого случая имеется большое количество методов распределения оперативной памяти.
Наконец, в наше время мы уже достигли того, что ситуация превышения объема виртуального адресного пространства программы над объемом физической памяти (Vv > Vp) характерна даже для персональных компьютеров, то есть для самых распространенных и недорогих машин. Теперь это самая обычная ситуация, и для нее имеется несколько методов распределения памяти, отличающихся как сложностью, так и эффективностью.
