
- •1.Системы программирования. Основные понятия и классификация.
- •2.Процесс компиляции. Основные понятия о процессе компиляции.(48)
- •3.Грамматики и классификация по Хомскому. Способы описания синтаксиса языков программирования.(стр43)
- •4.Лексический анализ. Основные понятия.(50)
- •5.Задачи синтаксического анализа. Основные понятия, канонические формы, используемые в синтаксическом анализе (Префиксная и постфиксная записи выражений.) (58)
- •6.Определение семантики языков на основе средств логического программирования. Определение базисных операторов на языке исчисления предикатов.
- •7.Теория взаимодействующих процессов. Основные принципы и определения.
- •8. Теория взаимодействующих процессов. Определения операций над следами.
- •9. Теория взаимодействующих процессов. Определение процесса.
- •10 Теория взаимодействующих процессов. Определение операций над процессами.
- •11. Параллельное программирование. Основные понятия на основе теории взаимодействующих процессов.
- •12. Основные принципы объектно-ориентированного программирования.
- •13. Порождения и их представления в виде синтаксических деревьев.
- •14. Способы представления процессов в теории взаимодействующих процессов (теоретико-множественное, процедурное, с помощью выражений над процессами).
- •15. Нисходящий синтаксический анализ.
- •16.Восходящий синтаксический анализ.
- •17.Этапы синтеза. Распределение памяти.
- •18. Принципы программирования на языке оссам.
9. Теория взаимодействующих процессов. Определение процесса.
В этом и следующем разделах мы познакомимся с двумя концептуальными понятиями, связанными с ОС - понятием процесса и ресурса. В общем случае процесс—это некоторая деятельность, связанная с исполнением программы на процессоре. При исполнении программ на центральном процессоре чаще всего различают следующие характерные отдельные состояния:
порождение — подготавливаются условия для первого исполнения на процессоре активное состояние, или состояние “Счет” — программа исполняется на процессоре ожидание — программа не исполняется на процессоре по причине занятости какого-либо требуемого ресурса готовность — программа не исполняется, но для исполнения предоставлены все необходимые в текущий момент ресурсы, кроме центрального процессора окончание — нормальное или аварийное окончание исполнения программы, после которого процессор и другие ресурсы ей не предоставляются.
Процесс находится в каждом из своих допустимых состояний в течение некоторого времени, после чего переходит в какое-то другое допустимое состояние.
Для ОС процесс в такой трактовке рассматривается как объект, в отношении которого требуется обеспечить реализацию каждого из допустимых состояний, а также допустимые переходы из состояния в состояние в ответ на события, которые могут явиться причиной таких переходов. Такие события могут инициироваться и самими процессами, которые способны затребовать процессор или какой-либо другой ресурс, необходимый для исполнения программы.
Теория процессов.
Процесс с заданным алфавитом определяется множеством следов , символы которых принадлежат этому алфавиту . Каждый след описывает возможную последовательность событий , в которых процесс может участвовать в определенный момент времени . Формально процесс P - это любое множество следов в алфавите A , для которого выполняются следующие аксиомы :
P0. P A * ;
P1. <> P ;
P2. st P => s P ;
Каждый процесс будет определяться парой (A,P) , где A- алфавит процесса , а P - множество следов в алфавите A . Выделим следующие процессы - примитивы :
FAILA = df ( A , { <> } ) - пустой процесс в алфавите A , который никогда " ничего не делает " ;
(A , A *)- универсальный процесс в алфавите A , который " все делает".
В дальнейшем для удобства процесс P будем рассматривать просто как множество следов , выделяя его алфавит лишь в тех случаях , когда это необходимо , обозначая через P алфавит процесса P .
Примеры процессов в алфавите { a, b } : { <> } , { <>,< b > } ,
{ <>,< a >,< a, b > } , { <>,< a >,< a, b > ,< b > , < b, a > } .
Для процессов-примитивов справедливы следующие ниже свойства .
P3. FAILA является процессом в алфавите A .
P4. A * является процессом в алфавите A .
P5. P= A => FAILA P .
Доказательство свойств P3 , P4 . Для доказательства свойств достаточно
показать выполнение аксиом P0 - P2 .
Доказательство (P3) :
P0 . { <> } A * ( согласно аксиоме Ax1 ) ;
P1. <> { <> } ( согласно теории множеств ) ;
P2. ( st { <> } ) = > (st = <>) => (s=<>) => ( s { <> } ) ( согласно c6 ) .
Доказательство (P4) :
P0 . A * A * ( очевидно ) ;
P1. <> A * ( согласно аксиоме Ax1 ) ;
P2. ( st A * ) = > ( s A * ) ( согласно c7 ) .