muzruno.com

C тема - какво е това?

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

дефиниция

В C Thread или темата за изпълнение е най-малката последователност от команди, управлявани от независим scheduler, който обикновено е неразделна част от операционната система.c нишка

На нишките обикновено се дава определен приоритет, което означава, че някои нишки имат предимство пред другите. След като процесорът завърши обработката на една нишка, тя може да стартира следващата опашка за чакащи. По правило изчакването не надвишава няколко милисекунди. Компютърните програми, които изпълняват "multithreading", могат да изпълняват няколко теми наведнъж. Повечето съвременни операционни системи поддържат C Thread на системно ниво. Това означава, че когато една програма се опитва да вземе всички ресурси на процесора, системата насила превключва към други програми и принуждава програмата за поддръжка на процесора да споделя средства равномерно.

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

Multithreading C Тема в Windows

При компютърното програмиране едно-визуализиране е обработката на една команда едновременно. Обратното на единичната резба е многоточково. И двата термина са широко използвани във функционалната общност за програмиране.

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

Примери за задачата на C Thread

Едно многофункционално операционна система може едновременно да изпълнява множество задачи на заден план, като записване на файлове, индексиране на данни и управление на прозорци. Уеб браузърите, които поддържат multithreading, могат да отварят няколко прозореца с едновременна работа с jаvascript и Flash. Ако програмата е напълно мулти-резбована, различните процеси не трябва да се отразяват един на друг, ако процесорът разполага с достатъчно енергия, за да ги обработва.

Както multitasking, multithreading също подобрява стабилността на програмите. Multithreading може да попречи на трясък на програмата и да предотврати срив в компютъра. Тъй като всяка нишка се обработва отделно, грешка в една от тях не може да наруши работата на компютъра. По този начин, multithreading може да доведе до по-малко грешки в операционната система като цяло.спин сън c

многозадачност

Мултитаскинг обработва няколко задачи в паралелен режим и също характеризира работата на компютъра. Процесорът може да обработва няколко процеса наведнъж с абсолютна точност. Той обаче обработва само инструкциите, изпратени до него от софтуера. Следователно, за да се възползва напълно от възможностите на CPU, софтуерът трябва да може да обработва повече от една задача наведнъж и да бъде и мултитаскинг.

Историческа ретроспектива

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

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

Мултитаскингът също така подобрява стабилността на компютъра. Например, ако някой от процесите не успее, това няма да се отрази на други изпълнявани програми, тъй като компютърът обработва всеки отделен процес. Това може да се сравни с процеса на писане на писмо: ако сте в средата на лист и сте написали вече текст, но уеб браузърът ви неочаквано излиза, тогава няма да загубите вече свършената работа.c нишка задача

Единични и многопроцесорни системи

Внедряването на технологиите за стрийминг и процесори се различава в зависимост от операционната система, но най-често потокът е компонент на процеса. В същото време, няколко теми могат да съществуват в един процес, изпълнявайки и споделяйки ресурси. По-специално, нишките на процеса C Thread използват изходния код и стойностите на променливите в ко-режим по всяко време.

Системи с единичен процесор изпълняват множество конци с течение на времето: централният процесор (CPU) превключва между различни потоци от софтуер. В многопроцесорна система, както и в многоядрена система, множество нишки се изпълняват паралелно, като всеки процесор или сърцевина изпълнява отделна нишка по едно и също време.

Видове потоци

Planners процеси на повечето съвременни операционни системи директно поддържат и двата формата на графика и обработката мулти-поток, докато ядрото на операционната система дава възможност на разработчиците да управляват потока от осигуряване на необходимите функции чрез интерфейса на системата за повикване. Някои внедрявания на нишки се наричат ​​нишки на ядрото, докато светлинните процеси (LWPs) са тип нишка, който има същото информационно състояние. Софтуерни решения могат да имат потребителски космически теми, когато се използват с таймери (Тема таймер C), сигнали или други методи, за да се прекъсне тяхната собствена заслуга, извършване на някакви времето на създаден за целта.

Потоци и процеси: различия

Потоците се различават от класическите многозадачни процеси със следните характеристики:

  • процесите обикновено са независими, докато темите съществуват като подгрупи на процеса;

  • процесите носят много повече информация от нишките;



  • процесите имат отделни адресно пространства;

  • процесите взаимодействат само чрез системни механизми за комуникация;

  • Контекстното превключване между нишките в процеса се осъществява по-бързо, отколкото при превключването на контекста между процесите.

Превантивно и съвместно планиране

В многопотребителските операционни системи превантивната многоядрена е по-широко използван подход за контролиране на времето за изпълнение чрез превключване на контекста. Въпреки това, превантивното планиране може да доведе до приоритизиране и неуспех на неконтролираните програмисти. За разлика от това, съвместното мултитъч се основава на нишки, които се въздържат от мониторинг на изпълнението. Това може да създаде проблеми, ако споделената кореспонденция с множество задачи е блокирана, като чака ресурса.c-thread join

Еволюция на технологиите

До началото на 2000-те. на повечето настолни компютри имаше само един едноядрен процесор, който не поддържа хардуерни конци. През 2002 г. Intel внедри поддръжка за едновременна multithreading на процесор Pentium 4, наречен Hyper-Threading. През 2005 г. бе представен двуядрен процесор Pentium D и двуядрен процесор AMD Athlon 64 X2.

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

модел

Нека да изброим основните модели за внедряване.

1: 1 (нишка на нивото на ядрото) - темите, създадени от потребителя в ядрото, са най-простото възможно внедряване на нишки. OS / 2 и Win32 използват този подход първоначално, докато в Linux библиотека С Свързването на нишки изпълнява този подход чрез NPTL или по-стари LinuxThreads. Този подход се използва и от Solaris, NetBSD, FreeBSD, macOS и iOS.

N: 1 (нишка на потребителя) - този модел предвижда, че всички нишки на нивото на приложението са насочени към един планиран обект на ниво ядро. С този подход превключването на контекста може да се осъществи много бързо и в допълнение може да се осъществи и върху тези ядра, които не поддържат преработка на потоци. Един от основните недостатъци обаче е, че не се възползва от хардуерно ускорение на многонишкови процесори или компютри. Например: ако една от нишките трябва да бъде изпълнена при заявка за I / O, целият процес е блокиран и стриймингът не може да бъде използван. В GNU Portable, изключването на C Thread се използва като поточна обработка на потребителското ниво.

M: N (хибридно изпълнение) - моделът показва редица потоци приложения за някои N брой ядрови клетки или "виртуални процесори". Това е компромис между нишки на ниво ядро ​​("1: 1") и потребител ("N: 1"). Системите за стрийминг "M: N" са по-сложни, тъй като са необходими както кодът на ядрото, така и кодът на потребителя. В изпълнението M: N, библиотеката за обработка на нишки е отговорна за планирането на теми в наличните насрочени обекти. Това прави контекста най-оптимален, тъй като избягва системни повиквания. Това обаче увеличава сложността и вероятността за инверсия, както и неоптималното планиране без обширна (и скъпа) координация между графичния план за околната среда на потребителя и планиращия ядрото.std конец c

Примери за изпълнение хибрид - Scheduler активиране използвани за прилагане POSIX NetBSD изградени библиотека (модел M: N, за разлика от ядрото модел изпълнение на 1: 1, или моделите на потребителя пространство).

Светлинни процеси, използвани от по-стари версии на операционната система Solaris (инструментариум Std Thread C).

Поддръжка на езици за програмиране

Много официални системи поддържат функционалността на нишките. Внедряването на C и C ++ прилага тази технология и осигурява достъп до техните собствени приложни програмни интерфейси за операционната система. Някои езици са повече от високо ниво езици за програмиране като Java, Python, .NET Framework, разработчиците излагат потоци във абстрахиране специфичните различия в изпълнението на потоците по време на изпълнение. Други разширения на езика също се опитват да абстрахират концепцията за едновременност и стрийминг от разработчика. Някои езици са предназначени за последователен паралелизъм, използвайки графични процесори.

windows c нишка

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

Други приложения на интерпретирани езици за програмиране, като TCL, използвайте разширението Тема сън С. Така се избягва максимално допустимите стойности на GIL, с помощта на модел, при който съдържанието и код трябва да бъде изрично "споделена" между нишките.

Езиковите програми за програмиране, насочени към събития, като например Verilog, и разширението Thread sleep C имат различен модел на конец, който поддържа максималния им брой за моделиране на оборудването.c изключение на нишката

Практическо мултитъкан

Многонишковата библиотека извикване на функция започва да се генерира нов поток, който получава функционална стойност като параметър. След това се създава нова паралелна нишка и се стартира обработката на текущата функция, последвана от връщане. Езици за програмиране включват конец библиотека, включително глобални възможности за синхронизиране, които ви позволяват да създавате и успешно изпълнение на многонишково с условието, че няма грешки, като се използва mutexes, състояние променливи, критични участъци, монитори и други видове синхронизация.

Споделяне в социалните мрежи:

сроден