Главная » Просмотр файлов » А. Робачевский - Операционная система UNIX

А. Робачевский - Операционная система UNIX (1114671), страница 34

Файл №1114671 А. Робачевский - Операционная система UNIX (А. Робачевский - Операционная система UNIX) 34 страницаА. Робачевский - Операционная система UNIX (1114671) страница 342019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 34)

Если этот процесс непринадлежит к тому же сеансу, что и процесс, сделавший системный вы!зов, функция возвращает ошибку.Системный вызов setpgid(2) позволяет процессу стать членом существую!щей группы или создать новую группу.ttinclude <unistd.h>intpid,pid_tФункция устанавливает идентификатор группы процесса pid равнымpgid. Процесс имеет возможность установить идентификатор группы длясебя и для своих потомков (дочерних процессов).

Однако процесс не мо!жет изменить идентификатор группы для дочернего процесса, которыйвыполнил системный вызов ехес(2), запускающий на выполнение другуюпрограмму.Если значения обоих аргументов равны, то создается новая группа с иден!тификатором pgid, а процесс становится лидером (group leader) этой груп!пы. Поскольку именно таким образом создаются новые группы, их иден!тификаторы гарантированно уникальны. Заметим, что группа не удаляетсяпри завершении ее лидера, пока в нее входит хотя бы один процесс.Идентификатор сеанса можно узнать с помощью функцииttinclude#includepid_t g e t s i d ( p i d _ tКак и в случае с группой, идентификатор pid должен адресовать процесс,являющийся членом того же сеанса, что и процесс, вызвавший getsid(2).Заметим, что эти ограничения не распространяются на процессы, имею!щие привилегии суперпользователя.Вызов функцииприводит к созданию нового сеанса:#includepid_tНовый сеанс создается лишь при условии, что процесс не является лиде!ром какого!либо сеанса.

В случае успеха процесс становится лидером се!анса и лидером новой группы.Понятия группы и сеанса тесно связаны с терминалом или, точнее, сдрайвером терминала. Каждый сеанс может иметь один ассоциированныйтерминал, который называется управляющим терминалом (controllingterminal), а группы, созданные в данном сеансе, наследуют этот управ!www.books-shop.comПроцессытерминал. Наличие управляющего терминала позволяет ядру кон!тролировать стандартный ввод/вывод процессов, а также дает возможностьотправить сигнал всем процессам ассоциированной с терминалом группы,например, при его отключении.

Типичным примером является регистрацияи работа пользователя в системе. При входе в систему терминал пользовате!ля становится управляющим для лидера сеанса (в данном случае для ко!мандного интерпретатора shell) и всех процессов, порожденных лидером(в данном случае для всех процессов, которые запускает пользователь из ко!мандной строки интерпретатора). При выходе пользователя из системы shellзавершает свою работу и таким образом отключается от управляющего тер!минала, что вызывает отправление сигнала SIGHUP всем незавершеннымпроцессам текущей группы. Это гарантирует, что после завершения работыпользователя в системе не останется запущенных имТекущие и фоновые группы процессовКак было показано, для каждого управляющего терминала существует се!анс, включающий одну или несколько групп процессов.

Одна из этихгрупп является текущей (foregroud group), а остальные фоновыми(backgroundСигналы SIGINT и SIGQUIT, которые генерируютсядрайвером терминала, посылаются всем процессам текущей группы. По!пытка процессов фоновых групп осуществить доступ к управляющемутерминалу, как правило, вызывает отправление им сигналов SIGSTP,SIGTTIN ИЛИРассмотрим следующие команды:$ find / name$ cat | sort&При этом происходит чтение ввода пользователя с клавиатурыисортировка введенных данныхЕсли интерпретатор поддерживаетуправление заданиями, оба процесса, созданные для программ cat(l) иsort(l), будут помещены в отдельную группу. Это подтверждается выводомкомандыне менее в системе будут продолжать выполняться процессы, запущенные в фоновомрежиме. Этотакже не справедливо для демонов — процессов, являющихсянами сеанса,имеющего управляющего терминала.

Система не имеет возможности авто!матического отправления сигналатаким процессам при выходе пользователя, и онибудут продолжать выполняться даже после завершения пользователем работы вДля"превращения" процесса в демона, он должен воспользоваться функциейи создатьновый сеанс,которого он автоматически окажется и который не будет ассоцииро!ван с управляющим терминалом.

Эти вопросы будут более подробно обсуждены при иллю!страции программы!демонав этой главе.Наличие текущей и фоновых группв сеансе работы пользователя зависит отвозможности командного интерпретатора управлять заданиями (job control). При отсутст!вии этой возможности все процессы будут выполняться в той же группе, что и shell.www.books-shop.comГлава 2.$ ps !efjпрограммирования UNIX| egrep2436 24072431 2407andy 2407 2405andy 2435 24072435243124072435SIDС2407 1 15:51:302407 0 15:51:252407 0 15:31:092407 0 15:51:30TTYttyOlttyOlTIME0:000:000:000:00CMDsortfind / name fooshcatВсе четыре процесса (sh, find, cat и sort) имеют один и тот же идентифика!тор сеанса, связанного с управляющим терминалом ttyOl. Процессыипринадлежат одной группе, идентификатор которой (2435) отли!чен от идентификатора группы командного интерпретатора (2407). То жесамое можно сказать и о процессе find(l), который является лидером от!дельной группы (2431).

Можно также заметить, что процессыиявляются лидерами групп, aеще и лидером сеанса.Хотя команда ps(l) не указывает, какие группы являются фоновыми, а какаятекущей, синтаксис команд позволяет утверждать, что командный интерпре!татор помещает cat(l) ив текущую группу. Это, во!первых, позволяетпроцессу cat(l) читать данные со стандартного потока ввода, связанного стерминалом ttyOl. Во!вторых, пользователь имеет возможность завершитьвыполнение обоих процессов путем нажатия клавиши <Del> (иличто вызовет генерацию сигнала SIGINT. Получение процесса!ми этого сигнала вызовет завершение их выполнения (действие по умолча!нию), если, конечно, процесс не установил игнорирование SIGINT.

Нарис.представлена схема взаимодействия управляющего терминала, се!анса и групп процессов для приведенного выше примера. Более детально вза!имосвязь между терминалом и процессами рассмотрена в следующей главе.Рис. 2.13. Связь между управляющим терминалом, сеансом и группамиwww.books-shop.comПроцессыЕсли командный интерпретатор не поддерживает управление заданиями,оба процесса станут членами той же группы, что и сам shell. В этом случаекомандный интерпретатор должен позаботиться об игнорировании сигна!лов S I G I N T ичтобы допустимые действия пользователя (такиекак нажатие клавиши <Del> или <Ctrl>+<C>) не привели к завершениювыполнения shell и выходу из системы.ОграниченияUNIX является многозадачной системой.

Это значит, что несколько процес!сов конкурируют между собой при доступе к различным ресурсам. Для"справедливого" распределения разделяемых ресурсов, таких как память,дисковое пространство и т. п., каждому процессу установлен набор ограни!чений. Эти ограничения не носят общесистемного характера, как, напри!мер, максимальное число процессов или областей, а устанавливаются длякаждого процесса отдельно. Для получения информации о текущих ограни!чениях и их изменения предназначены системные вызовыиttincludeintintresource, struct rlimitresource, const struct rlimitАргумент resource определяет вид ресурса, для которого мы хотим узнатьили изменить ограничения процесса.

Структура rlimit состоит из двухполей:определяющих, соответственно, изменяемое (soft) и жесткое (hard) ограни!чение. Первое определяет текущее ограничение процесса на данный ре!сурс, а второе — максимальный возможный предел потребления ресурса.Например, изменяемое ограничение на число открытых процессом файловможет составлять 64, в то время как жесткое ограничение равно 1024.Любой процесс может изменить значение текущего ограничения вплоть домаксимально возможного предела. Жесткое ограничение может быть из!менено в сторону увеличения предела потребления ресурса только процес!сом с привилегиями суперпользователя. Обычные процессы могут толькоуменьшить значение жесткого ограничения.

Обычно ограничения устанав!ливаются при инициализации системы и затем наследуются порожденны!ми процессами (хотя в дальнейшем могут быть изменены).Вообще говоря, максимальный возможный предел потребления ресурсаможет иметь бесконечное значение. Для этого необходимо установить зна!чение rlim_max равным RLIM_INFINITY. В этом случае физические огра!ничения системы (например, объем памяти и дискового пространства) бу!дут определять реальный предел использования того или иного ресурса.Различные ограничения и связанные с ними типы ресурсов приведены втабл. 2.21.www.books-shop.comГлава 2.

Среда программирования UNIX178Таблица 2.21. Ограничения процесса (значения аргумента resource)ОграничениеТип ресурсаЭффектМаксимальный размер соз%даваемого файла core, со%держащего образпамятипроцесса. Если предел уста%новлен равным 0, файл coreсоздаваться не будет.Максимальное время исполь%зования процессора в секун%дах.После создания файла core за%пись в этот файл будет останов%лена при достижении предельно%го размера.При превышении предела про%цессуотправляетсясигналSIGXCPU.Максимальный размер сег% При достижении этого пределамента данных процесса в бай% последующие вызовы функциитах, т. е. максимальное значе% brk(2) завершатся с ошибкойние смещения брейк%адреса.FSIZEМаксимальный размер фай%ла, который может создатьпроцесс.

Если значение этогопредела равно 0, процесс неможет создавать файлы.При достижении этого пределапроцессу отправляется сигналSIGXFSZ. Если сигнал перехва%тывается или игнорируется про%цессом, последующие попыткиувеличить размер файла закон%чатся С Ошибкой EFBIG.RLIMIT NOFILEМаксимальноеколичество При достижении этого предела,назначенных файловых деск% последующие попытки получитьрипторов процесса.новый файловый дескрипторзакончатся с ошибкой EMFILE.RLIMIT STACKМаксимальный размер стека При попытке расширить стек заустановленный предел отправля%процесса.ется сигнал SIGSEGV. Если про%цесс перехватывает или игнори%рует сигнал и не использует аль%тернативный стек с помощьюфункциидиспози%ция сигнала устанавливается надействие по умолчанию передотправкой процессу.Максимальный размер ото% При достижении этого пределабражаемой памяти процесса последующие вызовы brk(2) илизавершатся с ошибкойв байтах.

(Предел определенENOMEM.в версиях System V.)RLIMIT NPROCМаксимальное число процес%сов с одним реальнымОпределяетмаксимальноечисло процессов, которые мо%жет запустить пользователь.(Предел определен в версияхBSD UNIX.)При достижении этого предела,последующие вызовыдляпорождения нового процессазавершатся с ошибкойwww.books-shop.comПроцессыТаблица 2.21 (окончание)ОграничениеR L I M I T MEMLOCKТип ресурсаЭффектМаксимальный размер в бай%тах резидентной части про%цесса (RSS — Resident SetSize).Определяет макси%мальное количество физиче%ской памяти, предоставляе%мой процессу.

(Предел опре%делен в версиях BSD UNIX.)Если система ощущает недоста%ток памяти, ядро освободит па%мять за счет процессов, превы%сивших свой RSS.Максимальныйфизи% При превышении предела сис%ческой памяти (физических темный вызов mlock(2) завер%страниц) в байтах, который шится С Ошибкой EAGAIN.процесс может заблокироватьс помощью системного вызо%ва mlock(2). (Предел опреде%лен в версиях BSD UNIX.)В заключение приведем пример программы, выводящий на экран установ!ленные о г р а н и ч е н и я для процесса:вывода на экран текущего и максимального пределовпотребления ресурсаvoidresource, char *rname){struct rlimitifизменяемого==elseprintf (жесткогоif==printfelse}STACK, "RLIMITȾɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.comГлава 2.программирования UNIX/* BSD */RLIMIT_NPROC/* BSD */ttifdef/* BSD */ttifdef RLIMIT_MEMLOCK)#endif/* System V */#endif}Запуск программы под управлением операционной системы Solaris 2.5 дастследующие результаты:$infiniteinfinite2147479552infinite648388608infiniteinfiniteinfinite2147479552infinite10242147479552infiniteПримеры программВ качестве заключительной иллюстрации к обсуждавшимся выше вопро!сам приводятся фрагменты двух приложений, которые в достаточной сте!пени демонстрируют практическое применение программного интерфейсаUNIX.

Характеристики

Тип файла
PDF-файл
Размер
8,11 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее