Windows XP предоставляет следующие возможности по обеспечению защиты системы:
§ доступ к ресурсам системы может жестко контролироваться;
§ все операции по доступу к системным объектам могут регистрироваться в журнале безопасности;
§ для доступа к системе требуется пароль, и операции доступа регистрируются в журнале безопасности.
Структура операционной системы Linux
Компоненты операционной системы
Операционная система состоит из 4-х основных компонент.
• Ядро – базовая программа, которая управляет аппаратными средствами ивыполнением других программ.
• Оболочка – обеспечивает функционирование интерфейса пользователя.Она принимает от пользователя команды и посылает их в ядро для исполнения.
• Файловая система – представляет собой систему хранения файлов на запоминающих устройствах.
• Утилиты – специализированные программы, такие как редакторы,компиляторы, коммуникационные программы, посредством которыхвыполняются стандартные действия пользователя.
Взаимодействие всех компонент осуществляется через ядро.
Рис. 17. Структура операционной системы Linux
Процессы
Главная, постоянно находящаяся в оперативной памяти, часть ОС Linux называется ядром (Kernel). Ядро ОС обрабатывает прерывания от устройств, выполняет запросы системных процессов и пользовательских приложений, распределяет виртуальную память, создает и уничтожает процессы, обеспечивает многозадачность посредством переключения между ними, содержит драйверы устройств, обслуживает файловую систему.
Пользовательские процессы не могут непосредственно, например, порождать другие процессы, производить чтение или запись на диск, выводить данные на экран или создавать гнездо {socket) для обмена по сети. Для выполнения этих действий они должны воспользоваться сервисами ядра. Обращения за такими услугами называются системными вызовами.
Начальная загрузка системы состоит в том, что файл с образом ядра считывается в оперативную память, начиная с нулевого адреса. Этот файл находится в каталоге /boot и называется vmlinuz-x.y.z, где x.y.z — это номер версии ядра.
С точки зрения ядра процесс представляет собой запись в таблице процессов. Эта запись содержит данные, существующие в течение всего времени жизни процесса, и сведения о его состоянии. Размер таблицы процессов позволяет запускать несколько сотен процессов. Другая важная информация о процессе — например, таблица всех открытых процессом файлов — хранится в его адресном пространстве.
Запись в таблице процессов и пространство процесса вместе составляют контекст, или окружение, процесса. В него входят:
· PID — идентификатор процесса. Он принудительно назначается планировщиком при запуске процесса.
· PPID — идентификатор родительского процесса (о порождении процессов — дальше в этом же параграфе).
· TTY — имя управляющего терминала (терминал, с которого запущен процесс).
· WD — текущий каталог процесса, от которого отсчитываются относительные пути.
· RID, RGID — реальные ID и групповой ID пользователя, запустившего процесс.
· NICE — показатель уступчивости. Процессы выполняются в режиме разделения времени, то есть время центрального процессора делится между готовыми к выполнению процессами с учетом их приоритета. Чем выше показатель уступчивости, тем ниже приоритет.
· Переменные окружения.
Каждый процесс порождается другим процессом, использующим для этого системный вызов fork(). Таким образом, структура процессов древовидна. Корнем этого дерева служит init — процесс инициализации системы. Он запускается ядром первым, получает идентификатор 1 и порождает еще несколько процессов (сколько и каких, можно узнать из его конфигурационного файла /etc/inittab), которые, в свою очередь, при участии пользователя порождают другие процессы.
В результате системного вызова fork() родительский процесс полностью копирует свое окружение, включая адресное пространство, в дочерний, так что в момент рождения дочерний процесс отличается только своим ID. Потом дочерний процесс с помощью вызова ехес() загружает в свое адресное пространство какой-нибудь исполняемый файл и начинает исполнять содержащуюся в нем программу.
Иерархия процессов: ps и pstree
Команда ps позволяет просмотреть сведения обо всех процессах, протекающих в системе в данный момент(ps aux, ps -l)
Команда pstree представляет дерево процессов сразу в наглядном виде:
Ключ -р выводит вместе с именем процесса его PID, а ключ -и — имя пользователя, запустившего процесс/
Команды df (disk free) и du (disk usage) показывают, сколько места доступно и занято на жестком диске.
Процессы в реальном времени: команда top.
Фоновый режим
Родительский процесс может либо ждать завершения дочернего, либо продолжать свое выполнение. Если в роли родителя выступает командная оболочка, то это значит, что процессы, запущенные с одной консоли (или виртуального терминала), распадаются на две группы: те, которых оболочка ждет, — они взаимодействуют с пользователем, занимая консоль, — и те, после запуска которых с пользователем взаимодействует сама оболочка (консоль свободна). Эти группы называются передним и задним планами.
Чтобы запустить процесс на заднем плане (в фоновом или асинхронном режиме), нужно завершить командную строку управляющим оператором &.
Категории процессов
Процессы делятся на три категории:
§ Системные. Они порождаются ядром особым образом в процессе загрузки и выполняют системные функции (например, планирование процессов или смену страниц виртуальной памяти). Выполняемая ими программа берется не из исполняемого файла, а является частью ядра.
§ Пользовательские. Как правило, они порождаются во время сеанса работы пользователя и связаны с терминалом. Если пользовательский процесс работает в интерактивном режиме, то он захватывает терминал в монопольное владение и, пока он не завершится, пользователь не имеет доступа к командной строке на этом терминале. Пользовательские процессы могут работать также в фоновом режиме, освободив командную строку.
§ Демоны. Запускаются после инициализации ядра. Выполняются в фоновом режиме, не связаны ни с одним пользователем, обеспечивают работу различных служб (например, управление сетью). Главным демоном считается init — процесс инициализации системы.
Механизм сигналов — это средство, позволяющее сообщать процессам о некоторых событиях в системе, а процессу-получателю — должным образом на эти сообщения реагировать. Послать сигнал может сам процесс (например, при попытке деления на ноль), ядро (при сбое оборудования), пользователь или другой процесс (требуя прервать выполнение задачи).
Пользователь может послать сигнал процессу с идентификатором PID командой
kill <PID> - удаление процесса по его идентификатору.
killall <имя процесса>- удаление процесса по его имени.
Файловая система
Во всех UNIX-подобных системах эта древовидная структура растет из одного корня: она начинается с корневого каталога, родительского по отношению ко всем остальным, а физические файловые системы разного типа, находящиеся на разных разделах и даже на удаленных машинах, представляются как ветви этого дерева.