| |  Популярные статьи |  |  | 
 |  Сейчас на сайте |  |  Гостей: 1 На сайте нет зарегистрированных пользователей
 
 
  Пользователей: 9,955 
  новичок: Logyattella | 
 | |  10.3.7 Вход в систему | 
 | | Как показано в главе 7, процесс начальной загрузки, имеющий номер 1, выполняет бесконечный цикл чтения из файла "/etc/inittab" инструкций о том, что нужно делать, если загружаемая система определена как "однопользовательская" или "многопользовательская". В многопользовательском режиме самой первой обязанностью процесса начальной загрузки является предоставление пользователям возможности регистрироваться в системе с терминалов (Рисунок 10.19). Он порождает процессы, именуемые getty-процессами (от "get tty" — получить терминал), и следит за тем, какой из процессов открывает какой терминал; каждый getty-процесс устанавливает свою группу процессов, используя вызов системной функции setpgrp, открывает отдельную терминальную линию и обычно приостанавливается во время выполнения функции open до тех пор, пока машина не получит аппаратную связь с терминалом. Когда функция open возвращает управление, getty-процесс исполняет программу login (регистрации в системе), которая требует от пользователей, чтобы они идентифицировали себя указанием регистрационного имени и пароля. Если пользователь зарегистрировался успешно, программа login наконец запускает командный процессор shell и пользователь приступает к работе. Этот вызов shell'а именуется "login shell" (регистрационный shell, регистрационный интерпретатор команд). Процесс, связанный с shell'ом, имеет тот же идентификатор, что и начальный getty-процесс, поэтому login shell является процессом, возглавляющим группу процессов. Если пользователь не смог успешно зарегистрироваться, программа регистрации завершается через определенный промежуток времени, закрывая открытую терминальную линию, а процесс начальной загрузки порождает для этой линии следующий getty-процесс. Процесс начальной загрузки делает паузу до получения сигнала об окончании порожденного ранее процесса. После возобновления работы он выясняет, был ли прекративший существование процесс регистрационным shell'ом и если это так, порождает еще один getty-процесс, открывающий терминал, вместо прекратившего существование. алгоритм login /* процедура регистрации */
 {
 исполняется getty-процесс: установить группу процессов (вызов функции setpgrp);
 открыть терминальную линию; /* приостанов до завершения открытия */
 if (открытие завершилось успешно)   {
 исполнить программу регистрации: запросить имя пользователя;
 отключить эхо-сопровождение, запросить пароль;
 if (регистрация прошла успешно) { /* найден соответствующий пароль в /etc/passwd */
 перевести терминал в канонический режим (ioctl);
 исполнить shell;
 }
 в противном случае считать количество попыток регистрации, пытаться зарегистрироваться снова до достижения определенной точки;
 }
 }
 
 | 
 | 
 |  Комментарии | 
 |  Добавить комментарий | 
 | Пожалуйста залогиньтесь для добавления комментария. | 
 |  Рейтинги | 
 | Рейтинг доступен только для пользователей.
 Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
 
 Нет данных для оценки. | 
 | |  Гость |  | 
Вы не зарегистрированны?Нажмите здесь  для регистрации. 
Забыли пароль?  Запросите новый здесь .
 | 
 |  Мини-чат |  | Вам необходимо залогиниться. 
 Нет присланных сообщений. | 
 |