Лектерді синхронизациялау құралы. Қоршаушы өзгергіштер. Бір процессті лектерді синхронизациялауда қосалқы бағдарлмашы басты өзгергітікті бекітуді пайдалана алады. Бұл өзгерткіштік процесстің барлық лектеріне де тікелей қатынасы бар, бағдарламашы ОС жүйелік шақыруларына назар аудармай жұмыс жасай алады.
4 .3.сурет. Өзгергіш бекітулерді пайдалана отырып сыный секцияларды дамыту
Екілік өзгерткіштікке сәйкес әр бір сыный мәліметтер жинағына келесідегідей қойылады: лек 0 мағынаға ие болғанда, сыный секцияға енгенде және одан шықанда мағынасы 1. 4.3. суретте F(D) бекіту өзгерткіштігіне D сыный мәліметтеріне сәтті қосылуды дамыту мақсатында пайдалынатын лектердің алгоритімдік фрогменті көрсетілген. Сыный секцияға шығар алдында, D мәліметтерімен қандайда бір лек жұмыс істеп тұрмағандығын тексереді. Егер өзгерткіштік F(D) 0 қасиетте орнатылған болса, онда берілген тапсырма мен циклдық тексеру қайталанады. Сегер жинтық мәліметтер (F(D) = 1) болса, онда өзгерткіштік мағынасы F(D) 0 қасиетте орналасады да лек сыный секцияға шығады. О мәліметтерімен лек толық жұмысын аяқтаған соң, F(D) өзгергніштігі қайтадан 1 қасиетпен теңеседі.
Бекіту өзгерткіштігі тек қана бөлінетіе мәліметтерге ғана қолданылмайды сонымен қатар бөлінетін қорлардың әр түрлеріне де пайдаланылады.
Егер барлық есептер жоғарыда көрсетілген тәртіппен орындалса онда лектердің сәтті қосылуларына кепілдік беріледі. Солай болғанмен де кез – келген уақытта, кез – келген жерде соның ішінде сыный секцияда да операциялық жүйе ықпалымен үзілуі мүмкін.
Сонда да бір нәрсені ескеруіміз қажет, үзілісті шектеудің бір тәсілі бар екендігін. Бекіту өзгерткіштігін орнату және тексеру операциясының орындалуы барысында үзуге болмайды. Мысалы: тексеру барысында қордың бос екендігі анықталысымен, 0 өзгерткіштікті орнатып үлгермей лек үзіледі. Оның тоқтатылуы кезінде басқа лек қормен жұмысын жалғастырады, сыный секцияға кіріп ол да бөлінген қормен өз жұмысын аяқтамастан үзіледі. Бірінші безекке баақару мүмкіндігі берілісен, ол қорды бос екен деп қабылдап, өзіндік сыный секциясының жұмысын бастайды. Осылайша өзара қатынас принціптері бұзылады да, потециалды түрде нашар қорытындыға әкеліп соқтыртады. Осындайжағыдайларды болдырмаудың алдын алу үшін көптеген компьютерлердің жүйелік командаларында біріңғай, бөлінбейтін сараптау мен логикалық өзгерткіштік қасиет беру командалары қарасырылған (мысалы: ВТС, BTR және ВТ5 командалары мен Pentium процессі). Процессорда осындай командалар болмаған жағыдайда, текесеру және орнату опреациясын орындау барысында үзілісті болдырмаудың арнайы жүйелік 1 негізі қалыптастырылуы керек.
Жоғарыда көрсетілген өзара байланыстың дамытылуының тәсілі мынадай жетіспеушілктерден тұрады: бір лек сыный секцияда тұрғанн уақытта, осы қор қажет келесі бір лек процессорға ену құғығын алысымен өзіне қажетті бекіту өзгерткіштігін қайта – қайта сұрауы мүмкін, ал бұл дегеніміз басқа бір лекті орындауда пайдаланылатынпроцессор уақытын текке кетіру деген сөз. Осы жетіспеушіліктерді толықтыру үшін көптеген ОЖ арнайы сыный жүйедегі жүйелік шақыртулар қарасытырылуда.
4.4. суретте Windows NT операциялық жүйеде жоғарыда көрсетілген функциялардың көмегімен өзара байланыс орнатылған. Сыный мәліметтерді өзгертудің алдында лек EnterCriticalSection жүйелік шақыртуын орындайды. Осы шақырту шеңберінде алдыңғы жағыдайдағыдай алдымен, сыный қордың жағыдайын көрсететін бекіту өзгерткіштіктің тексерілуі орындалады. Егер жүйелік шақырту (F(D) - 0) қорының бос еместігін анықтағаннан кейін, алдыңғы көрсетілген жағыдайдағыдай емес, циклдық сұраныс жасамай, лекті D) күту режиміне ауыстырады және осы лек сәйкесінше қор босағаннан кейін активациялануына белгі жасайды. Осы уақытта қорды пайдаланып жатқан лек сыный секциядан шығысымен LeaveCriticalSection жүйелік фнукциясын орындауы қажет, осының нәтижесінде бекіту өзгерткіштік мағынаға ие болады да, (F(D) - 1) қоры босайды, ал операциялық жүйе осы қорды күту режимінде тұрған л ектерді қарастырып, бірінші кезекте тұрған лекті дайындық жағыдайына жібереді.
4.4. сурет сыный секцияға ену және шығуда өзара байланысты орнатуда қолданылатын жүйелік фнукцияларды дамыту
Осылайша бос емес қорды босатудың циклдық тексерілуіне кететін өнімсіз процессор уақытын жоюға болады. Бірақта сыный секцияның жұмыс көлемі аз болып, бөлінген қорға ену уақыты жылдам берілетін болса, онда бұл жағыдайда бекіту өзгерткіштік жүйесін пайдаланған дұрыс. Шынында да бұл жағыдайда ОЖ сыный секцияға ену және шығуда өзара байланысты орнатуда қолданылатын жүйелік фнукцияларды дамыту күтке үнемділікті керісінше жоғарлатуы мүмкін.
Достарыңызбен бөлісу: |