Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТУЖ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
196.85 Кб
Скачать

18.Мьютекстердің қызметі және оларды қолдану

Мью́текс  (англ.  mutex,  mutual exclusion — «өзара жою») - бір орынды семафор, бір уақытта орындалатын ағынды синхронизациялауға арналған программалауда қолданылады. Мьютекстер-бұл өзара жою ұйымына арналған семафорлы механизмдердің бірден-бір нұсқасы. Ол көптеген операциялық жүйелерде іске асырылады. Олар негізінен өзара жою ұйымы бірдей немесе әртүрлі процестер ағынында қолданылады. Мьютекс- бұл белгіленген немесе белгіленбеген (сәйкесінше ашық немесе жабық ) деп аталатын екі күйдің біреуінде болатын қарапайым екілік семафорлар. Кез келген процеске қатысты қандайда бір ағын mutex объектісінің иесі соңынан белгіленбеген күйінде аударылады. Егер тапсырма мьютексті босататын болса, онда ол белгіленген күйге өтеді. Мьютекс тапсырмасы- оған басқа ағындардың рұқсат етілмеуіне арналған объектілік қорғаныс. Әр нақты жағдайда объектіні мьютекспен қорғалған тек қана бір ағын басқара алады. Егер басқа ағынға айнымалы қорғалған мьютекстен рұқсат керек болса, онда ол ағын мьютекс босамағанша күтіп тұрады. Мьютексті қолданудың негізгі мақсаты –мәліметтерді зақымдаудан қорғау; кейде оларда басқа да проблемалар туындайды:өзара құлыпталулар (клинч) және жаппай шығару күйі. Мьютекс спинлоктан ағынды күту кезектерімен ерекшеленеді. Мұндай құралдардың қатарына POSIX-2001 стандартына қатысты айнымалы шарттар, оқу-жазу құлыптаулары, спин-құлыптаулары және тосқауылдармьютекстері жатады.

Мьютекс- бұл мәліметтерді бөлуді реттеуге ағынды басқару жиынын қолдануға мүмкіндік беретін синхронизациялаушы объект. Синхронизациялау құралы оның өзара жою (mutual- exclusion) функционалдылығын көрсетеді. Ағын монополиялық басқаруда мьютексті иеленіп, өзі оны босатпағанша, иесі болып қала береді.

Мьютекстер семафорлардан ерекшелігі –басымдылықтар инверсиясынан қашуға мүмкіндік береді. Басымдылықтары төмен басқару ағындары синхронизация құралдарын қолдану күшіне жоғары басымдылықтарды орындауға кедергі келтіреді.

Ең алдымен мьютекстің не екенін айтып кетсек, ол семафордың жеке бір түрі . Мьютекс сөзі ағылшын тілінен аударғанда exclusion-“өзара шығару ” деген мағынаны білдіреді. Мьютекс бір орынды семафор деп те аталыды. Ол программалауда бір мезетте орындалатын ағындарды синхронизайиялау үшін қолданылады. Қазіргі таңда мьютекс көптеген операциялық жүйелерде іскі асырылған. Олардың ең басты тағайындалуы бір ағындар немесе бірнеше процесстер үшін өзара шығару ұйымы.

Мьютекс – семафордың екі күйде (белгіленген немесе белгіленбеген) бола алатын қарапайым екілік түрі. Кез-келген процесске жататын ағын mutex объектісінің иесі болса , соңғысы белгіленбеген яғни жабық күйге ауысады. Егер тапсырма мьютексті босатса оның күйі белгіленген яғни ашық күйге ауысады.

Мьютекстің мақсаты-объектіні басқа ағындардың рұқсатынан қорғау. Әр нақ уақытта тек бір ағын ғана мьютекспен қорғалған объектіге ие бола алады . Егер басқа ағынға мьютекспен қорғалған айнымалыға рұқсат керек болса , онда ол ағын мьютек босаған уақытқа деиін уйқы режимінде болады.

Мьютекстің қолданылу мақсаты-деректерді зақым келуден қорғау.

Мьютекспен семафордың ортақ нәрселері көп. Олар басқару ағындарын синхронизациялау кезінде екі операция қолданады:

1.Мьютексті басып алу(pthread_mutex_lock() и pthread_mutex_trylock()функция)

2. мьютексті босату( pthread_mutex_unlock() функциясы).