69301

Багатопотоковість та її реалізація

Лекция

Информатика, кибернетика и программирование

Багатопотокове застосування може реалізувати цей вид паралелізму через створення нових потоків які виконуватимуться коли поточний потік очікує операції введеннявиведення. При цьому використання потоків дає можливість організувати паралельне обслуговування запитів...

Украинкский

2014-10-03

50 KB

20 чел.

Лекція № 5

Тема: Багатопотоковість та її реалізація

План

  1.  Поняття паралелізму
  2.  Види паралелізму
  3.  Переваги і недоліки багатопотоковості
  4.  Способи реалізації моделі потоків

Поняття паралелізму

Використання декількох потоків у застосуванні означає внесення в нього паралелізму (concurrency). Паралелізм — це одночасне (з погляду прикладного програміста) виконання дій різними фрагментами коду застосування. Така одночасність може бути реалізована на одному процесорі шляхом перемикання задач (випадок псевдопаралелізму), а може ґрунтуватися на паралельному виконанні коду на декількох процесорах (випадок справжнього паралелізму). Потоки абстрагують цю відмінність, даючи можливість розробляти застосування, які в однопроцесорних системах використовують псевдопаралелізм, а при доданні процесорів - справжній паралелізм (такі застосування масштабуються зі збільшенням кількості процесорів).

Види паралелізму

Можна виділити такі основні види паралелізму:

♦  паралелізм багатопроцесорних систем;

♦  паралелізм операцій введення-виведення;

паралелізм взаємодії з користувачем;

паралелізм розподілених систем.

Перший з них є справжнім паралелізмом, тому що у багатопроцесорних системах інструкції виконують декілька процесорів одночасно. Особливості використання такого паралелізму будуть розглянуті в розділі 20. Інші види паралелізму можуть виникати і в однопроцесорних системах тоді, коли для продовження виконання програмного коду необхідні певні зовнішні дії.

Паралелізм операцій введення-виведення

Під час виконання операції введення-виведення (наприклад, обміну даними із диском) низькорівневий код доступу до диска і код застосування не можуть виконуватись одночасно. У цьому разі застосуванню треба почекати завершення операції введення-виведення, звільнивши на цей час процесор. Природним вважається зайняти на цей час процесор інструкціями іншої задачі.

Багатопотокове застосування може реалізувати цей вид паралелізму через створення нових потоків, які виконуватимуться, коли поточний потік очікує операції введення-виведення. Так реалізується асинхронне введення-виведення, коли застосування продовжує своє виконання, не чекаючи на завершення операцій введення-виведення. У розділі 15 буде розглянуто організацію такого введення-виведення.

Паралелізм взаємодії з користувачем

Під час інтерактивного сеансу роботи користувач може виконувати різні дії із застосуванням (і очікувати негайної реакції на них) до завершення обробки попередніх дій. Наприклад, після запуску команди «друкування документа» він може негайно продовжити введення тексту, не чекаючи завершення друкування.

Щоб розв'язати це завдання, можна виділити окремі потоки для безпосередньої взаємодії із користувачем (наприклад, один потік може очікувати введення з клавіатури, інший — від миші, додаткові потоки - відображати інтерфейс користувача). Основні задачі застосування (розрахунки, взаємодія з базою даних тощо) у цей час виконуватимуть інші потоки.

Паралелізм розподілених застосувань

Розглянемо серверне застосування, яке очікує запити від клієнтів і виконує дії у відповідь на запит. Якщо клієнтів багато, запити можуть надходити часто, майже водночас. Якщо тривалість обробки запиту перевищує інтервал між запитами, сервер буде змушений поміщати запити в чергу, внаслідок чого знижується продуктивність. При цьому використання потоків дає можливість організувати паралельне обслуговування запитів, коли основний потік приймає запити, відразу передає їх для виконання іншим потокам і очікує нових.

Переваги і недоліки багатопотоковості

Назвемо проблеми, які можуть бути вирішені за допомогою потоків.

♦ Використання потоків дає змогу реалізувати різні види паралелізму і дозволяє застосуванню масштабуватися із ростом кількості процесорів.

Для підтримки потоків потрібно менше ресурсів, ніж для підтримки процесів (наприклад, немає необхідності виділяти для потоків адресний простір).

Для обміну даними між потоками може бути використана спільна пам'ять (адресний простір їхнього процесу). Це ефективніше, ніж застосовувати засоби міжпроцесової взаємодії.

Незважаючи на перелічені переваги, використання потоків не є універсальним засобом розв'язання проблем паралелізму, і пов'язане з деякими труднощами.

♦ Розробляти і налагоджувати багатопотокові програми складніше, ніж звичайні послідовні програми; досить часто впровадження багатопотоковості призводить до зниження надійності застосувань. Організація спільного використання адресного простору декількома потоками вимагає, щоб програміст мав високу кваліфікацію.

♦ Використання потоків може спричинити зниження продуктивності застосувань.

Переважно це трапляється в однопроцесорних системах (наприклад, у таких системах спроба виконати складний розрахунок паралельно декількома потоками
призводить лише до зайвих витрат на перемикання між потоками, кількість виконаних корисних інструкцій залишиться тією ж самою).

Переваги і недоліки використання потоків потрібно враховувати під час виконання будь-якого програмного проекту. Насамперед доцільно розглядати можливість розв'язати задачу в рамках моделі процесів. При цьому, однак, варто брати до уваги не лише поточні вимоги замовника, але й необхідність розвитку застосування, його масштабування тощо. Можливо, з урахуванням цих факторів використання потоків буде виправдане.

Способи реалізації моделі потоків

Перш ніж розглянути основні підходи до реалізації моделі потоків, дамо означення важливих понять потоку користувача і потоку ядра.

Потік користувача — це послідовність виконання команд в адресному просторі процесу. Ядро ОС не має інформації про такі потоки, вся робота з ними виконується в режимі користувача. Засоби підтримки потоків користувача надають спеціальні системні бібліотеки; вони доступні для прикладних програмістів у вигляді бібліотечних функцій. Бібліотеки підтримки потоків у наш час звичайно реалізують набір функцій, визначений стандартом POSIX (відповідний розділ стандарту називають POSIX.lb); тут прийнято говорити про підтримку потоків POSIX.

Потік ядра — це послідовність виконання команд в адресному просторі ядра. Потоками ядра управляє ОС, перемикання ними можливе тільки у привілейованому режимі. Є потоки ядра, які відповідають потокам користувача, і потоки, що не мають такої відповідності.

Співвідношення між двома видами потоків визначає реалізацію моделі потоків. Є кілька варіантів такої реалізації (схем багатопотоковості); розглянемо найважливіші з них (рис. 3.1).

Схема багатопотоковості М:1 (є найранішою) реалізує багатопотоковість винятково в режимі користувача. При цьому кожен процес може містити багато потоків користувача, однак про наявність цих потоків ОС не відомо, вона працює тільки із процесами. За планування потоків і перемикання контексту відповідає бібліотека підтримки потоків. Схема вирізняється ефективністю керування потоками (для цього немає потреби переходити в режим ядра) і не потребує для реалізації зміни ядра ОС. Проте нині її практично не використовують через два суттєвих недоліки, що не відповідають ідеології багатопотоковості. Схема М:1 не дає змоги скористатися багатопроцесорними архітектурами, оскільки визначити, який саме код виконуватиметься на кожному із процесорів, може тільки ядро ОС. У результаті всі потоки одного процесу завжди виконуватимуться на одному процесорі. +  Оскільки системні виклики обробляються на рівні ядра ОС, блокувальний системний виклик (наприклад, виклик, який очікує введення даних користувачем) зупинятиме всі потоки процесу, а не лише той, що зробив цей виклик.

Схема багатопотоковості 1:1 ставить у відповідність кожному потоку користувача один потік ядра. У цьому разі планування і перемикання контексту зачіпають лише потоки ядра, у режимі користувача ці функції не реалізовані. Оскільки ядро ОС має інформацію про потоки, ця схема вільна від недоліків попередньої (різні потоки можуть виконуватися на різних процесорах, а при зупиненні одного потоку інші продовжують роботу). Вона проста і надійна в реалізації і сьогодні є найпоширенішою. Хоча схема передбачає, що під час керування потоками треба постійно перемикатися між режимами процесора, на практиці втрата продуктивності внаслідок цього виявляється незначною.

Схема багатопотоковості M:N. У цій схемі присутні як потоки ядра, так і потоки користувача, які відображаються на потоки ядра так, що один потік ядра може відповідати декільком потокам користувача. Число потоків ядра може бути змінене програмістом для досягнення максимальної продуктивності. Розподіл потоків користувача по потоках ядра виконується в режимі користувача, планування потоків ядра — у режимі ядра. Схема є складною в реалізації і сьогодні здає свої позиції схемі 1:1.

Питання для самоконтролю:

  1.  Поняття паралелізму. Охарактеризувати види.
  2.  Переваги та недоліки багатопотоковості.
  3.  Потік користувача. Потік ядра.
  4.  Охарактеризувати схеми багатопотоковості.


 

А также другие работы, которые могут Вас заинтересовать

28781. Начало самодержавия в России. Внутренняя и внешняя политика Ивана IV. Альтернативы развития страны: «Избранная Рада » и опричнина 17.93 KB
  Внутренняя и внешняя политика Ивана IV. Царствование Ивана Грозного принято условно делить на две части сильно отличающиеся друг от друга по внутренней политике. Это знаменовало формирование на Руси нового типа традиционного общества – сословнопредставительной монархии Постоянным же совещательным органом при царе служила еще со времен Ивана III Боярская дума состоявшая из бояр. Первый Земский собор орган сословного представительства обеспечивающий связь центра и мест речь Ивана IV с лобного места: осуждение неправильного боярского...
28782. Смута: социальная катастрофа или время альтернатив? Причины и последствия смутного времени. Начало династии Романовых 18.58 KB
  Смутное время началось после смерти Федора Ивановича последнего царя из рода Рюрика 6 января 1598 г. Русская армия в это время готовилась выйти на помощь Смоленску который с сентября 1609 года был осаждён войсками польского короля Сигизмунда III. Поляки и запорожцы овладели городами северской земли; население Стародуба и Почепа полностью погибло во время вражеского штурма; Чернигов и НовгородСеверский сдались.
28783. Понятие модернизации, ее виды и циклы. Особенности петровской модернизации 14.86 KB
  Первым этапом такой модернизации в России стали реформы Петра I Великого Основными предпосылками реформ были: 1 тупик развития 2 необходимость выхода к морям для развития экономики. Именно с этой даты ведется отсчет истории России как великой державы. Превращение России в великую и морскую державу символизировало принятие Петром Великим наследственного императорского титула.
28784. Реформы Петра I. Каково соотношение модернизационных и традиционных начал в политике Петра 13.47 KB
  Каково соотношение модернизационных и традиционных начал в политике Петра Модернизация в России – догоняющая.
28785. В чем заключалась политика «Просвещенного абсолютизма» Екатерины II 21.04 KB
  Таким образом Екатерина стремилась достигнуть союза между монархом и обществом не на принуждении абсолютизм а на добровольном осознании своих прав и обязанностей. Екатерина поощряла развитие образования и науки торговопромышленной деятельности способствовала зарождению журналистики. В идеях просвещенного абсолютизма Екатерина руководствовалась трудами французских просветителей Вольтер Дидро.
28786. Выделите основные тенденции и противоречия развития российского государства и общества в первой половине 19в. 14.04 KB
  Главными особенностями развития России в 1й половине XIX века были: 1 рост удельного веса бюрократии гражданской военной и полицейской; 2 замедление экономического развития по сравнению с Европой как следствие тупикового пути крепостного права; 3 противоречие между экономической и политической отсталостью с одной стороны и мощным расцветом культуры и науки – с другой 4 начало идейного и духовного разрыва между монархией и формирующейся интеллигенцией.
28787. Общественная мысль и общественное движение в России в первой половине 19в (декабристы; западники и славянофилы) 20.16 KB
  Источником идей для многих декабристов служили сочинения французских просветителей в которых доказывалась необходимость политических реформ и управления государством на основании твердых и установленных законов а не воли монарха. С другой стороны огромную роль в формировании мировоззрения декабристов сыграла Отечественная война 1812 г. Организации декабристов возникли в 1816 г. Однако в условиях консервативной политики которую проводил Александр I в последние годы своего царствования в организациях декабристов произошел раскол.
28788. Какие предпосылки отмены крепостного права существовали в 50-гг 19в в России? Как готовилась и осуществлялась крестьянская реформа, каковы ее итоги 15.54 KB
  Интенсивное развитие капитотнй начало пром переворота в России В 185758 гг во всех губерниях были созданы двор комитеты кот должны были рассм вопрос о низвержении кр права. В России было отменено рабство крво получило личную свободу 2. рефма способствовала развитию кап отнй в России Негативные последствия: 1.
28789. Какое влияние реформы Александра II оказали на становление рыночных отношений и гражданского общества в России? Дайте характеристику основным направлениям реформирования страны 16.23 KB
  Александр 2 18551881 Предпосылки великих реформ: 1поражение России в Крымской войне 2несоответствие тупикового характера крепостного хозяйства новым потребностям экономического развития стран 3экономическое и военнотехническое отставание от Европы 4необходимость компенсации неудовлетворительного как для дворян так и для крестьян компромисса расширением их гражданина и политических прав Содержание Великих Реформ: 1стала отмена крепостного права 1861 Содержание крестьянской реформы: Крестьяне были освобождении от крепостной зависимости...