Главная страница
Навигация по странице:

  • Иркутск - 2005 2СОДЕРЖАНИЕ 1. СЕМАНТИЧЕСКАЯ ТЕОРИЯ ПРОГРАММ.................................................................. 4

  • 2. ВЕРИФИКАЦИЯ ПРОГРАММ.......................................................................................... 9

  • 3. ТЕОРЕТИЧЕСКИЕ МОДЕЛИ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ................... 16

  • Введение

  • Переход процесса из состояния в состояние

  • Форматы таблиц процессов

  • Операции над процессами

  • 4. СИНХРОНИЗАЦИЯ В РАСПРЕДЕЛЕННЫХ СИСТЕМАХ ..................................... 44 А ЛГОРИТМ СИНХРОНИЗАЦИИ ЛОГИЧЕСКИХ ЧАСОВ

  • ............................................................................. 46 Централизованный алгоритм

  • 5. ПРОЦЕССЫ И НИТИ В РАСПРЕДЕЛЕННЫХ СИСТЕМАХ.................................. 49

  • 6. ПЛАНИРОВАНИЕ ПРОЦЕССОВ В ОС UNIX ............................................................. 52

  • Распределение памяти разделами переменной величины

  • Страничное распределение

  • Странично-сегментное распределение

  • 9. ИЕРАРХИЯ ЗАПОМИНАЮЩИХ УСТРОЙСТВ. ПРИНЦИП КЭШИРОВАНИЯ

  • 10. АСИНХРОННОЕ ПРОГРАММИРОВАНИЕ .............................................................. 75

  • 1. СЕМАНТИЧЕСКАЯ ТЕОРИЯ ПРОГРАММ Некоторые вопросы семантической теории программ.

  • гуд работа. Курс лекций теория вычислительных процессов


    Скачать 1.54 Mb.
    НазваниеКурс лекций теория вычислительных процессов
    Анкоргуд работа
    Дата30.01.2022
    Размер1.54 Mb.
    Формат файлаpdf
    Имя файлаtvp.pdf
    ТипКурс лекций
    #346626
    страница1 из 14
      1   2   3   4   5   6   7   8   9   ...   14

    ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
    КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ
    КУРС ЛЕКЦИЙ
    Теория вычислительных процессов
    Направление подготовки 654600 — Информатика и вычислительная техника
    Специальность 220400 — Программное обеспечение вычислительной техники и автоматизированных систем
    Иркутск - 2005

    2
    СОДЕРЖАНИЕ
    1. СЕМАНТИЧЕСКАЯ ТЕОРИЯ ПРОГРАММ.................................................................. 4
    Н
    ЕКОТОРЫЕ ВОПРОСЫ СЕМАНТИЧЕСКОЙ ТЕОРИИ ПРОГРАММ
    . .................................................. 4
    Р
    АССМОТРИМ ОСНОВНЫЕ ПОДХОДЫ ПРИ ОРГАНИЗАЦИИ ВЫЧИСЛЕНИЙ ПРИ ВЫПОЛНЕНИИ
    ПОСЛЕДОВАНЫХ ПРОГРАММ С ПАМЯТЬЮ
    ................................................................................... 5
    И
    НФОРМАЦИОННЫЕ СВЯЗИ И СЕЧЕНИЯ
    : ..................................................................................... 7
    2. ВЕРИФИКАЦИЯ ПРОГРАММ.......................................................................................... 9
    О
    СНОВНЫЕ ПОНЯТИЯ И ТЕОРЕМЫ
    ............................................................................................... 9
    З
    АДАЧИ
    ..................................................................................................................................... 14
    3. ТЕОРЕТИЧЕСКИЕ МОДЕЛИ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ................... 16
    В
    ЗАИМОДЕЙСТВИЕ И УПРАВЛЕНИЕ ПРОЦЕССАМИ
    .................................................................... 16
    Э
    ЛЕМЕНТАРНОЕ ОПРЕДЕЛЕНИЕ И СВОЙСТВА ПРОЦЕССА
    .......................................................... 16
    Введение ............................................................................................................................... 16
    Определения термина «процесс» .................................................................................... 17
    Состояния процесса........................................................................................................... 17
    Управление процессами в многопроцессорном компьютере ......................................... 19
    Переход процесса из состояния в состояние ................................................................ 20
    Контекст и дескриптор процесса .................................................................................. 21
    Форматы таблиц процессов ............................................................................................ 21
    Блок управления процессом .............................................................................................. 22
    Операции над процессами................................................................................................. 22
    Приостановка и возобновление ....................................................................................... 24
    С
    ЛОЖНЫЕ ВЗАИМОДЕЙСТВИЯ ПРОЦЕССОВ
    ............................................................................... 25
    У
    РОВНИ ПАРАЛЛЕЛИЗМА
    .......................................................................................................... 26
    К
    ЛАССИФИКАЦИЯ
    Ф
    ЛИННА
    ...................................................................................................... 26
    К
    ЛАССИФИКАЦИЯ
    Ш
    ОРА
    .......................................................................................................... 28
    Ф
    ОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ ПРОЦЕССА
    ,
    МОДЕЛЬ
    Х
    ОРНИНГА

    ЕНДЕЛЛА
    . ............................. 29
    Р
    ЕАЛИЗАЦИЯ ПРОЦЕССА
    . .......................................................................................................... 30
    А
    ЛГОРИТМЫ ПЛАНИРОВАНИЯ ПРОЦЕССОВ
    ............................................................................... 31
    В
    ЫТЕСНЯЮЩИЕ И НЕВЫТЕСНЯЮЩИЕ АЛГОРИТМЫ ПЛАНИРОВАНИЯ
    ...................................... 32
    С
    ИНХРОНИЗАЦИЯ ПРОЦЕССОВ
    .................................................................................................. 34
    С
    ИНХРОНИЗАЦИЯ НИЖНЕГО УРОВНЯ
    ........................................................................................ 35
    С
    ЕМАФОРЫ
    . .............................................................................................................................. 37
    С
    ИНХРОНИЗАЦИЯ ВЕРХНЕГО УРОВНЯ
    . ...................................................................................... 39
    М
    ОНИТОРЫ И СЕРВЕРЫ ТРАНЗАКЦИЙ
    ....................................................................................... 40
    Т
    УПИКИ
    ..................................................................................................................................... 41
    Н
    ИТИ
    ......................................................................................................................................... 43
    4. СИНХРОНИЗАЦИЯ В РАСПРЕДЕЛЕННЫХ СИСТЕМАХ ..................................... 44
    А
    ЛГОРИТМ СИНХРОНИЗАЦИИ ЛОГИЧЕСКИХ ЧАСОВ
    ............................................................. 44
    А
    ЛГОРИТМЫ ВЗАИМНОГО ИСКЛЮЧЕНИЯ
    ............................................................................. 46
    Централизованный алгоритм ......................................................................................... 46
    Распределенный алгоритм................................................................................................ 46
    Алгоритм Token Ring......................................................................................................... 46

    3
    Неделимые транзакции....................................................................................................... 47
    5. ПРОЦЕССЫ И НИТИ В РАСПРЕДЕЛЕННЫХ СИСТЕМАХ.................................. 49
    П
    ОНЯТИЕ
    "
    НИТЬ
    " ...................................................................................................................... 49
    Р
    АЗЛИЧНЫЕ СПОСОБЫ ОРГАНИЗАЦИИ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА С ИСПОЛЬЗОВАНИЕМ
    НИТЕЙ
    ........................................................................................................................................ 50
    В
    ОПРОСЫ РЕАЛИЗАЦИИ НИТЕЙ
    ................................................................................................. 51
    6. ПЛАНИРОВАНИЕ ПРОЦЕССОВ В ОС UNIX ............................................................. 52
    7. ПРОЦЕССЫ И НИТИ В ОС WINDOWS NT................................................................. 54
    8. УПРАВЛЕНИЕ ПАМЯТЬЮ ............................................................................................. 57
    Т
    ИПЫ АДРЕСОВ
    ......................................................................................................................... 57
    М
    ЕТОДЫ РАСПРЕДЕЛЕНИЯ ПАМЯТИ БЕЗ ИСПОЛЬЗОВАНИЯ ДИСКОВОГО ПРОСТРАНСТВА
    ......... 58
    Распределение памяти фиксированными разделами....................................................... 59
    Распределение памяти разделами переменной величины .......................................... 60
    Перемещаемые разделы..................................................................................................... 61
    М
    ЕТОДЫ РАСПРЕДЕЛЕНИЯ ПАМЯТИ С ИСПОЛЬЗОВАНИЕМ ДИСКОВОГО ПРОСТРАНСТВА
    .......... 62
    Понятие виртуальной памяти........................................................................................... 62
    Страничное распределение .............................................................................................. 62
    Сегментное распределение ............................................................................................... 64
    Странично-сегментное распределение .......................................................................... 66
    Свопинг................................................................................................................................. 67
    9. ИЕРАРХИЯ ЗАПОМИНАЮЩИХ УСТРОЙСТВ. ПРИНЦИП КЭШИРОВАНИЯ
    ДАННЫХ................................................................................................................................... 68
    Аппаратно-независимый уровень управления виртуальной памятью........................ 70
    Исключительные ситуации при работе с памятью........................................................ 70
    Алгоритмы замещения страниц....................................................................................... 71
    Заключение ........................................................................................................................ 74
    10. АСИНХРОННОЕ ПРОГРАММИРОВАНИЕ .............................................................. 75
    10.1.
    О
    СНОВНЫЕ ПОНЯТИЯ
    ....................................................................................................... 75 10.1.1
    П
    ОНЯТИЕ АСИНХРОННОЙ ПРОГРАММЫ
    ......................................................................... 75 10.1.2.
    Н
    ЕКОРРЕКТНОЕ ВЫЧИСЛЕНИЕ ДАННЫХ
    ........................................................................ 77 10.1.3.
    Н
    ЕКОРРЕКТНОЕ СЧИТЫВАНИЕ ДАННЫХ
    ........................................................................ 78 10.2.
    С
    ЕТИ
    П
    ЕТРИ
    ..................................................................................................................... 78 10.2.1.
    О
    ПРЕДЕЛЕНИЕ СЕТИ
    П
    ЕТРИ
    .......................................................................................... 78 10.2.2.
    Р
    АЗМЕТКА СЕТИ
    ............................................................................................................ 79 10.2.3.
    Г
    РАФ ДОСТИЖИМОСТИ
    .................................................................................................. 82 10.2.4.
    Д
    ЕДЛОКИ
    ....................................................................................................................... 83 10.3.
    M
    ESSAGE PASSING INTERFACE
    .......................................................................................... 86 10.3.1.
    О
    ПРЕДЕЛЕНИЕ
    MPI ....................................................................................................... 86 10.3.2.
    П
    АРАЛЛЕЛЬНАЯ ПРОГРАММА РАЗДЕЛЕНИЯ МНОЖЕСТВ
    ............................................... 88 10.3.3.
    К
    ОММУНИКАЦИОННО
    -
    ЗАМКНУТЫЕ СЛОИ ПАРАЛЛЕЛЬНОЙ ПРОГРАММЫ
    ..................... 90 10.3.4.
    К
    ОГЕРЕНТНОСТЬ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ
    .............................................................. 91 10.3.5.
    А
    НАЛИЗ ПРОГРАММЫ РАЗДЕЛЕНИЯ МНОЖЕСТВ
    ............................................................ 92

    4
    1. СЕМАНТИЧЕСКАЯ ТЕОРИЯ ПРОГРАММ
    Некоторые вопросы семантической теории программ.
    Программирование теоретическое – математическая дисциплина, изучающая математические абстракции программ, трактуемых как объекты, выраженные на формальном языке, обладающие опре- деленной информационной и логической структурой и подлежащие исполнению на автоматических устройствах.
    Т.п. сформировалось на основе двух моделей вычислений:
    - последовательных программ с памятью или операторных программах;
    - рекурсивных программ.
    Обе модели строятся над абстрактной алгебраической системой ∅,Π>, образованной пред- метной областью D, конечным набором (сигнатурой) функциональных
    Φ = {γ1, γ2, … , γm} и предикатных
    Π={π1,… πn} символов с заданным для каждого символа числом его аргументов
    (арностью).
    Определение класса программ слагается из трех частей:
    - схемы программ (синтаксиса)
    - интерпретации;
    - семантики.
    Схема программы – это конструкционный объект, показывающий, как строится программа с ис- пользованием сигнатуры и других формальных символов.
    Интерпретация – этьо задание конкретной предметной области и сопоставление символам сигна- туры конкретных функций и предикатов (базовых операций), согласованных с предметной областью и арностью символов.
    Семантика – это способ сопоставления каждоц программе результата ее выполнения.
    Как правило, с программами связывают вычисляемые ими функции.
    Схема программ с памятью, называемая также алголоподобной, или операторной, схемой, зада- ется в виде конечного ориентированного графа переходов, имеющего обычно одну входную и одну вы- ходную вершины, вершины с одной (преобразователи) и двумя (распознаватели) исходящими дугами.
    С помощью символов сигнатуры и счетного множества символов переменных и констант обыч- ным образом строится множество функциональных и предикатных термов.
    Каждому распознавателю сопоставляется некоторый предикатный терм, а преобразователю – оператор присваивания, имеющий вид y =
    τ, где y – символ переменной, а τ - функциональный терм.
    Конечная совокупность всех переменных в схеме образуют ее память.
    Интерпретация в дополнение к конкретезации базовых операций предписывает каждой перемен- ной область ее изменения, а каждой константе – ее значния.
    Интерпретация обычно входит в семантику как параметр, поэтому схема прогрммы задает мно- жество программ и вычисляемые ими функции, которое получается при варьировании интерпретаций над некоторым запасом базовых операций.
    Для программ с памятью обычна т.н операционная семантика,состоящая из алгоритма выполне- ния программы на заданном состоянии памяти.
    - Программа выполняется при движении по графу переходов:
    ++ при попадании на распознаватель вычисляется предикатный терм и происходит пере- ход по дуге, соответствующей значению предиката.
    ++ при попадании на преобразователь с оператором x := a вычисляется значение a и при- сваевается переменной x.
    - Результат выполнения программы – состояние памяти пр попадании на выходную вершину.
    Схема рекурсивной программы, или рекурсивная схема, использует кроме функциональных т.н. условные термы, которые образуют вместе с первыми (функциональными) множество вычислительных термов, если задаем условный терм в виде (
    ρ|τ1 | τ2), где ρ - предикатный терм, а τ1 и τ2 – вычисли- тельные термы. n! = n(n-1)! = n(n-1)(n-2)!

    5
    Указанные формализмы отмечают уровни абстракции языков программирования:
    ++ если операторные схемы близки к структуре машинной программы
    ++ то рекурсивные схемы ближе к исходной формулировке задач, подлежащих программирова- нию.
    Исследования по теоретическому программированию несут в себе отпечаток общематематиче- ских средств, используемых при изучении моделей программы.
    ++ формально-комбинаторные методы формируют теорию схем программ, которая изучает свой- ства программ, инвариантные относительно выбора интерпретации базовых операций.
    ++ логические методы изучают способы определения семантики программы, а так же ищут зако- номерность в процессе построения программы.
    ++ алгебраические методы, отвлекаясь от конкретной структуры программы, концентрируют свое внимание на изучении множеств, возникающих при рассмотрении программы или класса про- грамм.
    Сложившиеся разделы теоретического программирования охватывают в основном модели по- следовательных вычислений, выполняемых одним активным устройством. Совместная работа машин над общей задачей решается параллельным программированием.
    Рассмотрим основные подходы при организации вычислений при выполнении последованых программ с памятью.
    Пример 1. Вычислить x
    7
    (надо вычислить x
    7
    , не используя операцию возведения в степень).
    Возможные три варианта вычислений:
    Начало вещ x, y, x1, x2, x3, x4, x5, x6;
    Ввод (x); x2 := x * x; x3 := x2 * x; x4 := x3 * x; x5 := x4 * x; x6 := x5 * x; y := x6 * x;
    Вывод(y);
    Конец
    Пример 2. Вычислить x
    7
    Начало вещ x, y
    Ввод(x); y := x * x y := y * x y := y * x y := y * x y := y * x y := y * x
    Вывод(y);
    Конец
    Пример 3. Вычислить x
    7
    Начало вещ x, y; цел i
    Ввод(x); y := x * x для i := 1 шаг 1 до 5 цикл y := y * x;
    Вывод(y);
    Конец
    Первый вывод. Задача может быть запрограммирована разными способами: один способ лучше, другие хуже.
    Второй вывод. Программы могут отличаться друг от друга сильнее и слабее: 1 и 2 ближе чем 1 и

    6 3.
    Третий вывод. Первые две программы настолько похожи, что даже лучше говорить, что это одна и та же программа, только с разными обозначениями промежуточных велечин.
    Четвертый вывод. Имеет смысл такая проблема: составить программу, используя минимальное количество обозначений. Это даст экономию памяти.
    При написании программ придерживаются следующих Двух основных принципов:
    А. Программу надо писать так, чтобы она содержала минимальное количество обозначений.
    Б. Имея в операторе некоторый результат не следует торопиться вводить для него новое обозна- чение, а посмотреть, есть ли в данный момент «свободная» величина, текущее значение которой больше не потребуется.
    Рассмотрим следующий пример
    Пример 4. Вычислить x
    59
    Начало вещ x, y; цел i
    Ввод(x); y := x * x для i := 1 шаг 1 до 57 цикл y := y * x;
    Вывод(y);
    Конец
    Но короткая запись программы требует все же 3·57 операций: умножение, изменение i и сравне- ние его с 57.
    Представим 59 = 32 + 16 + 8 + 2 + 1 x
    59
    = x
    32
    x
    16
    x
    8
    x
    2
    x
    Пример 5. Вычислить x
    59
    Начало вещ x, y, x2, x4, x8, x16, x32
    Ввод(x); x2
    := x*x; x4
    := x2*x2; x8
    := x4*x4; x16
    := x8*x8; x32
    := x16*x16; y := x * x2; y := y * x8; y := y * x16; y := y * x32;
    Вывод(y);
    Конец
    После шага 3 нам уже не нужна величина x4, поэтому см.пример 6.
    Пример 6. Вычислить x
    59
    Начало вещ x, y, x2, x4, x16, x32
    Ввод(x); x2
    := x*x; x4
    := x2*x2; x4
    := x4*x4; x16
    := x4*x4; x32
    := x16*x16; y := x * x2; y := y * x4; y := y * x16; y := y * x32;

    7
    Вывод(x);
    Конец;
    Но это плохо организованная программа, с точки зрения программного кода
    Пример 7. Вычислить x
    59
    Начало вещ x, y
    Ввод(x); y := x * x; x
    2
    x := x * y; x
    3
    y := y * y; x
    4
    y := y * y; x
    8
    x := x * y; x
    11
    y := y * y; x
    16
    x := x * y; x
    27
    y := y * y; x
    32
    y := x * y; x
    59
    Вывод(y);
    Конец;
    Мы должны отдавать себе отчет, что мы еще очень далеки от решения общей задачи экономии памяти. У нас всего один принцип Б и то для решения в линейных простых программах.
      1   2   3   4   5   6   7   8   9   ...   14


    написать администратору сайта