Индустриальные операционные системы

advertisement
Индустриальные операционные системы
1 Понятие операционной системы. 2. Функции операционной системы. 3 Развитие операционных систем. 4
Файловая сисмема, файлы и структура данных.
5. Процессы и потоки. Контент процесса. 6. Ресурсы,
виртульная память.
7. Прерывания и их обработка. 8. Компоненты операционной системы. Ядро.
Менеджеры(драйверы). Утилиты. 9. Системы реального времени семафоры, события. 10. Технология DCOM.
11. ОРС технологии.
12. Технология World Wide Web 13. Коммерческие операционные системы 14.
Промышленные сети и операционныt сиcтемы.
1 Понятие операционной системы
Определение операционной системы
Пользователи, активно использующие вычислительную технику, зачастую испытывают затруднения при
попытке дать определение операционной системе. Частично это связано с тем, что ОС выполняет две по
существу мало связанные функции: обеспечение пользователю-программисту удобств посредством
предоставления для него расширенной ЭВМ-машины и повышение эффективности использования
компьютера путем рационального управления его ресурсами.
Операцио́ нная систе́ма, сокр. ОС ( operating system, OS) — комплекс взаимосвязанных программ,
предназначенных для управления ресурсами вычислительной системы (компьютера) и организации
взаимодействия с пользователем (Интерфейс пользователя). Существуют две группы определений ОС:
«совокупность программ, управляющих оборудованием» и «совокупность программ, управляющих
выпрлнением других программ» . Обе они имеют свой точный технический смысл, который, однако,
становится ясен только при более детальном рассмотрении вопроса о том, зачем вообще нужны
операционные системы.
Есть приложения вычислительной техники, для которых операционные системы излишни. Например,
встроенные микрокомпьютеры, содержащиеся во многих бытовых приборах, автомобилях (иногда по десятку
в каждом), простейших сотовых телефонах, постоянно исполняют лишь одну программу, запускающуюся по
включении. Многие простые игровые приставки — также представляющие собой специализированные
микрокомпьютеры — могут обходиться без операционной системы, запуская при включении программу,
записанную на вставленном в устройство «картридже» или компакт-диске.
Современные вычислительные системы состоят из процессоров, памяти, таймеров, дисков, накопителей на
магнитных лентах, сетевых коммуникационной аппаратуры, принтеров и других устройств. Основы учения об
архитектуре вычислительных машин были заложены Джон фон Нейманом. Совокупность этих принципов
породила классическую (фон-неймановскую) архитектуру ЭВМ. Фон Нейман выдвинул основополагающие
принципы логического устройства ЭВМ и предложил ее структуру, представленную на рисунке.
Арифметико-логическое устройство – выполняет логические и арифметические действия, необходимые для
переработки информации, хранящейся в памяти . Управляющее устройство – обеспечивает управление и
контроль всех устройств компьютера (управляющие сигналы указаны пунктирными стрелками)
Данные, которые хранятся в запоминающем устройстве, представлены в двоичной форме. Программа,
которая задает работу компьютера, и данные хранятся в одном и том же запоминающем устройстве Для
ввода и вывода информации используются устройства ввода и вывода.
1.1 Структурная схема и устройства ПК
Основным устройством ПК является материнская плата, которая определяет его конфигурацию. Все
устройства ПК подключаются к этой плате с помощью разъемов расположенных на этой плате. Соединение
всех устройств в единую систему обеспечивается с помощью системной магистрали (шины), представляющей
собой линии передачи данных, адресов и управления.
Ядро ПК образуют процессор (центральный микропроцессор) и основная память, состоящая из оперативной
памяти и постоянного запоминающего устройства (ПЗУ) или перепрограммируемого постоянного
запоминающего устройства ППЗУ. ПЗУ предназначается для записи и постоянного хранения данных.
Подключение всех внешних устройств: клавиатуры, монитора, внешних ЗУ, мыши, принтера и т.д.
обеспечивается через контроллеры, адаптеры, карты. Контроллеры, адаптеры или карты имеют свой
процессор и свою память, т.е. представляют собой специализированный процессор.
В логической структуре типичной вычислительной системы операционная система занимает положение
между устройствами с их микроархитектурой, машинным языком и
собственными (встроенными)
микропрограммами — с одной стороны — и прикладными программами с другой. Разработчикам
программного обеспечения операционная система позволяет абстрагироваться от деталей реализации и
функционирования устройств, предоставляя минимально необходимый набор функций.
Использование большинства компьютеров на уровне машинного языка затруднительно, особенно это
касается ввода-вывода. Например, для организации чтения блока данных с гибкого диска программист может
использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на
диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер
возвращает 23 значения, отражающих наличие и типы ошибок, которые, очевидно, надо анализировать. Даже
если не входить в курс реальных проблем программирования ввода-вывода, ясно, что среди программистов
нашлось бы не много желающих непосредственно заниматься программированием этих операций.
При работе с диском программисту-пользователю достаточно представлять его в виде некоторого набора
файлов, каждый из которых имеет имя. Работа с файлом заключается в его открытии, выполнении чтения или
записи, а затем в закрытии файла. Вопросы подобные таким, как следует ли при записи использовать
усовершенствованную частотную модуляцию или в каком состоянии сейчас находится двигатель механизма
перемещения считывающих головок, не должны волновать пользователя. Программа, которая скрывает от
программиста все реалии аппаратуры и предоставляет возможность простого, удобного просмотра указанных
файлов, чтения или записи - это, конечно, операционная система.
В каждом случае та упрощенная, воображаемая ЭВМ-машина, с которой, благодаря операционной системе,
теперь может иметь дело пользователь, гораздо проще и удобнее в обращении, чем реальная аппаратура,
лежащая в основе этой абстрактной машины. С этой точки зрения функцией ОС является предоставление
пользователю некоторой упрощенной (виртуальной) машины, которую легче программировать и с которой
легче работать, чем непосредственно с аппаратурой, составляющей реальную машину. при разработке
первых систем программирования прежде всего создавали программные модули для подсистемы
ввода/вывода, а уже затем — вычисления часто встречающихся математических операций и функций.
Благодаря этому при создании прикладных программ программисты могли просто обращаться к соответствующим функциям ввода/вывода и иным функциям и процедурам, что избавляло их от необходимости
каждый раз создавать все программные компоненты «с нуля» и от необходимости знать во всех подробностях
особенности работы контроллеров ввода/вывода и соответствующих интерфейсов.
При разработке первых систем программирования прежде всего создавали программные модули для
подсистемы ввода/вывода, а уже затем — вычисления часто встречающихся математических операций и
функций. Благодаря этому при создании прикладных программ программисты могли просто обращаться к
соответствующим функциям ввода/вывода и иным функциям и процедурам, что избавляло их от
необходимости каждый раз создавать все программные компоненты «с нуля» и от необходимости знать во
всех подробностях особенности работы контроллеров ввода/вывода и соответствующих интерфейсов.
Следующий шаг в автоматизации создания готовых к выполнению машинных двоичных программ заключался
в создании транслятора с алгоритмического языка более высокого уровни, чем первые ассемблеры.
Транслятор сам мог подставить вместо высокоуровневого оператора (команды) типа READ или WRITE все
необходимые вызовы к готовым библиотечным программным модулям.
 1.2 В конечном итоге возникла ситуация, когда при создании программ программисты могут вообще не
звать многих деталей управления конкретными ресурсами вычислительной системы, а должны только
обращаться к некоторой программной подсистеме с соответствующими вызовами и получать от нее
необходимые функции и сервисы. Эта программная подсистема и есть операционная система, а набор ее
функций, сервисов и правила обращения с ними как раз и образуют то базовое понятие, которое мы
называем операционной средой. Параллельное существование терминов «операционная система» и
«операционная среда» вызвано тем, что ОС в общем случае может поддерживать несколько операционных
сред. Например, операционная система OS/2 Warp может выполнять следующие программы: а) 16-битовые
программы, созданные для систем OS/2 первого поколения; б) 16-битовые приложения, разработанные для
выполнения в операционной среде MS-DOS; в) 16-битрвые приложения, созданные для операционной среды
Windows З.х;
г) саму операционную оболочку Windows З.х и уже в ней - созданные для нее программы
В большинстве вычислительных систем операционная система является основной, наиболее важной (а иногда
и единственной) частью системного программного обеспечения. С 1990-х годов наиболее распространёнными
операционными системами являются системы семейства Windows и системы класса UNIX (особенно Linux и
Mac OS).
2.1 Основные функции операционной системы:
Взгляд на функции системы дает представление об ОС как о некотором механизме, управляющем всеми
частями сложной системы. Операционня система:
Обеспечивает многозадачность организацией и управление процессами.
Обеспечивает разделение аппаратных ресурсов между пользователями.
Организует работу с другими общими данными в режиме коллективного пользования.
Обеспечивает доступ к ресурсам (память) и программным компонентам через виртальные таблицы.
Определяет интерфейс пользователя.
Обеспечивает выполнение операций ввода/вывода.
Осуществляет восстановление вычислительных процессов в случае ошибок и хранит информацию об ошибках
Проводит Загрузку программ в оперативную память и передает управление ядру.
Реализует связь и вызов различных программ через специальные программнные компоненты.
Организует удаленные ( с других компьютеров) вызовы программ, используя сетевые технологии.
Организация файловых структуры и управление файловыми системами.
ОС взаимодействует:
С пользователями, с администратором - главным пользователем, гостями .
С аппаратными средствами.
С прикладными программами.
С системными программами.
Она представляет каждому пользователю свой интерфейс.
Дополнительные важные функции:
Организация надёжных вычислений (невозможности одного вычислительного процесса повлиять на
вычисления в другом процессе).
Взаимодействие между процессами: разграничение доступа различных процессов к ресурсам,
обмен данными, взаимная синхронизация. Защита самой системы, и пользовательских данных от
неправильных действий пользователей или приложений.
Разграничение прав доступа (см.: аутентификация, авторизация).
3 Развитие ОС.
Рождение цифровых ЭВМ произошло после окончания II мировой войны. ОС не было. Программирование
осуществлялось исключительно на машинном языке. Все задачи организации вычислительного процесса
решались вручную программистом с помощью пульта управления. Предшественником операционных систем
являются служебные программы (загрузчики и мониторы), а также библиотеки часто используемых
подпрограмм, начавшие разрабатываться с появлением компьютеров 1-го поколения (1940 годы).
Служебные программы минимизировали физические манипуляции оператора с оборудованием, а
библиотеки позволяли избежать многократного программирования одних и тех же действий
(осуществления операций ввода-вывода, вычисления математических функций и т. п.). Дополнительно был
разработан формализованный язык управления заданиями, набор директив которого включал: Признак
начала работы; Вызов транслятора; Вызов загрузчика; Признак начала и конца исходных данных. Пакеты
заданий без участия оператора запускались на выполнение монитором – управляющей программой.
PDP 8, мини-компьютер фирмы DEC - второе
поколение на транзисторах с общей шиной.
С появлением новой технической базы (полупроводниковых элементов) возросло быстродействие
процессоров, увеличился объем оперативной и внешней памяти, компьютеры стали более надёжными.
3.2 В эти годы появились первые алгоритмические языки и, новый тип Системного ПО – транслятор.
Трансляция программы — преобразование программы, представленной на одном из языков
программирования, в программу на другом языке, в определённом смысле, равносильную первой. Язык
процессоров (машинный код) обычно является низкоуровневым. Транслятор, который преобразует
программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется
компилятором. Он имеет сервисы, предоставляемые операционной системой и сторонние библиотеки
(например, для файловыго ввода-вывода или графического интерфейса), для чего машинный код программы
необходимо связать с этими сервисами и функциями библиотек. Связывание выполняется редактором
связей или компоновщиком (который может быть частью компилятора). Связывание выполняется при начале
исполнения программы загрузчиком.
Ассе́мблер (assembler — сборщик) — компилятор исходного текста программы, написанной на языке
ассемблера, в программу на машинном языке. Язык ассе́мблера — машинно-ориентированный язык низкого
уровня с командами, обычно соответствующими командам машины, который обеспечивает дополнительные
возможности. вставку макрокоманд; Он расширенн конструкциями языков программирования высокого
уровня, такими как выражения, макрокоманды. Язык ассемблера — система обозначений, используемая для
представления в удобочитаемой форме программ, написанных в машинном коде. Команды языка ассемблера
один к одному соответствуют командам процессора. Фактически, они представляют собой более удобную для
человека символьную форму записи — мнемокоды — команд и их аргументов. При этом одной команде
языка ассемблера может соответствовать несколько вариантов команд процессора. Язык ассемблера
позволяет писать самый быстрый и компактный код, какой вообще возможен для данного процессора.
Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и
варианта синтаксиса языка. Вместе с тем существуют мультиплатформенные или вовсе универсальные
ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних
можно также выделить группу кросс-ассемблеров, способных собирать машинный код и исполняемые
модули (файлы) для других архитектур и ОС.
Многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на
языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования
может быть не исполнимый, а объектный модуль, содержащий блоки машинного кода и данных программы,
из которого (или из нескольких объектных модулей) в дальнейшем с помощью редактора связей может быть
получен исполнимый файл.
Для организации вычислительного процесса в штат многих вычислительных центров были введены новые
должности операторов, но эффективность использования компьютера не возросла.
3.3 Далее появились первые системы пакетной обработки. Пакет включал в себя команды определяющие
последовательность работы имеющихся подпрограмм, контроль за исполнением этих программ и передачу
полученных данных. Они стали первыми системами программирования, предназначенными не для
обработки данных, а для управления вычислительным процессом. Программистов ценили за создание
минимальных по размеру программ с коротким временнм исполнения. Такая потребность привела к
появлению концепции «пакетного режима» исполнения программ. Пакетный режим предполагает наличие
очереди программ на исполнение, причём система пакетной обработки может обеспечивать загрузку
программы с внешних носителей данных в оперативную память, не дожидаясь завершения исполнения
предыдущей программы, что позволяет избежать простоя процессора.
Уже пакетный режим требует разделения процессорного времени между выполнением нескольких
программ. Необходимость в разделении времени (многозадачности, мультипрограммировании) проявилась
ещё сильнее при распространении в качестве устройств ввода-вывода телетайпов (а позднее, терминалов с
электронно-лучевыми дисплеями) (1960-е годы). Поскольку скорость клавиатурного ввода (и даже чтения с
экрана) данных оператором много ниже, чем скорость обработки этих данных компьютером, использование
компьютера в «монопольном» режиме (с одним оператором) приводиьт к простою вычислительных ресурсов.
Промежутки времени между вводом двух символов нужно было использовать для выполнения програм из
очереди пакетов. Время работы процессора нужно было делить между кусочками программ не нарушая
последовательности выполнения команд в этой программе. Важно было помнить на какой команде была она
остановлена и затем начать выполнение с этой команды. Требуется также программа управления
включением/выключением разных усторойств и подпрограмм из разных пакетов.
3.4 Следующим этапом в развитии ОС был после перехода к компьютерам на больших интегральных схемах
(БИС). Интегральные микросхемы разработаны в 1958 году. Быстродействие - 107 операций в секунду.
Появились сверхбольшие интегральных схемы (СБИС) - микропроцессоров и контроллеров внешних устройств
На базе БИС фирма IBM, совместно с Intel и Microsoft, создала первый компьютер IBM РС. Он имел
процессор Intel 8088 с частотой 4,77 МГц, Оперативная запоминающая память до 256 Кбайт, имел съемные
гибкие диски. Жесткого диска не было.
Новые шаги в технике требовали ответа на программном фронте. Операционная система становилась
«продолжением» аппаратуры. В 1950—1960-х годах сформировались и были реализованы ряд основных идей
Операционных Систем: разделение времени и многозадачность, разделение полномочий, реальный масштаб
времени, файловые структуры и файловые системы. Были реализованы все основные механизмы, присущие
современным
ОС:
мультипрограммирование,
мультипроцессирование,
поддержка
многопользовательского режима, виртуальная память, разграничение доступа и сетевая работа.
Революционным событием явилась промышленная реализация мультипрограммирования, т.е. такого способа
организации вычислительного процесса, при котором в памяти компьютера находятся одновременно
несколько программ-процессов, попеременно выполняющихся на одном процессоре. Большую часть
действий по организации вычислительного процесса взяла на себя ОС.
Разделение времени позволило создать «многопользовательские» системы, в которых один (как правило)
центральный процессор и блок оперативной памяти соединялся с многочисленными терминалами. При этом
часть задач (таких как ввод или редактирование данных оператором) могла исполняться в режиме диалога, а
другие задачи (такие как массивные вычисления) — в пакетном режиме.
В большинстве современных компьютеров не предусмотрено даже теоретической возможности выполнения
какой-либо вычислительной работы без участия ОС. После включения питания автоматически происходит
поиск, загрузка и запуск ОС, а в случае ее отсутствия компьютер просто останавливается.
Лекция 3 3.5 При появлении и росте число компьютеров и пользователей ОС вынужденно стали
классификцировать по отличительным свойствам:
а) по режиму обработки задач;
б) по способу взаимодействия с системой;
с) по способам построения (архитектурным особенностям систем).
Прежде всего, различают ОС общего и специального назначения. ОС специального назначения
подразделяются : ОС для переносимых микрокомпьютеров, ОС для различных встроенных систем, ОС для
организации и ведения без данных, ОС для задач реального времени.
По режиму обработки задач различают ОС, обеспечивающие однопрограммный и мультипрограммный
режимы. Под мультипрограммированием понимается способ организации вычислений, когда на
однопроцессорной вычислительной системе создается видимость одновременного выполнения нескольких
программ. Любая задержка в решении программы (например, для осуществления операций ввода/вывода
данных) используется для выполнения других (таких же, либо менее важных) программ. Иногда при этом
говорят о мультизадачном режиме. Мультипрограммный и мультизадачный режимы — это не синонимы,
хотя и близкие понятия. Основное принципиальное отличие в этих терминах заключается в том, что
мультипрограммный режим обеспечивает параллельное выполнение нескольких приложений и при этом
программисты, создающие эти программы, не должны заботиться о механизмах организации их
параллельной работы. Эти функции берет на себя сама ОС; именно она распределяет между
выполняющимися приложениями ресурсы вычислительной системы и осуществляет синхронизацию
вычислений и взаимодействий. Мультизадачный режим предполагает, что часть забот о параллельном выполнении и взаимодействии приложений ложится на прикладных программистов. Современные ОС для ПК
реализуют и мультипрограммный и мультизадачный режимы.
В мультитерминальных ОС, с одной вычислительной системой одновременно могут работать несколько
пользователей, каждый со своего терминала. При этом у пользователей возникает иллюзия, что у каждого из
них имеется своя собственная вычислительная система. В качестве одного из примеров мультитерминальных
ОС для ПК можно назвать Linux. Примерами однопользовательских ОС являются MS DOS фирмы Microsoft
(США) и ОС/2, созданная совместно Microsoft и IBM.
Распространение многопользовательских систем потребовало решения задачи разделения полномочий,
позволяющей избежать изменения исполняемой программы (или её данных) другой программой. а также
изменения самой операционной системы прикладной программой. Реализация разделения полномочий в
операционных системах была поддержана разработчиками процессоров, предложивших архитектуры с двумя
режимами работы процессора — «реальным» (в котором исполняемой программе доступно всё адресное
пространство компьютера) и «защищённым» (в котором доступность адресного пространства ограничена
диапазоном, выделенным при запуске программы на исполнение).
Применение компьютеров для управления производственными процессами потребовало реализации
«масштаба реального времени» («реального времени») — синхронизации исполнения программ с внешними
физическими процессами. Основной особенностью операционных систем реального времени является
обеспечение обработки поступающих заданий в течение заданных интервалов времени, которые нельзя
превышать. Поток заданий в общем случае не является планомерным и не может регулироваться оператором,
то есть задания поступают в непредсказуемые моменты времени и без всякой очередности. Лучшие
характеристики по производительности для систем реального времени дают однотерминальные ОС.
Управляющие системы обычно являются распределенными системами. В распределенной системе нет
единственной общей памяти и единственного процессора. Процессы в разных устройствах системы
обмениваются информацией с помощью сообщений. Процесс готовит сообщение и передает его другому
процессу с прмощью операционной системы. Этот принцип взаимодействия лежит в основе важной
концепции (идеи) распределенных систем – модели клиент- сервер.
4. Файловые системы и структуры
Файл ( file) —область данных на носителе информации, имеющая свое имя. Имена файлов состоят из двух
частей, «основного имени» и «дополнительного имени» (последнее существует как расширение имени
файла).
Файловая система — способ хранения данных на внешних запоминающих устройствах. Диск разбит на
сектора и дорожки. С точки зрения операционной системы, весь диск представляет собой набор кластеров
(как правило, размером 512 байт и больше). Кластер - это наименьшее место на диске, которое может быть
выделено для хранения файла и это также логическая единица для хранения данных в таблице размещения
файлов. Он объединят группу секторов. Например, на дисках с размером секторов в 256 байт, 256-байтный
кластер содержит один сектор, тогда как 2-килобайтный кластер содержит восемь секторов.
Структура диска: (A) дорожка (B) геометрический сектор (C) сектор дорожки (D) кластер
Лекция 4. Понятие кластер используется в файловых системах FAT, NTFS, a так же HFS Plus. Другие файловые
системы оперируют схожими понятиями (зоны в Minix, блоки в Unix).
Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами,
содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в
настоящее время используются, какие свободны, какие помечены как неисправные.
С файлом связан хэндлер файла, или дескриптор (описатель). При открытии файла операционная система
возвращает указатель на структуру, с помощью которого выполняются все остальные файловые операции.
Также имеется Файловый указатель - число, являющееся смещением относительно нулевого байта в файле.
По этому адресу осуществляется чтение/запись, в случае, если вызов операции чтения/записи не
предусматривает указание адреса. При выполнении операций чтения/записи файловый указатель смещается
на число прочитанных/записанных байт. Последовательный вызов операций чтения таким образом позволяет
прочитать весь файл, не заботясь о его размере.
4.2 Типы файлов
Регулярные - содержат информацию пользователя. Используются в Windows и UNIX.
Каталоги - системные файлы, обеспечивающие поддержку структуры файловой системы. Используются в
Windows и UNIX.
Основные типы регулярных файлов:
ASCII файлы - состоят из текстовых строк. Каждая строка завершается возвратом каретки (Windows), символом
перевода строки (UNIX) и используются оба варианта (MS-DOS). Поэтому если открыть текстовый файл,
написанный в UNIX, в Windows, то все строки сольются в одну большую строку, но под MS-DOS они не
сольются (это достаточно частая ситуация). Основные преимущества ASCII файлов:
- могут отображаться на экране, и выводится на принтер без преобразований
- могут редактироваться почти любым редактором
Двоичные файлы - остальные файлы (не ASCII). Как правило, имеют внутреннею структуру.
Основные типы двоичных файлов: Исполняемые - программы, их может обрабатывать сама операционная
система, хотя они записаны в виде последовательности байт. Неисполняемые - все остальные.
Примеры
исполняемого
и
не
исполняемого файла
«Магическое число» - идентифицирующее файл как исполняющий.
Структура файла для операционной системы предстваляется как последовательность байтов - ОС не интересуется
содержимым файла, она видит только байты. Основное преимущество такой системы, это гибкость использования.
Используются в Windows и UNIX. Такая система обаспечивает Произвольный доступ- файл можно читать с произвольной
точки –с начала любого байта. Основное преимущество возникает, когда используются большие файлы и надо считать
только часть данных из файла. Все современные ОС используют этот доступ.
Основные атрибуты файла:
o
Защита - кто, и каким образом может получить доступ к файлу (пользователи, группы, чтение/запись).
Используются в Windows и UNIX. Это также Пароль к файлу и Создатель - кто создал файл . Владелец - текущий
владелец файла. Флаг "только чтение" - 0 - для чтения/записи, 1 - только для чтения. Используются в Windows.
Флаг "скрытый" - 0 - виден, 1 - невиден в перечне файлов каталога (по умолчанию). Используются в Windows.
Флаг "системный" - 0 - нормальный, 1 - системный. Используются в Windows. Флаг "архивный" - готов или нет
для архивации (не путать сжатием). Используются в Windows. Флаг "сжатый" - файл сжимается (подобие zip
архивов). Используются в Windows. Флаг "шифрованный" - используется алгоритм шифрования. Если кто-то
попытается прочесть файл, не имеющий на это прав, он не сможет его прочесть. Используются в Windows. Флаг
ASCII/двоичный - 0 - ASCII, 1 – двоичный. Флаг произвольного доступа - 0 - только последовательный, 1 произвольный доступ. Флаг "временный" - 0 - норм, 1 - для удаления файла по окончании работы процесса.
Флаг блокировки - блокировка доступа к файлу. Если он занят для редактирования. Время последнего доступа дата и время последнего доступа. Время последнего изменения - дата и время последнего изменения.
Используются в Windows и UNIX. Текущий размер - размер файла. Используются в Windows и UNIX.
Имя пути к файлу. Для организации дерева пути нужен некоторый способ указания файла.
Два основных метода указания файла:
o
абсолютное имя пути - указывает путь от корневого каталога, например: - для Windows \usr\ast\mailbox
относительное имя пути - путь указывается от текущего каталога (рабочего каталога), например:
- если текущий каталог /usr/, то абсолютный путь /usr/ast/mailbox перепишется в ast/mailbox
- если текущий каталог /usr/ast/, то абсолютный путь /usr/ast/mailbox перепишется в mailbox
Операционная система также осуществляет файловые операции в специальном устройстве памяти - кэш.
Кэш — это память с большой скоростью доступа, предназначенная для ускорения обращения к данным,
содержащимся постоянно в памяти ОЗУ с меньшей скоростью доступа. Кэш-память может давать
значительный выигрыш в производительности. Если в кэше не найдена запись, содержащая затребованный
элемент данных, то он читается из основной памяти в кэш, и становится доступным для последующих
обращений. При закрытии файла Кэш-буфер сбрасывается.
5.1 Понятие процесса
Процесс (задача), как базовое понятие современных ОС - это программа в стадии выполнения.
Программа, в общем случае, это набор команд (сообщение) о последовательности действий по получению,
преобразованию, обработке, выдаче данных. Выполнение программы реализуется через промежуточные
процессы. Процесс собирает и хранит адреса областей на внешних устройствах и оперативной памяти где
располагаетю данные (переменные и константы) и куда их нужно направить.
С каждым процессом
связывается его адресное пространство: список адресов от минимума до максимума, который процесс может
прочесть и в которые он может писать. Также он имеет адреса свободной динамической памяти: куча (heap) и
стек (stack), в которых будут хранится данные расчетов. В стеке сидят указатели на адреса данных. В «куче»
находятся сами структуры данных, которые бывают различными, «запись» и «масив» и т.д. Область стека
примыкает к куче расширяется за ее счет.
В адресное пространство входят сама программа, данные к ней, ее стек. Со всяким процессом связывается
некий набор регистров, включая счетчик команд, указатель стека и другие. Одна и таже программа
написанная на языке высокого уровня на разных компьтерах будет иметь разные процессы, так у нее будут
различные стеки, кучи, адресные области данных и команд. В любой момент времени каждый процесс имеет
однозначное состояние, описываемое адреесми регистров процессора, областей кода, данных, кучи и стека,
счетчиком ккоманд, указывающего следующую к исполнению команду. Эта информация называется
контекстом процесса. То, какие регистры и указатели реально используются процессом зависит от самого
процессора и компонент операционной системы, взаимодействующих с ним.
5.2 Частным проявлением процесса являются потоки (threads). Потоки порождаются процессом если есть
возможность параллельно выполнять различные части программы на том же самом или разных процессорах
и устройствах. Потоки это «дочки процесса» (child process ). Потоки используют даные и переменные их
родного процесса, но имееют свои контекст кода программы и стека. Процессы создаются при выполнениии
пребразований программы до машинного кода с использованием составных части операционной системы как
компиляторы, драйверы связывания с библиотеками ОС (linking), загрузчики (loading), драйверы файловой
системы (запись/чтение на носители), драйверы исполнения (execution). После каждой операции объем
программы заметно возрастает, а сама программа получает другое имя расширения – obj, lnk, exe. С этими
процеесами мы сталкиваемся каждый раз при «установке» программы.
Процесс представляет собой отдельный файл, который во время исполнения имеет в памяти свои
независимые области для кода и данных. В отличие от него потоки могут пользоваться общими участками
кода и данных. Так как множество потоков способно размещаться внутри одного EXE-модуля, это позволяет
экономить ресурсы как внешней, так и внутренней памяти.
Современные управляющие устройства состоят из нескольких вычислительных процессоров, соединенных
между собой с помощью шины связи. Например, в програмируемх контроллерах есть основной процессор,
но в каждом модуле ввода/вывода (МВА, МВД, МВВА, МВДА и другие) есть свой собственный процессор.
Можно заставить программу пытаться паралельно исполнять операции уже на стадии написания программы.
Пара операторных скобок cobegin и coend приводит к генерации параллельных потоков в
рамках многозадачных систем. Для однозадачной системы конечный Х был бы равен 3. Для случая
паралельных потоков результат предсказать нельзя. Какая команда выполнится последней таково и будет
значение Х.
В период своего существования процесс проходит через ряд дискретных состояний:
- выполняется, если в данный момент времени ему выделен ЦП
- готов, если он мог бы сразу использовать ЦП, предоставленный в его распоряжение
- блокирован, если он ожидает появление какого-либо события
5.3 Когда в операционную систему поступает какое то задание на выполнение программы, она создает
соответствующие процессы, которые затем устанавливаются в конец списка готовых процессов. Этот процесс
постепенно продвигается к головной части списка по мере завершения выполнения предыдущих процессов.
Когда процесс окажется первым в списке готовых и когда освобождается ЦП, этому процессу выделяется ЦП,
и происходит смена состояния процесса (переходит из состояния готовности в состояние выполнения). Чтобы
предотвратить либо монопольный захват ресурсов компьютера каким-то одним процессом, ОС устанавливает
в специальном аппаратном таймере прерываний временной интервал, в течении которого любому процессу
разрешается занимать ЦП. Если процесс добровольно не освобождает ЦП в течение указанного временного
интервала, таймер вырабатывает сигнал прерывания, по которому управление будет передано ОС. После
этого ОС переведет ранее выполнявшийся процесс в состояние готовности, а первый процесс списка готовых –
в состояние выполнения.
Представителем процесса в ОС является блок управления процессом (дескриптор процесса). Это структура
данных, содержащая: идентификатор процесса, приоритет процесса, состояние, указатели памяти, указатели
выделенных ресурсов. Когда ОС переключает ЦП с процесса на процесс, она использует области сохранения
регистров, предусмотренные в блоке управления процессом, чтобы запомнить информацию, необходимую
для рестарта каждого процесса, необходимую при следующем обращении процесса к ЦП. ОС
предусматривает следующие операции над процессами: Создание, - Уничтожение, - Возобновление, Блокирование, - Пробуждение, - Выбор
Завершение в\в или
наступление события
Блокирован
Готов
Запуск
Ожидание в\в или
наступление события
Истечение кванта
времени
Выполняется
приостановка
Возобновление
возобновление
Приостановка
Приостановка
Приостановлен
готов
Приостановлен
блокирован
Завершение в\в или наступление события
5.4 Во время выполнения процесса может быть многократно прервана и продолжена его работа. Чтобы
возобновить выполнение процесса, необходимо возобновить контекст процесса, который хранится
операциой системой. Еще раз: у процесса есть адресное пространство, содержащее текст программы и
данные, есть открытые файлы, дочерние процессы, аварийные сообщения. С другой стороны, это поток
команд на исполнение. У этого потока есть свой счетчик команд, свои регистры, с текущими переменными,
стек, содержащий истрию выполнения процесса исполняемой программы. Концепция потока добавляет
процессу возможность выполнения в одной и той же среде процесса нескольких независимых программ. В ОС
нет однозначного соответствия между процессами и программами, т.е. один программный файл может
породить несколько параллельно выполняемых процессов, а поток в ходе выполнения может сменить
программный файл и начать выполнять другую программу.
Лекция 5. 6.1 Понятие ресурса, так же как и понятие процесса, является основным при рассмотрении
операционных систем. Ресурсом называется всякий объект, который может распределяться внутри системы.
Ресурсы могут быть разделяемыми, когда несколько процессов могут их использовать одновременно (в один
и тот же момент времени) или параллельно (в течение некоторого интервала времени процессы используют
ресурс попеременно), а могут быть и неделимыми.
Ресурсами считатся процессорное время, память, каналы ввода/вывода, периферийные устройства. К
ресурсам относят и такие объекты, как сообщения и синхросигналы, которыми обмениваются задачи.
Операционная система использует ресурсы путем организации к ним очередей запросов. В памяти находятся
очередь из несколько процессов, ожидающих процессор, и нескольких процессов, готовых использовать
другие ресурсы, как только они станут доступными.
Задача (т.е процесс или поток) обращается к супервизору операционной системы — ее центральному
управляющему модулю, посредством специальных запросов (вызовов и команд) и сообщает о своем требовании. При этом указывается приоритет, вид ресурса и его объем. Приоритет – это целое число,
присваиваемое задаче и характеризующее ее важность по сравнению с другими задачами, выполняемыми в
системе. Приоритет используется планировщиком задач для определения того, какая из готовых к работе задач должна получить управление. Ресурс выделется задаче, обратившейся к супервизору с запросом, если
он свободен и в системе нет запросов от задач более высокого приоритета к этому же ресурсу;
Текущий запрос и ранее выданные запросы допускают совместное использование ресурсов;
Ресурс используемый задачей низшего приоритета может быть временно отобран (разделяемый ресурс).
Получив запрос, операционная система либо удовлетворяет его и дает управление задаче, выдавшей данный
запрос, либо, если ресурс занят, ставит задачу в очередь к ресурсу. После окончания работы с ресурсом
задача специальным вызовом для супервизора сообщает операционной системе об отказе от ресурса.
Операционная система может забирать ресурс сама, по требованию от супервизора для выполнения какойлибо системной функции.
6.2 Виртуальная память. Основная память компьютера ограничена, и если бы ОС располагала лишь ей, то это
бы ограничело возможности функциональных приложений. Идея виртуальной памяти заключается в том,
чтобы распологать данные на внешнем носителе и иметь адресное пространство с указанием, где лежит
иформация о данных во внешей памяти. Для этого занимаемая процессом память разбивается на несколько
частей, назыкаемых страницами. Часть страниц находится в ОЗУ, другая часть должна быть на внешней
пямяти.
Для контроля наличия страницы во внешней памяти процессом вводится специальный бит
присутствия, входящий в состав атрибутов страницы в таблице страниц. В тех случаях, когда страница, к
которой обращается процесс, не находится в ОЗУ, нужно организовать ее подкачку с внешнего диска через
структуру, называемую «виртуальная память». Виртуальная память находится на жестком диске. Она связана с
процессом и имеет адреса нужной информации на внешнем носителе. Каждый процесс получет в своё
распоряжение дополнительное адресное пространство. Виртуальная память является логическим
представлением расположения информации в памяти на внешнем носителе и не является хранилищем самих
страниц. Блок управления памятью ( memory management unit, MMU) — компонент аппаратного обеспечения
компьютера, отвечающий за управление доступом к памяти, запрашиваемым центральным процессором. Его
функции заключаются в трансляции адресов виртуальной памяти в адреса внешней физической памяти.
Менеджер памяти откачивает часть данных на вторичное хранилище и указывает это в виртуальной памяти.
В результате процессы используют существенно меньше физической памяти ОЗУ, чем им доступно через
виртуальную. Как физическая так и виртуальная память делится на части фиксированного размера,
называемые страницами (Page). Процессоры х86 делят физическое адресное пространство на страницы
размером 5кВ, используя для этого устройство управления памятью MMU (Memory Management Unit). При
выполнении процесса в физическую память загружаются лишь используемые страницы, остальные же
хранятся во вторичной памяти.
Когда процесс обращается по виртуальному адресу, к данным хранящемися в массовой памяти, менеджер
памяти загружает требуемую страницу в основную память. Приложения не должны учитывать
откачку/подкачку страниц - этим с аппаратной поддержкой занимается менеджер памяти, и весь процесс
незаметен для приложений. Для увеличения объема виртуальной памяти необходимо войти в систему с
учетной записью «Администратор». Если компьютер подключен к сети, то параметры сетевой политики могут
запретить выполнение данной процедуры.
Адресное пространство виртуальной памяти зависит от аппаратной платформы. Так, адресное пространство
32-битных х86 систем составляет 4ГБ. Операционные системы, работающие с этими платформами не могут
видить большие объемы ОЗУ, хотя физически память установлена.
Физической памяти (ОЗУ) компьютера должно быть достаточно, чтобы в нее поместились все текущие
страницы пользовательских программ. Если основной памяти не хватает, то производительность системы
резко падает из-за ошибок страниц и, соответственно постоянного подкачивания страниц.
Ошибка страница (Page Fault) - это ситуация, когда процесс обращается по логическому адресу, но
соответствующая страница не загружена в основную память. Если возникает ошибка страницы, ОС запускает
процедуру управления ошибка страниц, которая блокирует обратившийся по этому адресу процесс, находит
во виртуальной вторичной памяти требуемую страницу и загружает её в основную память. Затем процедура
управления ошибками обновляет запись страницы физическим адресом и запускает заблокированный
процесс, чтобы тот мог возобновить свою работу.
Если в оперативной памяти недостаточно места для создания новой страницы, ОС применяет алгоритм
замещения страниц, согласно которому в памяти отыскивается страница, которую в данный момент можно
перенести во вторичную память. Выбор страницы для переноса во вторичную память является очень
ответственным, поскольку, если будет выбрана страница, которая скоро потребуется, операционной системе
скоро вновь придётся решать проблему ошибки страницы и переносить недавно удалённую страницу обратно
в основную память. Может случиться, что в системе возникает большое число ошибок страниц, и ОС
приходится непрерывно заниматься их подкачкой.
Процессы при этом простаивают в ожидании страниц. Такая ситуация называется пробуксовкой (Thrashing).
Это патологическая ситуация, когда ОС тратит большую часть времени на разрешение ошибок страниц, а
процессы не могут выполнять свои задачи. Для решения этой проблемы ОС должна сократить число
запущенных процессов. Этого можно выполнить блокировкой поцесса и переносом его на жёсткий диск,
высвободив при этом место в основной памяти.
Лекция 6
7. Прерывания и их обработка
Прерывание (interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом
выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику
прерывания, который реагирует на событие, после чего возвращает управление в прерванный код. В
зависимости от источника возникновения сигнала, прерывания делятся на:
аппаратные
(асинхронные) — события, которые исходят от внешних источников (например, периферийных устройств) и
могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя,
нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется
как запрос на прерывание ( Interrupt request, IRQ);
синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при
исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам
памяти или недопустимый код операции; программные (частный случай внутреннего прерывания) —
инициируются исполнением специальной инструкции в коде программы. Программные прерывания как
правило используются для обращения к функциям встроенного программного обеспечения, драйверов и о
Внешние прерывания в зависимости от возможности запрета делятся на: маскируемые — прерывания,
которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86процессорах — сбросом флага IF в регистре флагов); немаскируемые (NMI) — обрабатываются всегда,
независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в
микросхеме памяти. Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки
было как можно меньшим, поскольку во время их работы могут не обрабатываться другие прерывания, а если
их будет много (особенно от одного источника), то они могут теряться. В Windows для этого применяется
механизм отложенного вызова процедур.
При обработке прерывания нужно выполнить следующую последовательность действий: 1) восприятие
запроса на прерывание; 2) запоминание состояния прерванного процесса (значение счетчика команд,
содержимое регистров общего назначения, режим работы ЦП и т.д.); 3) передача управления программе
обработки прерываний, для чего в счетчик команд заносится адрес, уникальный для каждого типа
прерывания; 4) обработка прерывания; 5) восстановление нормальной работы.
Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий
обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний, содержащую
адреса обработчиков прерываний. Местоположение таблицы зависит от типа и режима работы процессора.
Для IBM векторы прерываний (адресса) хранятся в таблице, которая находится в первом килобайте
оперативной памяти. Под каждый вектор отведено 4 байта, т.е. в таблице может содержаться 256 векторов.
Адрес вектора в таблице - номер вектора прерываний умножненный на 4.
Для управления аппаратными прерываниями во всех типах IBM PC используется микросхема
программируемого контроллера прерываний Intel 8259 (или ее аналоги). Поскольку в каждый момент
времени может поступить не один запрос, микросхема имеет схему приоритетов. Имеется 8 уровней
приоритетов, кроме AT, у которого их 16, и обращения к соответствующим уровням обозначаются
сокращениями от IRQ0 до IRQ7 (от IRQ0 до IRQ15). Максимальный приоритет соответствует уровню 0.
Добавочные 8 уровней для AT обрабатываются второй микросхемой 8259; этот второй набор уровней имеет
приоритет между IRQ2 и IRQ3. Запросы на прерывание 0-7 соответствуют векторам прерываний от 8H до 0FH;
для AT запросы на прерывания 8-15 обслуживаются векторами от 70H до 77H.
запрос
Адрес прерывания
функция
0
08h
Запрос от таймера
1
09h
Контроллер клавиатуры
2
0Ah
Вторая микросхема в AT, XT286, PS50 + или вертикальный обратный ход луча
EGA/VGA
3
0Bh
Запросы от COM2 или COM4
4
0Ch
Запросы от COM1 или COM3
5
0Dh
НЖМД в XT или запрос от LPT2 (AT)
6
0Eh
Запросы от контроллера НГМД
7
0Fh
Запросы от LPT1
8
70h
Часы реального времени в AT, XT286, PS50 +
9
71h
В AT, XT286, PS50 + программно переназначено на запрос 2
12
74h
Перывание от мыши в PS50 +
13
75h
Ошибка математического сопроцессора в AT, XT286, PS50 +
14
76h
Контроллер НЖМД в AT, XT286, PS50 +
У персональных компьтеров для идентификации устройств, запросивших обслуживания, используется общий
контроллер прерываний. Упрощенная схема взаимодействия контроллера прерываний с процессором и
контроллером шины имеет следующий вид. В качестве примера отметим, что к линии IRQ 0 подключен
системный таймер, к линии IRQ 1 - клавиатура, к линии IRQ 8 - часы реального времени и т.д.
Пусть в некоторый момент времени контроллер клавиатуры с помощью единичного сигнала по линии IRQ 1
известил контроллер прерываний о своей готовности к обмену. В ответ на запрос контроллер прерываний
генерирует сигнал INTR (запрос на прерывание) и посылает его на соответствующий вход процессора.
Процессор, если маскируемые прерывания разрешены (т.е. установлен флаг прерываний IF в регистре флагов
процессора), посылает на контроллер шины сигналы R# - чтение, C# - управление и IO# - ввод/вывод,
определяющие тип цикла шины. Контроллер шины, в свою очередь, генерирует два сигнала подтверждения
прерывания INTA# и направляет их на контроллер прерываний. По второму импульсу контроллер прерываний
выставляет на шину данных номер вектора прерывания, соответствующий данной линии IRQ и процессор
считывает номер вектора прерывания. Сохраняет в стеке содержимое регистра флагов, сбрасывает флаг
прерываний IF и помещает в стек адрес возврата в прерванную программу. После этого процессор извлекает
из таблицы векторов прерываний адрес подпрограммы обработки прерываний для данного устройства и
приступает к ее выполнению.
Процедура обработки аппаратного прерывания должна завершаться командой конца прерывания EOI (End of
Interruption), посылаемой контроллеру прерываний. Для этого необходимо записать байт 20h в порт 20h (для
первого контроллера) и в порт A0h (для второго).
В IBM PC/XT/AT используется режим прерываний с фиксированными приоритетами. Высшим приоритетом
обладает запрос по линии IRQ 0, низшим - IRQ 7. Так как второй контроллер подключен к линии IRQ 2 первого
контроллера, то приоритеты линий IRQ в порядке убывания приоритета располагаются следующим образом:
IRQ 0, IRQ 1, IRQ 8 - IRQ 15, IRQ 3 - IRQ 7. Если запрос на обслуживание посылают одновременно два устройства
с разными приоритетами, то контроллер обслуживает запрос с большим приоритетом, а запрос с меньшим
приоритетом блокирует. Блокировка сохраняется до получения команды EOI.
Лекция 8
8. Компоненты операционной системы
Загрузчик; Ядро ; Командный процессор; Драйверы устройств; Встроенное программное обеспечение;
Понятие ядра ОС.
Все операции, связанные с процессами выполняются под управлением той части ОС, которая называется
ядром. Ядро представляет собой небольшую часть кода ОС в целом. Однако оно относится к числу наиболее
интенсивно используемых компонент системы. По этой причине ядро обычно резидентно размещается в
Оперативной Памяти, в то время как другие части ОС перемещаются во внешнюю память и обратно по мере
необходимости. В системе с одним процессором ядро операционной системы должно планировать доступ
параллельных задач к процессору. Ядро поддерживает список готовых к работе задач. Ядро ОС, как правило,
содержит программы для реализации следующих функций:
- обработка прерываний и исключительных ситуаций.
- создание и уничтожение процессов
- переключение процессов из состояния в состояние
- приостановка и активизация процессов
- синхронизация процессов
- организация взаимодействия между процессами
- поддержка операций ввода/вывода
- поддержка распределения или перераспределения памяти
- поддержка работы файловой системы
- поддержка механизма вызова-возврата при обращении к процедурам
- поддержка функций по учету работы ЭВМ
Современные ОС реализуют поддержку системных вызовов, обработку прерываний и исключительных
ситуаций, которые относят к основным механизмам ОС. В ОС Windows действует двухуровневая схема
планирования. Приоритеты высшего уровня (в данном случае IRQ) определяются аппаратными или
программными прерываниями, а приоритеты низшего уровня (в своем диапазоне от 0 до 31) устанавливаются
для пользовательских потоков, выполняемых на нулевом уровне IRQL, и контролируются планировщиком. На
нулевом (PASSIVE LEVEL) уровне IRQL работают пользовательские процессы и часть кода операционной
системы. Программа, работающая на этом уровне, может быть вытеснена почти любым событием,
случившимся в системе. Большинство процедур режима ядра старается удерживать IRQL уровень процессора
как можно более низким.
Ядро оформляется в виде программного модуля специального формата, отличающегося от формата
пользовательских приложений. Средством защиты ядра от краха является работа его в привилегированном
режиме. Этот режим работы, поддерживаемый аппаратурой компьютера, также называется режимом
супервизора.
Запросы, с которыми приложения обращаются к ядру, называются системными вызовами. Возможности ОС
доступны прикладному программисту в виде набора функций, называющихся интерфейсом прикладного
программирования – API. Приложения выполняют обращения к функциям API подачей системных вызовов,
способ реализации которых зависит от Операционной Системы и языка программирования. В большинстве
операционных систем системный вызов является командой программного прерывания ( INT ), работающем на
нулевом уровне IRQL. Таким образом, системный вызов - это синхронное событие.
Рассмотрим часто применяемые системных вызовы стандарта. Для операционной системы UNIX существует
более 100 системных вызовов. fork - создание нового процесса; exit - завершение процесса; open - открывает
файл; close - закрывает файл; read - читает данные из файла в буфер; write - пишет данные из буфера в файл;
stat - получает информацию о состоянии файла; mkdir - создает новый каталог; rmdir - удаляет каталог; link создает ссылку; unlink - удаляет ссылку; mount - монтирует файловую систему; umount - демонтирует
файловую систему; chdir - изменяет рабочий каталог.
В Win32 API существует более 1000 вызовов. Такое количество связано и с тем, что графический интерфейс
пользователя UNIX запускается в пользовательском режиме, а в Windows встроен в ядро. Поэтому Win32 API
имеет много вызовов для управления окнами, текстом, шрифтами т.д. Рассмотрим вызовы Win32 API.
CreatProcess (fork) - создание нового процесса, ExitProcess (exit) - завершение процесса, CreatFile (open) открывает файл, CloseHandle (close) - закрывает файл, ReadFile (read) - читает данные из файла в буфер,
WriteFile (write) - пишет данные из буфера в файл, CreatDirectory (mkdir) - создает новый каталог,
RemoveDirectory (rmdir) - удаляет каталог, SetCurrentDirectory (chdir) - изменяет рабочий каталог.
8.1. Загрузчик операционной системы — системное программное обеспечение, обеспечивающее загрузку
операционной системы непосредственно после включения компьютера.
Загрузчик операционной системы: обеспечивает необходимые средства для диалога с пользователем
компьютера (например, загрузчик позволяет выбрать операционную систему для загрузки); приводит
аппаратуру компьютера в состояние, необходимое для старта ядра операционной системы (например, на x86
архитектурах перед запуском ядра загрузчик настроивает виртуальную память); загружает ядро
операционной системы в ОЗУ. Загрузка ядра операционной системы не обязательно происходит с жесткого
диска. Загрузчик может получать ядро по сети. Ядро может храниться в ПЗУ; Загрузчик формирует
параметры, передаваемые ядру операционной системы и передаёт управление ядру операционной
системы.
На компьютерах архитектуры IBM PC запуск загрузчика осуществляется программным обеспечением BIOS,
записанной в ПЗУ компьютера
8.2. Оболочка операционной системы и командный процессор (интерпретатор).
В общем случае, различают оболочки с двумя типами интерфейса для взаимодействия с пользователем:
текстовый пользовательский интерфейс (TUI) и графический пользовательский интерфейс (GUI).
Операционная система ДОС была полностью с текстовым интерфейсом с командной строкой. Для
обеспечения интерфейса командной строки в операционных системах используются командные
интерпретаторы, которые могут представлять собой самостоятельные языки программирования, с
собственным синтаксисом и отличительными функциональными возможностями.
В операционные системы MS-DOS и Windows 9x включён командный интерпретатор command.com, в Windows
NT включён cmd.exe, начиная с Windows XP (пакет обновления 2) доступен PowerShell, который является
встроенным компонентом ОС, начиная с Windows 7 и Windows 2008 Server. Вызывается с помощью команды
„RUN” из меню «СТАРТ». Командный интерпретатор исполняет команды своего языка, заданные в командной
строке или поступающие из указанного файла (bat файлы. Их суть в том, что в файл обычного текстового
формата записывается последовательность команд, после чего этот файл можно выполнить в программе, что
возымеет такой же эффект, как если бы эти команды были по очереди введены в командную строку).
Cmd.exe — интерпретатор командной строки для операционных систем Windows CE и для семейства
операционных систем, базирующихся на Windows NT. Комада cmd.exe является аналогом COMMAND.COM,
которая используется в семействах MS-DOS и Windows 9x. В операционных системах семейства Windows NT
имеется и COMMAND.COM для совместимости со старыми программами. Cmd.exe все ещё имеет и исполняет
большое количество унаследованных от DOS команд.
Лекция 9. В качестве команд используются вызовы системных или прикладных утилит, вместе с
управляющими конструкциями. Стандартом POSIX (ISO/IEC 9945) (Том 3. Оболочка и утилиты) определён язык
оболочки, включающий конструкции последовательного (перевод строки, точка с запятой), условного (if, case,
&&) и циклического (for, for in, while, until) исполнения команд, а также оператор присваивания. Стандартом
также определён режим редактирования вводимых команд, являющийся подмножеством команд
стандартного текстового редактора.
Примеры команд в Cmd.exe: shutdown.exe -r -f -t 30 -c #«Мягкая» перезагрузка компьютера через 30 сек.
xcopy C:\folder1 D:\folder2 /e #Копирование содержимого из одной папки в другую. control userpasswords
#вызов окна учетных записей пользователей.
В совокупности с набором утилит, оболочка представляет собой среду и средство решения как системных, так
и некоторых прикладных задач, в особенности, автоматизации часто выполняемых последовательностей
команд.
Графические оболочки для Windows. Последние версии операционной системы Windows используют в
качестве своей оболочки интегрированную среду Проводника Windows. Проводник Windows представляет
собой визуальную среду управления включающую в себя Рабочий стол, Меню Пуск, Панель задач, а также
функции управления файлами. Ранние версии Windows 3.xx в качестве графической оболочки включают
менеджер программ.
8.3 Драйверы устройств - это связующие программы, через которые ОС получает доступ для работы с
конкретным устройством. Драйверы устройств работают в режиме ядра, и преобразуют команды операций
ввода/вывода в специфичные аппаратные запросы ввода/вывода. Драйвер – программа, управляющая
конкретной моделью внешнего устройства. От наличия в ОС подходящих драйверов зависит взаимодействие
пользователя с этим внешним устройством. Чтобы вы могли работать, например с принтером, вы должны
найти и установить драйвер данного устройства. Драйвера обычно выпускаются производителями устройств
и поставляется вместе с устройством.
8.4. Монолитные операционнные системы.
В качестве монолитной ОС можно назвать Windows. Ядро ОС Windows мы не можем изменить, нам не
доступны его исходные коды и у нас нет программы для сборки (компиляции) этого ядра. А вот в случае с
Linux мы можем сами собрать ядро, которое нам необходимо, включив в него те необходимые программные,
модули и драйверы, которые мы считаем целесообразным включить именно в ядро (а не обращаться к ним из
ядра).
Структура монолитной системы: 1. Главная программа, которая вызывает требуемые сервисные
процедуры. 2. Набор сервисных процедур, реализующих системные вызовы. 3. Набор утилит,
обслуживающих сервисные процедуры
Для каждого системного вызова имеется одна сервисная процедура (например, читать из файла). Утилиты
выполняют функции, которые нужны нескольким сервисным процедурам (например, для чтения и записи
файла необходима утилита работы с диском). Этапы обработки вызова: Принимается вызов, Выполняется
переход из режима пользователя в режим ядра, ОС проверяет параметры вызова для того, чтобы определить,
какой системный вызов должен быть выполнен, После этого ОС обращается к таблице, содержащей ссылки на
процедуры, и вызывает соответствующую процедуру.
8.5 Утилиты и инструментальные средства изучения системы
ОС изменяются со временем эволюционно, и эти изменения также значимы, кек и изменения аппаратных
средств. Изменения ОС заключаются в приобретении ею новых свойств, например, поддержке новых типов
внешних устройств или новых технологий. Если код ОС написан таким образом, что дополнения и изменения
могут вноситься без нарушения целостности системы, то такую ОС называют расширяемой. Расширяемость
достигается за счет модульной структуры ОС, при которой программы строятся из набора отдельных модулей,
взаимодействующих только через функциональный интерфейс. Для понимания проблем, результатов работы
ОС, её новых возможностей успользуются вспомогательные модули ОС. Их можно разделить на группы:
системные обработчики программ (компиляторы, отладчики, редакторы); программы дополнительных услуг
(калькулятор, игры и т.д.); утилиты. Большое количество полезных инструментов поставляется вместе с
системой. Это, во-первых, штатные утилиты, такие, как диспетчер задач, редактор реестра, разнообразные
средства настройки и администрирования (доступ через Control panel), информативные панели. Полезную
информацию можно получить путем интерпретации показаний многочисленных счетчиков
производительности, предназначенных для мониторинга системы. Счетчики производительности, а их более
сотни для различных объектов, доступны через оснастку "Системный монитор" административной панели
управления. Пример вкладка «Perfomance\Производительность».
Большое количество полезных утилит входит в состав Windows Support Tools, для их установки надо запустить
Setup из папки \Support \ Tools в дистрибутиве системы. Утилиты и программные средства, входящие в
состав Platform SDK. В состав Microsoft Platform SDK входит более 100 полезных утилит, находящихся после
установки пакета в каталоге Program Files\Microsoft SDK\Bin. Их использование регламентируется
встроенными подсказками, а также прилагаемой к Platform SDK гипертекстовой системой контекстной
помощи. Кроме того, в состав пакета входит большое количество библиотек, заголовочных файлов, примеров
программного кода и полезной документации.
9. Операционные системы реального времени.
Каноническое определение системы реального времени дано Дональдом Гиллиесом и выглядит так:
«Системой реального времени является такая система, корректность функционирования которой
определяется не только корректностью выполнения вычислений, но и временем, в которое получен
требуемый результат. Если требования по времени не выполняются, то считается, что произошел отказ
системы». Дональд Гиллиес – наладчик компьютера ORDVAC построенный Иллинойским университетом для
Лаборатории баллистических исследований, расположенной на Абердинском испытательном полигоне. В 1952 году.
Компьтер работал до 1962. ORDVAC был первой машиной, для которой был написан компилятор. Это был один из
первых компьютеров, которым можно было пользоваться удаленно, и который использовался удаленно из университета
на регулярной основе. Гарантия выполнения требований по времени необходима, чтобы поведение системы
было предсказуемо. Для удовлетворения требованиям по времени системы реального времени
обеспечивают высокую степень использования ресурсов. Все ОС РВ являются многозадачными
операционными системами.
Лекция 10 9.1. Организация работ задач в системах ОС РВ.
Самым простым методом организации и планирования для систем реального времени
является
использование в программах циклического алгоритма. Основа закладывается при программировании.
Программист продумывает последовательность (цикл) команд, после выполнения которого, происходит
возврат в какую то начальную точку. Каждый «цикл», представляет собой отдельную подпрограмму, где одни
и теже команды выполняются постоянно с возвратом на указанный адрес. Адрес выбирается таким, чтобы
заново не вводить параметры, являющиеся константами, например, коэффициенты, шкалы приборов. При
этом придерживаться следующих правил:
1. Подпрограммы не должны содержать циклов ожидания неопределенной длинны.
2. Подпрограммы должны выполнять свою работу как можно быстрее, без действий,и расчетов, котрых
можно избежать в этом цикле.
3. При необходимости подпрограмма может сохранять свое окружение и текущие результаты, чтобы в
следующем цикле возобновить работу с того же места.
Под «начало» понимается подпрграмма
ввода коэффициентов и постоянных величин.
Использование циклического алгоритма довольнло простото и прозрачно для понимания. Циклы обычно
помогают минимизиовать размеры кода и данных.
Наличие циклов означает что отсутствует типичное «нормальное» завершение запрограммированного
процесса, заключающееся в том, что выполнены
все команды и работа остановлена. Циклическая
программа непрерывно обрабатывет данные и вседа ждет прерывания, говорящего о важном событии.
Получив такое собщение, прогаммма выходит на подпрграмму «обработки прерывания», выполняет его и
затем возвращается в то самое место цикла, откуда она вышла для обработки. Программа реального
времени это последовательный код команд, исполняющийся в бесконечном цикле. Такая программа
останавливается либо аварийно, либо принудительно- оператором процесса.
Для реальных систем паралельнно используются множество циклических алгоритмов, между которыми
нужно организовать взаимодействие. Потому возникает необходимость введения приоритетности, очередей,
обмена сигналами и запретами. При разработке каждого программного модуля должны быть выделены
защищенные области ресурсов – критические секции. Вход и выход в эти секции должен координинироваться
методами синхронизации, например семафорами.
Приоритетная многозадачность с вытеснением – это наиболее часто используемый в ОС РВ принцип
планирования. Основная идея состоит в том, что высокоприоритетная задача, как только для нее появляется
работа, немедленно прерывает низкоприоритетную.
Операционная система, которая может обеспечить требуемое время выполнения задачи реального времени
даже в худших случаях, называется операционной системой жёсткого реального времени. Операционная
система, которая может обеспечить требуемое время выполнения задачи реального времени в среднем,
называется операционной системой мягкого реального времени. Как правило, разработчики стараются
свести свою систему реального времени к наиболее простым конфигурациям, характерным для систем
«жесткого» реального времени, иногда даже в ущерб эффективности использования вычислительных
ресурсов. В системе мягкого реального времени задержка реакции считается восстановимой ошибкой,
которая может привести к увеличению стоимости результатов и снижению производительности, но не
является фатальной. Примером может служить работа компьютерной сети[. Если система не успела
обработать очередной принятый пакет, это приведет к остановке на передающей стороне и повторной
посылке (в зависимости от протокола). Данные при этом не теряются, но производительность сети снижается.
9.2. Синхронизация задач
В Windows реализована вытесняющая многозадачность - это значит, что в любой момент система может
прервать выполнение одной процесса и передать управление другой. Все потоки, принадлежащие одному
процессу, разделяют некоторые общие ресурсы - такие, как адресное пространство оперативной памяти или
открытые файлы. Эти ресурсы принадлежат всему процессу, а значит, и каждой его нити. Следовательно,
каждая нить может работать с этими ресурсами без каких-либо ограничений. Но, если один поток еще не
закончил работать с каким-либо общим ресурсом, а система переключилась на другой поток, использующую
этот же ресурс, то результат работы этих нитей может чрезвычайно сильно отличаться от задуманного. Такие
же конфликты могут возникнуть и между потоками, принадлежащими различным процессам.
Предположим, разрабатывается программа, в которой параллельно работают два потока. Каждый поток
обращается к одной разделяемой глобальной переменной. Один поток при каждом обращении к этой
переменной выполняет её увеличение, а второй – уменьшение. При одновременной асинхронной работе
потоков возникает такая ситуация: первый поток прочитал значение глобальной переменной в
локальную; ОС прерывает его, так как закончился выделенный ему квант времени процессора, и
передаёт управление второму потоку; второй поток также считал значение глобальной переменной в
локальную, изменил её и записал новое значение обратно в глобальную; ОС вновь передаёт управление
первому потоку, тот, ничего не зная о действиях второго потока, увеличивает свою локальную переменную
и записывает её значение в глобальную. Очевидно, что изменения, внесённые вторым потоком, будут
утеряны.
Для исключения подобных ситуаций необходимо разделить во времени использование совместных данных. В
таких случаях используются механизмы синхронизации, которые обеспечивают корректную работу
нескольких потоков. Средства синхронизации в ОС Windows:
1) критическая секция (Critical Section) – это объект, который принадлежит процессу, а не ядру. А значит, он
защищает свои потоки, но не может синхронизировать потоки из разных процессов. Критическая секция
помогает программисту выделить участок кода, где поток получает доступ к разделяемому ресурсу, и
предотвратить одновременное использование ресурса. Перед использованием ресурса поток входит в
критическую секцию (вызывает функцию EnterCriticalSection). Если после этого какая-либо другой поток
попытается войти в ту же самую критическую секцию, его выполнение приостановится, пока первый поток не
покинет секцию с помощью вызова LeaveCriticalSection. Используется только для нитей одного процесса.
Существует так же функции создания и удаления, вхождения и выхода из критической секции: создание –
InitializeCriticalSection(…), удаление – DeleteCriticalSection(…), вход – EnterCriticalSection(…),
выход –
LeaveCriticalSection(…).Среди синхронизирующих объектов критические разделы наиболее просты.
Этот объект работе процесса анализирует значение специальной переменной процесса, которая используется
как флаг, предотвращающий исполнение некоторого участка кода несколькими потоками одновременно.
Среди синхронизирующих объектов критические разделы наиболее просты.
2) mutex – mutable exclude. Это специальные объекты ядра- объекты-взаимоисключения, у них есть имена. С
их помощью можно синхронизировать доступ к общим данным со стороны нескольких процессов, точнее, со
стороны потоков разных процессов. Ни один другой поток не может завладеть мьютексом, который уже
принадлежит одному из потоков. Если мьютекс защищает какие-то совместно используемые данные, он
сможет выполнить свою функцию только в случае, если перед обращением к этим к нему каждый из потоков
проверит состояние этого мьютекса. Windows расценивает мьютекс как объект общего доступа, который
можно перевести в защищенное (сигнальное) состояние или сбросить. Сигнальное состояние объекта (т.е.
состояние "установлен") соответствует моменту времени, когда объект не принадлежит ни одному потоку и
его можно "захватить". И наоборот, состояние "сброшен" (не сигнальное) соответствует моменту, когда какойлибо поток уже владеет этим объектом. Доступ к объекту разрешается, когда поток, владеющий объектом,
освободит его.
Потоки должны самостоятельно анализировать текущее состояние мьютексов. Если требуется, чтобы к
мьютексу могли обратиться потоки других процессов, ему надо присвоить имя. Функции: CreateMutex(имя) –
создание,
hnd=OpenMutex(имя) – открытие, WaitForSingleObject(hnd) – ожидание и занятие,
ReleaseMutex(hnd) – освобождение,
CloseHandle(hnd) – закрытие. Два (или более) потока могут создать
мьютекс с одним и тем же именем, вызвав функцию CreateMutex. Первый поток действительно создает
мьютекс, а следующие - получают дескриптор уже существующего объекта. Это дает возможность нескольким
потокам получить дескриптор одного и того же мьютекса, освобождая программиста от необходимости
заботиться о том, кто в действительности создает мьютекс. Мьютекс можно использовать в защите от
повторного запуска программ.
3) семафор – semaphore. Объект ядра “семафор” используются для учёта ресурсов и служат для ограничения
одновременного доступа к ресурсу нескольких потоков. Используя семафор, можно организовать работу
программы таким образом, что к ресурсу одновременно смогут получить доступ несколько потоков, однако
количество этих потоков будет ограничено. Создавая семафор, указывается максимальное количество потоков, которые одновременно смогут работать с ресурсом. Каждый раз, когда программа обращается к
семафору, значение счетчика ресурсов семафора уменьшается на единицу. Когда значение счетчика ресурсов
становится равным нулю, семафор недоступен. Создание -CreateSemaphore,
открытиеOpenSemaphore, занять - WaitForSingleObject, освобождение –ReleaseSemaphore. Данный объект позволяет
"захватить" себя определенному количеству потоков. После этого "захват" будет невозможен, пока один из
ранее "захвативших" семафор потоков не освободит его. Семафоры применяются для ограничения количества
нитей, одновременно работающих с ресурсом. Объекту при инициализации передается максимальное число
потоков, после каждого "захвата" счетчик семафора уменьшается. Сигнальному состоянию соответствует
значение счетчика больше нуля.
4) событие – event. События обычно оповещают об окончании какой-либо операции, они также являются
объектами ядра. Можно не просто явным образом оповестить о завершении операции, но также провести
операция установки события (начало операции). События могут быть мануальными (manual) и единичными
(single).
Единичное событие (single event) – это скорее общий флаг для нескольких потоков, но разрешительным он
будет только для одного из них- «автосброс для одного потока». Событие будет находится в сигнальном
состоянии (внимание!), если его установил какой-нибудь поток раньше. При использовании события с
автосбросом уведомление получит и продолжит свое выполнение только однин ожидающий поток,
остальные будут ожидать дальше «ручного» сброса флага . Сбросить это событие может только тот самый
единственный поток.
Мануальное событие (manual event) — это не просто общий флаг для нескольких потоков. Оно выполняет
более сложные функции. Любой поток может установить это событие или сбросить (очистить) его. Если
событие установлено, оно останется в этом состоянии сколь угодно долгое время, вне зависимости от того,
сколько потоков ожидают установки этого события. Когда все потоки, ожидающие этого события, получат
сообщение о том, что событие произошло, оно автоматически сбросится.
Функции: SetEvent, ClearEvent, WaitForEvent. Типы событий: 1) событие с автоматическим сбросом:
WaitForSingleEvent. 2) событие с ручным сбросом (manual), тогда событие необходимо сбрасывать:
ReleaseEvent.
Имеется ещё один объект синхронизации: WaitAbleTimer – объект ядра ОС, который самостоятельно
переходит в свободное состояние через заданный интервал времени (будильник).
9.3 Для обеспечения режима реального времени в ОС могут быть реализованы следующие требования:
поддержка динамических приоритетов (которые можно менять в процессе выполнения задачи) в
многозадачном режиме; возможность наследования приоритетов; возможность вытеснения задач ядром ОС;
ограниченная латентность прерываний (время, в течение которого прерывание запрещено - на время
обработки критической секции кода); выполнение сервисов ОС с приоритетом, который назначается
клиентом сервиса.
В системах РВ обычно отсутствует виртуальная память, поскольку этот метод использует подкачку страниц с
диска, время выполнения которой является непредсказуемым.
ОСРВ- не похожа на Windows. Система ОСРВ обычно компилируется с Вашей программой и она становится
частью комплекса системы реального времени. Для того, чтобы ПЛК работал с написанной Вами программой,
в контроллере должна быть установлена система исполнения (ОСРВ). С этой систему вы компилируете свою
разработку. Установку системы исполнения в контроллер выполняет изготовитель контроллера. Изготовитель
обеспечивает также поддержку всех модулей ПЛК, поэтому конечный пользователь может сосредоточиться
на разработке только прикладной программы.
Среды исполнения самых распространеных комплексов разработки программ для ПЛК CoDeSys и ISaGRAF
могут функционировать в ПЛК под управлением различных операционных систем или вообще без них, в том
числе на обычном персональном компьютере. Собственное ядро реального времени может устанавливать
контроллерный цикл с точностью до нескольких микросекунд. Прикладная программа остается
работоспособной даже при зависании ОС. Часто ОСРВ предлагают библиотеки для работы вашей программы,
например, с графикой, с интернетом, базами данных и т.д. Они удобны, стоит их использовать. Однако,
помните, что без ОСРВ, для которой они написаны, они работать не будут.
Наиболее распространенными в ПЛК и компьютерах для решения задач автоматизации являются
операционные системы Windows CE, QNX Neutrino и OS-9.
Лекция 11. Несмотря на то, что Windows NT создавалась как сетевая операционная система, в нее при
создании были заложены элементы реального времени, а именно - двухуровневая система обработки
прерываний (ISR и DPC), классы реального времени (процессы с приоритетами 16-32 планируются в
соответствии с правилами реального времени). Может быть причина появления этих элементов кроется в том,
что у разработчиков Windows NT за плечами есть опыт создания классической для своего времени
операционной системы реального времени RSX11М (для компьютеров фирмы DEC).
Один из путей
решения проблем реального времени – построение комбинированных систем с
использованием СКАДА. На примере системы TRACE MODE. Монитор реального времени этой
системы производит первичную обработку информации, поступающей из контроллеров или систем
телемеханики (фильтрация, масштабирование, контроль границ и т.д.), управление и регулирование
технологических процессов, перераспределение данных по локальной сети (I-NET TCP/IP), визуализацию
информации на анимированных мнемосхемах и трендах (HMI), расчет в реальном времени статистических
параметров процесса (SPC - statistical process control), ведение исторических архивов, управление собственной
промышленной СУБД реального времени SIAD/SQL™ 6, генерирование отчетных документов, обеспечение
связи с СУБД и приложениями через SQL/ODBC и встроенный OPC-сервер (поставляется опционально). В таких
системах задача непосредственной связи с объектом управления переложена на программируемые
контроллеры. Но остальные задачи, допускающие использование «мягкой» системы реального времени,
выполняются в специализированных программах SCADA.
10 Технологии DCOM.
COM ( Component Object Model — объектная модель компонентов; это стандарт от компании Microsoft,
предназначенный для создания программного обеспечения на основе взаимодействующих компонентов,
каждый из которых может использоваться во многих программах одновременно. Стандарт воплощает в себе
идеи полиморфизма. Стандарт COM закрепился в основном на операционных системах семейства Microsoft
Windows. В современных версиях Windows COM используется очень широко. На основе COM были
реализованы технологии: Microsoft OLE Automation, ActiveX, DCOM, COM+, DirectX, а также XPCOM. Эта
технология имела базой и предшественником техногию OLE.
OLE (Object Linking and Embedding) — технология связывания и внедрения объектов в другие документы и
объекты, разработанная корпорацией Майкрософт. В 1996 году Microsoft переименовала технологию в
ActiveX. OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать
результаты назад. Например, установленная на персональном компьютере издательская система может
послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор
изображений с помощью OLE-технологии. Основное преимущество использования OLE (кроме уменьшения
размера файла) — в том, что она позволяет создать главный файл, картотеку функций, к которой обращается
программа. Этот файл может оперировать данными из исходной программы. После обработки данные
возвращаются в исходный документ. OLE-сервера и клиенты взаимодействуют с системными библиотеками
при помощи таблиц виртуальных функций ( VTBL). Эти таблицы содержат указатели на функции, которые
системная библиотека может использовать для взаимодействия с сервером или клиентом. Библиотеки
OLESRV.DLL (на сервере) и OLECLI.DLL (на клиенте) первоначально были разработаны для взаимодействия
между собой с помощью сообщения WM_DDE_EXECUTE, предоставляемого операционной системой.
OLE 1.1 позднее развился в архитектуру COM (component object model) для работы с компонентами
программного обеспечения. Основным понятием, которым оперирует стандарт COM, является COMкомпонент. Программы, построенные на стандарте COM, фактически не являются автономными
программами, а представляют собой набор взаимодействующих между собой COM-компонентов. Каждый
компонент имеет уникальный идентификатор (GUID-128-бит) и может одновременно использоваться
многими программами. Компонент взаимодействует с другими программами через COM-интерфейсы —
наборы абстрактных функций и свойств. Под интерфейсом понимают группу логически связанных между
собой функций, прототипы и порядок использования которых жестко определены, а реализация — нет. Эти
функции принято называть методами интерфейса. Интерфейсы строго типизованы и не могут изменяться.
Каждый COM-компонент должен, как минимум, поддерживать стандартный интерфейс «IUnknown», который
предоставляет базовые средства для работы с компонентом. Все интерфейсы должны быть его наследниками
(прямыми или косвенными). Никакие исключения из этого правила не допускаются. Интерфейс «IUnknown»
имеет идентификатор (GUID) и содержит в себе три метода (функции): QueryInterface, AddRef, Release. Первые
три входа любой таблицы виртуальных функций vtbl занимают эти методы и именно в таком порядке. Эти
методы ничего особенного не делают.
Метод QueryInterface. Предназначен для преобразования указателя на интерфейс - на вход принимается GUID
интерфейса и адрес переменной, куда нужно поместить выход метода-указатель на интерфейс,вызываемый
данным идентификатором. Если запрашиваемый интерфейс действительно имеется и реализуется данным
объектом, то метод помещает указатель на него в предоставленную переменную. Если нет - метод
возвращает код возврата E_NOINTERFACE и должен вернуть NULL в предоставленной переменной. Обратите
внимание - метод принимает на вход идентификатор любого интерфейса (произвольный GUID), а
возвращает указатель на него, если интерфейс реализуется объектом. Получает он информацию из реестра
операционной системы. Нужную пользователю программу (COM-компонент), пишет сам пользователь,
наследуя уже подготовленный и понятный операционной системе объект «IUnknown». Получается рограмма
разработанная как объект-интерфейс. Для реализации всех созданных пользователем методов-интерфейсов
использутся одной реализация метода QueryInterface – подготовленной и единой для всего COM-объекта.
Разработчик реализует свои методы (функции) обработки данных, используя в качестве исходной структуры
интерфейс «IUnknown» с его исходными методами, который создан разработчиком опнрационной системы.
Любой новый интерфейс (любой COM-компонент) наследуется от IUnknown и обязан реализовать
объявленные в нем методы. Интерфейс (COM-компонент) получает от своего предка возможность
регистрировать в реестре операционной ситстемы свои,самостоятельно написанные, методы .
Функции _AddRef и _Release служат для управления временем жизни COM-объекта, экспортирующего
интерфейсы. Метод AddRef. Предназначен для продвижения вперед на единицу счетчика ссылок. Должен
возвращать новое значение этого счётчика ссылок - от 1 до n, но пользоваться этим значением можно только
для отладки. Microsoft сообщает, что иногда это значение может быть "нестабильно". Что означает
"нестабильно"- я не знаю. Видимо имеется в виду то, что в многопоточной среде значение счётчика
совершенно точно известно только самому этому счётчику, который защищён от одновременного доступа
нескольких потоков сразу. Фактически смысл этого счётчика на клиентской стороне действительно имеется
только при отладке, ничего другого на этом значении построить не удаётся.
Метод Release. Предназначен для продвижения счетчика ссылок назад на единицу. Возвращает новое (после
вычитания) значение счётчика ссылок, которое тоже может использоваться только для отладки. При этом,
если счётчик становится равным нулю - реализация метода должна освободить ресурсы, примитивно говоря уничтожить объект.
Объявление интерфейса в Delphi реализуется ключевым словом interface:
type
IMyInterface = interface
['{412AFF00-5C21-11D4-84DD-C8393F763A13}'] //GUID
procedure DoSomething(var I: Integer); stdcall;
function DoSomethingAnother(S: string): Boolean; end;
IMyInterface2 = interface(IMyInterface)
['{412AFF01-5C21-11D4-84DD-C8393F763A13}'] //GUID
procedure DoAdditional(var I: Integer); stdcall; end;
Когда разработчик объекта добавляет свой интерфейс IMyInterface, предоставляющий методы и свойства
некоторого объекта, в таблице VTBL новые методы располагаются за первыми тремя базовыми методами.
Они представляют пользователю пространство для записи параметров, которые требуется передать другому
компоненту (программе) для обработки и пространство для возврата параметров содержащих результаты
обработки. Естественным образом возникает программа которая передает свой запрос на обработку –
программа клиент. Естественным образом возникает программа которая передает свой запрос на вызова для
программы обработки данных – программа клиент. И должна быть программа которая вызывается
операционной системой, получает данные, обрабатывает их и возвращает результат через адрес в том же
компонете с интерфейсом «IUnknown». И должна быть программа, которая получает данные, обрабатывает
их и возвращает результат через адрес, полученый компонетом с интерфейсом «IUnknown». Эта вторая
программа – «сервер». Она имеет свои GUID-идентификаторы, зарегистрированные в реестре операционной
системы. Эта программа лежит тихо на «дне» океана памяти системы пока клиент через ОС и через СОМкомпонент программы- сервера, написанного разработчиком, не вызовет один из её методов IMyInterface и
не передаст данные для обработки. О существовани сервера знает только операционая система. Кому сервер
передаёт данные через методы IMyInterface, (дополнительно разработанные программистом), сам сервер
тоже не знает. Возможность зарегистрировать программу-сервер обеспечивает базовый для операционной
системы интерфейс «IUnknown», которуму наследует программа сервер.
ОС может позволить клиенту увидеть через реестр наличные СОМ интерфейсы, подтведив что такие сервера
имеются, и доступны для связи. Естественно, параметры которые передаются, должны быть в формате
понятном компоненту «сервер», так и компоненту «клиент». Программист должен, взяв за базу стандарный
интерфейс «IUnknown», расширить объект своми методами, обеспечить взаимопонимание данных между
«клиентом» и «сервером». Каждый из новых методов будет иметь свой идентификатор (GUID). Программист
должен знать работу обеих программ и организовывать выдачу и прием данных через адреса расширенного
COM-интерфейса. Форматы дожны быть согласованных для методы описанных в процедурах, ОС находит
компоненты COM-интерфейсы по их идентификаторах (GUID). COM позволяет помещать COM-объекты в DLLили EXE-модули и подгружать их при необходимости. СОМ технология работает в пределах одного
компьютера.
Windows API предоставляет базовые функции, позволяющие использовать COM-компоненты. Библиотеки MFC
и ATL/WTL предоставляют средства для работы с COM. Библиотека ATL от Microsoft до сих пор остаётся самым
популярным средством создания COM-компонентов. Но COM-разработка остаётся ещё довольно сложным
делом, программистам приходится вручную выполнять многие рутинные задачи, связанные с COM (особенно
это заметно в случае разработки на C++). Впоследствии (в технологиях COM+ и особенно .NET) Microsoft
попыталась упростить задачу разработки COM-компонентов. COM позволяет помещать COM-объекты в DLLили EXE-модули и подгружать их при необходимости. СОМ технология работает в пределах одного
компьютера.
Лекция 12 Позднее архитектура COM была преобразована и стала называться DCOM. Выпущенная в 1996 году
технология DCOM ( Distributed COM — распределённая COM) основана на технологии DCE/RPC (разновидности
RPC). Распределенные системы поддерживают механизм вызова удаленных процедур (RPC). Клиент в одном
узле запрашивает удаленную процедуру сервера, находящегося в другом узле. Вызов удаленной процедуры
аналогичен вызову локальной процедуры, поэтому тот факт, что сервер находится далеко, скрыт от клиента.
DCOM позволяет COM-компонентам взаимодействовать друг с другом по сети.
11. Технология OPC (OLE for Process Control) — семейство программных технологий, предоставляющих
единый интерфейс для управления объектами автоматизации и технологическими процессами. Многие из
OPC протоколов базируются на Windows-технологиях: COM/DCOM. Технология OPC определяет способ обмена
данными между программами на ПЭВМ под управлением ОС Windows. Разработана международной
организацией OPC Foundation как промышленный стандарт для взаимодействия программ, обслуживающих
комплексы контроллеров и телемеханики разных производителей. Опубликована спецификация OPC — набор
документов, определяющий правила для реализации взаимодействия.
Программа «ОРС-сервер» выполняет непосредственное взаимодействие с аппаратурой, используя сетевое
оборудование интерфейсов компьютера. ОРС-cервер обеспечивает сбор данных, передачу команд
управления, диагностику каналов связи и т.д. OPC-сервер является программной частью ОРС-интерфейса,
обеспечивающие доступ к данным. Программа для которой предназначены данные, собираемые OPCсервером, также должна поддерживать технологию ОРС и быть OPC-клиентом. OPC-клиент, например SCADA,
получает данные через ОРС -сервера и выполняет их комплексную обработку — использует для визуализации,
строит графики, выводит на печать, сохраняет на диске и т.д. В системе управления станцией ГГС 5 клиент
сервером является SCADA «TraseMode».
OPC DA Version 2.05a
Наиболее широко используемая. В этом стандарте помимо синхронного обмена данными, при котором
клиент ждет ответа от сервера, введена поддержка асинхронного обмена данными. Асинхронный обмен
данных позволяет продолжать выполнение программы без ожидания ответа устройства. Этот метод снижает
нагрузку на сеть и должен быть рекомендован как основной. Получение данных реализуется с помощью
callback-функции пользовательской программы, которая вызывается в момент прихода ответа от устройства.
Callback или фу́нкция обра́тного вы́ зова — передача исполняемого кода в качестве одного из параметров
другого кода. Обратный вызов позволяет в функции исполнять код, который задаётся в аргументах при её
вызове. Пример алгоритма, которому желательно передавать в аргументе функцию, — алгоритм обхода
какого-либо хранилища объектов с применением действия (например, опроса) к каждому объекту. Обратный
вызов может оформляться в роли этого действия. Действие, передаётся основной процедурой в качестве
кода аргумента. Это действие происходит при наступлении какого-то события (например, ответ от
опрашиваемого модуля контроллера) и результат передается обратно основной процедуре, как ответ на
первый звонок (вызов связи) к интересующему нас объекту.
ОPC Unified Architecture
Спецификация OPC UA открывает новые горизонты для применения OPC-технологий. В частности,
обеспечивается кросс-платформенная совместимость и отказ от использования COM-интерфейса. Новый
стандарт должен обеспечить более высокий уровень безопасности данных, чем OPC DA. Кроме того, новая
спецификация дает возможность организации передачи информации через сеть интернет.
Области применения и состояние разработок
В настоящее время общепризнанным стандартом является только спецификации OPC DA и OPC HDA, а
остальные спецификации только начинают завоевывать себе место под солнцем. Для других спецификаций
существует отставание интерфейсов автоматизации от желаемых заказчику интерфейсов. В последние годы
активно развивается стандарт OPC HDA. OPC HDA (Historical Data Access) —OPC Data Access предоставляет
доступ к данным изменяющимся в реальном времени, OPC Historical Data Access предоставляет доступ к уже
сохраненным данным.
Разновидность OPC-сервера — шлюз к сети полевой шины, такой, как Profibus или LonWorks. Реализация этой
схемы очень похожа на предыдущие случаи. Скорее всего, на компьютере с ОС Windows будет установлен
адаптер fieldbus-сети, а OPC-сервер будет взаимодействовать с этой сетью через драйвер адаптера. В Internet
можно найти немало таких примеров. OPC DX (Data eXchange) — предоставляет функции организации обмена
данными между OPC-серверами через сеть Ethernet. Основное назначение — создание шлюзов для обмена
данными между устройствами и программами разных производителей.
Modbus OPC/DDE сервер – для связи приборов и контроллеров ОВЕН, работающих по протоколу Modbus, со
SCADA-системами. Он обеспечивает связь с устройствами по протоколу Modbus RTU/ASCII, используя
последовательный интерфейс RS-232C или RS-485;
Другие места применения OPC: для работы с базами данных в качестве вспомогательных или промежуточных
OPC-серверов. Поэтому для привлечения к OPC-технологии Internet-технологий используется такой путь:
расширение Web-сервера является OPC-клиентом, собирающим данные от OPC-серверов баз данных или
СКАДА. А на стороне клиентов запускается динамическая html- или xml-страница, получающая данные от
этого Web-сервера. Так сделано, например, на предприятиях VKG. OPC XML-DA (XML-Data Access) —
предоставляет гибкий, управляемый правилами формат обмена данными через HTTP.
Почти все известные SCADA-продукты являются OPC-клиентами, например, AggreGate SCADA/HMI (Tibbo
Technology Inc.), ЭНТЕК (ЭНТЕЛС), MasterSCADA (ИнСАТ), TRACE MODE (AdAstra), КРУГ-2000 (КРУГ), InTouch
(Wonderware), Vijeo Citect (Schneider Electric), CitectSCADA (Schneider Electric), Genesis32 (ICONICS), PcVUE(Arc
Informatique), КАСКАД (Каскад-АСУ) а большинство из них и OPC-серверами (в частности, CiTect, MasterSCADA,
КРУГ-2000 и TRACE MODE, FlexOPC (RealFlex), PcVUE, КАСКАД). Поддержка OPC HDA из российских
полнофункциональных SCADA-систем реализована только в SCADA TRACE MODE, MasterSCADA, и КАСКАД.
Другое ПО подвержено влиянию OPC в гораздо меньшей степени - например, для приложений уровня
управления ресурсами предприятия (АСУП) известна только реализация OPC-клиента с поддержкой OPC DA и
OPC HDA спецификаций для систем, построенных на базе платформы 1С.
Из операционных систем технологию COM/DCOM поддерживают следующие:
ОС Windows, начиная с Windows 95 (с установленным компонентом DCOM) и до Windows 2000. Начиная с
Windows XP модель DCOM поддерживается только для целей обеспечения совместимости; Корпорация
Microsoft больше не развивает COM/DCOM, который заменяется более современной технологией, например
.NET. Технологию COM/DCOM
поддерживает большинство Unix-подобных ОС, включая Linux;
поддерживаемый фирмой GE Software; ОС реального времени QNX; OPC реализуется при помощи решения
OPC DataHub компании Cogent; ОС реального времени VxWorks; обеспечивается фирмой-разработчиком
WindRiver; имеется поддержка OPC, встроенного в систему разработки Tornado. Драйверы TRACE MODE
бесплатны, а OPC-серверы как правило нет; Драйверы для ряда конретных приборов, счетчиков, модулей
встроены непосредрственно в SCADA TRACE MODE, а OPC-серверы это отдельные программные модули.
12. Технология World Wide Web
Ethernet ([ˈiːθərˌnɛt]— семейство технологий пакетной передачи данных для компьютерных сетей.
Стандарты Ethernet определяют проводные соединения и электрические сигналы на физическом уровне,
формат кадров и протоколы управления доступом к среде — на канальном уровне модели OSI. В настоящее
время практически всегда подключение происходит через коммутаторы (switch), так что кадры, отправляемые
одним узлом, доходят лишь до адресата— это повышает скорость работы и безопасность сети. В стандарте
первых версий (Ethernet v1.0 и Ethernet v2.0) указано, что в качестве передающей среды используется
коаксиальный кабель, в дальнейшем стали использовать витую пару и оптический кабель. Витая пара
обеспечивает подключение «звезда». Причиной перехода на оптический кабель была необходимость
увеличить длину сегмента без повторителей
При проектировании стандарта Ethernet было предусмотрено, что каждая сетевая карта (равно как и
встроенный сетевой интерфейс) должна иметь уникальный шестибайтный номер (MAC-адрес), прошитый в
ней при изготовлении. При проектировании стандарта Ethernet было предусмотрено, что каждая сетевая
карта (равно как и встроенный сетевой интерфейс) должна иметь уникальный шестибайтный номер (MACадрес), прошитый в ней при изготовлении.
В зависимости от скорости передачи данных, и передающей среды существует несколько вариантов
технологии. Независимо от способа передачи стек сетевого протокола и программы работают одинаково
практически во всех нижеперечисленных вариантах.
Хаб (англ. hub) — в общем смысле, узел какой-то сети. В хабе имеется определенное количество разъемов
(портов), к которым подключаются все ПК сети. Обычно для этого используется кабель витая пара, обжатая
определенным образом. Свитч – от английского «switch» (переключатель), сетевой коммутатор. Как и хаб,
свитч предназначен для объединения множества компьютеров в одну локальную сеть. Хотя на первый взгляд
свитч очень похож на сетевой концентратор Хаб, он принципиально отличается от своего предшественника
способом передачи данных между компьютерами. Получив пакет от одного компьютера, сетевой коммутатор
не передает его без разбору всем остальным ПК в сети, а направляет по адресу – именно тому компьютеру, с
которым необходимо установить контакт. Ответ от ПК свитч также транслирует исключительно отправителю,
т.е. ПК1. Для работы внутри сети при подключении к свичу у каждого компьютера должна быть правильно
настроена пара адреса и маски подсети.
Роутер – от английского «router», маршрутизатор, который умеет передавать данные между различными
сетями, например сетью вашего интернет провайдера и вашей домашней локальной сетью. Маршрутизатор
также имеет разъемы для подключения к нему посредством кабеля других устройств, например
компьютеров, модемов или сетевого коммутатора. Роутер является связующим звеном между двумя
различными сетями и передает данные, основываясь на определенном маршруте, указанном в его таблице
маршрутизации. Эти таблицы позволяют роутеру определить, куда следует направлять пакеты. Принцип
маршрутизации на узле отправителе прост. Когда требуется отправить пакет узлу с определенным IP-адресом,
то узел-отправитель выделяет с помощью маски подсети из собственного IP-адреса и IP-адреса получателя
номера сетей. Далее номера сетей сравниваются и если они совпадают, то пакет направляется
непосредственно получателю, в противном случае – маршрутизатору, чей адрес указан в настройках
протокола IP. Выбор пути на маршрутизаторе осуществляется на основе информации, представленной в
таблице маршрутизации. Таблица маршрутизации – это специальная таблица, сопоставляющая IP-адресам
сетей адреса следующих маршрутизаторов, на которые следует отправлять пакеты с целью их доставки в эти
сети. Обязательной записью в таблице маршрутизации является так называемый маршрут по умолчанию,
содержащий информацию о том, как направлять пакеты в сети, адреса которых не присутствуют в таблице,
поэтому нет необходимости описывать в таблице маршруты для всех сетей. Таблицы маршрутизации могут
строиться «вручную» администратором или динамически, на основе обмена информацией, который
осуществляют маршрутизаторы с помощью специальных протоколов.
В компьютерных магазинах вы можете найти ADSL-роутеры, Wi-Fi роутеры и множество других моделей.
ADSL-роутер подходит для подключения нескольких компьютеров к глобальной сети, если у вас интернет
через телефонную линию. Wi-Fi роутер прекрасно впишется в вашу домашнюю сеть, если у вас кабельный
интернет. При этом кабель от интернета подключается к роутеру, а домашние компьютеры смогут получать
интернет уже по беспроводной
Для обмена информацией взаимодействующие устройства должны иметь одинаковый протокол обмена. В
простейшей форме протокол - это набор правил, которые управляют обменом информацией. Он
определяет синтаксис и семантику сообщений, операции управления, синхронизацию и состояния при
коммуникации. Протокол может быть реализован аппаратно, программно или программно-аппаратно.
Название сети обычно совпадает с названием протокола, что объясняется его определяющей ролью при
создания сети.
12.1 Огромная популярность Всемирной паутины (WWW), придуманной Бернер-сом-Ли из Европейской
организации по ядерным исследованиям (CERN) в Женеве привела к очень быстрому росту сети Internet.
Страницы WWW размещены на Web-серверах. Каждая страница обычно содержит графику и ссылки на
другие страницы. Web-страница создается с помощью языка разметки, например широко распространенного
языка HTML (Hyper Text Markup Language – язык разметки гипертекста). Язык HTML интерпретируется
браузерами и отображается в виде документа в удобной для человека форме. Язык HTML является
приложением SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту
ISO 8879. HTML справляется с проблемами путём определения небольшого набора структурных элементов —
дескрипторов (описателей). Дескрипторы также называют «тегами». С помощью HTML можно легко создать
простой, красиво оформленный документ. Дополнительно в HTML внесена поддержка гипертекста.
Мультимедийные возможности были добавлены позже. Используется также язык XML (eXtensible Markup
Language – расширяемый язык разметки) - это подмножество SGML. В отличие от HTML, вместо использования
ограниченного набора определённых элементов вы имеете возможность создавать ваши собственные
элементы и присваивать им любые имена по вашему выбору. XML решает ряд проблем, которые не решает
HTML, например: 1. Представление документов любого (не только текстового) типа, например, музыки,
математических уравнений и т.д. 2. Сортировка, фильтрация и поиск информации. 3.Представление
информации в иерархическом виде. Язык XHTML является более строгим вариантом HTML, он следует всем
ограничениям XML
Типичная веб-страница представляет из себя текстовый файл в формате HTML, который может содержит теги
и ссылки на файлы в других форматах (текст, графические изображения, видео, аудио, мультимедиа).
Несколько веб-страниц, объединённых общей темой, а также связанных между собой ссылками, образуют
веб-сайт. При этом образующие веб-сайт страницы могут находиться на одном или нескольких веб-серверах,
которые могут располагаться в одном дата-центре или удалённо друг от друга, зачастую в разных странах.
Динамическая страница — веб-страница, которая меняется программно другим комплексом программ с
заданой переодичностью, в отличие от обычной статичной страницы, которая является просто файлом,
лежащим на сервере. Динамический сайт — сайт, состоящий из динамичных страниц — шаблонов, и прочего
(контента, скриптов), представленного в виде отдельных файлов. Страница сайта, показываемая в итоге
браузеру пользователя, формируется на стороне сервера динамически, по запросу, из страницы-шаблона и
отдельно хранимого содержимого (информации, скриптов и др.). Как правило для отображения любого
количества однотипных страниц используется одна страница-шаблон, в которую подгружается
соответствующее содержимое, это позволяет единомоментно корректировать внешний вид сайта, редактируя
всего лишь один шаблон.
Лекция. Для динамических страниц контент (информацию) содержат в базе данных. Сервер получает запрос
от Клиента (например, page.ru/index.php) и запускает обработку файла-скрипта (в данном случае - index.php)
программой – интерпретатором, также называемую Веб-сервером. На этой стадии происходит выборка
необходимой информации из баз данных и наполнение ею страницы, после чего готовая страница
передаётся Клиенту. Наполнение происходит путем реализации написанных программистов скриптов
(кусочков кодов), которые работают с базой данных. Языки программирования на Серверной стороне
используются разные, наиболее часто встречаются, например: Java, PHP, Perl, ASP.NET.
Наиболее популярные на данный момент технологии (Веб-сервера) для генерации динамических
страниц: Для Apache HTTP-серверов под управлением ОС GNU/Linux , Мас и т.д. используется технология JSP
(JavaServer Pages) со скриптовым языком PHP.
Для ОС Microsoft Windows с Веб-сервером управления IIS используется ASP.NET. Сервер IIS позволяет
размещать в Интернете созданные сайты. Он поддерживает сетевые протоколы HTTP, HTTPS, FTP, POP3,
SMTP, NNTP и использует скрипты созданные на языке ASP.NET. Разработчики могут писать и включать в
ASP.NET коды, используя практически любые языки программирования, входящие в комплект NET Framework
(C#, Visual Basic.NET и JScript .NET)
Сервер получает запрос от Клиента (например, page.ru/index.php) и запускает обработку файла-скрипта (в
данном случае - index.php) интерпретатором. Сервер генерирует HTML-код динамической страницы для
обработки браузером или другим агентом пользователя.
Каждая страница помечается унифицированным указателем ресурса (URL), который используется в составе
любой ссылки на эту страницу. Когда пользователь хочет просмотреть страницу, браузер берет из URL адрес
сервера и обращается к нему с просьбой загрузить необходимые данные. Во всемирной паутине HTMLстраницы, как правило, передаются браузерам от сервера по протоколам HTTP или HTTPS, в виде простого
текста или с использованием шифрования.
В клиентской части веб-приложений используется встроенные в браузер JavaScript-ы. Одним из преимуществ
такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя,
поэтому веб-приложения являются кроссплатформенными сервисами.
Внешний модуль, или вставка (plug-in), – это программа, которая помещается в браузер и расширяет его
возможности – скажем, позволяет обрабатывать аудио- и видеоданные, посылаемые сервером. Внешний
модуль может входить в дистрибутив браузера или загружаться отдельно с определенного сервера. С
появлением WWW и Web-браузеров в начале 90-х годов браузер стал распространенным пользовательским
интерфейсом для распределенных приложений. Рост популярности Всемирной паутины вывел на авансцену
язык программирования Java, который широко применяется для создания апплетов.
12.2 Особенности приема и передачи информации по сети.
Распределенная система состоит из компьютеров, соединенных коммуникационной средой, например
локальной сетью. В распределенной среде желательно обеспечить независимость вызывемых программсервисов от их местоположения.
Связь между наиболее употребительными протоколами при соединении компонентов: Уровень 2 –Internet,
уровень 3- транспортный, уповень 4 – пользовательский.
Уровень сетевого интерфейса составляют протоколы, которые обеспечивают передачу данных между узлами
связи физически соединенными друг с другом, или подключенными к одному сегменту сети, для
соответствующих физические средства передачи данных. К этому уровню относятся протоколы Ethernet,
Token Ring, SLIP, PPP, работающие с такими физическими средствами как витая пара, коаксиальный кабель,
оптоволоконный кабель и т.д. Формально протоколы сетевого интерфейса не являются частью уровней
TCP/IP, но стандарты определяют передачу данных в TCP/IP с использованием протоколов сетевого уровня. В
операционной системе UNIX на уровне сетевого интерфейса обычно функционируют драйверы различных
сетевых плат.
Передача информации на уровне сетевого интерфейса производится на основании физических адресов,
соответствующих точкам входа сети в узлы связи (например, физических адресов сетевых карт). Каждая точка
входа имеет свой уникальный адрес – MAC-адрес (Media Access Control), физически зашитый в нее на этапе
изготовления. Так, например, каждая сетевая плата Ethernet имеет собственный уникальный 48-битовый
номер.
На уровне 2 (Internet) действует ICMP – Internet Control Message Protocol. Протокол обработки ошибок и
обмена управляющей информацией между узлами сети. Протокол этого уровня IP – Internet Protocol. Это
протокол, который обеспечивает доставку пакетов информации для обработки протоколами ICMP и
протоколами транспортного уровня TCP и UDP. Протокол ARP – Address Resolution Protocol это протокол для
отображения адресов Internet (IP) в адреса уровня сетевого интерфейса. RARP – Reverse Address Resolution
Protocol. Этот протокол служит для решения обратной задачи: отображения адресов уровня сетевого
интерфейса в адреса уровня Internet.
Центральным протоколом уровня является протокол IP. Вся информация, поступающая к нему от других
протоколов, оформляется в виде IP-пакетов данных (IP datagrams). Каждый IP-пакет содержит адреса
компьютера отправителя и компьютера получателя, поэтому он может передаваться по сети независимо от
других пакетов и, даже, по своему собственному маршруту. IP вычисляет и проверяет контрольную сумму,
которая покрывает только его 20-байтовый заголовок для пакета информации (включающий, например,
адреса отправителя и получателя). Если IP-заголовок пакета при передаче оказывается испорченным, то весь
пакет просто отбрасывается. Ответственность за повторную передачу пакета тем самым возлагается на
вышестоящие уровни.
12.3. IP-адреса. Поскольку на уровне Internet информация передается от компьютера-отправителя к
компьютеру-получателю, ему требуются специальные IP-адреса компьютеров (а точнее, их точек
подсоединения к сети – сетевых устройств) Мы будем далее говорить о IP версии 4 (IPv4), которая
предполагает наличие у каждого сетевого интерфейса уникального 32-битового адреса.
Каждый из IP-адресов классов A–C логически делится на две части: номер сети и номер узла в этой сети.
Идентификаторы сетей в настоящее время присваиваются локальным сетям специальной международной
организацией – корпорацией Internet по присвоению имен и номеров (ICANN). Класс A предназначен для
небольшого количества сетей, содержащих много компьютеров, класс C – напротив, для большого количества
сетей с малым числом компьютеров. Класс B занимает среднее положение. Надо отметить, что все
идентификаторы сетей классов A и B к настоящему моменту уже задействованы.
Допустим, что вам выделен адрес сети класса C, в котором под номер узла сети отведено 8 бит. Если нужно
присвоить IP-адреса 100 компьютерам, которые организованы в 10 Ethernet-сегментов по 10 компьютеров в
каждом, можно поступить по-разному. Можно присвоить номера от 1 до 100 компьютерам, игнорируя их
принадлежность к конкретному сегменту – воспользовавшись стандартной формой IP-адреса. Или же можно
выделить несколько старших бит из адресного пространства идентификаторов узлов для идентификации
сегмента сети, например 4 бита, а для адресации узлов внутри сегмента использовать оставшиеся 4 бита.
Последний способ получил название адресации с использованием подсетей.
Запоминать четырехбайтовые числа для человека достаточно сложно, поэтому принято записывать IP-адреса
в символической форме, переводя значение каждого байта в десятичный вид по отдельности и разделяя
полученные десятичные числа в записи точками, начиная со старшего байта: 192.168.253.10.
Протокол ARP позволяет компьютеру для поиска MAC-адресов разослать специальное сообщение по всему
сегменту сети, которое требует от компьютера, имеющего содержащийся в сообщении IP-адрес, откликнуться
и указать свой физический адрес. Это сообщение поступает всем компьютерам в сегменте сети, но
откликается на него только тот, кого спрашивали. После получения ответа запрашивавший компьютер может
установить необходимое соответствие между IP-адресом и MAC-адресом.
Когда рабочая станция с операционной системой, сгенерированной без назначения IP-адреса, начинает свою
работу, она получает MAC-адрес от сетевого карты и рассылает соответствующий RARP -запрос, содержащий
этот адрес, всем компьютерам сегмента сети. Только RARP -сервер, содержащий информацию о соответствии
указанного физического адреса и выделенного IP-адреса, откликается на данный запрос и отправляет ответ,
содержащий IP-адрес.
За передачу данных из сети Интернет пользователю отвечают два протокола транспортного уровня - UDP
(User Datagram Protocol) и TCP (Transmission Control Protocol). По протоколу UDP отправитель данных не
получает подтверждения их доставки получателю. Этот протокол не упорядочивает передаваемые пакеты,
некоторые из них могут быть потеряны или, наоборот, возможно дублирование пакетов. UDP работает
быстрее, чем TCP (ведь заголовки пакетов у него в пять раз короче - 8 против 40 байт!).
Компонент, желающий послать сообщение другому компоненту не обязан знать, как добраться до
адресуемого компьтера. Соединение компонентов обеспечивается совместным использованием портов и IP
адресов. Порт – номер логическиого канала ввода или вывода для процесса -сервиса, передающего и
принимающего данные. Номер канала ввода/вывода ( его адрес) процесса-сервиса накрепко закреплен за
этим процессом-сервисом и название «номер порта». Порт - это адрес памяти программы для приема
потоков информации при обмене данными. Номер порта дается в диапазоне от нуля до 65535. В семействе
протоколов TCP/IP адресные пространства портов представляют собой положительные значения целого 16битового числа.
Порт вместе с IP адресами хост-компьютеров и сетей на коммуникационном уровне Internetа образует сокет
(socket - разъем). Интерфейс сокета определяет набор операций, доступных приложению для организации
обмена данными по сети с другим приложением. Сокеты не обязательно базируются на протоколе TCP/IP, они
могут также базироваться на IPX/SPX, etc. Можно трактовать номер порта как номер сервиса(услуги). Если в
запросе от клиента указывается номер порта, то ВЕБ сервер вызывает у себя на компьютере соответствующую
службу-процесс. Для каждого транспортного протокола при связи с IP существуют собственные сокеты: UDP
сокеты и TCP сокеты, имеющие различные адресные пространства своих локальных адресов – портов.
Процедура распределения протоколами TCP и UDP поступающих от сетевого уровня пакетов между
прикладными процессами называется демультиплексированием
Данные для передачи программами-приложениями, реализующими протоколы, помещаются в "конверты" с
набором соответствующих заголовков и только после этого передаются по сети. Для установления
двусторонней связи путем задания, доставки и получения ответа нужно указать пять параметров:
<транспортный протокол, IP-адрес отправителя, порт отправителя, IP-адрес получателя, порт получателя>.
И клиент, и сервер должны использовать один и тот же протокол транспортного уровня.
12.4 Службы (стандартные услуги) WWW. Служба именования «сервер имен» хранит имена глобальных сервисов. Предполагается, что местоположение самого сервера имен известно. Если клиент хочет получить
доступ к некоторой услуги- сервису, он запрашивает информацию о нем у сервера имен. Пример службы
имен – это система доменных имен (DNS), используемая в сети Internet. Общее пространство имён Интернета
функционирует благодаря DNS . Домен – это адресс сайта или группы сайтов, имеющих общее имя. Полное
доменное имя состоит из непосредственного имени домена и далее имён всех доменов, в которые он входит,
разделённых точками. Например, полное имя «ru.wikipedia.org» обозначает домен третьего уровня «ru»,
который входит в домен второго уровня «wikipedia», который входит в домен верхнего уровня «org», который
входит в безымянный корневой домен «.» (точка). Доменные имена дают возможность адресации интернетузлов и расположенных на них сетевых ресурсов (веб-сайтов, серверов электронной почты, других служб) в
удобной для человека форме. Обычно под доменным именем понимают именно полное доменное имя.
Рассмотрим на примере работу всей системы. Предположим, мы набрали в браузере адрес ru.wikipedia.org.
Браузер спрашивает у сервера DNS: «какой IP-адрес у ru.wikipedia.org»? Однако сервер DNS может ничего не
знать не только о запрошенном имени, но и даже обо всём домене wikipedia.org. В этом случае сервер
обращается к корневому серверу — например, 198.41.0.4. Этот сервер сообщает — «У меня нет информации о
данном адресе, но я знаю, что 204.74.112.1 является ответственным за зону org.» Тогда сервер DNS
направляет свой запрос к 204.74.112.1, но тот отвечает «У меня нет информации о данном сервере, но я знаю,
что 207.142.131.234 является ответственным за зону wikipedia.org.» Наконец, тот же запрос отправляется к
третьему DNS-серверу и получает ответ — IP-адрес, который и передаётся клиенту — браузеру.
В данном случае при разрешении имени, то есть в процессе поиска IP по имени: браузер отправил известному
ему DNS-серверу рекурсивный запрос — в ответ на такой тип запроса сервер обязан вернуть «готовый
результат», то есть IP-адрес, либо пустой ответ и код ошибки NXDOMAIN; DNS-сервер, получивший запрос от
браузера, последовательно отправлял нерекурсивные запросы, на которые получал от других DNS-серверов
ответы, пока не получил ответ от сервера, ответственного за запрошенную зону; остальные упоминавшиеся
DNS-серверы обрабатывали запросы нерекурсивно (и, скорее всего, не стали бы обрабатывать запросы
рекурсивно, даже если бы такое требование стояло в запросе).
DNS используется в первую очередь для преобразования символьных имён в IP-адреса, но он также может
выполнять обратный процесс. Для этого используются имеющиеся средства DNS. Существует специальный
домен in-addr.arpa, записи в котором используются для преобразования IP-адресов в символьные имена.
Например, для получения DNS-имени для адреса 11.22.33.44 можно запросить у DNS-сервера запись
44.33.22.11.in-addr.arpa, и тот вернёт соответствующее символьное имя. Обратный порядок записи частей IPадреса объясняется тем, что в IP-адресах старшие биты расположены в начале, а в символьных DNS-именах
старшие (находящиеся ближе к корню) части расположены в конце.
12.4.1 Связывание клиентов и серверов. Статическое связывание выполняется на этапе компиляции и
означает, что все обращения клиента к серверу жестко «зашиты» в код услуги. Статический (или постоянный)
IP-адрес является зафиксированным за линией абонента адресом в интернете. Главное отличие статического
IP-адреса от динамического состоит в том, что динамический IP-адрес будет меняться при каждом новом
интернет-подключении. А это влечет за собой неудобства при использовании онлайн-сервисов, в которых
подлинность пользователя определяется по его IP-адресу. Статический IP закрепляется за конкретным
абонентом и остается неизменным в течение всего периода пользования услугой.
Динамическое связывание производится во время выполнения запроса. Оно характеризуется большей
гибкостью, чем статическое, но меньшей эффективностью. Для динамического связывания необходимо
указать имя сервера, который ведет справочник имен и адресов серверов. Каждый сервер регистрирует свое
местоположение и предоставляемые сервисы у программы «сервеа имен». Клиент посылает запрос серверу
имен, передавая имя серверного объекта, и получает ссылку на него. Затем эта ссылка используется для
доступа к удаленному серверу.
12.5 Обмен сообщениями между распределенными задачами можно реализовать с помощью
распределенного ядра распределенной операционной системы. В тех распределенных приложениях, где
число задач относительно постоянно, каждое распределенное ядро также может содержать собственную
копию таблицы имен. На стадии начальной загрузки системы распределенное ядро посылает запрос серверу
имен с просьбой загрузить таблицу имен. Когда отправитель посылает сообщение получателю, локальное
ядро определяет местоположение адресата по своей таблице имен. Если получатель находится в том же узле,
что и отправитель, то локальное ядро направляет сообщение непосредственно по назначению, программе
которая вызвала. Так, на Рис. 2 сообщение от задачи В доставляется напрямую задаче С, так как обе они
работают в узле 1. Если же задача-получатель находится в другом узле, то локальное ядро посылает
сообщение удаленному ядру, расположенному на нужном узле. Получив сообщение, удаленное ядро
переправляет его задаче-получателю.
13 Комерческие операционные системы
Известное вам коммерческое (commercial) программное обеспечение - это прежде всего операционные
системы DOS и Windows. К ним же относятся программы Word, Excel, CorelDraw, Adobe Photoshop и др. Они
имеют разное предназначение, но общим у них является то, что все они стоят денег, причем, как правило,
немалых. Например, Windows, в зависимости от версии и варианта поставки, обойдется вам в сумму до 300
долл. Пакет MS Office (Word, Excel и еще несколько программ) стоит от 200 до 900 долл., опять-таки в
зависимости от варианта поставки. Остальные коммерческие программы тоже недешевы.
Коммерческое программное обеспечение поставляется на физическом носителе (как правило, на компактдиске) и часто сопровождается печатной документацией. Все это упаковывают в красивую коробочку (box) и
продают в магазинах.
Поскольку выпуск промышленного тиража - дело дорогое, коммерческие программы выпускают лишь
достаточно крупные компании. В то же время существует такая разновидность коммерческого программного
обеспечения, как заказное. Оно может быть продано в единичном экземпляре конкретному заказчику, а его
цена может достигать миллионов долларов.
Коммерческое программное обеспечение нельзя не только копировать и раздавать знакомым, но даже
устанавливать на компьютер, если у вас нет на него лицензии или вы не согласны с тем, что в ней написано.
Нарушение лицензионного соглашения может привести (и, бывает, приводит) к судебным разбирательствам и
к гражданской, а то и к уголовной ответственности нарушителей.
Коммерческие операционные системы образуют непрерывный диапазон функциональности,
эксплуатационных качеств и цен. Те, что на нижнем конце спектра предлагают только базовый вытесняющий
планировщик и немного других ключевых системных вызовов. Подобные операционные системы обычно
дешевы, поставляются с исходными кодами, которые вы можете модифицировать, и не требуют оплаты
каких-либо отчислений. Операционные системы на другом конце спектра обычно содержат уйму
выполняемых функций сверх базового планировщика. Данные операционные системы могут быть очень
дорогими, стартовая цена находится в диапазоне от 10000$ до 50000$ и плюс обязательные отчисления за
каждую копию, зашитую в ROM. Тем не менее, такая цена часто включает бесплатную техническую поддержку
и обучение, а также набор средств разработки. Между двумя этими крайностями находятся системы, которые
имеют умеренные цены и/или отчисления, но не содержат исходных кодов; техническая поддержка может
стоить дополнительных денег. Большинство коммерческих операционных систем попадают в эту категорию.
Операционная система реального времени QNX
QNX – это первая коммерческая ОС, построенная на принципах микроядра и обмена сообщениями. Система
реализована в виде совокупности независимых (но взаимодействующих через обмен сообщениями)
процессов различного уровня, каждый из которых реализует определенный вид сервиса. QNX относится к
микроядерным ОС (т.е. реализует только базовые функции ядра - управление адресным пространством ОЗУ и
виртуальной памяти, процессами и потоками, обеспечивает межпроцессорную коммуникацию). Состоит из
ядра, планировщика процессов и сервисов. Построена на основе сервисов - небольших задач, выполняющих
основные функции ОС. Такая структура позволяет отключить любую ненужную функциональность, не изменяя
ядро. Каждый драйвер, приложение, протокол или файловая система выполняются вне ядра, в защищенном
адресном пространстве. Она относится к задачам жесткого реального времени. Инверсия приоритетов
преодолевается с помощью распределенного наследования приоритетов.
Для QNX эффективность, достигается за счет выборочного использования программ и ресурсов. Можно иметь
только тот сервис или те модули, которые реально нужны, причем использование их не должно требовать
серьезных усилий и порождать проблемы. Такая реализация означает ее применимость для встроенных
систем.
Система расширяема. Надежность обеспечивает то, что написанный вами драйвер не нужно компилировать в
ядро, рискуя вызвать нестабильность системы. Быстрый сетевой протокол FLEET, прозрачный для обмена
сообщениями, автоматически обеспечивающий отказоустойчивость, и маршрутизацию между
альтернативными путями доступа. Он не универсален, как TCP/IP, но гораздо проще в использовании и
эффективнее.
Позволяет подключать разные графические подсистемы, включающий QNX Windows, X11R5 и Photon, что даёт
возможность разработчикам выбирать ту, которая лучше подходит для их целей.
Существуют также некоторые ограничения, связанные с ориентацией системы на рынок встроенных систем
реального времени. Вот важнейшие из них: – нет поддержки SMP; – нет виртуальной памяти на диск; –
неэффективная и нестандартная поддержка потоков(threads); – многочисленные ограничения файловой
системы; – отсутствие средств безопасности в рамках собственного сетевого протокола.
Windows CE.NET
Многозадачная операционная система жесткого реального времени Windows CE.NET корпорации Microsoft
поддерживает микропроцессоры с архитектурой ARM, StrongARM и xScale, MIPS, SH, X86-совместимые и
имеет следующие свойства:
допускает одновременное выполнение до 32 процессов;
имеет 256 уровней приоритетов; поддерживает вытесняющую многозадачность;
обеспечивает карусельное исполнение цепочек с одинаковым приоритетом;
имеет среднее время обработки прерывания 2,8 мкс (на Pentium 166 МГц), поддерживает вложенные
прерывания; обеспечивает время обработки потока прерываний (Interrupt Service Thread), равное 17,9 мкс
(на Pentium 166 МГц); в минимальной конфигурации может быть установлена при объеме ОЗУ 200 Кб.
Ядро этой ОС принципиально отличается от ядра ОС для настольных компьютеров. В Windows CE.NET
объединены возможности систем реального времени и последние технологии Windows. Планирование
выполняется на основе приоритетов. Используется наследование приоритетов. Несмотря на наличие
возможности работы с виртуальной памятью, для обеспечения режима жесткого реального времени ее
отключают.
Windows CE .NET поддерживает Microsoft Visual Studio .NET и Microsoft eMbedded Visual C++ с языками
программирования Visual C++, Visual C#, and Visual Basic .NET.
Развитие операционных систем. OS/360 использовалась на большинстве компьютеров IBM начиная с 1966,
включая те компьютеры, которые помогали NASA отправить человека на Луну.
Системное программное обеспечение ПК. http://www.lessons-tva.info/edu/e-inf1/e-inf1-3-1.html
Обзор 3 известных ОСРВ. // на основе сообщений пользователей
FreeRTOS
Одна из самых популярных ОСРВ на сегодняшний день. Портирована на огромное количество железа.
Плюсы 1) Бесплатная 2) Портирована на большое количество железа 3) Мощный функционал 4) Есть
различные библиотеки: графика, интернет и другое. 5) Хорошая документация.
Минусы 1)Довольно-таки сложный процесс портирования на новое железо.
Вывод: Это действительно профессиональная ОСРВ с хорошей документацией. Будет хороша для новичка,
если на его железо уже есть порт.
KeilRTX До последнего времени эта ОСРВ была коммерческой, но недавно стала открытой. Работает только
на архитектуре arm(Advanced RISC Machine). Плюсы 1)Бесплатная 2)Легко портируется на новое железо( в
пределах архитектуры arm). В 2007 году около 98 % из более чем миллиарда мобильных телефонов,
продаваемых ежегодно, были оснащены по крайней мере одним процессором ARM. По состоянию на 2009 на
процессоры ARM приходилось до 90 % всех встроенных 32-разрядных процессоров.
3) Есть различные библиотеки: графика, интернет и другое.
Минусы 1) урезанный функционал 3) Поддерживается только arm. 4) Проигрывает многим ОСРВ по скорости.
Вывод: идеально подойдет для новичка и мелких проектов.
uc/os Мощная коммерческая ОСРВ. Плюсы 1) Огромное количество функций и библиотек. 2) Поддерживает
много железа
Минусы 1)Коммерческая. 2) Сложна в использовании.
Вывод: назвать ее ОСРВ для новичка можно с большой натяжкой.
Перечень коммеческих ОС
Фирма проиводитель
Наменование ОС
Аccelerated Technology — Nucleus Real Time Operating System
Axe —
XTAL RTOS and Ace-TCP
Causality Ltd. —
NetBSD, free operating system based on 4.4BSD
CMX Company —
CMX-RTX Real-Time Multi-Tasking Operating System for Microprocessors
Cygnus Solutions —
eCos Royality free ITRON based RTOS
EUROS —
Euros modular hardware-independent RTOS
Quadro Systems —
RTXC Real Time Operating System
embуввувOS a small and efficient real-time kernel, supports all common 8/16/32-bit CPUs
IAR PowerPac another version of the embOS RTOS above.
Enea OSE Systems —
OSE Real-Time Operating Systems
ERG KK — PrKERNEL — RTOS for ARM7TDMI
Etas —
ERCOS Real-Time Operating System
Express Logic —
ThreadX deterministic real-time operating system
FirmWorks —
Open Firmware
Gaio Technology —
G-OS, RTOS µITRON ver.3.0 based
Green Hills Software — ThreadX — A royalty-free, technically advanced, multi-tasking RTOS
HyperPanel —
The HyperPanel OS is a streamlined, object oriented operating system that can process
applications in a deterministic fashion
Integrated Systems —
pSOSystem real-time Software Development Environment
JMI Software Systems — Executive real-time kernel
Kadak products Ltd —
AMX RTOS supports ARM family of processor
Linux —
Linux for ARM based machines.
Vita Nuova —
Inferno, a small operating system for embedded systems
µC/OS —
Port of µC/OS-II Real Time Kernel to ARM processors
Mentor Graphics —
Nucleus RTOS
Microsoft—
Windows CE
Microtec —
VRTX — Real-Time Operating System
Microware —
OS-9 RTOS and Ariel Royalty-Free, Full-Source RTOS
Motorola —
FLEX OS is an open software operating environment for the wireless industry, which
includes a client/server OS, development tools and applications.
Nexus Electronics Ltd — ConiX embedded OS
Pegasus —
Nemesis operating system runs on StrongARM SA-110 based network computers
RISCOS Ltd —
RISC OS Operating System for Network Computer and Multimedia applications
ChorusOS —
Originally developed by Sun Microsystems, now open source.
Symbian —
EPOC32 Object orientated multitasking Operating System for handheld computing and
other low cost ROM based applications
US Software —
MultiTask, Real Time Operating System µITRON based
Wind River Systems —
VxWorks and IxWorks RTOS
14 Промышленные сети.
В любой модели взаимодействия можно выделить устройство, которое управляет другим (подчиненным)
устройством. Устройство, проявившее инициативу в обмене, называют ведущим, главным или мастером
(Master). Устройство, которое отвечает на запросы мастера, называют ведомым, подчиненным или слейвом
(Slave). Ведомое устройство никогда не начинает коммуникацию первым. Оно ждет запроса от ведущего и
только отвечает на запросы. Например, в модели клиент-сервер клиент является мастером, сервер подчиненным. В модели издатель-подписчик на этапе подписки мастером является клиент, а на этапе
рассылки публикаций - сервер.
В сети может быть одно или несколько ведущих устройств. Такие сети называется, соответственно,
одномастерными или многомастерными. В многомастерной сети возникает проблема разрешения
конфликтов между устройствами, пытающимися одновременно получить доступ к среде передачи
информации. Конфликты могут быть разрешены методом передачи маркера, как, например, в сети Profibus,
методом побитного сравнения идентификатора (используется в CAN), методом прослушивания сети
(используется в Ethernet) и методом предотвращения коллизий (используется в беспроводных сетях).
Сеть Profibus (как и другие описанные здесь промышленные сети, кроме Industrial Ethernet) использует только
первый и второй уровни модели OSI. Один из вариантов сети, Profibus FMS, использует также уровень 7.
В сети могут использоваться устройства трех типов: DP мастер класса 1 (DPM1) - центральный контроллер,
который циклически обменивается информацией с ведомыми устройствами с заранее определенным
периодом; DP мастер класса 2 (DPM2) - устройство, предназначенное для конфигурирования системы,
наладки, обслуживания или диагностики;
ведомое устройство - устройство, которое выполняет сбор информации или выдачу ее исполнительным
устройствам.
Табл. 2.10. Profibus в соответствии с моделью OSI
№
Название уровня
Profibus DP
Profibus FMS
Profibus PA
7
Прикладной
Нет
Fieldbus Message
Specification (FMS)
Нет
6
Представления
5
Сеансовый
Нет
4
Транспортный
3
Сетевой
2
Канальный (передачи
данных)
FDL
FDL
IEC 1158-2
1
Физический
RS-485, оптоволоконный
интерфейс
RS-485, оптоволоконный
интерфейс
Интерфейс IEC
1158-2
Profibus имеет три модификации: Profibus DP, Profibus FMS и Profibus PA [Profibus].
Profibus DP (Profibus for Decentralized Peripherals - "Profibus для децентрализованной периферии") использует
уровни 1 и 2 модели OSI, а также пользовательский интерфейс, который в модель OSI не входит.
Непосредственный доступ из пользовательского приложения к канальному уровню осуществляется с
помощью DDLM (Direct Data Link Mapper - "прямой преобразователь для канального уровня").
Пользовательский интерфейс обеспечивает функции, необходимые для связи с устройствами ввода-вывода и
контроллерами. Profibus DP в отличие от FMS и PA построен таким образом, чтобы обеспечить наиболее
быстрый обмен данными с устройствами, подключенными к сети.
Profibus FMS (Profibus с FMS протоколом) использует уровень 7 модели OSI и применяется для обмена
данными с контроллерами и компьютерами на регистровом уровне. Profibus FMS предоставляет большую
гибкость при передаче больших объемов данных, но проигрывает протоколу DP в популярности вследствие
своей сложности.
Profibus FMS и DP используют один и тот же физический уровень, основанный на интерфейсе RS-485 и могут
работать в общей сети.
Profibus PA (Profibus for Process Automation - "для автоматизации технологических процессов") использует
физический уровень на основе стандарта IEC 1158-2, который обеспечивает питание сетевых устройств через
шину и не совместим с RS-485. Особенностью Profibus PA является возможность работы во взрывоопасной
зоне.
В последние годы появился стандарт PROFInet, который основан на Industrial Ethernet и технологиях COM,
DCOM (см. главу "Программное обеспечение"). Он легко обеспечивает связь промышленной сети Profibus с
офисной сетью Ethernet.
Profibus является многомастерной сетью (с несколькими ведущими устройствами). В качестве ведомых
устройств выступают обычно устройства ввода-вывода, клапаны, измерительные преобразователи. Они не
могут самостоятельно получить доступ к шине и только отвечают на запросы ведущего устройства.
На физическом уровне Profibus DP и FMS используют стандарт RS-485 при скорости передачи до 12 Мбит/с и с
размерами сегментов сети до 32 устройств. Количество устройств можно увеличить с помощью повторителей
интерфейса.
Особые требования установлены к сетевому кабелю. Он должен иметь волновое сопротивление от 135 до 165
Ом при погонной емкости не более 35 пФ/м, площадь поперечного сечения проводников более 0,34 кв. мм. и
погонное сопротивление не более 110 Ом/км. Кабель должен иметь одну или две витые пары с медным
экраном в виде оплетки или фольги.
Стандартом для шины Profibus рекомендуется разъем D-sub (DB-9) с 9-ю контактами, цоколевка разъема
приведена в табл. 2.11. На устройствах устанавливается разъем с гнездами, на кабеле - со штырьками. При
необходимости иметь степень защиты IP65/67 рекомендуется использовать цилиндрический разъем типа
M12 (IEC 947-5-2), HAN-BRID или гибридный разъем фирмы Siemens [Profibus].
С обеих сторон линии передачи подключаются согласующие резисторы, которые конструктивно установлены
во все сетевые разъемы и подключаются с помощью микропереключателей. При скоростях передачи более
1,5 Мбит/с для согласования линии дополнительно используются плоские (печатные) катушки индуктивности.
Для увеличения дальности передачи в Profibus предусмотрена возможность работы с оптоволоконным
кабелем. При использовании стеклянного оптоволокна дальность связи может быть увеличена до 15 км.
Оптоволоконные интерфейсы выполняются в виде сменных модулей для контроллеров.
Profibus PA использует физический уровень, соответствующий стандарту IEC 1158-2. Данные передаются с
помощью уровней тока +9 мА и -9 мА ("токовая петля").
Канальный уровень модели OSI в Profibus называется FDL- уровнем (Fieldbus Data Link - "промышленный канал
связи"). Объект MAC (Medium Access Control - "управление доступом к каналу") на канальном уровне
определяет процедуру передачи данных устройствами, включая управление правами на передачу данных
через сеть. Протокол канального уровня обеспечивает выполнение следующих важных требований:

в процессе коммуникации между ведущими устройствами необходимо обеспечить выполнение
каждым из них своей задачи в течение заранее определенного интервала времени;

взаимодействие ведущих устройств (контроллеров) с ведомыми должно происходить максимально
быстро.
В сети Profibus для доступа ведущих устройств к сети используется метод передачи маркера рис. 2.23. В этом
методе сеть имеет логическую топологию кольца (т. е. кольца на уровне адресов устройств) и каждое ведущее
устройство получает доступ к сети только при получении маркера. Маркер выполняет роль арбитра, который
предоставляет устройству право доступа. По истечении определенного времени это устройство должно
передать маркер следующему ведущему устройству, которое получает доступ также на время, пока маркер
находится у него. Таким образом, каждому ведущему устройству выделяется точно заданный интервал
времени. Этот интервал может быть установлен при конфигурировании системы.
Рис. 2.23. Принцип работы многомастерной сети
Каждому мастеру в сети назначаются свои ведомые устройства (рис. 2.23) В методе "ведущий/ведомый"
процедуру коммуникации с ведомыми устройствами выполняет мастер, который обладает маркером. На
время обладания маркером мастер становится ведущим также по отношению к другим мастерам, т.е. может
выполнять с ними коммуникацию типа "мастер-мастер".
К одной сети могут быть подсоединены до 128 устройств (но не более 32-х в одном сегменте). Спецификация
для конфигурирования системы включает количество узлов сети, распределение адресов устройств, формат
диагностических сообщений, параметры шины. Коммуникационный профиль DP позволяет сконфигурировать
как одномастерную, так и многомастерную сеть. В одномастерной сети ведущее устройство (мастер) может
посылать запросы и получать ответы только от ведомых устройств.
В многомастерной сети имеется несколько ведущих устройств, которые имеют свои одномастерные подсети и
в пределах подсети являются устройствами (контроллерами) класса DPM1. Ведущие устройства в
многомастерной сети могут быть также устройствами класса DPM2. Входные и выходные данные
подчиненных устройств могут быть прочитаны любым мастером сети. Однако записывать данные в устройства
может только один мастер, который при конфигурировании системы был обозначен как DPM1.
Ведущий контроллер (DPM1) может находиться в одном из трех состояний: Stop - когда не происходит
обмена данными; Clear - когда DPM1 может считывать данные, но не может записывать их и выходы всех
устройств переводятся в безопасные состояния; Operate - обычное рабочее состояние.
Если в системе появляется сообщение об ошибке, то DPM1 устанавливает выходы всех устройств вывода в
безопасное состояние, а сам переходит в состояние "Clear". Безопасным считается такое состояние, при
котором исполнительные устройства находятся в безопасном (для человека или системы) состоянии. Такое
состояние самоконтроля системы может быть установлено или нет при ее конфигурировании. При
отключенном состоянии самоконтроля система продолжает работать несмотря на появление ошибок.
Современные модули ввода-вывода являются интеллектуальными устройствами и выполняют многие
функции, которые ранее выполнялись только контроллерами. Однако, чтобы выполнить эти функции,
устройства требуют сложной настройки при инсталляции системы, при обслуживании и параметризации.
Поэтому необходимо иметь точное и полное описание сведений об устройствах, таких как тип выполняемых
функций, количество входов/выходов, диапазон изменения переменных, единицы измерения, значения по
умолчанию, идентифицирующие параметры устройства и т. д.
Profibus предлагает несколько методов и средств для описания устройств, которые обеспечивают унификацию
описания. По историческим причинам в промышленной автоматизации используется в основном формат GSD
(General Station Data - "общие данные об устройстве"). Описание устройств в этом формате создается их
изготовителем и поставляется вместе с устройством.
Характеристики устройства описываются с помощью языка описания электронных устройств Electronic Device
Description Language (EDDL) и поставляются в виде текстового файла EDD (Electronic Device Description "описание электронного устройства"). Интерпретатор этого описания очень хорошо апробирован для
приложений средней сложности. Для сложных приложений Profibus предлагает другой программный
компонент - Device Type Manager (DTM).
Текстовый файл GSD содержит как общую, так и специфичную для конкретного устройства информацию. С
помощью ключевых слов средство конфигурирования может прочесть идентификационные записи,
настраиваемые параметры, типы данных, допустимые значения параметров. Некоторые из ключевых слов
обязательны (по стандарту), например, имя изготовителя, другие являются опционными. GSD файл
загружается в средство конфигурирования системы "Profibus Configurator" и используется при ее инсталляции.
Заключение Наиболее простым и наиболее распространенным в мире и России сетевым протоколом
является Modbus, популярность которого объясняется простотой как для разработчиков, так и потребителей, а
также низкой стоимостью реализации.
Наиболее продуманным, универсальным и многообещающим протоколом является CAN, однако высокая
стоимость и сложность мешают его быстрому распространению.
Очень эффективным и широко применяемым протоколом является Profibus, однако его распространенность
объясняется, в первую очередь, мощным брендом "Siemens".
Широкую популярность в России имеет частнофирменный протокол DCON, что связано, в первую очередь, с
низкой ценой на продукцию из Юго-Восточной Азии, а также с предельной простой протокола.
Беспроводные сети, несмотря на свою привлекательность, имеют очень большое количество
трудноразрешимых проблем, поэтому их применение в промышленной автоматизации должно основываться
на детальном анализе задачи и тщательной оценке всех преимуществ и недостатков беспроводных сетей для
конкретного применения.
Download