Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Общие сведения о процессах




БЕЗОПАСНОЕ УПРАВЛЕНИЕ ПРОЦЕССАМИ

 

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

Процессом называется компьютерная программа на этапе исполнения. Но процесс – это не только действие, но и ресурсы, которыми операционная система наделяет программу. К числу этих ресурсов в первую очередь относится адресуемая виртуальная память, в которую загружаются программный код, данные (константы и переменные), библиотечные функции, стек и вспомогательная информация. Сложная программа может создать несколько одновременно выполняемых процессов. Повторяющийся запуск на исполнение одной и той же программы также создает множество независимых процессов. Поэтому правильнее назвать процессом выполняющийся экземпляр программы.

 

 

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

Системные процессы. Они не имеют собственных исполняемых файлов и запускаются из ядра операционной системы. Минимальный комплект системных процессов должен обеспечить функционирование виртуальной памяти, многозадачности и файловой системы. Системные процессы стартуют при загрузке операционной системы и выполняются в течение всего времени ее работы. Системные процессы являются частью ядра и всегда расположены в оперативной памяти. Системные процессы не имеют соответствующих им программ в виде исполняемых файлов и запускаются особым образом при инициализации ядра системы. Выполняемые инструкции и данные этих процессов находятся в ядре системы, таким образом, они могут вызывать функции и обращаться к данным, недоступным для остальных процессов. Эти процессы не общаются с пользователем, и он может узнать об их существовании, только просматривая список процессов. Рассматриваемая ниже команда ps –ef, начиная с версии 2.4 ядра Linux, показывает процессы ядра в квадратных скобках (ранее имена «ядерных» процессов отображались в круглых скобках).

Есть один процесс, который по своей сути является системным, но запускается не из ядра, а из отдельного исполняемого файла с именем /sbin/init. Этот процесс является прародителем всех остальных процессов. Идентификатор процесса (PID) у него равен единице, несмотря на то, что до него загружаются процессы ядра. Принудительное завершение этого процесса командой kill -9 1, по сути, означает аварийный останов системы, но ОС Linuxне позволяет сделать это даже администратору.

Сервисные службы или демоны. Даже если компьютер не выполняет функции сервера, система нуждается в существовании множества процессов для «самообслуживания»: направления заданий на печать и обеспечения их очереди, запуска заданий по расписанию, проверки целостности файловой системы и т. д. Набор утилит и системных программ, предназначенных для предоставления таких услуг, принято называть службами (сервисами) или демонами (от английского daemon). Последнее название не связано с какими-либо злыми мифическими духами и представляет собой акроним от Disk And Execution MONitor. Это процессы, которые выполняются в фоновом режиме, не связаны с конкретными терминалами, не общаются с обычными пользователями напрямую и не могут управляться ими.

Обычно демон активизируется в процессе загрузки системы после инициализации ядра, по инициативе администратора, по запросу пользовательской программы, по сетевому запросу или по наступлению какого-либо системного события. Каждому демону соответствует исполняемый файл. Идентифицировать большинство демонов можно по завершающему имя файла символу d: syslogd, inetd, telnetd и др.

Большинство демонов запускаются при старте операционной системы, после системных процессов. Их запуск происходит при участии процесса init из загрузочных сценариев (порядок загрузки системы изложен ниже). Администратор имеет право «вручную» запускать сервисы с помощью команды start и завершать их командой stop, но наличие данных команд зависит от используемого дистрибутива ОС Linux. Впрочем, по отношению к демонам можно использовать и обычную форму запуска в виде имени файла в командной строке. Завершить сервис, как и обычный процесс, можно направлением ему сигнала на завершение работы при помощи команды kill <PID> (см. ниже).

Пользовательские процессы. Запускаются из исполняемого (бинарного) файла пользователем. Они могут выполняться в интерактивном или фоновом режиме, и срок их выполнения обычно ограничен продолжительностью сеанса работы пользователя. Впрочем, как будет показано ниже, фоновые процессы продолжают существовать и после завершения пользовательского сеанса. Пользовательские процессы наследуют идентификатор пользователя и, как правило, имеют соответствующие права на доступ к объектам. Но некоторые пользовательские процессы могут при выполнении иметь больше прав, чем имеет создавший их пользователь.

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

Система изолирует пользовательские процессы друг от друга, от системных процессов и демонов. Каждый процесс выполняется в своем виртуальном адресном пространстве и других процессов «не видит». В многозадачной операционной системе пользовательские процессы не имеют права читать данные чужого процесса, записывать свои данные в его адресное пространство, отбирать у других задач вычислительное время и право доступа к устройствам ввода-вывода.

Выполнение процессов может происходить в одном из двух возможных режимах: в режиме ядра либо в пользовательском режиме. В режиме ядра процесс может выполнять любые привилегированные инструкции по управлению центральным процессором. В пользовательском режиме выполняются обычные, непривилегированные инструкции. Любая программа, созданная для многозадачной операционной системы, использует вызовы системных функций. Большинство таких функций (обычные вычислительные процедуры, операции со строками и др.) не требуют каких-либо исключительных привилегий и могут выполняться в пользовательском режиме. Но создание, модификация или удаление объектов файловой системы, монтирование дисковых устройств, создание учетных записей и многое другое требуют системных привилегий.

Управление процессами осуществляется частью ядра, именуемой планировщиком задач или просто планировщиком (scheduler). В ОС Linux реализована принудительная или, по иному, вытесняющая многозадачность, когда планировщик задач в замкнутом цикле передает управление следующему процессу, не «спрашивая» согласия на это у предыдущего процесса. Для того чтобы переключить центральный процессор с одной задачи на другую, также требуется время. Планировщик задач обычно расходует 5-7 % процессорного времени на то, чтобы сохранить в памяти содержимое предыдущей задачи, загрузить в регистры центрального процессора адреса следующей задачи и передать ей управление. Каждый процесс выполняется в течение нескольких миллисекунд, и у пользователя создается


представление, что компьютер способен выполнять все задачи одновременно.

Процесс является носителем определенного приоритета, nice number, который принимается во внимание планировщиком задач при выборе очередности и продолжительности запуска. Приоритет процесса – это его право распоряжаться временем центрального процессора. Этот приоритет никак не связан с правами доступа к файлам. Некоторые системные процессы должны иметь большой приоритет, но если они будут владеть большей частью процессорного времени, у компьютера не останется возможностей для выполнения пользовательских задач, ради которых он, собственно, и работает. Поэтому системные процессы, как правило, не злоупотребляют своими полномочиями. Процессы, созданные в одинаковых условиях обычным пользователем и администратором системы, имеют примерно равные приоритеты. Избыточный приоритет – весьма опасная вещь, способная приводить к атакам на отказ в обслуживании.

Абсолютный приоритет – это число, находящееся в диапазоне от –20 (наивысший приоритет) до 19 (наименьший). Обычным образом запускаемая программа имеет нулевой приоритет. Именно такое значение будет выведено, если ввести команду nice без аргументов. Положительное значение этого фактора свидетельствует о понижении приоритета, и наоборот. Команда

nice -n <command>

позволяет задать приоритет, с которым будет выполняться процесс после запуска.

Утилита renice позволяет изменить приоритет (точнее – его относительное значение, которое называют фактором уступчивости) уже запущенного процесса. Привилегия суперпользователя позволяет запускать процессы с отрицательным фактором уступчивости или понижать это значение у выполняющегося процесса. Обычные пользователи и их процессы не имеют прав захватывать лишнее время у центрального процессора. Это означает, что пользователь может только замедлять свой процесс. Так, команда

renice +10 <PID>

позволит пользователю замедлить свой процесс на 10 пунктов (сколько миллисекунд потеряет при этом квант процессорного времени, выделенный этому процессу, зависит и от аппаратной платформы, и от загрузки системы). Но вернуть приоритет замедленного процесса в прежнее значение пользователь уже не сможет – ему запрещено указывать отрицательные значения фактора уступчивости.


С помощью утилиты snice можно изменить приоритет всем процессам, созданным определенным пользователем:

snice +5 ivanov

Существует категория так называемых «жадных» программ, которые способны захватывать ресурсы компьютерной системы в ущерб другим процессам. Например, программа, имеющая право повышать свой приоритет, может захватить все время центрального процессора и уйти в вечный цикл. Но пользовательским процессам такие проделки запрещены. В то же время «жадная» программа может затребовать непомерно большой объем виртуальной памяти и вызвать ее дефицит. Такой жадности способствует непонятная расточительность универсальных операционных систем, и Linux здесь не является исключением. Воспользовавшись внутренней командой оболочки ulimit –a, можно отобразить действующие в системе ограничения по процессорному времени (cpu time), виртуальной памяти (virtual memory) и размеру создаваемых файлов (file size). На рис. 2.1 можно видеть, что по умолчанию эти и некоторые иные ресурсы ничем не ограничены (unlimited).

 




Поделиться с друзьями:


Дата добавления: 2015-03-31; Просмотров: 549; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.