logo

Многопоточни модели в операционната система

В тази статия ще разберем многонишковия модел в операционната система.

Многонишков модел:

Многонишковостта позволява на приложението да раздели задачата си на отделни нишки. При многонишковите процеси, един и същ процес или задача може да се извърши чрез броя на нишките или можем да кажем, че има повече от една нишка за изпълнение на задачата при многонишковостта. С използването на многопоточност може да се постигне многозадачност.

tcp срещу udp
Многопоточни модели в операционната система

Основният недостатък на системите с една нишка е, че само една задача може да се изпълнява в даден момент, така че за да се преодолее недостатъкът на тази единична нишка, има многонишкова обработка, която позволява изпълнението на множество задачи.

Например:

Многопоточни модели в операционната система

В горния пример client1, client2 и client3 имат достъп до уеб сървъра без никакво изчакване. При многопоточност няколко задачи могат да се изпълняват едновременно.

В една операционна система нишките са разделени на нишки на потребителско ниво и нишки на ниво ядро. Нишките на потребителско ниво обработваха независима форма над ядрото и по този начин се управляваха без никаква поддръжка на ядрото. От друга страна, операционната система директно управлява нишките на ниво ядро. Независимо от това, трябва да има форма на връзка между нишките на потребителско ниво и на ниво ядро.

Съществуват три установени многонишкови модела, класифициращи тези връзки:

  • Много към един многопоточен модел
  • Един към един многопоточен модел
  • Много към много многопоточни модели

Много към един многонишков модел:

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

Шрея Гошал

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

Многопоточни модели в операционната система

В горната фигура моделът много към един свързва всички нишки на потребителско ниво с единични нишки на ниво ядро.

Един към един многопоточен модел

Моделът 'един към един' преобразува една нишка на потребителско ниво в една нишка на ниво ядро. Този тип връзка улеснява паралелното изпълнение на множество нишки. Това предимство обаче идва със своя недостатък. Генерирането на всяка нова потребителска нишка трябва да включва създаване на съответна нишка на ядрото, причиняваща излишни разходи, което може да попречи на производителността на родителския процес. Серията Windows и операционните системи Linux се опитват да се справят с този проблем, като ограничават нарастването на броя на нишките.

Многопоточни модели в операционната система

В горната фигура един модел свързва тази нишка на ниво потребител с една нишка на ниво ядро.

преименуване на Linux директория

Модел много към много многонишков модел

В този тип модел има няколко нишки на потребителско ниво и няколко нишки на ниво ядро. Броят на създадените нишки на ядрото зависи от конкретно приложение. Разработчикът може да създаде колкото се може повече теми на двете нива, но може да не са еднакви. Моделът много към много е компромис между другите два модела. В този модел, ако някоя нишка направи блокиращо системно извикване, ядрото може да планира друга нишка за изпълнение. Освен това, с въвеждането на множество нишки, сложността не е налице, както в предишните модели. Въпреки че този модел позволява създаването на множество нишки на ядрото, истинска едновременност не може да бъде постигната чрез този модел. Това е така, защото ядрото може да планира само един процес наведнъж.

Многопоточни модели в операционната система

Много до много версии на многонишковия модел свързват няколко нишки на потребителско ниво със същото или много по-малко разнообразие от нишки на ниво ядро ​​в горната фигура.