Многопоточное
программирование
Процессы и потоки
Объект исполнения прикладной
программы операционной системой
представляется двумя понятиями
 Процесс
 Поток
Процесс
Процесс (process)- экземпляр программы, загруженной
в память


Процесс – пассивный объект–владелец ресурсов,
контейнер для выполнения потоков (thread)
Поток / нить (thread)
Поток - абстракция, представляющая
последовательное выполнение команд программы,
развертывающееся во времени
Выполняются не процессы, а именно потоки
Любой процесс имеет хотя бы один поток
Поток / нить (thread)
Потоки совместно               Каждый поток имеет свои
используют                    собственные
  глобальные и статические     программный счетчик
   переменные                    (IP)
   (располагаются в регионе     значения регистров
   данных)                      локальные переменные
  динамически
                                 (т.е. свой собственный
   распределяемую память         стек)
   (кучу)
  системные ресурсы,

   выделенные процессу
Процессы и потоки
             Процесс MS-DOS     UNIX    Процесс    Процесс
                                 by
один поток                     design
в процессе    Поток                      Поток      Поток




             Процесс    Java   WinNT,   Процесс    Процесс
несколько                      Linux,              Поток
              Поток
  потоков                      Mach,    Поток
                                                      Поток
в процессе                       …
                Поток                      Поток
                                                   Поток


             один процесс          несколько процессов
Состояния потока
                 Создание
                     1
               Готов к
             выполнению
       2                     5
             3
                 4
Выполнение                   Блокировка
                         6

             Завершение
Планирование
                          Процесс
Процесс                      Поток
Поток                                Центральный
   Поток                  Поток       процессор
Поток
               Процесс                   Поток


               Поток

                  Поток



        Планирование – распределение времени
               центрального процессора
График выполнения потока

     Один поток – один процессор
а)

     Длинные блоки
      вычислений
                                       Ожидание
                                      ввода-вывода

                     Короткие блоки
                      вычислений
б)

                                                     Время
График выполнения
                 потока
   Несколько потоков – один процессор
                           Завершение состояния ожидания – переход в
Нет готовых к выполнению        состояние «готов к исполнению»
         потоков

Поток   2




Поток   1


                            Поток в состоянии «готов к исполнению»


                                                             Время
График выполнения
              потока
   Несколько потоков – несколько
   процессоров
                          Ожидание ввода-вывода
                            или нахождение в
                           состоянии ожидания
Поток2



Поток1




                                          Время
Синхронизация
         потоков

Механизм, позволяющий потокам согласовывать
 свою работу с общими ресурсами называется
 механизмом синхронизации
Синхронизация потоков
Поток А      Поток В
 x = x+3       x=x+5


            (1) Прочитать x
  x = x+a   (2) Увеличить на a
            (3) Записать в x
Основные объекты синхронизации
Синхронизация
          потоков
      Необходим доступ к ресурсу

                                      Работа с
Нет        Ресурс свободен?         признаком
                   Да                занятости
                                   (блокировки)
            Занять ресурс             ресурса


         Критическая секция


          Освободить ресурс
Тупиковые ситуации
Поток Т1                 Поток Т2
      заблокировать А        заблокировать В
      …                       …
     заблокировать В         заблокировать А
      …                       …
     освободить А            освободить В
      освободить В            освободить А
Тупиковые ситуации
                                              Поток в состоянии
                                               «блокировка»
Поток Т1    1        2               3


Поток Т2
                         1       2


Ресурс А
Ресурс В

           Ресурс «свободен / заблокирован»              t
Вывод
Понимание диаграмм выполнения
потоков – ключевой момент при
разработке и отладке многопоточных
программ
Неумелое использование средств
синхронизации – источник трудно
находимых ошибок и потерь
производительности

More Related Content

PDF
Процессы и потоки
PDF
Процессы и потоки. Планирование и взаимоблокировки
PPTX
Multiprocessor Programming Intro (lecture 2)
PDF
Nonblocking algorithms/CAS/Atomics by Alexey Fyodorov
PPTX
презентация 2
PDF
PDF
Многопоточные Алгоритмы (для BitByte 2014)
PPT
презентация л.р. №16
Процессы и потоки
Процессы и потоки. Планирование и взаимоблокировки
Multiprocessor Programming Intro (lecture 2)
Nonblocking algorithms/CAS/Atomics by Alexey Fyodorov
презентация 2
Многопоточные Алгоритмы (для BitByte 2014)
презентация л.р. №16

Viewers also liked (20)

ODP
Vincenzo Attomanelli 3_slide-share
PPTX
The specification
PDF
Proyecto nii fs py mes
PDF
中央财政入户问卷最终版
PDF
Recent Facebook Changes - Shaking Things Up
PPT
Content marketing - John Carcutt - Digitizing
PPTX
The Spanish tobacco tax loopholes and their consequences
PPTX
חוברת תחילת קורס(1)
PPTX
Ventajas de moodle
PDF
Conflict Trends
PPTX
South korea
PPT
Marks Sattin Accounting Sector Market Research Presentation - Sydney
PDF
Pat2
ODP
ProjetEOF presentation at SOTM2014
PPTX
Mint screen saver new store announcement
PPTX
Knife Cuts Day 2 8/29
PDF
17102413 otisci-bogova
PPTX
Petersburggroups2
PPTX
Giorgio luigi
PPTX
Discovery of Cow Rumen Biomass-Degrading Genes and Genomes through DNA Sequen...
Vincenzo Attomanelli 3_slide-share
The specification
Proyecto nii fs py mes
中央财政入户问卷最终版
Recent Facebook Changes - Shaking Things Up
Content marketing - John Carcutt - Digitizing
The Spanish tobacco tax loopholes and their consequences
חוברת תחילת קורס(1)
Ventajas de moodle
Conflict Trends
South korea
Marks Sattin Accounting Sector Market Research Presentation - Sydney
Pat2
ProjetEOF presentation at SOTM2014
Mint screen saver new store announcement
Knife Cuts Day 2 8/29
17102413 otisci-bogova
Petersburggroups2
Giorgio luigi
Discovery of Cow Rumen Biomass-Degrading Genes and Genomes through DNA Sequen...
Ad

Similar to Multi threads (14)

PPSX
PPT
Java. Многопоточность.
PDF
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
PPTX
Working with .NET Threads
PDF
Многопроцессорным компьютерам - параллельные программы!
PDF
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
PPTX
Svitla .Net meetup in Kiev, Anzhiiak Oleksii
PPTX
Операционные системы 2015, лекция № 4
PDF
Общество Мертвых Потоков
PPTX
Основные принципы управления процессором и процессами
PPTX
Состояния потока
DOCX
Нурафшанский филлиал Ташкентского Университета Информационных Технологий имен...
PPT
Threads in java
PDF
Distributed Systems Presentation for Business informatics students (Staroletov)
Java. Многопоточность.
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...
Working with .NET Threads
Многопроцессорным компьютерам - параллельные программы!
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
Svitla .Net meetup in Kiev, Anzhiiak Oleksii
Операционные системы 2015, лекция № 4
Общество Мертвых Потоков
Основные принципы управления процессором и процессами
Состояния потока
Нурафшанский филлиал Ташкентского Университета Информационных Технологий имен...
Threads in java
Distributed Systems Presentation for Business informatics students (Staroletov)
Ad

Multi threads

  • 2. Процессы и потоки Объект исполнения прикладной программы операционной системой представляется двумя понятиями  Процесс  Поток
  • 3. Процесс Процесс (process)- экземпляр программы, загруженной в память Процесс – пассивный объект–владелец ресурсов, контейнер для выполнения потоков (thread)
  • 4. Поток / нить (thread) Поток - абстракция, представляющая последовательное выполнение команд программы, развертывающееся во времени Выполняются не процессы, а именно потоки Любой процесс имеет хотя бы один поток
  • 5. Поток / нить (thread) Потоки совместно Каждый поток имеет свои используют собственные  глобальные и статические  программный счетчик переменные (IP) (располагаются в регионе  значения регистров данных)  локальные переменные  динамически (т.е. свой собственный распределяемую память стек) (кучу)  системные ресурсы, выделенные процессу
  • 6. Процессы и потоки Процесс MS-DOS UNIX Процесс Процесс by один поток design в процессе Поток Поток Поток Процесс Java WinNT, Процесс Процесс несколько Linux, Поток Поток потоков Mach, Поток Поток в процессе … Поток Поток Поток один процесс несколько процессов
  • 7. Состояния потока Создание 1 Готов к выполнению 2 5 3 4 Выполнение Блокировка 6 Завершение
  • 8. Планирование Процесс Процесс Поток Поток Центральный Поток Поток процессор Поток Процесс Поток Поток Поток Планирование – распределение времени центрального процессора
  • 9. График выполнения потока Один поток – один процессор а) Длинные блоки вычислений Ожидание ввода-вывода Короткие блоки вычислений б) Время
  • 10. График выполнения потока Несколько потоков – один процессор Завершение состояния ожидания – переход в Нет готовых к выполнению состояние «готов к исполнению» потоков Поток 2 Поток 1 Поток в состоянии «готов к исполнению» Время
  • 11. График выполнения потока Несколько потоков – несколько процессоров Ожидание ввода-вывода или нахождение в состоянии ожидания Поток2 Поток1 Время
  • 12. Синхронизация потоков Механизм, позволяющий потокам согласовывать свою работу с общими ресурсами называется механизмом синхронизации
  • 13. Синхронизация потоков Поток А Поток В x = x+3 x=x+5 (1) Прочитать x x = x+a (2) Увеличить на a (3) Записать в x
  • 15. Синхронизация потоков Необходим доступ к ресурсу Работа с Нет Ресурс свободен? признаком Да занятости (блокировки) Занять ресурс ресурса Критическая секция Освободить ресурс
  • 16. Тупиковые ситуации Поток Т1 Поток Т2  заблокировать А  заблокировать В  …  …  заблокировать В  заблокировать А  …  …  освободить А  освободить В  освободить В  освободить А
  • 17. Тупиковые ситуации Поток в состоянии «блокировка» Поток Т1 1 2 3 Поток Т2 1 2 Ресурс А Ресурс В Ресурс «свободен / заблокирован» t
  • 18. Вывод Понимание диаграмм выполнения потоков – ключевой момент при разработке и отладке многопоточных программ Неумелое использование средств синхронизации – источник трудно находимых ошибок и потерь производительности