Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Управление заданиями (job control)

Управление заданиями (job control) (Мини-учебник с ejudge = Чернокнижка)

PDF-файл Управление заданиями (job control) (Мини-учебник с ejudge = Чернокнижка) Практика расчётов на ПЭВМ (37215): Книга - 3 семестрУправление заданиями (job control) (Мини-учебник с ejudge = Чернокнижка) - PDF (37215) - СтудИзба2019-05-08СтудИзба

Описание файла

Файл "Управление заданиями (job control)" внутри архива находится в папке "Мини-учебник с ejudge = Чернокнижка". PDF-файл из архива "Мини-учебник с ejudge = Чернокнижка", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Содержание1 Управление заданиями (job control)1.1 Основные концепции . . . . . . . . . . . . . . . . . . . . . .1.2 Дополнительность управления заданиями . . . . . . . . . . .1.3 Управляющий терминал . . . . . . . . . . . . . . . . . . . . .1.4 Доступ к управляющему терминалу . . . . . . . . . . . . . .1.5 Сиротские группы процессов . . . . . .

. . . . . . . . . . . .1.6 Функции управления заданиями . . . . . . . . . . . . . . . .1.6.1 Идентификация управляющего терминала . . . . . .1.6.2 Работа с группами процессов . . . . . . . . . . . . .1.6.3 Управление доступом к терминалу . . . . . . . . . . .1.7 Работа интепретатора команд .

. . . . . . . . . . . . . . . .1.7.1 Инициализация интерпретатора команд . . . . . . . .1.7.2 Запуск заданий . . . . . . . . . . . . . . . . . . . . .1.7.3 Переключение между основным и фоновым режимом1.7.4 Остановленные и завершившиеся задания . . . . . .1.7.5 Продолжение остановленных заданий . .

. . . . . . .1......................................................................................................................................................1122233345666788Управление заданиями (job control)«Управление заданиями» обозначает специальный протокол, с помощью которого пользователь может переключаться между несколькими группами процессов (заданиями) в пределах одной сессии.1.1 Основные концепцииОсновное назначение интерактивного интерпретатора команд состоит в чтении команд стерминала пользователя и создании процессов для запуска программ, заданных этими командами.

Для этого используются вызов fork в сочетании с вызовом функции семействаexec.Одна команда может запускать единственный процесс, но часто одна команда используетнесколько процессов. Например, если используется оператор | командного интерпретатора,явно задаётся запуск нескольких программ в отдельных процессах. Даже если запускаетсяодна программа, она может для своей работы использовать несколько процессов.

Например, типичная команда компиляции gcc -c foo.c использует 4 процесса (хотя в любоймомент времени работают только два из них). Назначание утилиты make — запускать другие программы в отдельных процессах.Процессы, относящиеся к одной команде, называются группой процессов (processgroup) или заданием (job). Пользователь может оперировать с ними одной командой.

Например, комбинация Ctrl-C посылает сигнал SIGINT, чтобы завершить все процессы восновной (foreground) группе процессов данного терминала.Сессия (session) — это бо́льшая группа процессов. Как правило, все процессы, запущенные в течение одного сеанса работы пользователя с системой на одном терминале, принадлежат одной сессии.Каждый процесс относится к некоторой группе процессов. Когда создаётся новый процесс, он становится членом той же группы процессов и сессии, что его родительский процесс.1Процесс можно поместить в другую группу процессов, используя функцию setpgid, еслипроцесс принадлежит к той же сессии, что и группа процессов, в которую он помещается.Единственный способ перевести процесс в другую сессию заключается в том, чтобы сделать его начальным процессом новой сессии или лидером сессии (session leader), используяфункцию setsid.

Для лидера сессии создаётся новая группа процессов, из которой он ужене может быть перемещён в другую группу.Обычно новые сессии создаются при входе пользователя в систему, и лидером сессииявляется процесс интерпретатора команд, запущенный в результате успешного входа.Интерпретатор команд, поддерживающий управление заданиями, должен регулировать,какое из заданий может использовать терминал в любой данный момент времени. В противном случае может работать несколько заданий, пытающихся одновременно считать данныес терминала, и возникнет путаница, какое из них должно получить ввод пользователя. Чтобыпредотвратить это, интерпретатор команд должен взаимодействовать с драйвером терминала, используя специальные функции, описанные в этом документе.Интерпретатор команд может предоставлять неограниченный доступ к управляющемутерминалу только одной группе процессов одновременно.

Эта группа процессов называется основным заданием (foreground job) данного управляющего терминала. Другие группыпроцессов, запущенные интерпретатором команд, которые работают без такого доступа ктерминалу, называются фоновыми заданиями (background job).Если фоновое задание пытается считать данные с управляющего терминала, оно останавливается драйвером терминала. Кроме того, если установлен режим TOSTOP терминала,то же самое произойдет при записи данных на терминал фоновым заданием. Пользовательможет остановить основное задание, нажав комбинацию Ctrl-Z (символ SUSP), а программаможет остановить любое задание, послав ему сигнал SIGSTOP. Интерпретатор команд должен отслеживать факт остановки задания, оповещать пользователя об этом и предоставлятьвозможности для пользователя продолжить остановленное задание и переключать заданиямежду основным и фоновым режимом.1.2 Дополнительность управления заданиямиНе все операционные системы поддерживают управление заданиями, хотя большинствосовременных (Linux, FreeBSD, Solaris) поддерживают.Чтобы проверить, поддерживает ли система управление заданиями, можно использоватьмакрос _POSIX_JOB_CONTROL.

Если этот макрос определён в файле <unistd.h>, система поддерживает управление заданиями.Если управление заданиями не поддерживается, в сессии может быть только одна группапроцессов, которая ведёт себя, как будто всегда выполняется как основная группа. Функциисоздания новых групп процессов завершатся неудачно с кодом ошибки ENOSYS. Макросы,определяющие названия различных сигналов, связанных с управлением заданиями, определены, даже если система не поддерживает управление заданиями. Однако система никогдане генерирует такие сигналы, а попытка послать такой сигнал, проверить или установить реакцию на него завершается с ошибкой или ничего не делает.1.3 Управляющий терминалОдним из атрибутов процесса является его управляющий терминал. Сыновние процессы, созданные с помощью fork, наследуют управляющий терминал процесса-отца.

Таким способом все процессы в сессии наследуют управляющий терминал от лидера сессии.2Лидер сессии, который управляет терминалом, называется управляющим процессом терминала.Пользователь обычно не должен заботится о конкретном механизме, использующемсядля того, чтобы выделить управляющий терминал сессии, поскольку это делается системой,когда пользователь входит в систему.Некоторый процесс может отсоединиться от своего управляющего терминала, вызвавsetsid, чтобы стать лидером новой сессии.1.4 Доступ к управляющему терминалуПроцессы основного задания управляющего терминала имеют неограниченный доступ ктерминалу, в отличие от фоновых процессов.Когда процесс фонового задания пытается прочитать данные с его управляющего терминала, группе процессов посылается сигнал SIGTTIN.

Обычно этот сигнал вызывает остановку всех процессов в этой группе (если только они обрабатывают сигнал и не останавливаются). Если процесс, который попытался прочитать данные, игнорирует или блокируетэтот сигнал, read завершается с ошибкой EIO.Аналогично, когда процесс фонового задания пытается записать на свой управляющийтерминал, его группе процессов может быть послан сигнал SIGTTOU. Режим посылки этогосигнала устанавливается битом TOSTOP флагов локального режима терминала. Этот флагпо умолчанию не установлен, поэтому запись на управляющий терминал разрешена. Крометого, запись на управляющий терминал разрешена, если сигнал SIGTTOU игнорируется илиблокируется записывающим процессом.Большинство операций с терминалом, которые может выполнить процесс, рассматриваются как чтение или запись.

В описании каждой операции это указано.1.5 Сиротские группы процессовКогда управляющий процесс завершает работу, его терминал становится свободным иможет использоваться для создания на нём новой сессии. Например, с того же терминаламожет зайти другой пользователь. Поэтому могут возникнуть неприятности, если какие-топроцессы из старой сессии будут пытаться использовать этот терминал.Чтобы предотвратить эту проблему, группы процессов, которые продолжают работатьпосле того, как лидер сессии завершился, помечаются как сиротские группы процессов(orphaned process groups).Когда группа процессов становится сиротой, всем процессам в группе посылается сигналSIGHUP. Обычно это вызывает завершение работы программы.

Однако если процесс игнорирует сигнал или устанавливает для него обработчик сигнала, процесс продолжает работукак процесс-сирота даже после того, как его управляющий процесс завершился, но он болеене имеет доступа к терминалу.1.6 Функции управления заданиями1.6.1 Идентификация управляющего терминалаФункция isatty позволяет провериить, является ли данный файловый дескриптор дескриптором терминала.3#include <unistd.h>int isatty(int fd);Функция возвращает 1, если файловый дескриптор fd является дескриптором терминала, и0 в противном случае. В случае ошибки (неверный файловый дескриптор) возвращается -1.Функция ttyname возвращает имя специального файла устройства терминала.#include <unistd.h>char *ttyname(int fd);Если файловый дескриптор fd связан с терминальным устройством, функция ttynameвозвращает указатель на статическую строку символов, оканчивающуюся символомтерминатором ’\0’.

Эта строка содержит имя специального файла устройства данноготерминала. Функция возвращает NULL, если файловый дескриптор не связан с терминальным устройством, или имя файла устройства не может быть определено.Функция ctermid позволяет определить имя файла устройства управляющего терминала процесса.#include <stdio.h>char *ctermid(char *str);Функция ctermid возвращает строку, содержащую имя файла устройства, соответствующего управляющему терминалу текущего процесса. Если str не равно NULL, это долженбыть массив, который может хранить по крайней мере L_ctermid символов. Имя терминала будет записано в эту строку, и функция возвратит указатель на её начало.

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