//секция «имена атрибутов»:
ATTRNAME secleveIS IS ATTRS (1);
//секция «правиладоступа»:
RULES
READO IF (func ())
WRITEO IF (seclevelS [THISS] <seclevelO [THISO})
ENDRULES
Секция «субъекты» предназначена для определения набора субъектов в системе. Здесь субъекты нумеруются и задаются значения их атрибутов, Секция может включать от одного до шестнадцати субъектов. Максимальное количество атрибутов фиксировано и равно 8. Все атрибуты имеют числовой тип unsignedlong.
Секция «объекты» предназначена для определения набора объектов в системе. Причем, порядок секций «субъекты» и «объекты» непринципиален, т.е. объекты могут быть объявлены перед субъектами. Здесь объекты нумеруются и задаются значения их атрибутов. Количество объектов также варьируется от 1 до 16. Атрибуты объектов также имеют числовой тип unsignedlong, их максимальное количество - 8.
Секция «имена атрибутов» служит для именования атрибутов, как субъектов, так и объектов. Здесь задается имя атрибута по его номеру. Количество атрибутов у субъекта и объекта фиксировано и равно 8. Полученное атрибутом имя сохраняется при смене номера сущности. Имена атрибутов субъектов и объектов должны различаться и не повторять служебные слова языка описания и языка Си++.
Секция «правила доступа» предназначена для задания условий, по которым происходит доступ активных сущностей к пассивным. Секция выделяется служебными словами RULES и ENDRULES. Внутри секции записываются виды доступа и условия доступа. Возможны следующие виды доступа к пассивной сущности:
1. READS- чтение субъекта;
2. READO- чтение объекта;
3. WRITES- запись в субъект;
4. WRITEO- запись в объект;
5. CREATES - создание субъекта;
6. CREATED- создание объекта;
7. DELETES- удаление субъекта;
8. DELETED- удаление объекта;
9. CHATTRS- смена атрибутов субъекта;
10. CHATTRO - смена атрибутов объекта.
Условия доступа записываются в теле IF. Синтаксис внутри IF совпадает с синтаксисом внутри условного оператора if языка Си++.
Дополнительные переменные и функции, применение которых возможно в данной секции, объявляются и определяются во вспомогательных файлах:
• prefile;
• post file.
Prefile предназначен для объявления и определения пользователем необходимых переменных и функций, используемых в файле описания модели.
Postfile предназначен для определения пользователем дополнительных функций, используемых в файле описания модели.
Пример prefile:
int func(void);
Пример postfite:
int func(void)
{
return 1;
}
В качестве основы языка описания модели взят язык Си++. С его помощью определены операторы языка описания. Поэтому пользователь должен придерживаться правил написания программ на языке Си++ (например, синтаксис, правила постановки комментариев, вызовы функций и т.д.). Рассмотрим подробно секции файла описания с точки зрения используемых операторов.
Секция «субъекты». Задание набора субъектов
Чтобы описать систему, пользователю необходимо объявить имеющиеся в ней субъекты и задать их атрибуты. С этой целью в файле инициализации в секции «субъекты» задается набор субъектов следующим образом:
S {номер субъекта, атрибут 1,..., атрибут n);
номер субъекта - номер определяемого субъекта.
Номер субъекта может принимать целое значение из интервала 1...16. При этом, если два субъекта имеют один номер, то в рассмотрение принимается только последний по порядку. Ответственность за последствия выхода за границы интервала лежит на пользователе.
атрибут i - это числовое значение i-oгo атрибута субъекта.
Количество атрибутов - 8. Все атрибуты субъектов имеют тип unsignedlong, что накладывает свои рамки на разрядность атрибута. Ошибка при превышении максимального количества атрибутов будет обработана компилятором Си++.
По умолчанию номер субъекта = 1, а атрибут i= 0. Тогда вызов функции S() эквивалентен S(1, 0,0,0,0,0,0,0,0), S(5) - S(5, 0,0,0,0,0,0,0,0), S(5, 1,2) -S(5, 1,2,0,0,0,0,0,0).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.