Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 33
Текст из файла (страница 33)
Нити могут поддерживаться Зл1. Упражнения 141 как на уровне ядра, так и на уровне прикладных библиотек, допустима и комбинация обоих вариантов. Разработчикам приложений предложен выбор приемлемого соотношения прикладных средств и возможностей, предоставляемых ядром системы. Единственная проблема, с которой им придется столкнуться, это различия в наборах системных вызовов для создания и управления нитями, предлагаемые в различных операционных системах, что затрудняет написание переносимого многонитевого кода, который бы эффективно использовал системные ресурсы.
Стандарт РОЯ1Х 1003Аа определяет функции нитевой библиотеки, однако в нем не описываются интерфейсы или реализации для ядра. 3.11. Упражнения 1. Для каждого из перечисленных ниже приложений проанализируйте пригодность использования легковесных процессов, прикладных нитей или иных программных моделей: серверный компонент распределенной службы имен; + оконная система, такая как Х зегчег; научное приложение, работающее на многопроцессорной системе и производящее большое количество параллельных вычислений; утилита щайе, которая компилирует файлы параллельно по мере возможности. 2.
В каких ситуациях применение нескольких процессов в приложении будет более оправдано, нежели использование 1.%'Р или прикладных нитей? 3. Почему каждому 1ЖР необходим отдельный стек ядра? Может ли система экономить ресурсы, создавая стек ядра только в тех случаях, когда 1ЛЪ'Р делает системный вызов? 4. Структура ргос и область ц содержат атрибуты и ресурсы процесса. Какие из полей этих структур в многонитевых системах можно разделить между всеми 1.ЖР процесса, а какие из них должны существовать для каждого ЕЖР отдельно? 5. Представьте, что 1.ЖР вызывает 1огй в тот момент времени, когда другой 1.ЖР, принадлежащий тому же процессу, вызывает ехй.
Что произойдет в результате, если система использует 1огх для дублирования всех 1 Ъ'Р процесса? Что случится, если вызов Гог1 будет дублировать только один (вызывающий 1огк) 1.ЖР? 6. Возникнут ли какие-нибудь проблемы с вызовом 1огх в многонитевой системе, поддерживающей его как единый вызов, атомарно совмещающий 1ой и ехес? 142 3.12. Дополнительная литература !ап. 1988, рр.
259-266. 9. 10. 11. 12. 13. Глава 3. Нити и легковесные процессы Раздел 3.3.2 описывает проблемы, возникающие при использовании единого разделяемого набора ресурсов, таких как дескрипторы файлов или текущий каталог. Почему не следует эти ресурсы предоставлять отдельно для каждого легковесного процесса или прикладной нити? Более подробно поднятая проблема исследуется в !3]. Стандартная библиотека определяет для каждого процесса перемен- ную еггпо, содержащую код ошибки, возвращенный последним сделан- ным системным вызовом.
Какие проблемы это может создать в много- нитевом процессе? Каким образом их можно преодолеть? Во многих системах библиотечные функции подразделяются на ните- защищенные и нитенезащищенные. К чему может привести использо- вание функции, которая не защищена при использовании в многоните- вых приложениях? Перечислите недостатки использования нитей для запуска в них обра- ботчиков прерываний.
Какие вы видите недостатки в планировании выполнения 1Л!гр посред- ством ядра? Предложите интерфейс, который позволил бы управлять планиро- ванием и выбирать, какой из 1Л!!гр первым отправится на выполнение. К возникновению каких проблем это может привести? Сравните базовые многонитевые элементы в системах 5о!апз и Р!8!Га! 1ЛЧ1Х. Какие преимущества имеются у каждого из них? Апс!егзоп, Т.
Е., ВегзЬас1, В. Ь!., 1лхотчзйа, Е. Р., апг! 1.ечу, Н. М., «5сЬег!и1ег Аст!час!опз: ЕНесг!че Кегпе1 Вцррогг 1ог гЬе Пзег-1.ече! Мапа8етепг о1 Рата!!е!!зш», Ргосеейпйз о1 гЬе ТЬ!гтеепгЬ 5утрозгцш оп Орегаг!п8 5узгегп Рппс!р!ез, Осг. 1991, рр. 95 — 109. Аппапй Р., Неппапп, Р., Е!р!г!з, !., апг! Ког!ег, М., «Ми!г1-гЬгеаг!ег! Ргосеввез ш СЬогцз/М1Х», Ргосеейпйз о1 ГЬе 5рг!п8 1990 Ецгореап ПЫ1Х Пзегз Огоцр Соп1егепсе, Арг. 1990. Ваггоп, !. М., апг! 'чч'айпег, !.
С., «Веуопд ТЬгеаоз: Кезоцгсе 5Ьаг!п8 1п ПЬ!1Х», Ргосеег!!п8э о1 ГЬе Ъ!псег 1988 ПБЕЬ!1Х ТесЬшса! Соп1егепсе, В!гаг, Х., «5е!ессеи Тор!сз ш Мц!Г!ргосезз!п8», П5ЕЬ!1Х 1995 ТесЬшса1 Соп1егепсе Тцгог!а! 1!осев, !ап. 1995. В!ас1г, Р. 1., «5сЬеди1!п8 5цррогг 1ог Сопсцггепсу апд Рага1!е1!зш 1п тЬе МасЬ Орегаг!п8 5узгет», 1ЕЕЕ Сотрцгег, Мау 1990, рр. 35 — 43. 3.12. дополнительная литература 143 6.
СЬепсоп, Р. К., «ТЬе Ч Р!аспЪисет! Буасеш», Сопптшпкас!опа о! сЬе АСМ, Чо1. 31, Ъ!о. 3, Маг. 1988, рр. 314-333. 7. Соорег, Е. С., апс1 Ргачеа, К. Р., «С ТЬгеасЬ», ТесЬшса1 Керогс СМУ— С5 — 88-154, Рерагсшепс о1Сошрпсег Яс!епсе, Сагпе8!е МеПоп 1.1и!чегясу, Яер. 1990. 8. Р!81са1 Ес1шршепс Согрогасюп, «РЕС 05Р/1 — бпЫе со РЕСсЬгеасЬ» Рагс Ь!о. АА-О2РРВ-ТК, !п!у 1994. 9, Роеррпег, Т. 1Ч., !г., «ТЬгеатЬ, А 5уасеш !ог сЬе Яиррогс о1 Сопсиггепс Рго8гашппп8», Вготчи 11п!чегясу ТесЬшса! Керогс С5 — 87 — 11, !ип. 1987. 10. Ргачея К. Р., ВегзЬай В. Ъ1„КавЬ!й К. Г., апс1 Реал, К.
»Ч., «13яп8 Сопбпиасюпа со 1тр1ешепс ТЬгеат! Мапа8ешепс апг! Сошпши1сас!оп ти Орегас!и8 Буасета», ТесЬшса! Керогс СМ11-СЯ-9-115К Рерагсшепс о1 Сотригег 5с!еисе, Сагпе81е МеПоп Уп!чета!Су, Осг. 1991. 11. Еу1тЬо!с, !. К., К!еппап, Я. К., Вагсоп, Я., РаиПспег, К., ЯЬ|чаПи8!аЬ А., 5ш!сЬ, М., Все!п, Р., ЧоП, !., ''»ЧееЬ, М., апт! ЪЧППашя Р., «Веуопт! Ми!с!ргосеаа!п8; Мп!с1сЬгеайи8 сЬе Япп05 Кегпе1», Ргосеейп8а о1сЬе Бпшшег 1992 Б5ЕЬ!1Х ТесЬтпса! Соп1егепсе, !ип. 1992, рр. 11-18. 12. Оо!пЪ, Р., Реап, К., Ропп, А., апт! КааЬ1д, К., «1ЛЧ1Х аа аи Арр!касюп Рго8гаш», Ргосеейп8а о! сЬе Яштппег 1990 ~1БЕЬПХ ТесЬшса1 Соп1егепсе, !ип. 1990, рр. 87-95. 13.
1пасКпсе 1ог Е!есспса1 апт! Е!ессгопк Еп8!пеегз, «РО51Х Р1003.4а, ТЬгеатЬ Ехсепа!оп аког РогсаЫе Орегас!п8 Яуасешз», 1994. 14. НааЬ!и, К., Ма1асЬт, У., Яатчт!оп, ЪЧ., апт! СЬап, С., «Кесочегу Мапа8етепС ш ОшсЫ!чег», АСМ Тгапаасс!опа оп Соптрисег Яуасева, Чо1. 6, Ъ!о. 1, РеЬ. 1988, рр.
82-108. 15. Кересз, !., «1.!8Ьстче!8Ьс Ргосеааез сот 1Л~ПХ 1шр1ешепсасюп аЫ Арр!кас!опа», Ргосеет!!п8а о1сЬе 5штппег 1985 1!5ЕЬ!!Х ТесЬшса1 Соп!егепсе, !ип. 1985, рр. 299-308. 16. Керре!, Р., «Ке8Ьсег »Ч!пт1очча апт! ~Заег-Брасе ТЬгеасЬ оп сЬе БРАКС», ТесЬпка! Керогс 91 — 08-01, Рерагстепс о! Сошрисег 5с!епсе апт! Еп81- пеег!и8, 1!и!чегясу о1' ЧСтааЬ!и8соп, Яеасс!е, »ЧА, Аи8. 1991. 17. К1еппап, Я. К., апт! Еу1тЬо!с, !. К., «1псеггирсз аа ТЬгеагЬ», Орегас!и8 Яуасеша Кеч!етч, Чо!.
29, Ь!о. 2, Арг. 1995. 18. МпеПег, К, «А 1.!Ъгагу 1шр!ешепсасюп о1РОЯ1Х ТЬгеагЬ ппт!ег 11Ь!1Х» Ргосеет!!п8а о1сЬе тЧ!псег 1993 1!5ЕЪ![Х ТесЬшса! СопГегепсе, !ап. 1993, рр. 29-41. 19. Орел 5о1стчаге Гоипт!ас!оп, «Реа!8п о1 сЬе 05Г/1 Орегас1и8 5уасеш— Ке1еазе 1.2», Ргепске-НаП, Еп81етчоот! СИЬ, Щ, 1993. 144 Глава 3. Нити и легковесные процессы 20. Ротче!1, М. 1., К!е!шап, Я.
К., Ваггоп, Я., ЯЛаЛ, О., Бге!и, 1Э., апс! Ъ'ееЬв, М., «ЯппОБ Мц!11-йЛгеаг! АгсЛ!йес1цге», Ргосеейп8а о1 гЛе Ъ'!пгег 1991 БЯЕЬ!1Х ТесЬшса! Соп1егепсе, !ап. 1991, рр. 65 — 80. 21. Бип М1сгояуягешв, «5ппОЯ 5.3 5уягет 5егч!сея», Ь!оч. 1993. 22. Течашап, А., !г., КаяЛЫ, К. Р., Со!пЪ, О. В., В!асЬ, О. 1., Соорег, Е., апг! Топлю, М. Ж,, «МасЬ ТЛгеасЬ апс! йе БЬ!1Х Кегпе1; ТЬе ВаШе 1ог Сопсго!», Ргосеейп8в о1 1Ле Вшшпег 1987 ОБА!1Х ТесЬшса! Соп1егепсе, !ип. 1987, рр. 185-197.
23. Чапг!ечоогг!е, М., апг! КоЬеггв, Е., «ЖогЬСгетчгс Ап АЬзггасг!оп 1ог Сопсго!!!п8 Рага!!е!!вш», 1птегпаг!опа! !опгпа! о1 РагаПе! Ргодгашппп8, Чо!. 17, Ь!о. 4, Ап8. 1988, рр. 347 — 366. Глава 4 Сигналы и управление сеансами 4.1. Введение Сигналы используются для оповещения процесса о возникновении системных событий. Еще одной функцией сигналов является простой механизм, используемый для коммуникаций и синхронизации между прикладными процессами. Программный интерфейс, поведение, а также внутренняя реализация сигналов сильно разнятся от одной версии 1ЛЧ1Х к другой, а иногда и в различных версиях одной и той же операционной системы. Словно для того, чтобы еще более запутать разработчика, операционная система предоставляет дополнительные системные вызовы и библиотечные функции для поддержки ранних интерфейсов сигналов, а также для обеспечения обратной (ЬасЬоагс)) совместимости'.
Оригинальная реализация сигналов в ОС 5узьет Ъ' была изначально незффективной и ненадежной. Многие ее проблемы были решены после появления системы 4.2ВБР У)ь11Х, в которой был предложен новый, надежный механизм сигналов (расширенный в следующей версии, 4.3ВЗР). Однако механизм системы 4.2ВВР явился несовместимым с интерфейсом Зузтеш Ъ' по некоторым аспектам, что послужило основой для возникновения определенных проблем как у разработчиков приложений, желающих создавать переносимые программы, так и у поставщиков операционных систем, стремившихся к совместимости своего продукта одновременно с ВЯЭ и Зузсегп Ъ'. Стандарт РО31Х 1003.1 (также известный как РО31Х.1, 15)) дал возможность наведения некоторого порядка в хаосе различных реализаций сигналов.
Он определил стандартный интерфейс, который должны поддерживать все совместимые с РОБ1Х операционные системы. Однако стандарт не опи- ' Такой подход приводит к возникновению и других проблем. Если библиотека, связанная с приложением, использует один набор сигнальных интерфейсов, а приложение — другой, результатом может оказаться некорректное функционирование программы. 146 Глава 4. Сигналы и управление сеансами сывает, каким именно образом этот интерфейс должен быть реализован.
Разработчики операционных систем могут решать сами, на каком уровне они будут поддерживать рекомендации стандарта: в ядре, или через прикладные библиотеки, или через комбинацию обеих составляющих. Разработчики ОС 5УК4 ввели в систему новую, РО51Х-совместимую реализацию сигналов, включающую в себя многие возможности механизма сигналов системы ВЯЗ.