SlideShare uma empresa Scribd logo
1 de 18
Многопоточное
программирование
Процессы и потоки
Объект исполнения прикладной
программы операционной системой
представляется двумя понятиями
 Процесс
 Поток
Процесс
Процесс (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
Вывод
Понимание диаграмм выполнения
потоков – ключевой момент при
разработке и отладке многопоточных
программ
Неумелое использование средств
синхронизации – источник трудно
находимых ошибок и потерь
производительности

Mais conteúdo relacionado

Destaque

Vincenzo Attomanelli 3_slide-share
Vincenzo Attomanelli 3_slide-shareVincenzo Attomanelli 3_slide-share
Vincenzo Attomanelli 3_slide-shareVincenzo Lxcc Linux
 
The specification
The specificationThe specification
The specificationkauana1995
 
Proyecto nii fs py mes
Proyecto nii fs py mesProyecto nii fs py mes
Proyecto nii fs py mesEsly Rodezno
 
中央财政入户问卷最终版
中央财政入户问卷最终版中央财政入户问卷最终版
中央财政入户问卷最终版yongnianlou
 
Recent Facebook Changes - Shaking Things Up
Recent Facebook Changes - Shaking Things UpRecent Facebook Changes - Shaking Things Up
Recent Facebook Changes - Shaking Things UpPolka Dot Impressions
 
Content marketing - John Carcutt - Digitizing
Content marketing  - John Carcutt - DigitizingContent marketing  - John Carcutt - Digitizing
Content marketing - John Carcutt - Digitizingel_chambers
 
The Spanish tobacco tax loopholes and their consequences
The Spanish tobacco tax loopholes and their consequencesThe Spanish tobacco tax loopholes and their consequences
The Spanish tobacco tax loopholes and their consequencesUCT ICO
 
חוברת תחילת קורס(1)
חוברת תחילת קורס(1)חוברת תחילת קורס(1)
חוברת תחילת קורס(1)Stas Segin
 
Ventajas de moodle
Ventajas de moodleVentajas de moodle
Ventajas de moodleStella Avaro
 
South korea
South koreaSouth korea
South koreaabssef
 
Marks Sattin Accounting Sector Market Research Presentation - Sydney
Marks Sattin Accounting Sector Market Research Presentation - SydneyMarks Sattin Accounting Sector Market Research Presentation - Sydney
Marks Sattin Accounting Sector Market Research Presentation - Sydneyieuan84
 
ProjetEOF presentation at SOTM2014
ProjetEOF presentation at SOTM2014 ProjetEOF presentation at SOTM2014
ProjetEOF presentation at SOTM2014 Severin Menard
 
Mint screen saver new store announcement
Mint screen saver   new store announcementMint screen saver   new store announcement
Mint screen saver new store announcementMintinteriors
 
Knife Cuts Day 2 8/29
Knife Cuts Day 2 8/29Knife Cuts Day 2 8/29
Knife Cuts Day 2 8/29Rachael Mann
 
17102413 otisci-bogova
17102413 otisci-bogova17102413 otisci-bogova
17102413 otisci-bogovacosmoi
 
Petersburggroups2
Petersburggroups2Petersburggroups2
Petersburggroups2TsviGil
 
Discovery of Cow Rumen Biomass-Degrading Genes and Genomes through DNA Sequen...
Discovery of Cow Rumen Biomass-Degrading Genes and Genomes through DNA Sequen...Discovery of Cow Rumen Biomass-Degrading Genes and Genomes through DNA Sequen...
Discovery of Cow Rumen Biomass-Degrading Genes and Genomes through DNA Sequen...Copenhagenomics
 

Destaque (20)

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

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. Вывод Понимание диаграмм выполнения потоков – ключевой момент при разработке и отладке многопоточных программ Неумелое использование средств синхронизации – источник трудно находимых ошибок и потерь производительности