= (имя Д цел а, Д цел Ь) имя Д цел : а:= а *Х Ь;

  1. оп < делпр, divab, /:= > = (имя Д вещ а, Д вещ Ь)

имя Д вещ :а:= а / Ь;

  1. оп < делпр, /:=> = (имя Д компл а, Д компл Ь)

имя Д компл: а:= а / Ь;

n) on Q = (имя Д вещ а, Д цел Ь) имя Д вещ: a Q Д вещ (Ь);

  1. on Q = (имя Д компл а, Д цел Ь) имя Д компл: a Q Д компл (Ь);

  2. on Q = (имя Д компл а, Д вещ Ь) имя Д компл: a Q Д компл (Ь);

  3. оп < плюспр, plusab, +: - > =

(имя строк а, строк Ь) имя строк: а:= а + Ь;

г) оп < прип, plusto, + =: > =

(строк а, имя строк Ь) имя строк: Ь:= а + Ь;

  1. оп < плюспр, plusab, +:= > =

(имя строк а, лит Ь) имя строк: а +:= строк (Ь);

  1. оп < прип, plusto, +=: > =

(лит а, имя строк Ь) имя строк: строк (а) +=: Ь;

и) оп < умпр, timesab, X :=, * := > =

(имя строк а, цел Ь) имя строк: а:= а X Ь;

  1. Стандартные математические константы и функции.

  1. Д вещ Д пи = с Д вещ значение близкое к числу П;

Д вещ L рі = Д пи;

  1. проц Д корень = (Д вещ х) Д вещ: с если х > Д 0,

Д вещ значение, близкое к квадратному корню из 'х' с;

проц (Д вещ) Д вещ L sqrt = Д корень;

  1. проц Д эксп = (Д вещ х) Д вещ: с Д вещ значение, если оно существует, близкое к экспоненте от 'х' с;

проц (Д вещ) Д вещ L ехр = Д эксп;

  1. проц Д лг = (Д вещ х) Д вещ: с Д вещ значение, если оно существует, близкое к натуральному логарифму от 'х с;

проц (Д вещ) Д вещ L In = Д лг;

  1. проц Д кос = (Д вещ х) Д вещ: с Д вещ значение, близкое к косинусу от 'х' с; »

проц (Д вещ) Д вещ L cos = Д кос;

проц Дарккос (Д вещх) Д вещ: сеслиабсх<Д 1,Д вещ значение, близкое к арккосинусу от 'х',

Д 0 < Д арккос (х) < Д пи с;

проц (Д вещ) Д вещ L arccos = Д арккос;

g) проц Д син = (Д вещ х) Д вещ: с Д вещ значение, близкое к синусу от 'х' с;

проц (Д вещ) Д вещ L sin = Д син;

  1. проц Д арксин = (Д вещ х) Д вещ; с если абс х < Д 1,

Д вещ значение, близкое к арксинусу от 'х',

абс Д арксин (х) < Д пи / Д 2 с;

проц (Д вещ) Д вещ L arcsin = Д арксин;

  1. проц Д танг = (Д вещ х) Д вещ: с Д вещ значение, близкое к тангенсу от 'х' с;

проц (Д вещ) Д вещ L tan = Д танг;

  1. проц Д арктанг = (Д вещ х) Д вещ: с Д вещ значение, близкое к арк­тангенсу от 'х',

абс Д арктанг (х) < Д пи / Д 2 с;

проц (Д вещ) Д вещ L arctan = Д арктанг;

  1. проц Д след псч = (имя Д цел а) Д вещ:

(а:= с следующее после 'а' псевдослучайное Д цел значение из некого- . рой однородно распределенной последовательности на отрезке [Д О, Д макс цел] с;

с вещественное значение, соответствующее 'а' по некоторому отобра­жению целых значений [Д О, Д макс цел] в вещественные ( Д О, Д 1) {т.е. так, что 0 < х < 1J , такое, что порожденная при этом последова­тельность вещественных значений сохраняет свойства псевдослучай­ности и однородности распределения данной последовательности целых чисел с);

проц (имя Д цел) Д вещ L next random = Д след псч;

10.2.4. Операции синхронизации

Исполнение параллельного-предложения Р { 3.3.1.с} в некотором окру­жении Е называется „параллельным действием”. Исполнение составляющей • основы этого Р в Е называется „процессом” этого параллельного действия.

Всякое исполнение А {в некотором окружении } одного из 3 АКРЫ- ТЫХ-предложений, выделенных прагматами {9.2.1.Ь} прагм начало несов­местимой части прагм и прагм конец несовместимой части прагм в формах 10.2.4.d и 10.2.4.Є, несовместимо { 2.1.4.2.е} ни с каким исполнением В другого из этих ЗАКРЫТЫХ-предложений, если А и В - наследные действия {2.1.4.2.b} разных процессов одного и того же параллельного действия, а) вид сема = ст (имя цел F); вид sema = сема;

  1. оп < уст, level > = (цел а) сема:

(сема s; .F из s := глоб цел := a; s);

  1. оп < уст, level > = (сема а) цел : F из а;

  2. оп < вниз, down > = (сема эдсгер) пуст;

начало имя цел дейкстра = F из эдсгер

;


пока

прагм начало несовместимой части прагм

если дейкстра > 1 то дейкстра — := 1; ложь

иначе

с пусть Р будет таким процессом, что исполнение данного псевдо­примечания {10.1.3. Шаг 7} есть наследное действие этого Р, но никакого другого процесса, наследного для Р; данный процесс Р приостанавливается

f2.1.4.3.f)

с;

истина

все

прагм конец несовместимой части прагм цк пропуск кц

конец;

  1. од < up, вверх > = (сема эдсгер) пуст: прагм начало несовместимой части прагм если имя цел дейкстра = F из эдсгер;

(

то

дейкстра+:= 1) >1

с возобновляются 12.1.4.3.g } все процессы, приостановленные потому, что целое число, именуемое выдаваемым 'дейкстра' име­нем, было меньше единицы с

все

прагм конец несовместимой части прагм;

10.3. Описание обмена

{Стандартным-вступлением предусмотрено три способа „обмена” (т.е. ввода и вывода), а именно бесформатный обмен (10.3.3), форматный об­мен (10.3.5) и двоичный обмен (10.3.6).}

  1. Книги, каналы и файлы

{„Книги, „каналы” и „файлы” моделируют устройства обмена физи­ческой машины, используемой в реализации.}

  1. Книги и связки.

{аа) Вся информация в системе содержится в ряде „книг”. Книга (а) является структурой, содержащей поле, текст вида, специфицированного описателем подвтекст (Ь), именующее информацию в форме литер. Этот текст имеет переменное число страниц, каждая из которых может содер­жать переменное число строчек с переменным числом литер в каждой строч­ке. Номер страницы, номер строчки и номер литеры определяют позицию в тексте. Книга включает также поле заполн, указывающее .логический ко­нец” этой книги, т.е. позицию, до которой книга заполнена информацией, строку обозначение, идентифицирующую данную кйигу и, возможно, содер­жащую некоторую другую (служебную) информацию, например о ее вла­дельце, а также поля запись и пользователи, позволяющие открывать

(10.3.1.4.d) данную книгу одновременно для более чем одного файла толь­ко в том случае, если запись в нее невозможна ни для одного из них.

bb) Доступ к книгам в системе осуществляется через цепочку связок. Эта цепочка доступных для открытия (10.3.1.4.dd) книг именуется доступ­ные книги. Данная книга может именоваться более чем одной связкой в этой цепочке, таким образом создается возможность одновременного до­ступа к отдельной книге из более чем одного процесса (10.2.4). Однако каждый такой доступ возможен только для чтения книги, так как только один процесс может иметь доступ к книге, чтобы писать в нее (аа). Цепоч­ка книг, которые были сняты (10.3.1.4.0), именуется снятые книги.

сс) Одновременный доступ более чем одного процесса к цепочке свя­зок предотвращается использованием семафора защита связей, обеспечи­вающем взаимное исключение между такими процессами.

dd) Книги могут создаваться (например, при вводе) или уничтожаться (например, после вывода) посредством задач (например, операционной си­стемой) из списка-системных-задач (10.4.2); эти книги тогда добавляются к цепочке связок или удаляются из нее ).

  1. вид *- книга =

ст (подвтекст текст,

позиция заполн логический конец книги ,

строк обозначение (1 для идентификации $,

лог запись истина, если эта книга открыта для записи fi цел пользователи сколько раз эта книга была открыта ;

  1. вид *- текст = имя [][][] лит,

вид подвтекст = имя подв [ ] подв [ ] подв [ ] лит;

  1. вид *- позиция = ст (цел р, 1, с);

  2. прио *• вне = 5,

оп вне = (позиция а, Ь) лог:

если р из а < р из b то ложь

инее р из а > р из b то истина

инее 1 из а < 1 из b то ложь

инее 1 из а > 1 из b то истина

иначе с из а > с из b

все;

  1. вид связка = ст (имя книга книга, имя связка след $ ующая ft);

  2. имя связка *■ доступные книги := нил;

  3. имя связка снятые книги := нил;

  4. сема * защита связей = (сема s; F из s := ПЕРВ цел := 1; s);

  1. Каналы.

{аа) „Канал” соответствует одному или нескольким реальнцм устрой­ствам (например, перфоратору или устройству построчной печати, или даже некоторой установке для ядерной физики, результаты работы которой со­бираются вычислительной машиной) или же системному архиву данных, поддерживаемому операционной системой. Канад есть структура, поля ко­торой являются процедурами, вырабатывающими истинностные значения, определяющие допустимые методы доступа к книгам, связанным (с файла­ми) через данный канал. Поскольку эти методы доступа к кшп-е могут за­висеть как от книги, так и от канала (например, некоторая книга может быть устроена так, что ее можно читать, но в нее нельзя записывать), боль­шинство свойств этих методов доступа зависят и от канала, и от книги. Со­ответствующие свойства можно проверить с помощью запросов к обстанов­ке, предусмотренных для файлов (10.3.1.3.ff). Для каналов предусмотре­ны два запроса к обстановке. Это:

  • можно завести, вырабатывающий истина, если на данном канале можно „завести” (10.3.l-4.cc) другой файл;

  • станд код, применяемый для получения „кодирующей таблицы” (bb), которая используется по умолчанию для данного канала.

bb) „Кодирующая таблица” есть значение вида, специфицируемого опи­сателем код, используемое для перекодирования литер из значений, храни­мых во „внутренней” форме в памяти машины, в значения, хранимые во „внешней” форме в некоторой книге, и обратно. Эта таблица является структурой, состоящей из вектора структур, каждая из которых содержит значение во внутренней форме и соответствующее ему внешнее значение. Дополнительные кодирующие таблицы могут предусматриваться реализаци­ями в их библиотечных-вступлениях.

сс) Предусмотрены три стандартных канала, свойства которых опреде­лены ниже (е, f, g). Дополнительные каналы могут предусматриваться реа­лизацией в ее библиотечном-вступлении. Поле номер канала предусмотрено для того, чтобы различать каналы, свойства которых в остальном совпада­ют. }

  1. вид канал = ст (проц (имя книга) лог * уст нач,

*-установка, *■ ввод, * вывод,

О' двоичный, сжатие, переобозначение,

проц лог *- заведение, проц позиция *- макс позиция, проц (имя книга) код О' станд код, цел * номер канала);

вид channel = канал;

  1. вид код = ст ([Г: цел (пропуск)] ст (лит внутр,внешн) F);

  2. проц можно завести = (канал кан) лог: заведение из кан; проц (канал) лог estab possible - можно завести;

  3. проц станд код = (канал кан) проц (имя книга) код: станд код из кан;

проц (канал) проц (имя книга) код stand conv;= станд код;

  1. канал станд канал ввода = с значение вида канал, поле которого, выби­раемое по ввод, есть процедура, всегда вырабатывающая истина, а другие поля имеют какие-то подходящие значения с;

канал stand in channel = станд канал ввода;

  1. канал стаНд канал вывода = с значение вида канал, поле которого, выби­раемое по 'вывод',есть процедура, всегда вырабатывающая истина, а другие поля имеют какие-то подходящие значения с, канал stand out channel = станд канал вывода;

  2. канал станд канал обмена = с значение вида канал, поля которого, выби­раемые по 'установка', 'уст нач', 'ввод', 'вывод' и 'двоичный', являются процедурами, всегда вырабатывающими истина, а другие поля имеют какие-то подходящие значения с;

канал stand back channel = станд канал обмена;

  1. Файлы.

|аа) „Файлы” служат средством сообщения между собственно-про- граммой и книгой, с которой этот файл был открыт на некотором канале. Файл есть структура, содержащая имя книги, с которой он был связан (10.3.1.4.bb) и отдельно имя текста этой книги. Файл содержат также ин­формацию, необходимую для работы процедур обмена с этой книгой, вклю­чающую его текущую позицию тпоз - в данном тексте, его текущее „состоя­ние” (bb), его текущий „формат” (10.3.4) и канал, на котором он был открыт.