![](/user_photo/2706_HbeT2.jpg)
- •Понятие операционной системы. Типы операционных систем. Обобщенная структура операционной системы. Общая характеристика ос семейства unix.
- •Файловые системы современных ос. Интерфейс пользователя для работы с файловой системой.
- •Защита данных в операционных системах. Управление правами доступа к файлам.
- •Способы группирования команд в операционных системах. Командные файлы. Программные каналы, конвейеры команд.
- •5. Обзор возможностей командных процессоров (оболочек) операционных систем.
- •6. Принципы организации многозадачного режима в операционных системах.
- •1.1) Пакетный режим:
- •1.2) Режим разделения времени:
- •2.2) Режим виртуальных машин:
- •7. Коммуникационные средства операционных систем семейства unix
- •8. Генерация, конфигурирование, настройка операционных систем на потребности
- •9. Средства и способы обеспечения многопользовательского режима в операционных системах.
- •10. Понятие процесса. Управление процессами в операционной системе unix.
10. Понятие процесса. Управление процессами в операционной системе unix.
Процесс - представляет собой исполняемый образ программы, включающий отображение в памяти исполняемого файла, полученного в результате компиляции, стек, код и данные библиотек, а также ряд структур данных ядра, необходимых для управления процессом.
Управление процессами входит в основные функции ядра ОС (создание и уничтожение процессов, переключение процессов). Процесс является базовым понятием в ОС UNIX - в ней реализован принцип разделения времени. Понятие процесса неотделимо от понятия ресурса.
Ресурс - это любой объект, который может быть распределён и использован процессом в соответствии с алгоритмом этого процесса.
К ресурсам относятся: аппаратура; структуры данных и процедуры; сообщения.
SR-ресурсы (повторно используемые ресурсы). После освобождения процессами возвращаются в систему в неизменном виде и, следовательно, могут использоваться повторно. Примеры: все аппаратные ресурсы; неизменяемые структуры данных; неизменяемые, реентерабельные - один из экземпляров процедуры может одновременно использоваться в разных точках.
CR-ресурсы. (потребляемые ресурсы; в систему не возвращаются). Пример: изменяемые структуры данных; все сообщения и сигналы.
По отношению к потребляемым ресурсам процесс может выступать:
к
ак
производитель; как потребитель (выборка
сигнала (производитель) → приём сигнала
(процесс-потребитель)).
Управление процессами:
Управление процессами осуществляется в соответствии с диаграммой состояния процесса, которая представляется графом:
Любое событие (ожидание) - это ожидание ресурса.
Приостановка - внешнее вмешательство.
При управлении процессами возникает 3 проблемы:
синхронизация
производитель – потребитель
взаимные блокировки
Управление процессами в операционной системе UNIX:
Процесс строится для каждой выполняемой прикладной или системной программы, является единицей вычислительной работы и потребления ресурсов, выполняется в своем собственном виртуальном адресном пространстве.
Для управления процессами система при порождении процесса присваивает ему уникальный номер - идентификатор процесса(PID) число в диапазоне 0-30000.Выполняться в текущий момент может только 1 процесс (либо в режиме ядра, либо в пользовательском режиме (режиме задачи)). Все остальные процессы системы находятся в состоянии сна, либо готовности выполнению.
П роцесс выполняется в режиме задачи. При этом процессором выполняются прикладные инструкции данного процесса.
Процесс выполняется в режиме ядра. При этом процессором выполняются системные инструкции ядра операционной системы от имени процесса.
Процесс не выполняется, но готов к запуску, как только планировщик выберет. Процесс находится в очереди на выполнение и обладает всеми необходимыми ему ресурсами, кроме вычислительных.
Процесс находится в состоянии сна, ожидая недоступного в данный момент ресурса, например завершения операции ввода/вывода.
Процесс возвращается из режима ядра в режим задачи, но ядро прерывает его и производит переключение контекста для запуска более высокоприоритетного процесса.
Процесс только что создан родительским вызовом fork() и находится в переходном состоянии: он существует, но не готов к запуску и не находится в состоянии сна.
Процесс выполнил системный вызов exit() и перешел в состояние зомби. Как такового процесса не существует, но остаются записи, содержащие код возврата и временную статистику его выполнения, доступную для родительского процесса. Это состояние является конечным в жизненном цикле процесса. В этом состоянии процесс находится до тех пор, пока родительский процесс не выполнит wait() после чего вся информация о процессе будет уничтожена, а родитель получит код возврата завершившегося процесса.
При предоставлении процессу вычислительных ресурсов происходит переключение контекста (context switch), в результате которого сохраняется образ, или контекст, текущего процесса, и управление передается новому. Переключение контекста может произойти, например, если процесс перешел в состояние сна, или если в состоянии готовности к запуску находится процесс с более высоким приоритетом, чем текущий. В последнем случае ядро не может немедленно прервать текущий процесс и произвести переключение контекста. Дело в том, что переключению контекста при выполнении в режиме ядра может привести к нарушению целостности самой системы. Поэтому переключение контекста откладывается до момента перехода процесса из режима ядра в режим задачи, когда все системные операции завершены, и структуры данных ядра находятся в нормальном состоянии.
Различают процессы.
Оперативные процессы – запускаются последовательно и, как правило, реализуют последовательность выполняемых с данного терминала команд. Время ЦП делится между всеми активными процессами в соответствии с их приоритетами: каждому процессу выделяется определённый квант времени и частота и частота выделения этих квантов соответствует приоритету.
Фоновые процессы – используются для выполнения тех программ, которые не должны быть жестко связаны с терминалом данного пользователя (вычислительные задачи и т.д.). Для запуска процесса в фоновом режиме в конце соответствующей командной строки указывается “&”.
Команды управления процессами в UNIX:
ps - команда для вывода информации об имеющихся процессах
$ps
Pid tty time command
1324 ttyp 2 0:00 sh
1387 ttyp 2 0:00 ps
$ps –l (список пользовательских процессов с подробной информацией)
F |
S |
UID |
PID |
PPID |
C |
PRI |
NI |
ADDR |
SZ |
WCHAN |
TTY |
TIME |
CMD |
000 |
S |
500 |
709 |
1 |
0 |
63 |
0 |
- |
280 |
tcp_re |
tty3 |
00:00:00 |
UnixProcess |
040 |
S |
500 |
744 |
709 |
0 |
63 |
0 |
- |
280 |
tcp_re |
tty3 |
00:00:00 |
UnixProcess |
kill < имя сигнала> <pid> - посылает сигнал(ы) процессу с указанным(и) номерам(и). Выполняющий команду kill должен быть владельцем процесса или суперпользователем. Kill не уничтожает процесс, а посылает процессу сигнал по которому он должен завершиться.
(если в активном режиме, то ctrl+c ctrl+\; ctrl+z – приостановка).
Для выдачи информации о выполняемых в данном сеансе заданиях служит команда jobs (выводится список).
fg [%номер] – переводит задание с указанным номером номером в оперативный режим
bg [%номер] – переводит задание с указанным номером номером в фоновый режим
В некоторых случаях требуется продолжать фоновый процесс после выхода пользователя из системы. Для этих целей в командной строке выполняется префиксная команда:
nohup <команда> &
В обычном режиме (без nohup) все фоновые процессы прерываются при выходе из системы. Если выход из системы производится из сеанса с nohup, то родительским процессом для фонового процесса считается процесс с идентификатором 1 (init).
Между процессами надо распределять задачи соответственно у процессов есть приоритет, который назначается динамически (если процесс долго находился в ожидании, то приоритет ему назначается более высокий, если очень долго выполнялся, то понижается), на него мы не можем повлиять, но можем поставить поправку (относительный приоритет) – значение nice (вежливость, чем больше, тем меньше приоритет).
nice [-N] <командная строка> где N – целое число от 1 до 19.
По умолчанию базовый приоритет процессов равен 10, а увеличить приоритет может только root. Процесс с большим числом приоритета имеет меньший относительный приоритет в системе. Пользователь может только понижать приоритет своих процессов, тем самым отдавая относительное предпочтение другим своим процессам. Приоритеты процессов могут быть определены с помощью команды: ps –l. renice – поменять приоритет уже запущенного процесса