= (имя Д цел а, Д цел Ь) имя Д цел : а:= а *Х Ь;
оп < делпр, divab, /:= > = (имя Д вещ а, Д вещ Ь)
имя Д вещ :а:= а / Ь;
оп < делпр, /:=> = (имя Д компл а, Д компл Ь)
имя Д компл: а:= а / Ь;
n) on Q = (имя Д вещ а, Д цел Ь) имя Д вещ: a Q Д вещ (Ь);
on Q = (имя Д компл а, Д цел Ь) имя Д компл: a Q Д компл (Ь);
on Q = (имя Д компл а, Д вещ Ь) имя Д компл: a Q Д компл (Ь);
оп < плюспр, plusab, +: - > =
(имя строк а, строк Ь) имя строк: а:= а + Ь;
г) оп < прип, plusto, + =: > =
(строк а, имя строк Ь) имя строк: Ь:= а + Ь;
оп < плюспр, plusab, +:= > =
(имя строк а, лит Ь) имя строк: а +:= строк (Ь);
оп < прип, plusto, +=: > =
(лит а, имя строк Ь) имя строк: строк (а) +=: Ь;
и) оп < умпр, timesab, X :=, * := > =
(имя строк а, цел Ь) имя строк: а:= а X Ь;
Стандартные математические константы и функции.
Д вещ Д пи = с Д вещ значение близкое к числу П;
Д вещ L рі = Д пи;
проц Д корень = (Д вещ х) Д вещ: с если х > Д 0,
Д вещ значение, близкое к квадратному корню из 'х' с;
проц (Д вещ) Д вещ L sqrt = Д корень;
проц Д эксп = (Д вещ х) Д вещ: с Д вещ значение, если оно существует, близкое к экспоненте от 'х' с;
проц (Д вещ) Д вещ L ехр = Д эксп;
проц Д лг = (Д вещ х) Д вещ: с Д вещ значение, если оно существует, близкое к натуральному логарифму от 'х с;
проц (Д вещ) Д вещ L In = Д лг;
проц Д кос = (Д вещ х) Д вещ: с Д вещ значение, близкое к косинусу от 'х' с; »
проц (Д вещ) Д вещ L cos = Д кос;
проц Дарккос (Д вещх) Д вещ: сеслиабсх<Д 1,Д вещ значение, близкое к арккосинусу от 'х',
Д 0 < Д арккос (х) < Д пи с;
проц (Д вещ) Д вещ L arccos = Д арккос;
‘ g) проц Д син = (Д вещ х) Д вещ: с Д вещ значение, близкое к синусу от 'х' с;
проц (Д вещ) Д вещ L sin = Д син;
проц Д арксин = (Д вещ х) Д вещ; с если абс х < Д 1,
Д вещ значение, близкое к арксинусу от 'х',
абс Д арксин (х) < Д пи / Д 2 с;
проц (Д вещ) Д вещ L arcsin = Д арксин;
проц Д танг = (Д вещ х) Д вещ: с Д вещ значение, близкое к тангенсу от 'х' с;
проц (Д вещ) Д вещ L tan = Д танг;
проц Д арктанг = (Д вещ х) Д вещ: с Д вещ значение, близкое к арктангенсу от 'х',
абс Д арктанг (х) < Д пи / Д 2 с;
проц (Д вещ) Д вещ L arctan = Д арктанг;
проц Д след псч = (имя Д цел а) Д вещ:
(а:= с следующее после 'а' псевдослучайное Д цел значение из некого- . рой однородно распределенной последовательности на отрезке [Д О, Д макс цел] с;
с вещественное значение, соответствующее 'а' по некоторому отображению целых значений [Д О, Д макс цел] в вещественные ( Д О, Д 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 = сема;
оп < уст, level > = (цел а) сема:
(сема s; .F из s := глоб цел := a; s);
оп < уст, level > = (сема а) цел : F из а;
оп < вниз, down > = (сема эдсгер) пуст;
начало имя цел дейкстра = F из эдсгер
;
пока
прагм начало несовместимой части прагм
если дейкстра > 1 то дейкстра — := 1; ложь
иначе
с пусть Р будет таким процессом, что исполнение данного псевдопримечания {10.1.3. Шаг 7} есть наследное действие этого Р, но никакого другого процесса, наследного для Р; данный процесс Р приостанавливается
f2.1.4.3.f)
с;
истина
все
прагм конец несовместимой части прагм цк пропуск кц
конец;
од < up, вверх > = (сема эдсгер) пуст: прагм начало несовместимой части прагм если имя цел дейкстра = F из эдсгер;
(
то
дейкстра+:= 1) >1с возобновляются 12.1.4.3.g } все процессы, приостановленные потому, что целое число, именуемое выдаваемым 'дейкстра' именем, было меньше единицы с
все
прагм конец несовместимой части прагм;
10.3. Описание обмена
{Стандартным-вступлением предусмотрено три способа „обмена” (т.е. ввода и вывода), а именно бесформатный обмен (10.3.3), форматный обмен (10.3.5) и двоичный обмен (10.3.6).}
Книги, каналы и файлы
{„Книги, „каналы” и „файлы” моделируют устройства обмена физической машины, используемой в реализации.}
Книги и связки.
{аа) Вся информация в системе содержится в ряде „книг”. Книга (а) является структурой, содержащей поле, текст вида, специфицированного описателем подвтекст (Ь), именующее информацию в форме литер. Этот текст имеет переменное число страниц, каждая из которых может содержать переменное число строчек с переменным числом литер в каждой строчке. Номер страницы, номер строчки и номер литеры определяют позицию в тексте. Книга включает также поле заполн, указывающее .логический конец” этой книги, т.е. позицию, до которой книга заполнена информацией, строку обозначение, идентифицирующую данную кйигу и, возможно, содержащую некоторую другую (служебную) информацию, например о ее владельце, а также поля запись и пользователи, позволяющие открывать
(10.3.1.4.d) данную книгу одновременно для более чем одного файла только в том случае, если запись в нее невозможна ни для одного из них.
bb) Доступ к книгам в системе осуществляется через цепочку связок. Эта цепочка доступных для открытия (10.3.1.4.dd) книг именуется доступные книги. Данная книга может именоваться более чем одной связкой в этой цепочке, таким образом создается возможность одновременного доступа к отдельной книге из более чем одного процесса (10.2.4). Однако каждый такой доступ возможен только для чтения книги, так как только один процесс может иметь доступ к книге, чтобы писать в нее (аа). Цепочка книг, которые были сняты (10.3.1.4.0), именуется снятые книги.
сс) Одновременный доступ более чем одного процесса к цепочке связок предотвращается использованием семафора защита связей, обеспечивающем взаимное исключение между такими процессами.
dd) Книги могут создаваться (например, при вводе) или уничтожаться (например, после вывода) посредством задач (например, операционной системой) из списка-системных-задач (10.4.2); эти книги тогда добавляются к цепочке связок или удаляются из нее ).
вид *- книга =
ст (подвтекст текст,
позиция заполн логический конец книги ,
строк обозначение (1 для идентификации $,
лог запись истина, если эта книга открыта для записи fi цел пользователи сколько раз эта книга была открыта ;
вид *- текст = имя [][][] лит,
вид подвтекст = имя подв [ ] подв [ ] подв [ ] лит;
вид *- позиция = ст (цел р, 1, с);
прио *• вне = 5,
оп вне = (позиция а, Ь) лог:
если р из а < р из b то ложь
инее р из а > р из b то истина
инее 1 из а < 1 из b то ложь
инее 1 из а > 1 из b то истина
иначе с из а > с из b
все;
вид связка = ст (имя книга книга, имя связка след $ ующая ft);
имя связка *■ доступные книги := нил;
имя связка снятые книги := нил;
сема * защита связей = (сема s; F из s := ПЕРВ цел := 1; s);
Каналы.
{аа) „Канал” соответствует одному или нескольким реальнцм устройствам (например, перфоратору или устройству построчной печати, или даже некоторой установке для ядерной физики, результаты работы которой собираются вычислительной машиной) или же системному архиву данных, поддерживаемому операционной системой. Канад есть структура, поля которой являются процедурами, вырабатывающими истинностные значения, определяющие допустимые методы доступа к книгам, связанным (с файлами) через данный канал. Поскольку эти методы доступа к кшп-е могут зависеть как от книги, так и от канала (например, некоторая книга может быть устроена так, что ее можно читать, но в нее нельзя записывать), большинство свойств этих методов доступа зависят и от канала, и от книги. Соответствующие свойства можно проверить с помощью запросов к обстановке, предусмотренных для файлов (10.3.1.3.ff). Для каналов предусмотрены два запроса к обстановке. Это:
можно завести, вырабатывающий истина, если на данном канале можно „завести” (10.3.l-4.cc) другой файл;
станд код, применяемый для получения „кодирующей таблицы” (bb), которая используется по умолчанию для данного канала.
bb) „Кодирующая таблица” есть значение вида, специфицируемого описателем код, используемое для перекодирования литер из значений, хранимых во „внутренней” форме в памяти машины, в значения, хранимые во „внешней” форме в некоторой книге, и обратно. Эта таблица является структурой, состоящей из вектора структур, каждая из которых содержит значение во внутренней форме и соответствующее ему внешнее значение. Дополнительные кодирующие таблицы могут предусматриваться реализациями в их библиотечных-вступлениях.
сс) Предусмотрены три стандартных канала, свойства которых определены ниже (е, f, g). Дополнительные каналы могут предусматриваться реализацией в ее библиотечном-вступлении. Поле номер канала предусмотрено для того, чтобы различать каналы, свойства которых в остальном совпадают. }
вид канал = ст (проц (имя книга) лог * уст нач,
*-установка, *■ ввод, * вывод,
О' двоичный, сжатие, переобозначение,
проц лог *- заведение, проц позиция *- макс позиция, проц (имя книга) код О' станд код, цел * номер канала);
вид channel = канал;
вид код = ст ([Г: цел (пропуск)] ст (лит внутр,внешн) F);
проц можно завести = (канал кан) лог: заведение из кан; проц (канал) лог estab possible - можно завести;
проц станд код = (канал кан) проц (имя книга) код: станд код из кан;
проц (канал) проц (имя книга) код stand conv;= станд код;
канал станд канал ввода = с значение вида канал, поле которого, выбираемое по ввод, есть процедура, всегда вырабатывающая истина, а другие поля имеют какие-то подходящие значения с;
канал stand in channel = станд канал ввода;
канал стаНд канал вывода = с значение вида канал, поле которого, выбираемое по 'вывод',есть процедура, всегда вырабатывающая истина, а другие поля имеют какие-то подходящие значения с, канал stand out channel = станд канал вывода;
канал станд канал обмена = с значение вида канал, поля которого, выбираемые по 'установка', 'уст нач', 'ввод', 'вывод' и 'двоичный', являются процедурами, всегда вырабатывающими истина, а другие поля имеют какие-то подходящие значения с;
канал stand back channel = станд канал обмена;
Файлы.
|аа) „Файлы” служат средством сообщения между собственно-про- граммой и книгой, с которой этот файл был открыт на некотором канале. Файл есть структура, содержащая имя книги, с которой он был связан (10.3.1.4.bb) и отдельно имя текста этой книги. Файл содержат также информацию, необходимую для работы процедур обмена с этой книгой, включающую его текущую позицию тпоз - в данном тексте, его текущее „состояние” (bb), его текущий „формат” (10.3.4) и канал, на котором он был открыт.