Спец часть (часть 2) (3 поток) (2015) (by Кибитова) (1161602), страница 5
Текст из файла (страница 5)
Итак,Итак, вв начальныйначальныймомент(когдамагазиноткрывается)имеетсяNсвободныхтележек.Каждыйочередноймомент (когда магазинмагазин открывается)открывается) имеетсяимеется NN свободныхсвободных тележек.тележек. КаждыйКаждыйочереднойочереднойпосетительбереттележкуипроходитвзал.Такпродолжается,поканепоявится(N+1)-ыйпосетитель берет тележкутележку ии проходитпроходит вв зал.зал. ТакТак продолжается,продолжается,покапоканенепоявитсяпоявится(N+1)-ый(N+1)-ыйпосетитель,которомутележкиуженехватает.Онвойтинеможетиждетсвободнойпосетитель, которомукоторому тележкитележки ужеуже нене хватает.хватает.
ОнОн войтивойти нене можетможет ии ждетждет свободнойсвободнойтележкиперед входомвходом ввв торговыйторговыйзал.зал.ЕслиЕслиприходятприходятещеещепокупатели,покупатели,онитакжетоонитакжетележки передвходомторговыйзал.Еслиприходятещепокупатели,тотоонитакжеожидаютсвободнойтележки.Посколькурассматриваемыйформализм,какупоминалосьожидают свободной тележки.тележки. ПосколькуПоскольку рассматриваемыйрассматриваемый формализм,формализм,каккакупоминалосьупоминалосьвыше,ничегонеговоритовыбореочередногозаблокированногопроцесса,будембудемвыше, ничего не говоритговорит оо выборевыборе очередногоочередного заблокированногозаблокированного процесса,процесса, тототобудемсчитать,чтоприбывающиевмагазинпокупателинестановятсявочередь,астоятвнекомсчитать, что прибывающиеприбывающие вв магазинмагазин покупателипокупатели ненестановятсястановятсяввочередь,очередь,аастоятстоятввнекомнеком«беспорядке»(толпой).
КакКактолькотолькоодинодинизизпокупателейпокупателейсс тележкойстележкойтележкойпокидаетторговыйпокидаетторговый«беспорядке» (толпой).(толпой).Кактолькоодинизпокупателейпокидаетторговыйзал,операция upup–––появляетсяпоявляетсяоднаоднасвободнаясвободнаятележка.Этутележкуберетпроисходит операциятележка.Этутележкуберетзал, происходитоперацияupпоявляетсяоднасвободнаятележка.Этутележкуберетодиножидающих посетителейпосетителейииипроходитпроходитвввторговыйторговыйзал.Этоозначает,чтоодинзал.Этоозначает,чтоодинизиз изодин изиз ожидающихпосетителейпроходитторговыйзал.Этоозначает,чтоодинзаблокированныхклиентовразблокировалсяипродолжилработу,остальныезаблокированных клиентовразблокировалсяипродолжилработу,остальныежеклиентов разблокировался и продолжил работу, остальные жежепродолжаютждатьвпродолжают ждать взаблокированномзаблокированномсостоянии.состоянии.заблокированномсостоянии.
Еслитележкабылабыодна,тоэтобылобыиллюстрациейорганизациидоступавв вЕслитележкабылабыодна,тоэтобылобыиллюстрациейорганизациидоступатележкабылабыодна,тоэтобылобыиллюстрациейорганизациидоступаРассмотрим теперь модель синхронизации, в которой, в частности, предпринятавзаимногоисключения,т.е.моментзалеможетрежимевзаимногоисключения,т.е.вввлюбойлюбоймоментвременивременивв торговомвторговомторговомзалеможетисключения,т.е.любоймоментвременизалеможетпопытка взаимногообойти требованиеаппаратнойподдержкиатомарностиупомянутыхвышеоказатьсялишьодинпокупатель.Этопримерт.н.двоичногосемафора—семафора,оказаться Идеялишьмонитораодин покупатель.покупатель.Это примерпример т.н.т.н.двоичногодвоичногосемафорасемафора,лишьодинЭтосемафора,операций.была впервыесформулированав 1974 г.семафораХоаром. —В—отличиеотмаксимальное значениекоторогоравно1.Этоттипсемафоровии обеспечиваетвзаимноемаксимальноезначениекоторогоравно1.Этоттипсемафоровиобеспечиваетвзаимноезначениекоторогоравно1.Этоттипсемафоровобеспечиваетвзаимноесемафора, монитор является высокоуровневой конструкцией (можно говорить, чтоэтоисключение.исключение.конструкцияуровня языка программирования), реализация которой поддерживается Вниже93)двоичногосемафорарассмотреныдваВ приведенномприведенномниже (Рис.(Рис.93)примерепримереМонитордвоичногосемафорарассмотреныприведенномниже(Рис.93)примередвоичногорассмотреныдвадвасистемойпрограммирования(компилятором).— семафораэто специализированныйпроцесса,каждыйизкоторыхимееткритическуюсекцию.ЗасчетиспользованиякаждыйимеетЗаЗасчетиспользованияпроцесса,включающийкаждый изиз вкоторыхкоторыхимеет критическуюкритическуюиспользованиямодуль,себя совокупностьпроцедур секцию.исекцию.функций,а счеттакжеструктурыдвоичного семафораобеспечиваетсябезопаснаяработавв критическойсекциилюбогоизиз изсемафораобеспечиваетсябезопаснаяработакритическойсекциилюбогодвоичногосемафораобеспечиваетсябезопаснаяработавкритическойсекциилюбогоданные, с которыми работают эти процедуры и функции.
При этом данныймодульпроцессов,т.е.еслиодинизнихвошелвкритическуюсекцию,тогарантируется,чтопроцессов,т.е. еслиизесли одинодиниз нихних вошелвошел ввкритическуюкритическуюсекцию,секцию,тотогарантируется,гарантируется,чточтообладаетследующимисвойствами:второйприпопыткетакжевойтивсвоюкритическуюсекциюбудетблокировандотехпри попыткетакжевойтисекциюбудетдодотехтехвторойпопыткетакжемониторавойти вв своюсвоюкритическуюкритическуюсекциюбудетблокированструктурыданныхдоступнытолько черезобращениякблокированпроцедурамилипор, 1.покапервыйнепокинетоную.первыйнепокинетоную.пор, покапервыйнепокинетоную.функциям этого монитора (т.е.
монитор представляет собой некоторый аналогобъекта в объектно-ориентированныхязыках и реализует инкапсуляциюданных);процесс 1процесс 2процесс1процесс2процесс1процесс22. считается,процесс занимает (или входитв) монитор, если он вызывает однуintчтоsemaphore;int semaphore;intsemaphore;intint илиsemaphore;intsemaphore;semaphore;из процедурфункций монитора;..................down(semaphore);down(semaphore);3. в каждыймомент времени внутри монитораможет находиться не более одногоdown(semaphore);down(semaphore);down(semaphore);/*критическая секция/*down(semaphore);критическая секцияпроцесса./*/*секция /* критическаякритическаясекция/*критическаякритическаясекцияпроцесса1 */ секцияпроцесса2 */процесса1*/процесса2*/Если процесспытаетсяпопастьвмонитор,вкоторомуженаходитсядругойпроцесса1*/процесса2*/..................процесс, то (в зависимостиот используемой стратегии)он либо получает отказ, либоup(semaphore);up(semaphore);up(semaphore);up(semaphore);......up(semaphore);up(semaphore);блокируется, становясьв очередь.
Таким образом,чтобы защитить разделяемые............структуры данных,их достаточно поместить внутрьмонитора вместе с процедурами,представляющими критические секции для обработки этих структур данных.Рис. 93. представляетПример использованиясемафора дляорганизациивзаимногоМониторсобойдвоичногоконструкциюязыкапрограммированияи2. считается,процесс занимает (или входитмонитор, инкапсуляциюесли он вызываетоднуобъектавчтообъектно-ориентированныхязыках в)и реализуетданных);объекта в объектно-ориентированных языках и реализует инкапсуляцию данных);изпроцедурилифункциймонитора;2.считается,чтопроцессзанимает(иливходитв)монитор,еслионвызываетодну2. считается, что процесс занимает (или входит в) монитор, если он вызывает однуилимонитора;3. в изкаждыймоментвремени монитора;внутри монитора может находиться не более одногоиз процедурпроцедурили функцийфункций3.вкаждыймоментвременивнутри мониторамонитора можетможет находитьсянаходитьсяненеболееболееодногоодногопроцесса.3.
в каждый момент времени внутрипроцесса.Еслипроцесс пытается попасть в монитор, в котором уже находится другойпроцесса.пытаетсяпопасть вв монитор,монитор,которомуженаходитсядругойпроцесс, Еслито(взависимостиот используемойстратегии)он либоужеполучаетотказ,либоЕсли процесспроцесспытаетсяпопастьвв которомнаходитсядругойпроцесс,то(взависимостиотиспользуемойстратегии)онлибополучаетотказ,либоблокируется,становясьвочередь.Такимобразом,чтобызащититьразделяемыепроцесс, то (в зависимости от используемой стратегии) он либо получает отказ, либоблокируется,становясьвочередь.Такимобразом,чтобызащититьразделяемыеструктурыданных,их достаточнопоместитьвместе с процедурами,блокируется,становясьв очередь.Таким внутрьобразом,мониторачтобы защититьразделяемыеструктурыданных,ихдостаточнопоместитьвнутрьмониторавместеспроцедурами,представляющимикритическиесекциидляобработкиэтихструктурданных.структуры данных, их достаточно поместить внутрь монитора вместе с процедурами,представляющимикритическиесекциидляобработкиэтихструктурданных.Монитор представляетсобой дляконструкциюипредставляющимикритические секцииобработки этих языкаструктурпрограммированияданных.Мониторпредставляетсобой конструкциюконструкциюязыкаи данныепрограммированиякомпиляторуизвестноо том, что входящиев него процедурыимеют особуюМониторпредставляетсобойязыкапрограммированияиикомпиляторуизвестнооо том,что входящиевходящиенего процедурыпроцедурыданныеимеютособуюособуюкомпиляторуизвестнотом,чтовв негоииданныеимеютсемантику,поэтомупервоеусловиеможет проверятьсяеще на этапекомпиляции,кромесемантику,поэтомупервоеусловиеможетпроверятьсяещенаэтапекомпиляции,кромесемантику,можетпроверятьсяеще на этапекомпиляции,того,код дляпоэтомупроцедур монитора тожеможетгенерироватьсяособымобразом, кромечтобытого,коддляпроцедурмониторатожеможетгенерироватьсяособымобразом,чтобытого, код для процедуртоже можетгенерироватьсяособымобразом,в данномчтобыудовлетворялосьтретье условие.
Посколькуорганизациявзаимногоисключенияудовлетворялосьтретьеусловие.ПосколькуорганизациявзаимногоисключениявданномудовлетворялосьПосколькуорганизациявзаимногоисключениявданномслучае возлагается на компилятор, количество программных ошибок, связанныхсслучаевозлагаетсянакомпилятор,количествопрограммныхошибок,связанныхслучаевозлагаетсякомпилятор,количествопрограммныхошибок,связанныхссорганизацией взаимного исключения, сводится к минимумуорганизациейсводитсяминимумуорганизациейвзаимного исключения,исключения,сводитсяккминимуму Бытовой взаимногоиллюстрациеймонитораможет служитькабина таксофонного аппарата.Бытовойиллюстрациеймонитораможетслужитькабинатаксофонногоаппарата.Бытовойиллюстрациеймонитораможетслужитькабинатаксофонногоаппарата.Повторим, что монитор — это языковая конструкция с централизованнымПовторим,что отмониторэтоязыковаяконструкцияцентрализованнымПовторим,— этоязыковаяконструкциясс централизованнымуправлением(в отличиесемафоров,которыене обладаютцентрализацией).Семафорыуправлением(вотличиесемафоров,которыенеобладаютцентрализацией).Семафорыуправлением(вотличиеотсемафоров,которыенеобладаютцентрализацией).Семафорыи мониторы являются, главным образом, средствами организации работывмониторы являются,являются, главнымобразом,организацииработыввии мониторыглавнымобразом, средствамисредствамиорганизацииработыДляоднопроцессорныхсистемах либов многопроцессорныхсистемахс общей памятью.однопроцессорных системах либо в многопроцессорныхсистемахссобщейпамятью.Дляоднопроцессорныхмногопроцессорныхсистемахобщейпамятью.Длямногопроцессорныхсистем с распределеннойпамятью этисредстване оченьподходят.многопроцессорных систем с распределенноймногопроцессорныхраспределенной памятьюпамятью этиэти средствасредстваненеоченьоченьподходят.подходят.ДляДлянихв настоящиймомент наиболее частоиспользуется механизммеханизм передачиних вв настоящийнастоящий момент наиболееДля нихнаиболее часточасто используетсяиспользуется механизм передачипередачисообщений.сообщений.сообщений.Сразуотметим,механизм передачисообщений являетсяуниверсальнымввтомтомСразуотметим,чтоСразуотметим,что механизммеханизм передачипередачи сообщенийсообщенийявляетсяявляетсяуниверсальнымуниверсальным в томсмысле,чтоонпредоставляет,каксредстваорганизациивзаимодействиямеждусмысле, чточто онон предоставляет,предоставляет, каксмысле,как средствасредства организацииорганизации взаимодействиявзаимодействия междумеждупроцессами,тактаки исредствасинхронизации.Механизмпередачисообщений основаннанапроцессами,средствасинхронизации.Механизмпередачисообщенийпроцессами, так и средства синхронизации.