Процеси и конци и mnogopotchnye мултитаскинг система, разликата от технологичния поток, ползите и

Процеси и конци

P процеси - изпълним копие от заявлението. Например, когато отворите приложението MS Word, след което можете да започнете процеса на изпълнение на програмата MS Word. Flow - един изпълним задачата в рамките на процеса. Методът може да включва множество изпълними нишки. След започване на прилагането бележи главния поток, който след това може да доведе до други нишки.







Всеки процес има своя собствена памет. Потоци и същи, които се показват в рамките на акция памет процес с друг. Вътрешността на операционната система разполага със собствен идентификатор. съществуват потоци в рамките на един процес и имат идентификатор в рамките на работната заявлението. Всяка нишка има своя стак (той не го споделите с другите потоци и други потоци не могат да го изкачат) и свой собствен набор от регистри (поток не се променя стойността регистър на друга тема по време на работа). потоци често са наричани "леки" процеси, тъй като те изискват много по-малко ресурси, за да тече от нов процес. В зависимост от изпълнението, типичен настолен компютър може да се използва ефективно от единици до десетки хиляди потоци.

  • процес ID
  • обкръжение
  • Работна папка
  • регистри
  • купчина
  • купчина
  • файлов дескриптор
  • Споделени библиотеки (DLL, така)
  • Interprocessor комуникационни средства (тръби, съобщение опашки, семафори, или генерализирани памет)
  • Специфични операционната система ресурси
  • Stack Pointer (указател към върха на стека е всъщност "собствен" стека, като в този процес, нямам поток)
  • регистри
  • Имоти (необходими за планиране, като приоритет или политика)
  • Специфична поток от данни
  • Специфични операционната система ресурси

Мултитаскинг и Concurrency

M nogozadachnye системи могат да работят на няколко задачи едновременно. Multitasking не означава непременно, истинската едновременното изпълнение: има доста дълъг период от време, тези системи са се появили и при процесорите са едноядрен. Всички задачи са насрочване от периода от време, в който да свърши работата. След това задачата навлиза в състоянието на готовност. Всички задачи са с приоритет, съответно, толкова по-висок приоритет, толкова повече време на задачата може да работи.

Многозадачна система на един резба процесор създавайки илюзията за едновременното изпълнение на решение няколко процеса. Да предположим, че имаме три процеси. Ако всеки от тях работят време Т1, Т2 и Т3, общото време, ще бъде равна на t1 + t2 + t3.







Последователно прилагане на трите процеса в един резба процесор

Ако сега ние ще се раздели на всяка задача в N части, общото време за изпълнение е DT1 * N + DT2 * N + DT3 * N + DTS * N * N, където DTS - времето, необходимо за възстановяване на условията на задачата (работа Scheduler ).

Действието на всеки процес на процесора за обработка на единична нишка е разделена на интервали

От една страна, последователното прилагане на трите задачи, без режийните на превключване между задачи трябва да бъде много по-бързо. На практика обаче, често е по друг начин. Ако процесът върши много работа IO или работа с външни ресурси, а след това през повечето време тя не се използва, в очакване на данните. Този престой вземе още една задача. По този начин, общото време става по-малък.

Когато този процес голяма част от времето в очакване на prostaivat ресурси, паралелно изпълнение на множество задачи, може да бъде по-бързо от серийния

Ако имаме един "chislodrobitelnaya" проблем, че няма полза ще бъде. Но си струва да припомним, че в някои случаи, дори и на едноядрен процесор такъв изкуствен паралелното може значително да се ускори изпълнението.

по-ясно за многоядрени системи: ако задачата се разделя на множество потоци, всяка от които могат да работят паралелно наистина. Това означава, че ако ние решим проблема в 4 теми, вместо един, а след това евентуално ще оперира 4 пъти по-бързо. Ясно е, че някъде има уловка ...

На първо място, ускорение с увеличаване на броя на процесорите и ядра увеличава нелинейно и има някакъв таван за тази задача (вж. Закон Amdahl му). И на второ място, проблемът става много по-сложна, когато има общи ресурси.

споделяне на ресурси

W кокоши множество нишки си вършат работата на всеки, нямат обща памет, те могат значително да се ускори работата. Допълнителните разходи ще се изисква само за отпускане на средства за тези потоци и да ги предават на необходимите данни. Когато множество нишки трябва да комуникират помежду си за предаване на данни, обработка на един обект, който е съвместно достъп до един и същи ресурс (обикновено сегмент поделена памет), а след това има така наречените условия раса - раса състояние - когато в резултат на работата зависи от реда на достъп до ресурси ,

Например, ние трябва да добавите два масива а и б от една и съща дължина и поставете резултата в С на масив. Всяка стойност в [Ь] зависи от [Ь] и б [Ь] и е независима от другите. Можем да разделим масива на няколко секции, като всяка от потоците ще бъдат ангажирани в само чрез добавяне на тези сайтове, без да пречи на другите потоци. Всички те ще имат общи променливи, В и С, но те винаги ще се прилага независимо само за отделни области на паметта.

POSIX конци

И чрез историята на това се е случило, че всеки производител на желязо изпълнява своите собствени версия потоци. Тези приложения са много различни един от друг, създавайки голям проблем за програмисти и прави невъзможно да се напише преносим софтуер.

В момента повечето производители, заедно със свои собствени интерфейси за стрийминг предлагат Pthreads. Pthreads обикновено е набор от видове и функции на езика C, описан в pthread.h файла и изпълнява в .h. ИЪ. DLL и т.н. файлове, предоставени с библиотеката. Понякога pthread е част от друга библиотека (например, библшотеката).

RU-Cyrl 18- Упътване Sypachev S.S. 1989-04-14 [email protected] Степан Sypachev студенти

Още не е ясно? - запис на въпроси на кутията