Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 66
Текст из файла (страница 66)
Применение прав на однократную отправку помогло решить проблему, но только частично. Этого рода права использу>отея по большей мере для задания портов ответа серверам. Права на отправку можно получить несколькиви способами. Если клиенту необходимо начать взаимодействие с сервером, он запросит право на отправку к нему сообщений (через сервер имен). Если несколько нитей клиента независимо друг от друга инициализируют общение с сервером, каждая из них получит право на получение, которое затем будет объединено одним общим именем. Если одна из нитей освободит это имя, то это действие повлияет и на все другие нити: никто из них не сможет вдальиейшем пользоваться портом.
В системе МасЬ 3.0 эта проблема была решена при помощи ассоциапии пользовательской ссылки с каждым правом отправки. Теперь ядро увеличивает значение счетчика ссылок на единицу при каждом запросе заданием одного и того же права и точно так же уменьшает его при каждом освобождении права. После освобождения последней ссылки ядро удаляет право. 282 Глава 6. Межпроцессное взаимодействие 6.11. Дискуссия о средствах Масп!РС В системе МасЬ возможности 1РС являются не только средствами осуществления коммуникаций между процессами, но и фундаментальным компонентом структуры ялра. Например, полсистема виртуальной памяти использует их для реализации технологии копирования при записи ~15~, а ядро применяет 1РС для управления заданиями и нитями. Основные объекты системы МасЬ, такие как задания, нити и порты, используют для взаимодействия друг с другом средства передачи сообщений.
Архитектура ОС МасЬ имеет интересные свойства. Средства 1РС построены таким образом, что при помощи программы петшздзевег можно расширить возможности взаимолействия между процессами на распрелеленные системы, позволяя заданиям управлять объектами на удаленных узлах. Это свойство системы МасЬ позволило реализовать такие средства, как улаленная отладка, распределенная разделяемая память и лругие клиент-серверные программы.
Однако если посмотреть на архитектуру системы с другой точки зрения, мы увидим, что интенсивная передача сообщений ведет к ухудшению производительности. Разработчики направили свои усилия на построение операционных систем с микроядром, в которых большинство возможностей реализовывалось на уровне пользовательских серверных заданий, взаимолействующих друг с другом при помощи 1РС. Над созданием полобных систем трулились многие производители, но проблемы производительности практически свели на нет их усилия: такие системы не получили широкого распространения. Сторонники архитектуры МасЬ считали, что производительность 1РС ве является важным фактором, который следует рассматривать при разработке ОС с микроядром (41. Они объясняли это следующими причинами: + достижения в улучшении производительности 1РС и так велики по сравнению с другими компонентами операционной системы; + с увеличением доверия к аппаратным кашам стоимость системных служб будет сильно зависеть от их емкостей.
Так как код подсистемы 1РС является хорошо локализированным, он может быть легко настроен для оптимального использования кзш-памяти; + некоторый объем передачи данных можно осуществить другими путями, например, используя механизмы разделяемой памяти; + перевод некоторых возможностей ялра на уровень серверов пользовательского уровня позволил уменьшить количество переключений режима и выходов за границы защиты, являющихся весьма затратными операциями. Разработчики потратили много усилий на увеличение производительности средств 1РС ~3~, 14). Но несмотря на зто подсистема 1РС получила лишь ограниченное распространение среди коммерческих ОС.
Даже в системе Р181га1 11Ь11Х, разработанной на основе МасЬ, в большинстве компонентов ядра средства 1РС МасЬ не применяются. бд 3. упражнения 283 6.12. Заключение В этой главе описывалось сразу несколько вариантов механизмов взаимодействия процессов (1РС). Сигналы, каналы и трассировка процессов — это универсальные средства, поддерживаемые всеми ранними версиями системы 1)М1Х. В наборе 5узсет У 1РС были представлены новые возможности, такие как разделяемая память, семафоры и очереди сообщений, которые после появились во всех современных вариантах 131ч1Х. В ОС МасЬ средства 1РС используются для взаимодействия всех обьектов ядра друг с другом.
Границы взаимодействия объектов МасЬ могут быть легко расширены при помощи программы пе1язздзегчеб дающей возможность построения распределенных клиент-серверных приложений. Некоторые другие средства 1РС будут описаны в книге позже: в главе 8 вы увидите рассказ о защите файлов, в главе 14 прочтете о файлах, отображаемых в память, а глава 17 расскажет о каналах библиотеки 5ТксАИ5.
6.13. Упражнения 1. Назовите ограничения р1гасе как инструмента, используемого для создания отладчиков. 2. Аргумент рЫ функции р1яасе должен указывать на идентификатор процесса, являющегося потомком вызвавшего ее. Зачем необходимо выполнение этого требования? Г!очему процессы не могут использовать р1гасе для взаимодействия с любыми другими процессами системы? 3. Сравните коммуникационные возможности, предоставляемые каналами и очередями сообщений. Какими преимушествами и недостатками обладает каждое из упомянутых средств? В каких случаях предпочтительнее использовать каналы, а в каких — очереди сообщений? 4.
Во многих системах 1) Х1Х возможно подключение одной и той же разделяемой области памяти сразу на несколько адресов в адресном пространстве. Это недоработка или, наоборот, преимущество систем? В каких случаях описанная возможность может быть использована? К возникновению каких проблем это может привести? 5. О чем должен помнить программист при выборе адреса для подключения к нему разделяемой области памяти? От каких ошибок способна при этом защитить сама операционная система? 6.
Каким образом можно задействовать флаг 1РС йОФА1Т для предупреждения возникновения взаимных блокировок при использовании семафоров? 7. Создайте программы, позволяющие взаимодействующим процессам эксклюзивно использовать ресурс: на основе канала; Р1РО; 284 системного вызова юко1т; системных вызовов 11оск и 1осИ. 8. 9. 10. каналы; Г1ГО; 6.14. Дополнительная литература 1. ВасЬ, М. ~., «ТЬе Рез18п о1 гЬе ПЬ11Х Орега11п8 Бувсеш», Ргспг1се-На!1, Еп81етчоод СЫв, ЬЦ, 1986.
2. Вагон, Н, 'ч'., В!асй, Э., Во!ойу, ЪЧ., СЬетч, 3., богачев, К. Р„бо!цЬ, О. В., НазЬЫ Н. Е,, Течап!ап, А.,3г., апд 'т'оцп8, М. ЪЧ., МасЬ Кегпе1 1псег1асе 11. 12. 13. 15. Глава 6. Межпроцессное взаимодействие Сравните созданные программы и их производительность. С какими возможными побочными эффектами может столкнуться про- граммист при создании всех вариантов, предложенных в предыдущем вопросе? Можно ли реализовать блокировку ресурса, используя: только сигналы; сигналы и разделяемую память? Какой производительностью будут обладать эти средства? Создайте программы, передающие большой объем данных между процессами, используя очереди сообщений; разделяемую память совместно с семафорами (для синхронизации). Сравните созданные программы и их производительность.
Какие проблемы безопасности существуют в средствах 1РС Яувгеш 'ч1 Каким образом может вредоносная программа вмешаться во взаимодействие процессов или перехватить информацию? Семафоры создаются при помощи веш9е1, но для их инициализации исобходимо применить вызов вешс11. Следовательно, инициализация и соз. дание семафора не могут быть проведены как единая неделимая операция.
Опишите ситуацию, при которой такой подход может привести к состязательности. Предложитс способ решения создавшейся проблемы, Можно ли реализовать очереди сообщений Яувгет У на основе Мас1 1РС? Какие проблемы могла бы решить такая реализация? По каким причинам может быть удобно применение прав на однократ. ную отправку? Каким образом наборы портов помогают разработчикам в создании клиент-серверных приложений для ОС МасЬ? 6.14. Дополнительная литература 288 Маппа!», Рерагсвепс оЕ Согпрпсег 8с1епсе, Сагпе81е-Ме1!оп Рп1чегк!Су, Еап. 1990. 3. Ваггега, !. 8., «А Ракс МасЬ Ыестчог1с 1РС 1~пр1евепсасюп», Ргосеейп8к оЕ сЬе 118ЕЕ<!1Х МасЬ 8у1прояшп, 1<1оч. 1991, рр.
1 — 12. 4. ВегкЬа<1, В. ЕчЕ., Ап<Еегкоп, Т. Е., Е.ааоччк!<а, Е. Р., апс1 1 ечу, Н. М., < Е.!8ЬС ~че18ЬС Кепюсе Ргосе<!иге Са!1», АСМ Тгапкассюпк оп Соврпсег Яуксевк Чо1. 8, ЬЕо 1, ГеЪ. 1990, рр. 37 — 55. 5. ВегкЬад, В. 1<1., «ТЬе !псгеак1п8 1гге!ечапсе оЕ1РС РегЕоппапсе Еог МкгоЬегпе!-Ваке<! Орегас1и8 8уксевк», 118ЕЬЕ1Х »ЧогЬкЬор оп Мкго-Кегпе1к апс1 ОСЬег Кегпе1 АгсЬ!Сесспгек, Арг. 1992, рр.
205 — 212. 6. Р111сксга, Е. ч!т., «Бо!ос!оп оЕ а РгоЪ|ев Еи Сопспггепс Рго8гаппп1п8 Сопсго!», Соппппвсасюпк оЕ сЬе АСМ, Ъ'о1. 8, 8ер. 1965, рр. 569 — 578. 7. Ргачек, К. Р., «А Кеч!ке<1 1РС 1псегЕасе>, Ргосеейи8к оЕ СЬе ГЕгкс МасЬ 115ЕЕ>11Х чтгогЬкЬор, Осс.
1990, рр. 101 — 121. 8. Ргачек, К. Р., ВегкЬа<1, В. 1>Е., КакЬ!СЕ, К. Г., ап<1 Реап, К. >Ч., «с1яп8 Сопс! ппаВопк 1вр!евепс ТЬгеа<Е Мападеи>епс ап<Е Сопппппкасюп в Орегас1и8 Буксевк», ТесЬпка1 Керогс СМБ-СБ-91-115К, 5сЬоо! оЕ Соврпсег 5с!епсе, Сагпере МеПоп 11п!чегясу, Осс. 1991.
9. Гап!Ьпег, К. апс! Совек, К., «ТЬе Ргосекк Г11е 5уксегп ап<1 Ргосекк МосЕе! |и СЛ<11Х 5уксев Ч», Ргосеейп8к оЕ СЬе 1991 чт>1исег 118ЕЬЕ1Х СопЕегепсе, ,Еап. 1991, рр. 243-252. 10. Ргекоссо, Р. 1., ап<1 К1ссЬ1е, Р.
М., «1псегргосекк Со1пвпи1сас!опк 1и сЬе ЫЕпсЬ ЕЙНоп 11Ь!1Х 5уксев», 1ЗЬЕ1Х КекеагсЬ 8уксеит Рарегк, ТепсЬ ЕЙВоп, Ъ'о!. 11, 8апп<Еегк Со!!еде РпЫЕкЬ1и8, 1990, рр. 523-530. 11. КакЬ!<1, К. Г., «ТЬгеа<Ек оЕ а ЬЕеч 8уксев», ЕЛЧ1Х Кеч!етч, Ап8. 1986, рр. 37-49. 12. Яа1пк, Р. Н., «А Япагсег Сепспгу оЕ ЕЕЬЕ1Х», Ас!Йкоп-'Агек!еу, Кеа<Е!и8, МА, 1994.
13. 8сечепк, К. ЪЧ., «ЮЬЕ1Х 1>Еесчуог!< Рго8гавв!и8», Ргепс!се-На11, Еи81етчоос! СИЕе, Щ, 1990. 14. ТЬогиркоп, К., «1Л<11Х 1вр!егпепСаНоп», ТЬе ВеП 8уксев ТесЬп1са1 !опгпа1, чго1. 57, Ыо, 6, РагС 2, !и!.— Ап8. 1978, рр. 1931 — 1946. 15. Уопи8, М., Течап1ап, А., КакЬ1<1, К. Г., Со!пЬ, Р., Ерр1и8ег, 1., СЬету, 1 Во1окЬу, чС'., В1асЬ, Р., ап<1 Вагоп, К., «ТЬе Рпа!1Су о1' Мевогу ап<Е Соввпп1саНоп !и сЬе 1вр!евепсасюп оЕ а Мп1с!ргосекког ОрегаВпд 5уксев», Ргосеейп8к оЕ сЬе Е1ечепсЬ АСМ Яуврояшп оп ОрегаНпд 8уксевк РПпс1р1ек, 1>1оч.