Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osi.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
316.33 Кб
Скачать
  1. Процесс init и файл /etc/inittab. Жизненный цикл процесса, приоритеты

Процесс init - это демон, который отвечает за инициализацию системы. Без него ни один другой процесс не сможет запуститься. Во время загрузки init выполняет две важные задачи: во-первых он запускает стартовые сценарии rc, а затем инициализирует терминалы, для того что бы в систему могли войти пользователи. (Де́мон (англ. daemon) — в системах класса UNIX — служба, работающая в фоновом режиме без прямого общения с пользователем)

Непосредственно после того, как система Linux загружается и ее ядро монтирует корневую файловую систему, она выполняет первую программу -- init. Эта программа отвечает за запуск стартовых системных скриптов и за изменение состояния системы с загрузочного на обычное многопользовательское. Программа init изготавливает копии оболочек login: для всех устройств "tty" в системе, а также устанавливает другие стартовые и заключительные процедуры.

После запуска программа init уходит в фоновый режим, следя за режимом работы системы и по необходимости изменяя его. Программа init должна следить за множеством вещей; все ее функции определены в файле /etc/inittab. Пример файла /etc/inittab дается ниже.

Неправильное изменение файла /etc/inittab может привести к тому, что войти в систему станет невозможно. Как самое меньшее средство безопасности при изменении файла /etc/inittab следует сохранять его предыдущую правильную версию и иметь загрузочную (корневую) дискету на случай, если будет сделана ошибка.

inittab Этот файл описывает, как процесс INIT конфигурирует

# систему на каждом уровне работы (run-level).

# Версия: @(#)inittab 2.04 17/05/93 MvS

# 2.10 02/10/95 PV

# Автор: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>

# Переработано: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>

# Дополнительные изменения:

# Robert Kiesling, <kiesling@terracom.net>

#

# Уровень по умолчанию

id:3:initdefault:

# Инициализация системы (запускается при загрузке системы)

si:S:sysinit:/etc/rc.d/rc.S

# Скрипт, который запускается в режиме с одним пользователем

# (уровень 1)

su:1S:wait:/etc/rc.d/rc.K

# Скрипт, который запускается в многопользовательском режиме

rc:23456:wait:/etc/rc.d/rc.M

# Что делать при нажатии комбинации Ctrl-Alt-Del

ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now

# При уровне 0 система останавливается

l0:0:wait:/etc/rc.d/rc.0

# При уровне 6 система перезагружается

l6:6:wait:/etc/rc.d/rc.6

# Что делать при перебое в питании (выгрузка системы в режиме с

# одним пользователем)

pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING"

# Если питание успело восстановиться, прекратить выгрузку системы

pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK"

# Если питание восстановилось в режиме с одним пользователем,

# то вернуться к многопользовательскому режиму

ps:S:powerokwait:/sbin/init 5

# Команды getty в многопользовательском режиме на консолях,

# подключенных к последовательным портам

#

# ВНИМАНИЕ: приведите эти команды в соответствие с

# вашими командами getty, иначе вы не сможете

# войти в систему!!

#

# ВНИМАНИЕ: аргументы команды `agetty': скорость, порт

# аргументы команды `getty_ps': порт, скорость, `gettydefs'

c1:1235:respawn:/sbin/agetty 38400 tty1 linux

c2:1235:respawn:/sbin/agetty 38400 tty2 linux

c3:1235:respawn:/sbin/agetty 38400 tty3 linux

c4:1235:respawn:/sbin/agetty 38400 tty4 linux

c5:1235:respawn:/sbin/agetty 38400 tty5 linux

c6:12345:respawn:/sbin/agetty 38400 tty6 linux

# Последовательные порты (serial lines)

# s1:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100

s2:12345:respawn:/sbin/agetty -L 9600 ttyS1 vt100

# Подключения через модем (dialup lines)

d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100

#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

# Уровень 4 раньше использовался только для систем X Window.

# Потом было обнаружено, что этот уровень зацикливает скрипт init,

# так что load avg все время остается равным по меньшей мере 1.

# Таким образом, теперь есть один процесс getty, открытый на

# tty6. Надеемся, что этого никто не заметит. ;^)

# Кроме того, не так уж плохо иметь одну текстовую консоль

# на случай, если что-либо случится с X.

x1:4:wait:/etc/rc.d/rc.4

# Конец файла /etc/inittab

Жизненный цикл программного обеспечения (ПО) — период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации

Жизненный цикл процесса - последовательность стадий и фаз, определяющих динамику реализации и развития процесса.

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

Внимание ко всему жизненному циклу процесса отличает BPM от традиционного реинжиниринга, который, в основном, рассматривает исключительно стадию моделирования. Возможность поддержки BPM всех стадий жизненного цикла процесса обусловлена элементами BPM-систем (см. подробнее BPM).

Таким образом, жизненный цикл процесса можно трактовать как замкнутую последовательность следующих фаз:

Жизненный цикл управления процессами

Приоритеты процессов

Планирование процессов и UNIX основано на приоритете процесса. Планировщик всегда выбирает процесс с наивысшим приоритетом. Приоритет процесса не является фиксированным и динамически изменяется системой в зависимости от использования вычислительных ресурсов, времени ожидания запуска и текущего состояния процесса. Если процесс готов к запуску и имеет наивысший приоритет, планировщик приостановит выполнение текущего процесса (с более низким приоритетом), даже если последний не "выработал" свой временной квант.

Ядро UNIX является непрерываемым (nonpreemptive). Это означает, что процесс, находящийся в режиме ядра (в результате системного вызова или прерывания) и выполняющий системные инструкции, не может быть прерван системой, а вычислительные ресурсы переданы другому высокоприоритетному процессу. В этом состоянии выполняющийся процесс не может освободить процессор "по собственному желанию", в результате недоступности какого-либо ресурса перейдя в состояние сна. В противном случае система может прервать выполнение процесса только при переходе из режима ядра в пользовательский режим. Такой подход значительно упрощает решение задач синхронизации и поддержки целостности структур данных ядра.

Каждый процесс имеет два атрибута приоритета: текущий приоритет, на основании которого происходит планирование, и относительный приоритет, называемый также поправкой приоритета - nice number, который задается при порождении процесса и влияет на текущий приоритет.

Диапазон значений текущего приоритета различен, в зависимости от версии ОС UNIX и используемого планировщика. В любом случае, процессы, выполняющиеся в пользовательском режиме, имеют более низкий приоритет, чем работающие в режиме ядра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]