- ГДЗ Математика 4 кл. Петерсон Рабочая тетрадь 2023
- ГДЗ: Математика 4 класс Петерсон
- Часть 1. Урок 4. Двойное неравенство
- Часть 1. Урок 5. Двойное неравенство
- Часть 1. Урок 6. Оценка суммы
- Часть 1. Урок 7. Оценка разности
- Часть 1. Урок 8. Оценка произведения
- Часть 1. Урок 9. Оценка частного
- Часть 1. Урок 10. Прикидка результатов арифметических действий
- Часть 1. Урок 11. Деление с однозначным частным
- Часть 1. Урок 12. Деление с однозначным частным
- Часть 1.
- Часть 1. Урок 14. Деление на двузначное и трехзначное числ
- Часть 1. Урок 15. Деление на двузначное и трехзначное числ
- Часть 1. Урок 16. Деление на двузначное и трехзначное числ
- Часть 1. Урок 17. Оценка площади
- Часть 1. Урок 18. Приближенное вычисление площадей
- Часть 1. Урок 19. Измерения и дроби
- Часть 1. Урок 20. Из истории дробей
- Часть 1. Урок 21. Доли
- Часть 1. Урок 22. Сравнение долей
- Часть 1. Урок 23. Нахождение доли числа
- Часть 1. Урок 24. Проценты
- Часть 1. Урок 25. Нахождение числа по доле
- Часть 1. Урок 26.
- Часть 1. Урок 27. Дроби
- Часть 1. Урок 28. Сравнение дробей
- Часть 1. Урок 29. Нахождение части числа
- Часть 1. Урок 30. Нахождение числа по его части
- Часть 1. Урок 31. Нахождение числа по его части
- Часть 1. Урок 32. Площадь прямоугольного треугольника
- Часть 2. Урок 1. Деление и дроби
- Часть 2. Урок 2. Нахождение части, которую одно число составляет от другого
- Часть 2. Урок 3. Сложение дробей
- Часть 2. Урок 4. Вычитание дробей
- Часть 2. Урок 5. Правильные и неправильные дроби
- Часть 2.
- Часть 2. Урок 7. Задачи на части
- Часть 2. Урок 8. Смешанные числа
- Часть 2. Урок 9. Выделение целой части из неправильной дроби
- Часть 2. Урок 10. Запись смешанного числа в виде неправильной дроби
- Часть 2. Урок 11. Сложение и вычитание смешанных чисел
- Часть 2. Урок 12. Сложение и вычитание смешанных чисел
- Часть 2. Урок 13. Сложение и вычитание смешанных чисел
- Часть 2. Урок 14. Сложение и вычитание смешанных чисел
- Часть 2. Урок 15. Сложение и вычитание смешанных чисел
- Часть 2. Урок 16. Сложение и вычитание смешанных чисел
- Часть 2.
- Часть 2. Урок 18. Числовой луч
- Часть 2. Урок 19. Координаты на луче
- Часть 2. Урок 20. Расстояние между точками числового луча
- Часть 2. Урок 21. Движение по числовому лучу
- Часть 2. Урок 22. Движение по числовому лучу
- Часть 2. Урок 23. Одновременное движение по числовому лучу
- Часть 2. Урок 24. Скорость сближения и скорость удаления
- Часть 2. Урок 25. Скорость сближения и скорость удаления
- Часть 2. Урок 26. Встречное движение
- Часть 2. Урок 27. Движение в противоположных направлениях
- Часть 2. Урок 28. Движение вдогонку
- Часть 2.
- Часть 2. Урок 30. Формула одновременного движения
- Часть 2. Урок 31. Формула одновременного движения
- Часть 2. Урок 32. Формула одновременного движения
- Часть 2. Урок 33. Формула одновременного движения
- Часть 2. Урок 34. Формула одновременного движения
- Часть 2. Урок 35. Действия над составными именованными величинами
- Часть 2. Урок 36. Новые единицы площади
- Часть 3. Урок 1. Сравнение углов
- Часть 3. Урок 2. Развернутый угол. Смежные углы
- Часть 3. Урок 3. Измерение углов
- Часть 3.
- Часть 3. Урок 5. Транспортир
- Часть 3. Урок 6. Транспортир
- Часть 3. Урок 7. Транспортир
- Часть 3. Урок 8. Транспортир
- Часть 3. Урок 9. Транспортир
- Часть 3. Урок 10. Круговые диаграммы
- Часть 3. Урок 11. Столбчатые и линейные диаграммы
- Часть 3. Урок 12. Игра «Морской бой». Пара элементов
- Часть 3. Урок 13. Передача изображений
- Часть 3. Урок 14. Координаты на плоскости
- Часть 3. Урок 15. Построение точек по их координатам
- Часть 3. Урок 16. Точки на осях координат
- Часть 3.
- Часть 3. Урок 18. График движения
- Часть 3. Урок 19. График движения
- Часть 3. Урок 20. График движения
- Часть 3. Урок 21. График движения
- Задачи на повторение
- 7.2. Критические секции и решение Петерсона — Основы компьютерных систем
ГДЗ Математика 4 кл. Петерсон Рабочая тетрадь 2023
Авторы:Петерсон
Год:2022
Тип:рабочая тетрадь
Часть:1, 2, 3
На какой странице твое задание?
Похожие решебники
- Учебник
- Проверочные
- Контрольные
- КИМ
Подробные решения по математике за 4 класс авторы Петерсон
В четвертом классе по математике ребята начинают повторять весь тот материал, который они успели изучить за предыдущие три года начальной школы. Происходит так называемая систематизация, обобщение и анализ базовой информации, которая послужит мощной платформой для дальнейшего знакомства с алгебраическими и геометрическими формулами, правилами, теоремами и аксиомами. Именно поэтому очень важно, чтобы школьники могли не только самостоятельно разбираться с заданиями и пользоваться дополнительной литературой, но и ответственно относились к своей учебе. Имея под рукой гдз по математике рабочая тетрадь за 4 класс Петерсон, нельзя просто списывать готовые ответы. Изначально необходимо постараться самому решить задания. А если что-то не получается, то можно подсмотреть готовый алгоритм решения, который натолкнет на правильный ход мыслей. Ежедневные занятия при помощи такого пособия не только помогут разобраться с новым материалом, но и не дадут забыть все то, что изучалось ранее.
Приоритетные группы пользователей онлайн справочника
В числе тех, кто может постоянно использовать готовые ответы к рабочей тетради по математике для 4 класса автора Петерсон, такие группы пользователей:
- четвероклассники, которые не совсем понимают, как правильно решать примеры или задачи, либо по каким-то причинам пропустили пояснение темы на уроке учителем и теперь не могут самостоятельно разобраться с предлагаемым материалом;
- родители четвероклассников, желающие лично контролировать, несколько их ребенок вникает в суть темы, разбирается в правилах и умеет применять математические формулы на практике;
- школьники старших классов, которым важно вернуться к повторению ранее изученного материала, например, перед написанием самостоятельной или контрольной работы;
- участники олимпиад, математических конкурсов для подготовки к решающим испытаниям. Такой сборник поможет выявить возможные пробелы в знаниях и вовремя вернуться к более подробному рассмотрению тематического материала;
- учителя начальной школы, репетиторы, которым необходимо качественно проверить существенный объем готовых ученических работ за короткий промежуток времени.
Аргументы «за» использование решебников во время учебного процесса
Сегодня многие родители и учителя относятся скептически к пособиям с готовыми ответами. Однако онлайн ответы к рабочей тетради по математике за 4 класс Петерсон – это уникальная возможность для любого школьника всегда найти нужный ответ на задание, которое не получается решить собственными силами. Использование такого пособия это:
- доступ к ценной учебной информации 24/7;
- верные ответы на все теоретические и практические задания, к некоторым из которых приведены краткие пояснения;
- удобный формат подачи информационных данных;
- полное соответствие структуре основного школьного учебника и регламентам образовательных стандартов;
- отсутствие необходимости в частных уроках.
Применяя пособия с ответами с еуроки ГДЗ, школьники получат не только ценные знания, но и навыки самоконтроля, умение самопроверки и самоподготовки.
ГДЗ: Математика 4 класс Петерсон
Часть 1. Урок 3. Знаки > и 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 1. Урок 4. Двойное неравенство
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 1. Урок 5. Двойное неравенство
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 1. Урок 6. Оценка суммы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 1. Урок 7. Оценка разности
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 1. Урок 8. Оценка произведения
1 2 3 4 5 6 7 8 9 10 11 12Часть 1. Урок 9. Оценка частного
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 1. Урок 10. Прикидка результатов арифметических действий
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 1. Урок 11. Деление с однозначным частным
1 2 3 4 5 6 7 8 9 10 11 12Часть 1. Урок 12. Деление с однозначным частным
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 1.
Урок 13. Деление на двузначное и трехзначное число1 2 3 4 5 6 7 8 9 10Часть 1. Урок 14. Деление на двузначное и трехзначное числ
1 2 3 4 5 6 7 8 9Часть 1. Урок 15. Деление на двузначное и трехзначное числ
1 2 3 4 5 6 7 8 9Часть 1. Урок 16. Деление на двузначное и трехзначное числ
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 1. Урок 17. Оценка площади
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 1. Урок 18. Приближенное вычисление площадей
1 2 3 4 5 6 7 8 9 10 11Часть 1. Урок 19. Измерения и дроби
1 2 3 4 5 6 7 8 9 10 11 12Часть 1. Урок 20. Из истории дробей
1 2 3 4 5Часть 1. Урок 21. Доли
1 2 3 4 5 6 7 8 9 10 11 12 13Часть 1. Урок 22. Сравнение долей
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 1. Урок 23. Нахождение доли числа
1 2 3 4 5 6 7 8 9Часть 1. Урок 24. Проценты
1 2 3 4 5 6 7 8 9 10 11Часть 1. Урок 25. Нахождение числа по доле
1 2 3 4 5 6 7 8 9 10Часть 1. Урок 26.
Нахождение числа по доле1 2 3 4 5 6 7 8 9 10 11 12Часть 1. Урок 27. Дроби
1 2 3 4 5 6 7 8 9 10 11 12Часть 1. Урок 28. Сравнение дробей
1 2 3 4 5 6 7 8 9 10 11 12 13Часть 1. Урок 29. Нахождение части числа
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 1. Урок 30. Нахождение числа по его части
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 1. Урок 31. Нахождение числа по его части
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 1. Урок 32. Площадь прямоугольного треугольника
1 2 3 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 1. Деление и дроби
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 2. Нахождение части, которую одно число составляет от другого
1 2 3 4 5 6 7 8 9 10 11 12Часть 2. Урок 3. Сложение дробей
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 2. Урок 4. Вычитание дробей
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 5. Правильные и неправильные дроби
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2.
Урок 6. Правильные и неправильные части величин1 2 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 2. Урок 7. Задачи на части
1 2 3 4 5 6 7 8 9 10 11 12Часть 2. Урок 8. Смешанные числа
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 9. Выделение целой части из неправильной дроби
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 2. Урок 10. Запись смешанного числа в виде неправильной дроби
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 11. Сложение и вычитание смешанных чисел
1 2 3 4 5 6 7 8 9 10 11 12Часть 2. Урок 12. Сложение и вычитание смешанных чисел
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17Часть 2. Урок 13. Сложение и вычитание смешанных чисел
1 2 3 4 5 6 7 8 9 10 11 12 13Часть 2. Урок 14. Сложение и вычитание смешанных чисел
1 2 3 4 5 6 7 8 9 10 11 12Часть 2. Урок 15. Сложение и вычитание смешанных чисел
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 16. Сложение и вычитание смешанных чисел
1 2 3 4 5 6 7 8 9 10 11 12Часть 2.
Урок 17. Шкалы1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 18. Числовой луч
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 2. Урок 19. Координаты на луче
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 2. Урок 20. Расстояние между точками числового луча
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 21. Движение по числовому лучу
1 2 3 4 5 6 7 8 9 10 11 12Часть 2. Урок 22. Движение по числовому лучу
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 23. Одновременное движение по числовому лучу
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 24. Скорость сближения и скорость удаления
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 25. Скорость сближения и скорость удаления
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 2. Урок 26. Встречное движение
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 27. Движение в противоположных направлениях
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 28. Движение вдогонку
1 2 3 4 5 6 7 8 9 10 11 12 13Часть 2.
Урок 29. Движение с отставанием1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 30. Формула одновременного движения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 31. Формула одновременного движения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 2. Урок 32. Формула одновременного движения
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 33. Формула одновременного движения
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 2. Урок 34. Формула одновременного движения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 2. Урок 35. Действия над составными именованными величинами
1 2 3 4 5 6 7 8 9 10 11 12Часть 2. Урок 36. Новые единицы площади
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17Часть 3. Урок 1. Сравнение углов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17Часть 3. Урок 2. Развернутый угол. Смежные углы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 3. Урок 3. Измерение углов
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 3.
Урок 4. Угловой градус1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 3. Урок 5. Транспортир
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 3. Урок 6. Транспортир
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 3. Урок 7. Транспортир
1 2 3 4 5 6 7 8 9 10 11 12Часть 3. Урок 8. Транспортир
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Часть 3. Урок 9. Транспортир
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17Часть 3. Урок 10. Круговые диаграммы
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 3. Урок 11. Столбчатые и линейные диаграммы
1 2 3 4 5 6 7Часть 3. Урок 12. Игра «Морской бой». Пара элементов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Часть 3. Урок 13. Передача изображений
1 2 3 4 5 6 7 8 9 10 11 12Часть 3. Урок 14. Координаты на плоскости
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 3. Урок 15. Построение точек по их координатам
1 2 3 4 5 6 7 8 9 10 11 12 13 14Часть 3. Урок 16. Точки на осях координат
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Часть 3.
Урок 17. Точки на осях координат1 2 3 4 5 6 7 8 9 10 11 12 13Часть 3. Урок 18. График движения
1 2 3 4 5 6 7 8 9 10 11 12Часть 3. Урок 19. График движения
1 2 3 4 5 6 7 8 9 10 11 12Часть 3. Урок 20. График движения
1 2 3 4 5 6 7 8 9Часть 3. Урок 21. График движения
1 2 3 4 5 6 7 8 9Задачи на повторение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 877.2. Критические секции и решение Петерсона — Основы компьютерных систем
Критические секции — это последовательности инструкций, которые
не может чередоваться между несколькими потоками. Простой пример критического
Раздел возникает, когда два потока совместно используют глобальную переменную globalvar
и оба
попробуйте изменить его значение с помощью globalvar++
. Напомним из предыдущей главы
что эта строка кода компилируется в три инструкции на языке ассемблера для
загружать, изменять и сохранять результат.
movq _globalvar(%rip), %rsi # скопировать из памяти в регистр %rsi addq $1, %rsi # увеличить значение в регистре movq %rsi, _globalvar(%rip) # сохраняем результат обратно в память |
Когда несколько потоков выполняют этот код, возникает состояние гонки, поскольку строки можно чередовать. Например, прерывание во время выполнения второй инструкции выполнение может вызвать переключение с одного потока на другой. Листинг 7.1 кода показывает чередующуюся последовательность инструкций (четкий отступ обозначает два потока), которые могут возникнуть из-за этого неудачного выбора времени прерывания.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # Код Листинг 7.1: # Возможная последовательность инструкций языка ассемблера с условием гонки # Поток A копирует globalvar (5) в %rsi, добавляя к нему 1 movq _globalvar(%rip),%rsi addq $1, %rsi # Прерывание: ядро переключается на запуск потока B # Поток B начинает тот же код, но также загружает значение 5 в %rsi movq _globalvar(%rip),%rsi addq $1, %rsi movq%rsi, _globalvar(%rip) # Поток B скопировал 6 обратно в глобальную переменную в памяти # Позже ядро снова переключается на поток A # Поток A также копирует 6 обратно в globalvar movq%rsi, _globalvar(%rip) |
Результат этого чередования, предполагая, что globalvar
изначально был 5,
что потоки (вместе) выполнили globalvar++
дважды, но только значение
изменяется на 6 вместо правильного значения 7. Проблема в том, что
прерывание произошло до того, как первый поток смог обновить globalvar
,
затем ядро переключилось на другой поток, который читал старое значение. Если это
переключение произошло позже, тогда первый поток обновился бы globalvar
со значением 6, которое будет наблюдать второй поток
вместо устаревшего 5.
Важно отметить, что проблема не в прерывании как таковом. Если
происходит прерывание и ядро переключается на globalvar
, будет получен правильный результат. Ошибка возникает из-за
сочетание прерывания/переключения с тем, что оба потока
доступ к одной и той же переменной.
7.2.1. Решение Петерсона
Одним из подходов к решению проблемы критических сечений является использование решения Петерсона.
решение, алгоритмический подход, который использует общую память для объявления намерений. В листинге 7.2 показан алгоритм, использующий массив bool
.
( флаг
) для обозначения намерения потока войти и переменная int
( поворот
)
чтобы указать, какой поток разрешен для входа. [1]
1 2 3 4 5 6 7 8 910 11 12 | /* Листинг 7.2: Решение Петерсона для решения проблемы критического сечения */ флаг [я] = истина; поворот = другой; /* занят, ждите, пока вход станет безопасным */ в то время как (флаг [другое] == true && поворот == другое) ; /* критическая секция */ флаг [я] = ложь; |
Переменная повернуть
играет решающую роль в обеспечении правильного функционирования
решения. В частности, эта переменная заставляет потоки принимать вежливый 9.0043
подход к запросу доступа: когда поток хочет войти в критическую
раздел, он должен объявить, что другой поток должен идти первым. Так как этот тип
манипуляций с переменными состоит из одной записи в память, это может быть
считается атомарным. Следовательно, это обновление не создает условия гонки.
На рис. 7.2.1 показаны все возможные состояния и переходы.
для решения Петерсона. В этой модели есть три основных типа событий.
для каждого потока:
, ВВОД
и ВЫХОД
. Шесть штатов на вершине
модель показывает переходы, когда нет конкуренции. Например, из
левое некритическое состояние (ни один из них не ожидает, очередь
= 1), поток 0 может
указать, что он пытается войти в критическую секцию с событием WAIT
и
сразу входит с событием ENTER
. Событие EXIT
восстанавливает
систему в некритическое состояние.
Рисунок 7.2.1: Модель состояния решения Петерсона
Четыре состояния внизу иллюстрируют, как алгоритм обрабатывает конфликты.
Если ни один поток не вошел в критическую секцию (состояние Ожидание 0
и Ожидание 1
), тогда переменная поворота определяет, какой поток входит. То есть,
условие цикла while может принимать значение true только для одного из потоков,
препятствуя входу другого.
Критический 0
и Критический 1
) когда
другие попытки входа. В этом случае новый поток вынужден ожидать
поворотная переменная. Обратите внимание, что алгоритм Петерсона может быть расширен до более чем двух
нити, а также.Пример 7.2.1
Модель состояний на рис. 7.2.1 может быть трудно понять.
след. Хотя было бы нецелесообразно давать полное описание всех
возможных последовательностей, мы можем описать базовую трассу, которая проходит через семь
штатов. Как и прежде, мы используем отступ для обозначения отдельных потоков,
с нитью T0
без отступа и T1
с отступом. Комментарии перемежаются
указать состояние и изменения соответствующих переменных.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /* Исходное состояние: Некритическое с поворотом=1 */ флаг[0] = истина; очередь = 1; /* Изменить на Ожидание 0, поворот = 1 */ флаг[1] = истина; поворот = 0; /* Изменить на Ожидание обоих, поворот = 0 */ /* Оба ждут, так что ход решает */ в то время как (флаг[1] && поворот == 1) ; /* ЛОЖЬ, поворот=0 */ в то время как (флаг [0] && поворот == 0) ; /* ИСТИНА, T1 заблокирован */ /* Введите критический 0, ожидающий 1 Здесь поток 0 выполняет критическую работу */ флаг[0] = ложь; /* Введите Ожидание 1, поворот = 0 */ в то время как (флаг [0] && поворот == 0) ; /* FALSE, флаг [0] теперь false */ /* Введите критический 1 Здесь поток 1 выполняет критическую работу */ флаг[1] = ложь; /* Входим в некритическое состояние с поворотом=0 */ |
В этой трассировке оба потока начинаются с некритического кода, ни один из них не пытается
для входа в критическую секцию до тех пор, пока T0
не выполнит строку 2.
T1
затем объявит
его намерение войти в линию 4. Строки 3 и 5 являются ключевыми событиями для контроля
заказ; какая бы нить ни поставила очередь последней, она проигрывает. С Т1
изменения поворачиваются после T0
, T0
будет потоком для входа в критическую
раздел. Чтобы подтвердить этот факт, проверьте в то время как
— условия цикла в строках 8
и 9. В этих строках flag[0]
и flag[1]
верны. Состояние
то упирается исключительно в поворот. Позже, после , Т0
покидает критическую секцию.
(строка 13), Условие цикла while T1
изменяется, потому что flag[0]
теперь
ЛОЖЬ; это изменение позволяет T1
выйти из цикла и продолжить работу
критический раздел.7.2.2. Synchronization Properties
Решение Peterson обеспечивает три желательных свойства для решений для проблемы с синхронизацией:
- Безопасность. Два потока не могут находиться в критической секции. одновременно, поэтому они не могут мешать друг другу. Это свойство также называется взаимным исключением.
- Живучесть — если ни один поток не находится в критической секции и хотя бы один пытается enter, то один из потоков сможет войти. Это свойство также называется прогрессом.
- Справедливость — предполагается, что ни один поток не может оставаться в критической секции. бесконечно, если поток попытается войти в критическую секцию, он в конце концов сделать это. Это свойство также называется ограниченным ожиданием.
Проверка Рисунок 7.2.1 дает неофициальную гарантию того, что
эти свойства сохраняются. Безопасность достигается, потому что ни одно состояние не разрешает оба потока.
находиться в критической секции в любое время. Жизнеспособность поддерживается тем,
что все состояния ожидания имеют переход, определенный для события ENTER
;
живучесть может быть нарушена только в том случае, если система может застрять в состоянии ожидания. Справедливость наблюдать несколько сложнее, но она возникает из-за Crit M
, Ожидание N
состояния, в котором один поток находится в критической секции, а другой
пытается войти. Все возможные последовательности событий из этих состояний должны пройти
через состояние, в которое может войти ожидающий поток. Таким образом, нет нити, которая
попытки войти в критическую секцию могут быть бесконечно заблокированы.
Очень трудно добиться комбинации всех трех этих свойств. для проблем с синхронизацией. Вообще говоря, безопасность является требованием и не подход будет считаться решением, не гарантирующим взаимоисключающие доступ. Живость также является стандартным требованием; подходы, которые делают его можно войти в состояние взаимоблокировки, которое блокирует вход всех потоков критической секции также не считаются жизнеспособными решениями.
Напротив, на практике довольно часто трудно добиться справедливости, и даже быть ненужным. Например, рассмотрим систему, которая случайным образом выбирает между потоки, ожидающие входа. Кроме того, предположим, что каждый поток сразу пытаться войти в критическую секцию после выхода из нее. Это теоретически возможно, что одному потоку может очень не повезти и он никогда не получит выбрал. Если выбор действительно распределен случайным образом, этот результат будет таким же, как скорее всего, как подбрасывание монеты и получение одного и того же результата каждый раз. Это теоретически возможно, но на практике маловероятно.
Этот сценарий подчеркивает ключевое непонимание свойства живости. Если в критической секции нет потоков и один пытается войти, нет гарантирует, что поток действительно будет разрешен. Скорее, без свойство справедливости, возможно, что другой поток появится и войдет не дожидаясь. Чтобы проиллюстрировать это, рассмотрим подход, показанный на рис. Листинг 7.3. Этот код соответствует свойствам безопасности и живучести навсегда заблокировав один из потоков.
1 2 3 4 5 6 7 8 | /* Листинг 7.3: Подход, гарантирующий безопасность и живость, но не справедливость */ если (поток == 0) пока (1) ; /* поток 0 ожидает бесконечно */ /* вход в критическую секцию */ |
7.
2.3. Решение Peterson и современное оборудованиеЭлегантность решения Peterson делает его интересным подходом, который обеспечивает эти три ключевых свойства. Однако такой подход, как правило, не используется в современных системах. Решение Петерсона основано на предположении, что инструкции выполняются в определенном порядке, и доступ к памяти может быть достигается атомарно. Оба эти предположения могут не сработать на современном оборудовании. Из-за сложности конструкции конвейерных процессоров инструкции могут быть выполняются в другом порядке. Кроме того, если потоки выполняются на разных ядер, которые не гарантируют немедленной когерентности кэша, потоки могут использовать разные значения памяти.
Хотя существуют аппаратные механизмы для решения этих проблем, Решение Петерсона также страдает отсутствием абстракции. Из систем с точки зрения программиста, более желательно использовать абстракции, такие как блокировка и разблокировка критической секции, а не установка битов памяти. Как таким образом, оставшаяся часть этой главы будет посвящена абстракциям более высокого уровня и методы, которые способствуют более надежным и адаптируемым решениям, называемые примитивы синхронизации, к этим типам проблем. В общем, эти примитивы не могут гарантировать справедливость и, следовательно, не могут обеспечить то же самое теоретические свойства решения Петерсона. Однако их более высокий уровень абстракция обеспечивает большую ясность в их практическом использовании.
[1] | Стандартное объяснение решения Петерсона использует 0 и 1 для обозначения
к двум потокам соответственно. Здесь мы принимаем более высокий уровень абстракции,
используя self и other для обозначения двух. Для потока 0, self будет
быть 0 и , другие будут равны 1; для потока 1 верно обратное.0227 Предпосылки для этой темы включают представление о синхронизации между процессами и о том, как ее получить. Кроме того, крайне важны некоторые знания о проблемах производитель-потребитель, а также представление об алгоритме Петерсона. Обзор : Описание: Решение Петерсона для 2 процессов: Шаг 1: Шаг 2 : в свою очередь; Эта переменная указывает, чья очередь выполнять часть критической секции своей программы. Если поворот == 1, то очередь P 1 войти в область критического сечения. логический флаг[2]; Этот массив указывает, готов ли процесс войти в свою критическую секцию или нет. flag[0]==true означает, что P 0 готов к выполнению критической части программы. Шаг 3 :
Шаг-4 : 1) если флаг[1-idx]==true 2) если повернуть == 1-idx. Теперь, пока оба вышеуказанных условия не выполняются, процесс ожидает в цикле while, ничего не делая, и если какое-либо из условий становится неистинным, процесс переходит в критическую секцию, а следующий процесс (т. е. 1-idx) ожидает в цикле, чтобы выполнить часть критического раздела, если хотите. Это также гарантирует, что никакие два процесса не будут выполнять часть критической секции одновременно. Псевдокод – идентификатор = 0; делать{ // подготовка к входу в часть критической секции флаг[idx] = ИСТИНА; очередь = 1-idx; в то время как (флаг [1-idx] == TRUE и включите == 1-idx) // непрерывно проверяем две переменные. Это пустая трата времени. ; //продолжаем в цикле до тех пор, пока не выпадет шанс /* Часть критического сечения */ флаг[idx] = ЛОЖЬ; /* Оставшаяся часть раздела */ } Таким образом, существует синхронизация между двумя процессами. Приведенный выше алгоритм гарантирует, что между двумя процессами всегда существует взаимное исключение и синхронизация. Алгоритм Петерсона для N-процесса: Реализация – Шаг 1:
Первый случай очевиден, но во втором есть хитрость (или, можно сказать, идея). Вы поймете это после прочтения 2-го пункта. Шаг-2 : Flag[ PID] // имеет размер N, а PID всегда находится в диапазоне от 0 до N-1, так как процессов N. Для указания позиции, в которой процесс PID th находится в очереди. Turn[i] = PID // имеет размер N
Следовательно, ниже поясняется псевдокод алгоритма Петерсона для N процессов.
БЛОКИРОВКА (PID процесса){ for(int i = 0;i |