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

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

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

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

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

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

Текст 2 страницы из PDF

В противномслучае функция возвращает указатель на статическую строку, которая может быть переписана при последующих вызовах этой функции.Если имя управляющего терминала по какой-либо причине не может быть определено,функция возвращает пустую строку. Даже если функция вернула имя файла, доступ к соответствующему файлу не гарантируется.Макрос L_ctermid задаёт длину строки, необходимую, чтобы хранить имя файла, возвращаемое ctermid.1.6.2 Работа с группами процессов#include <sys/types.h>#include <unistd.h>pid_tpid_tintpid_tsetsid(void);getsid(pid_t pid);setpgid(pid_t pid, pid_t pgid);getpgid(pid_t pid);Функция setsid создаёт новую сессию. Текущий процесс становится лидером сессии ипомещается в новую группу процессов, идентификатор которой совпадает с идентификатором данного процесса.

Изначально группа процессов не содержит других процессов, и сессия не содержит других групп процессов. Процесс помечается, как не имеющий управляющего терминала.Функция setsid в случае успеха возвращает идентификатор новой группы процессов.В случае ошибки возвращается -1, и переменная errno содержит код ошибки EPERM.

Этозначит, что процесс уже является лидером сессии.4Функция getsid возвращает идентификатор группы процессов лидера сессии указанного процесса pid. Если pid равен 0, берётся идентификатор текущего процесса. В случаеошибки возвращается -1, и устанавливается переменная errno.ESRCH Процесса с таким pid не существует.EPERM Текущий процесс и процесс с заданным идентификатором pid принадлежатразным сессиям, а конкретная реализация не позволяет в этом случае получать информацию об управляющем процессе.Функция getpgid возвращает идентификатор группы процессов процесса с заданнымидентификатором pid. Если аргумент pid равен 0, возвращается информация для текущегопроцесса. В случае ошибки возвращается -1.Функция setpgid помещает процесс pid в группу процессов pgid.

И pid, и pgidмогут быть равны 0, что означает идентификатор текущего процесса. При необходимостисоздаётся новая группа процессов. Если pid не совпадает с идентификатором самого процесса, это должен быть идентификатор одного из сыновних процессов, который ещё не выполнил к этому моменту вызов exec. В случае успешного завершения функция возвращает0. При неудаче функция возвращает -1, а переменная errno устанавливается в код ошибки.Если система не поддерживает управление заданиями, функция также завершается с ошибкой.EACCES Сыновний процесс, заданный аргументом pid уже выполнил exec.EINVAL Недопустимое значение pgid.ENOSYS Система не поддерживает управление заданиями.EPERMПроцесс, заданный аргументом pid, является лидером сессии, не находитсяв той же самой сессии, что текущий процесс, значение pgid не соответствуетгруппе процессов в той же самой сессии, что текущий процесс.1.6.3 Управление доступом к терминалу#include <sys/types.h>#include <unistd.h>pid_t tcgetpgrp(int fd);inttcsetpgrp(int fd, pid_t pgid);pid_t tcgetsid(int fd);Функция tcgetpgrp возвращает идентификатор основной группы процессов терминала, заданного открытым файловым дескриптором fd.Если основная группа процессов отсутствует, то есть когда все процессы бывшей основной группы процессов завершили работу, и ни одно другое задание не было поставлено какосновное, функция возвращает число, большее 1, которое не соответствует никакой существующей группе процессов.В случае ошибки возвращается значение -1.

Переменная errno может принимать следующие значения.EBADFАргумент fd не является открытым файловым дескриптором.ENOSYS Система не поддерживает управление заданиями.ENOTTY Терминал, ассоциированный с fd, не является управляющим терминаломданного процесса.Функция tcsetpgrp используется, чтобы установить основную группу процессов терминала. Аргумент fd задаёт файловый дескриптор терминала, аргумент pgid определяетгруппу процессов. Текущий процесс должен принадлежать той же сессии, что и группа процессов pgid, и иметь тот же самый управляющий терминал.5С точки зрения доступа к терминалу, эта функция рассматривается как запись на терминал. Если она вызывается из фонового процесса управляющего терминала, обычно всемпроцессам в этой группе посылается сигнал SIGTTOU.

Если текущий процесс блокирует илиигнорирует сигнал SIGTTOU, операция выполняется успешно, и сигнал не посылается.В случае успеха функция возвращает 0. Значение -1 обозначает ошибку, а переменнаяerrno в этом случае может принимать следующие значения.EBADFАргумент fd не является открытым файловым дескриптором.EINVAL Недопустимый аргумент pgid.ENOSYS Система не поддерживает управление заданиями.ENOTTY Терминал, ассоциированный с fd, не является управляющим терминаломданного процесса.EPERMГруппа процессов pgid не принадлежит к той же сессии, что текущий процесс.Функция tcgetsid позволяет получить идентификатор группы процессов сессии, длякоторой терминал, заданный его файловым дескриптором fd, является управляющим терминалом.

Если вызов завершился успешно, возвращается идентификатор группы процессов.В противном случае возвращается значение -1, а переменная errno устанавливается в кодошибки.1.7 Работа интепретатора командВ данном разделе подробно описываются действия, которые должен выполнять интепретатор команд, реализующий управление заданиями.1.7.1 Инициализация интерпретатора командКогда интерпретатор команд, обычно выполняющий управление заданиями, запускается, он должен проверять, что он был запущен другим интерпретатором команд, который самвыполняет управление заданиями.Интерпретатор команд может быть запущен в интерактивном или в неинтерактивном режиме.

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

Он не должен пытаться сам сделать своюгруппу основной для терминала, это должен сделать пользователь. Если интерпретатор былпродолжен, он должен повторить проверку и остановить себя, если он снова не основнойпроцесс.6После того, как интерпретатор был сделан основным процессом терминала, он можетвключить своё управление заданиями. Для этого вызывается setpgid, чтобы создать отдельную группу процессов для интепретатора, затем вызывается tcsetpgrp, чтобы сделатьэту группу процессов основной.Когда интерпретатор включает управление заданиями, он должен игнорировать сигналыуправления заданиями, чтобы случайно не остановить самого себя.

Для этого обработчикисоответствующих сигналов устанавливаются в SIG_IGN.Интерпретатор команд, работающий в неинтерактивном режиме, не должен поддерживать управление заданиями. Все запускаемые им процессы должны оставаться в той жегруппе процессов, в которой находится сам интерпретатор. Таким образом родительский интерпретатор сможет рассматривать неинтерактивный интерпретатор команд и все его сыновние процессы как одно задание.1.7.2 Запуск заданийПосле того, как интерпретатор команд включил управление заданиями, он может обрабатывать команды пользователя и запускать новые задания.Для создания новых процессов в группе процессов используются вызовы fork и exec.Однако, поскольку обычно в этой операции участвуют сразу несколько процессов, необходимо выполнять операции в правильном порядке, чтобы избежать временн ы́х ошибок.Существует два варианта, как можно структурировать дерево отношения «отец-сын» дляпроцессов.

Во-первых, все процессы в группе процессов может создавать сам командныйинтерпретатор; во-вторых, командный интерпретатор может создать один процесс, которыйбудет отцом всех остальных процессов в группе. Обычно первый подход проще в реализации.После того, как каждый процесс создан с помощью fork, он должен поместить себяв новую группу процессов, вызвав setpgid. Первый процесс в новой группе становитсялидером группы процессов, а его идентификатор процесса становится идентификатором всейгруппы процессов.Сам интерпретатор тоже должен вызвать setpgid, чтобы поместить каждый из его сыновних процессов в новую группу процессов. Это нужно для того, чтобы избежать временн о́йошибки: каждый сыновний процесс должен быть помещён в новую группу процессов до того, как он начнёт выполнять новую программу, но и сам интерпретатор должен иметь всесыновние процессы в новой группе перед тем, как он продолжит выполнение.

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