Как операционная система Unix контролирует доступ к файлам в файловой системе?
В UNIX есть метод, называемый «Разрешение файловой системы», который используется для защиты пользователей от доступа и изменения файлов и каталогов друг друга. … UNIX поддерживает несколько учетных записей пользователей, и эти учетные записи принадлежат какой-либо группе. Владелец файла или каталога может решить, какие группы и пользователи могут читать, писать и выполнять.
Как Unix контролирует доступ к файлам?
Unix-подобные системы реализуют три конкретных разрешения, которые применяются к каждому классу:
- Разрешение на чтение дает возможность читать файл. …
- Разрешение на запись дает возможность изменять файл. …
- Разрешение на выполнение дает возможность выполнять файл.
Как работают разрешения UNIX?
читать файл, записывать в файл или просматривать файл на веб-странице. Файлы, загруженные в вашу учетную запись Unix, автоматически принадлежат вам. Если вы не дадите другим членам группы разрешение на редактирование или изменение файла, они не смогут вносить изменения.
Что такое контроль доступа в Unix?
UNIX — Контроль доступа. UNIX использует списки контроля доступа. Пользователь входит в UNIX и имеет право запускать процессы, выполняющие запросы.. Процесс «больше» предмета, многие домены могут соответствовать одному процессу. У каждого процесса есть идентификатор (uid).
Что означает chmod 777?
Установка разрешений 777 для файла или каталога означает, что он будут доступны для чтения, записи и выполнения для всех пользователей и может представлять огромную угрозу безопасности. … Владение файлом можно изменить с помощью команды chown, а разрешения — с помощью команды chmod.
Как мне изменить разрешения в Unix?
Чтобы изменить права доступа к файлам и каталогам, используйте команда chmod (изменить режим). Владелец файла может изменить разрешения для пользователя (u), группы (g) или других (o), добавив (+) или вычтя (-) права на чтение, запись и выполнение.
Сколько типов файлов есть в Unix?
Компания семь Стандартные типы файлов Unix: обычные, каталоги, символические ссылки, специальные FIFO, специальные блоки, специальные символы и сокеты, как определено в POSIX.
Каковы права доступа к файлам в Unix?
Режимы доступа к файлам
Восьмеричное значение | Установлены права доступа к файлам | Описание разрешений |
---|---|---|
1 | -Икс | Только разрешение на выполнение |
2 | -w- | Только разрешение на запись |
3 | -wx | Права на запись и выполнение |
4 | р- | Только разрешение на чтение |
Что означает — R — Linux?
Файловый режим. Буква r означает у пользователя есть разрешение на чтение файла / каталога. … А буква x означает, что у пользователя есть разрешение на выполнение файла / каталога.
Какие бывают типы разрешений?
Ниже приводится список разрешений и операций PCD, которые разрешает каждое разрешение.
.
Типы разрешений.
Защита в операционной системе unix
В качестве примера реализации функций защиты в ОС кратко рассмотрим механизмы защиты ОС UNIX [6]. Операционная система UNIX относится к категории многопользовательских многопрограммных ОС, работающих в режиме разделения времени. Первая версия UNIX была разработана К.Томпсоном и Д.Ритчи в 1969 году. Необходимо отметить, что между языком программирования Си и ОС UNIX существует тесная связь. Язык Си был разработан Д.Ритчи в начале семидесятых годов для работы с ранними версиями ОС UNIX. Он представляет собой результаты развития языка Би, созданного К.Томпсоном. В настоящее время свыше 900 ядра ОС UNIX и подавляющее большинство ее утилит написаны на языке Си. Богатые возможности, заложенные в ОС UNIX, сделали ее наиболее популярной в мире. Операционная система UNIX поддерживается практически на всех типах ЭВМ.
Резидентная в ОП часть ОС называется ядром. Ядро ОС UNIX состоит из двух основных частей: управления процессами и управления устройствами. Управление процессами резервирует ресурсы, определяет последовательность выполнения процессов и принимает запросы на обслуживание. Управление устройствами контролирует передачу данных между ОП и периферийными устройствами.
В любой момент времени выполняется либо программа пользователя (процесс), либо команда ОС. В каждый момент времени лишь один пользовательский процесс активен, а все остальные приостановлены. Ядро ОС UNIX служит для удовлетворения потребностей процессов.
Процесс есть программа на этапе выполнения. В некоторый момент времени программе могут соответствовать один или несколько процессов, или не соответствовать ни одного. Считается, что процесс является объектом, учтенным в специальной таблице ядра системы. Наиболее важная информация о процессе хранится в двух местах: в таблице процессов и в таблице пользователя, называемой также контекстом процесса.
Таблица процессов всегда находится в памяти и содержит на каждый процесс по одному элементу, в котором отражается состояние процесса: адрес в памяти или адрес свопинга, размер, идентификаторы процесса и запустившего его пользователя. Таблица пользователя существует для каждого активного процесса, и к ней могут непосредственно адресоваться только программы ядра (ядро резервирует по одному контексту на каждый активный процесс). В этой таблице содержится информация, требуемая во время выполнения процесса: идентификационные номера пользователя и группы, предназначенные для определения привилегий доступа к файлам, ссылки на системную таблицу файлов для всех открытых процессом файлов, указатель на индексный дескриптор текущего каталога в таблице индексных дескрипторов и список реакций на различные ситуации. Если процесс приостанавливается, контекст становится недоступным и не модифицируемым.
Каталоги файловой системы ОС UNIX «спрятаны» от пользователей и защищены механизмами ОС. Скрытой частью файловой организации в ОС UNIX является индексный дескриптор файла, который описывает расположение файла, его длину, метод доступа к файлу, даты, связанные с историей создания файла, идентификатор владельца и т.д.
Работа с таблицами является привилегией ядра, что обеспечивает сохранность и безопасность системы.
При взаимодействии с ОС UNIX пользователь может обращаться к большому числу наборов информационных объектов или файлов, объединенных в каталоги. Файловая система ОС UNIX имеет иерархическую структуру.
В ОС UNIX используется четыре типа файлов: обычные, специальные, каталоги, а в некоторых версиях ОС и FIFO— файлы. Обычные файлы содержат данные пользователей. Специальные файлы предназначены для организации взаимодействия с устройствами ввода-вывода. Доступ к любому устройству реализуется как обслуживание запроса к специальному (дисковому) файлу. Каталоги используются системой для поддержания файловой структуры. Особенность каталогов состоит в том, что пользователь может читать их содержимое, но выполнять записи в каталоги (изменять структуру каталогов) может только ОС. В ОС UNIX, где реализованы FIFO— файлы (First In First Out), организуются именованные программные каналы, являющиеся соединительным средством между стандартным выводом одной программы и стандартным вводом другой. Рассмотрим основные механизмы защиты данных, реализованные в ОС UNIX.
Управление доступом к системе.
При включении пользователя в число абонентов ему выдается регистрационное имя (идентификатор) для входа в систему и пароль, который служит для подтверждения идентификатора пользователя. Вводимые пользователем символы пароля не отображаются на экране терминала. В отдельных версиях ОС UNIX, помимо идентификатора и пароля, требуется ввод номера телефона, с которого выполняется подключение к системе. Администратор системы и пользователь могут изменить пароль командой passwd. При вводе этой команды ОС запрашивает ввод текущего пароля, а затем требует ввести новый пароль. Если предложенный пароль слишком прост, ОС может попросить ввести другой. Если предложенный пароль удовлетворителен, ОС просит ввести его снова с тем, чтобы убедиться в корректности ввода пароля. Пользователи, которым разрешен вход в систему, перечислены в учетном файле пользователей /cts/passwd. Этот текстовый файл содержит следующие данные: имя пользователя, зашифрованный пароль, идентификатор пользователя, идентификатор группы, начальный текущий каталог и имя исполняемого файла, используемого в качестве интерпретатора команд. Пароль шифруется, как правило, с использованием DES-алгоритма [4].
Управление доступом к данным.
Операционная система UNIX поддерживает для любого файла комплекс характеристик, определяющих санкционированность доступа, тип файла, его размер и точное местоположение на диске. При каждом обращении к файлу система проверяет право пользоваться им. Операционная система UNIX допускает выполнение трех типов операций над файлами: чтение, запись и выполнение. Чтение файла означает, что доступно его содержимое, а запись что возможны изменения содержимого файла. Выполнение приводит либо к загрузке файла в ОП, либо к выполнению содержащихся в файле команд системного монитора Shell. Разрешение на выполнение каталога означает, что в нем допустим поиск с целью формирования полного имени на пути к файлу.
Любой из файлов в ОС UNIX имеет определенного владельца и привязан к некоторой группе. Файл наследует их от процесса, создавшего файл. Пользователь и группа, идентификаторы которых связаны с файлом, считаются его владельцами. Идентификаторы пользователя и группы, связанные с процессом, определяют его права при доступе к файлам. По отношению к конкретному файлу все процессы делятся на три категории:
владелец файла (процессы, имеющие идентификатор пользователя, совпадающий с идентификатором владельца файла);
члены группы владельца файла (процессы, имеющие идентификатор группы, совпадающий с идентификатором группы, которой принадлежит файл);
прочие (процессы, не попавшие в первые две категории). Владелец файла обладает одними привилегиями на доступ к нему, члены группы, в которую входит файл, другими, все остальные пользователи — третьими.
Каждый файл содержит код защиты, который присваивается файлу при его создании. Код защиты располагается в индексном дескрипторе файла и содержит десять символов, причем первый символ определяет тип файла, а последующие девять — право на доступ к нему. Три вида операций (чтение, запись и выполнение) и три категории (уровни привилегий на доступ: владельцев, групп и прочих пользователей) дают в совокупности девять возможных вариантов разрешений или запретов на доступ к файлу. Первые три символа определяют возможности чтения (r), записи (w) и выполнения (c) на уровне владельца, следующие три — на уровне группы, в которую входит владелец, и последние три — на уровне остальных пользователей. Наличие символов r, w и с указывает на соответствующее разрешение.
Если процесс требует доступа к файлу, то сначала определяется категория, в которую по отношению к этому файлу он попадает. Затем из кода защиты выбираются те три символа, которые соответствуют данной категории, и выполняется проверка: разрешен ли процессу требуемый доступ. Если доступ не разрешен, системный вызов, посредством которого процесс сделал запрос на доступ, отвергается ядром ОС.
По соглашению, принятому в ОС UNIX, привилегированный пользователь имеет идентификатор, равный нулю. Процесс, с которым связан нулевой идентификатор пользователя, считается привилегированным. Независимо от кода защиты файла привилегированный процесс имеет право доступа к файлу для чтения и записи. Если в коде защиты хотя бы одной категории пользователей (процессов) есть разрешение на выполнение файла, привилегированный процесс тоже имеет право выполнять этот файл.
С помощью специальных команд владелец файла (и привилегированный пользователь) может изменять распределение привилегий. Команда Change mode позволяет изменить код защиты, команда Change owner меняет право на владение файлом, а команда Change group — принадлежность к той или иной группе. Пользователь может изменять режимы доступа только для тех файлов, которыми он владеет.
Защита хранимых данных. Для защиты хранимых данных в составе ОС UNIX имеется утилита crypt, которая читает данные со стандартного ввода, шифрует их и направляет на стандартный вывод. Шифрование применяется при необходимости предоставления абсолютного права владения файлом. Зашифрованный файл можно прочитать лишь по предъявлении пароля.
Восстановление файловой системы. Операционная система UNIX поддерживает три основных набора утилит копирования программы volcopy/labelit, dump/restor и cpio. Программа volcopy целиком переписывает файловую систему, проверяя с помощью программы labelit соответствие меток требуемых томов. Программа dump обеспечивает копирование лишь тех файлов, которые были записаны позднее определенной даты (защита накоплением). Программа restor может анализировать данные, созданные программой dump, и восстанавливать отдельные файлы или всю файловую систему полностью. Программа cpio предназначена для создания одного большого файла, содержащего образ всей файловой системы или какой-либо ее части.
Для восстановления поврежденной, например, в результате сбоев в работе аппаратуры файловой системы используются программы fsck и fsdb.
За сохранность файловой системы, адаптацию программного обеспечения к конкретным условиям эксплуатации, периодическое копирование пользовательских файлов, восстановление потерянных данных и др. ответственность возложена на администратора системы.
Усложненное управление доступом
В составе утилит ОС UNIX находится утилита cron, которая предоставляет возможность запускать пользовательские программы в определенные моменты (промежутки) времени и, соответственно, ввести временные параметры для ограничения доступа пользователей.
Для управления доступом в ОС UNIX также применяется разрешение установки идентификатора владельца. Такое разрешение дает возможность получить привилегии владельца файла на время выполнения соответствующей программы. Владелец файлов может установить такой режим, в котором другие пользователи имеют возможность назначать собственные идентификаторы режима. Аналогичным образом, разрешение установки идентификатора группы позволяет лицу, выполняющему программу, приобретать привилегии члена группы, в которую входит владелец программы (только на время выполнения этой программы).
Совершенствование механизмов защиты
Широкое распространение, многочисленные достоинства и хорошие перспективы ОС UNIX с 1984 года были поддержаны попытками стандартизации ее пользовательских интерфейсов и языка Си [1]. Стандартизация языка Си завершилась принятием стандарта Американского национального института стандартов (ANSI). Проект стандарта интерфейсов мобильной ОС, названный POSIX, подготовлен рабочими группами института IEEE (США). В рамках этого проекта разработан интерфейс защиты (управляемого доступа), который отличается от традиционного подхода к управлению доступом к данным в ОС UNIX.
В соответствии с разработанным интерфейсом защиты объекты, на которые распространяется управляемый доступ, включают файлы всех типов (в том числе программные каналы) и процессы. Файлы выступают в роли объектов, процессы — в роли субъектов. Различается доступ к объектам, основанный на дискретном выборе, и доступ, основанный на полномочиях.
Дискретный выбор
Использует соответствие списков (для каждого объекта составляются списки субъектов, доступ которых к объекту разрешен). Этот механизм доступа реализован в имеющихся версиях ОС UNIX.
Доступ, основанный на полномочиях
Использует соответствие меток. Для этого вводятся метки объектов (файлов) и субъектов (процессов), а также понятия доминанты и равенства меток (для выражения отношения между метками). Создаваемый файл наследует метку от создавшего его процесса. Вводятся соотношения, определяющие права процессов по отношению к файлам.
Интерфейс дискретного доступа
Существенно детализирует имеющиеся механизмы защиты ОС UNIX. Вводимые средства можно разделить на следующие группы:
работа со списками доступа при дискретной защите;
проверка права доступа;
управление доступом на основе полномочий;
работа привилегированных пользователей.
В рамках проекта POSIX создан интерфейс системного администратора. Указанный интерфейс определяет объекты и множества действий, которые можно выполнить над объектами. В качестве классов субъектов и объектов предложены пользователь, группа пользователей, устройство, файловая система, процесс, очередь, вход в очередь, машина, система, администратор, программное обеспечение и др. Определены атрибуты таких классов, операции над классами и события, которые могут с ними происходить.
Стандартизация интерфейсов ОС UNIX и появление юридического стандарта повысит значимость ОС UNIX, в том числе и для обеспечения безопасности данных.
Операционная система Linux
Linux — это современная UNIX-подобная операционная система для персональных компьютеров и рабочих станций, удовлетворяющая стандарту POSIX. Как известно, Linux — это свободно распространяемая версия UNIX-систем. Все компоненты системы, включая исходные тексты, распространяются с лицензией на свободное копирование и установку для неограниченного числа пользователей.
Изначально система Linux создавалась как «самодельная» UNIX-подобная реализация для машин типа IBM PC с процессором i80386. Однако вскоре Linux стала настолько популярна и ее поддержало такое большое число компаний, что в настоящее время имеются реализации этой операционной системы практически для всех типов процессоров и компьютеров на их основе. На базе Linux создаются и встроенные системы, и суперкомпьютеры. Система поддерживает кластеризацию и большинство современных интерфейсов и технологий.
Большинство свойств Linux присущи другим реализациям UNIX, кроме того, имеются некоторые уникальные свойства. Этот раздел представляет собой лишь краткий обзор этих свойств.
Linux — это полноценная многозадачная многопользовательская операционная система (точно так же, как и все другие версии UNIX). Это означает, что одновременно много пользователей могут работать на одной машине, параллельно выполняя множество программ. Поскольку при работе за персональным компьютером фактически никто не подключает к нему дополнительные терминалы (хотя это в принципе возможно), пользователь просто имитирует работу за несколькими терминалами. В этом смысле можно говорить о виртуальных терминалах. По умолчанию пользователь регистрируется на первом терминале. При этом он получает примерно следующее сообщение:
Mandrake Linux release 9.0 (dolphin) for i586
Kernel 2.4.16-16mdk on an i686 /ttyl
vienna login: :
Здесь во второй строке слово ttyl означает, что пользователь сейчас взаимодействует с системой через первый виртуальный терминал. Собственно работа на нем возможна только после аутентификации — ввода своих учетного имени и пароля. При желании открыть второй или последующий сеанс работы на соответствующем терминале, пользователь должен нажать комбинацию клавиш Alt+Fi, где i обозначает номер функциональной клавиши и одновременно номер соответствующего виртуального терминала. Всего Linux поддерживает до семи терминалов причем седьмой терминал связан с графическим режимом работы и использованием одного из оконных менеджеров. Однако если пользователь работает в графическом режиме, то для перехода в один из алфавитно-цифровых терминалов следует воспользоваться комбинацией клавиш CtrL+Alt+Fi. В каждом сеансе пользователь может запускать свои задачи.
Система Linux достаточно хорошо совместима с рядом стандартов для UNIX (на сколько можно говорить о стандартизации UNIX) на уровне исходных текстов, включая IEEE POSIX.I, System V и BSD. Кроме того, все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные средства распространяются свободно. Другие специфические внутренние черты Linux включают контроль работ по стандарту POSIX (используемый оболочками, такими как csh и bash), псевдотерминалы (pty), поддержку национальных и стандартных раскладок клавиатур динамически загружаемыми драйверами клавиатур. Linux поддерживает различные типы файловых систем для хранения данных. Некоторые файловые системы, такие как EXT2FS, были созданы специально для Linux. Поддерживаются также другие типы файловых систем, например Minix-1 и Xenix. Кроме того, реализована система управления файлами на основе FAT, позволяющая непосредственно обращаться к файлам, находящимся в разделах с 31 файловой системой. Поддерживается также файловая система ISO 9660 CD—RC для работы с дисками CD—ROM. Имеются системы управления файлами и на томах с HPFS и NTFS, правда, они работают только на чтение файлов. Созданы варианты системы управления файлами и для доступа к FAT32; эта файловая система в операционной системе Linux называется VFAT.
Linux, как и все UNIX-системы, поддерживает полный набор протоколов стека TCP/IP для сетевой работы. Программное обеспечение для работы в Интернет/интранет включает драйверы устройств для многих популярных сетевых адаптеров технологии Ethernet, протоколы SLIP (Serial Line Internet Protocol), PLIP (Parallel Line Internet Protocol), PPP (Point—to—Point Protocol), NFS (Network File System) и пр. Поддерживается весь спектр клиентов и услуг TCP/IP, таких как FTP, telnet. NNTP и SMTP
Ядро Linux сразу было создано с учетом возможностей защищенного режима 32-разрядных процессоров 80386 и 80486 фирмы Intel. В частности, в Linux используется парадигма описания памяти в защищенном режиме и другие новые свойства процессоров с архитектурой ia32. Для защиты пользовательских программ друг от друга и операционной системы от них Linux работает исключительно в защищенном режиме, реализованном в процессорах фирмы Intel. В защищенном режиме только программный код, исполняющийся в нулевом кольце защиты, имеет непосредственный доступ к аппаратным ресурсам компьютера — памяти и устройствам ввода-вывода. Пользовательские и системные обрабатывающие программы работают в третьем кольце защиты. Они обращаются к аппаратным ресурсам компьютера исключительно через системные подпрограммы, функционирующие в нулевом кольце защиты. Таким образом, пользовательским программам предоставляются только те услуги, которые реализованы разработчиками операционной системы. При этом системные подпрограммы обеспечивают выполнение только тех функций, которые безопасны с точки зрения операционной системы. Как и в классических UNIX-системах, Linux имеет макроядро, которое содержит уже известные нам три подсистемы. Ядро обеспечивает выделение каждому процессу отдельного адресного пространства, так что процесс не имеет возможности непосредственного доступа к данным других процессов и ядра операционной, системы. Тем более что сегмент кода, сегмент данных и стек ядра располагаются в нулевом кольце защиты. Для обращения к физическим устройствам компьютера ядро вызывает соответствующие драйверы, управляющие аппаратурой компьютера. Поскольку драйверы функционируют в составе ядра, их код будет выполняться в нулевом (привилегированном) кольце защиты, и они могут получить прямой доступ к аппаратным ресурсам компьютера.
В отличие от старых версий UNIX, в которых задачи выгружались во внешнюю память на магнитных дисках целиком, ядро Linux использует аппаратную поддержку процессорами страничного механизма организации виртуальной памяти. Поэтому в Linux замещаются отдельные страницы. То есть с диска в память загружаются те виртуальные страницы образа, которые сейчас реально требуются, а неиспользуемые страницы выгружаются на диск в файл подкачки. Возможно разделение страниц кода, то есть использование одной страницы, физически уже один раз загруженной в память, несколькими процессами. Другими словами, реентерабельность кода, присущая всем UNIX-системам, осталась. В настоящее время имеются ядра для этой системы, оптимизированные для работы с процессорами Intel и AMD последнего поколения, хотя основные архитектурные особенности защищенного режима работы изменились мало. Уже разработаны ядра для работы с 64-разрядными процессорами от Intel и AMD.
Ядро также поддерживает универсальный пул памяти для пользовательских программ и дискового кэша. При этом для кэширования может использоваться вся свободная память, и наоборот, требуемый объем памяти, отводимой для кэширования файлов, уменьшается при работе больших программ. Этот механизм, называемый агрессивным кэшированием, позволяет более эффективно расходовать имеющуюся память и увеличить производительность системы.
Операционная система FreeBSD
Помимо Linux к свободно распространяемым операционным системам семейства UNIX следует отнести FreeBSD. Принципиальное и самое важное различие между этими операционными системами заключается в том, что согласно принятому соглашению в системы Linux каждый может внести свои изменения, но при этом обязан также сделать свой код открытым. Не все компании на это согласны. Многие предпочитают воспользоваться исходными текстами и готовыми решениями но не открывать секретов своего программного обеспечения, сделанного с помощью использованного открытого кода. Поэтому в настоящее время сложилась такая ситуация, что имеется уже несколько десятков компаний, занимающихся созданием дистрибутивов для этой операционной системы. Каждая компания, подготавливающая дистрибутив, помимо собственно операционной системы добавляет к нем) свой инсталлятор, утилиты, в том числе менеджер пакетов программ, конфигураторы и, наконец, большой набор прикладного программного обеспечения. При этом она привносит в систему свои изменения, не согласуя их с другими. Таким образом, можно констатировать, что у системы Linux как совокупности собственно операционной системы и программного обеспечения, поставляемого с ней, нет единого координатора. С одной стороны, это приводит к заметному прогрессу системы, она быстро реагирует на новые устройства и технологии.
В противоположность Linux операционная система FreeBSD имеет такого координатора — это университет в Беркли, Калифорния. Любой может изучить тексты кодов этой операционной системы и предложить внести в нее свои изменения, но это не означает, что так и будет сделано, даже если изменения разумны. Только координирующая группа BSD имеет на это право.
FreeBSD — это тоже UNIX-подобная операционная система с открытым исходным кодом. Однако несмотря на то, что она родилась раньше и в той же мере бесплатна, что и Linux, многие о ней даже не слышали. Дело в том, что эта операционная система не имеет такой раскрученной рекламы, как проект Linux, хотя история BSD уходит корнями в более далекие годы. При этом необходимо заметить, что в плане производительности, стабильности, качества кода специалисты практически единодушно отдают предпочтение операционной системе FreeBSD. В частности, еще одним важным отличием FreeBSD от Linux является то, что ядро FreeBSD построено по принципам микроядерных операционных систем, тогда как Linux — это макроядерная операционная система.
Семейство операционных систем OS/2 WarpкомпанииIBM
Все последние версии операционной системы OS/2 в своем названии имеют слово Warp, что переводится с английского как «основа». Операционная система OS/2 Warp 4.0 практически представляет собой OS/2 Warp 3.0 (вышедшую еще в 1994 году) с несколько улучшенной поддержкой DOS-задач и обновленными элементами объектно-ориентированного интерфейса. Для этой системы характерны:
вытесняющая многозадачность (preemptive multitasking) и поддержка DOS-и Windows— (Win32s) приложений;
по-настоящему интуитивно понятный и действительно удобный объектный пользовательский интерфейс;
поддержка стандарта открытого объектного документооборота OpenDoc;
поддержка стандарта OpenGL;
поддержка Java-апплетов и встроенных средств разработки на языке Java;
поддержка шрифтов True Type (TTF);
управление голосом без предварительной подготовки (технология Voice Type);
полная поддержка сетевых технологий Интернет/интранет, доступ в сети CompuServe;
средства построения одноранговых сетей и клиентские части для сетевых операционных систем IBM LAN Server, Windows, Lantastic, Novell Netware 4.1 (в том числе поддержка службы каталогов);
система удаленного доступа через модемные соединения;
файловая система Mobile File System для поддержки мобильных пользователей;
стандарт автоматического распознавания аппаратных устройств (Plug—and—Play), но без столь навязчивого механизма, который реализован в Windows;
Особенности интерфейсов
В отличие от интерфейса GUI в Windows, где ярлыки (shortcuts) объектов никак не связаны между собой, в WPS объекты, имеющие аналогичные ярлыки (shadow Shadow (по-английски «тень») — значок на рабочем столе OS/2, который является частью объекта, то есть имеется постоянная двухсторонняя связь между этим значком и собственно объектом в терминологии WPS), просто имеют дополнительное свойство — возможность многократно отображаться почти как самостоятельные объекты. Можно сделать несколько таких ярлыков из уже существующего ярлыка или из объекта. При этом любые ярлыки могут перемещаться в любое место и при этом их связи с основным объектом не теряются. Вроде бы то же самое происходит в GUI, но в WPS можно переместить основной объект, и его ярлыки тут же изменят свои параметры, тогда как в GUI произойдет разрушение связей, поскольку связи являются односторонними.
Про SOM можно сказать, что это не связанная ни с одним конкретным языком объектно-ориентированная технология для создания, хранения и использования двоичных библиотек классов. Ключевые слова здесь «двоичные» и «несвязанная ни с одним конкретным языком. Объектно-ориентированное программирование (ООП) заслужило безоговорочное признание в качестве основной парадигмы, однако его применению в коммерческом программном обеспечении препятствуют отсутствие в языках ООП средств обращения к библиотекам классов, подготовленным на других языках, и необходимость поставлять с библиотеками классов исходные тексты. Многим независимым разработчикам библиотек классов приходится продавать заказчикам исходные тексты, поскольку разные компиляторы по-разному отображают объекты. Настоящий потенциал модели SOM заключается в ее совместимости практически с любой платформой и любым языком программирования. Технология SOM соответствует спецификации CORBA (Common Object Request Broker Architecture — общая архитектура посредника объектных запросов), которая определяет стандарт условий взаимодействия между прикладными программами в неоднородной сети.
Графический интерфейс в системах OS/2 не единственный. Интересно отметить тот факт, что существует довольно много альтернативных оболочек для операционных систем OS/2, начиная с программы FileBar, которая хотя и кажется примитивной, но зато отлично работает на компьютерах с оперативной памятью объемом 4 Мбайт, и кончая мощной системой Object Desktop, которая значительно улучшает внешний вид экрана OS/2 и делает работу более удобной.
Помимо оболочек, улучшающих интерфейс операционной системы OS/2, имеется также ряд программ, расширяющих ее функциональность. В первую очередь, это Xfree86 for OS/2 — полноценная система X—Window, которая может использоваться как графический терминал при работе в сети с UNIX-машинами, а также для запуска программ, перенесенных из UNIX в OS/2. К сожалению, таких программ немного, однако большое количество UNIX-программ поставляется вместе с исходными кодами, которые, как правило, практически не нужно изменять для перекомпиляции под Xfree86/OS2.
Операционные системы Windows9x
Общие сведения
Операционные системы Windows 9x создавались для работы только на IBM-совместимых персональных компьютерах. Они не являются переносимыми и на других платформах (на процессорах, не совместимых с архитектурой ia32) не работают. Как и для всего остального программного обеспечения от Microsoft, исходные коды операционных систем закрыты, поэтому подробного описания ее архитектуры практически нет; имеются только многочисленные публикации о том, как следует использовать эти системы.
Операционные системы семейства Windows 9x предназначены, главным образом, Для домашнего, а не корпоративного применения. Уже многие годы они являются самыми распространенными в мире. Хотя они допускают возможность работы с компьютером нескольких пользователей (естественно, по очереди, поскольку системы являются однотерминальными), в них не поддерживается механизм учетных записей, как в остальных 32-разрядных операционных системах. Каждый пользователь может иметь свое собственное рабочее окружение, то есть свои вид Рабочего стола (desktop), состав панели задач (taskbar) и меню Пуск (Start), параметры настройки используемых программ и многое другое. Это собственное рабочее окружение называется профилем (profile), и при включении такой возможности в системном каталоге образуется вложенный каталог с именем Profiles, в котором и размещаются профили пользователей. Независимо от того, имеет каждый пользователь свой профиль или не имеет, он должен зарегистрироваться, если система сконфигурирована для работы в вычислительной сети. Для выполнения процедуры аутентификации используются файлы с расширением pwl, к которым, к сожалению, имеется свободный доступ, в результате узнать пароль того или иного пользователя не составляет большой проблемы для злоумышленника. Для облегчения работы с компьютером все эти системы поддерживают механизм автоматического обнаружения подключенных к нему устройств (так называемый механизм PlugandPlay — «включай и работай»). Эту задачу выполняет специальный модуль — диспетчер конфигурации (Configuration Manager). Он гарантирует, что каждое устройство, входящее в состав персонального компьютера, сможет использовать линии IRQ (Interrupt Request — запрос на прерывание), адреса портов ввода-вывода, каналы прямого доступа к памяти и прочие ресурсы без конфликтов с другими устройствами. Кроме того, диспетчер конфигурации отслеживает текущие изменения в конфигурации компьютера. Поскольку операционные системы Windows 9x получили самое широкое распространение, все выпускаемое периферийное оборудование имеет необходимые драйверы, причем достаточно правильно написанные и успешно работающие. Поэтому серьезные проблемы на сегодняшний день с этим механизмом мало кто испытывает. Динамическое конфигурирование аппаратно-программной среды значительно упрощает использование операционной системы и позволяет без лишних операций ручной настройки работать на компьютере пользователям, не являющимся специалистами в вычислительной технике.
С точки зрения базовой архитектуры операционные системы семейства Windows 9x являются 32-разрядными и мультизадачными (многопоточными) системами с вытесняющей многозадачностью. Ядра у всех этих операционных систем построены по макроядерной архитектуре. Ядро состоит из трех основных компонентов: Kernel, Userii GDI. Модуль Kernel обеспечивает основную функциональность операционной системы, в том числе: планирование процессов; поддержку потоков выполнения; синхронизацию объектов; работу с файлами, отображаемыми на память; управление памятью; файловый ввод-вывод; обработку исключений; работу консолей; взаимодействие 32-разрядного и 16-разрядного кода с преобразованием 16-разрядного формата кода и данных в 32-разрядный (и наоборот) посредством механизма шлюзования; некоторые другие функции. Компонент User управляет вводом с клавиатуры и координатных устройств (типа мыши) и выводом через пользовательский интерфейс. Когда то или иное устройство ввода генерирует прерывания, обработчик прерываний, используя модель асинхронного ввода, преобразует их в сообщения и посылает потоку необработанного ввода, который распределяет их по соответствующим очередям сообщений. Компонент называемый GDI (Graphical Device Interface — графический интерфейс устройства), представляет собой графическую подсистему, которая отвечает за прорисовку графических примитивов, операции с растровыми изображениями и взаимодействие с аппаратно-независимыми графическими драйверами. GDI управляет выводом на экран, принтеры и другие устройства.
Все операционные системы Windows 9x централизованно хранят всю системную информацию об аппаратных средствах, установленном системном и прикладном программном обеспечении и его настройке, в том числе и индивидуальных параметрах каждого пользователя. Такая централизованная информационная база данных называется реестром (registry). Реестр избавляет от необходимости иметь дело с множеством INI-файлов, как это было в системах Windows 3.x. Физически содержимое реестра определяется файлами system.dat и user.dat, которые располагаются в каталоге с файлами операционной системы. В режиме, когда каждый пользователь имеет собственный профиль, определяющий персональную настройку его рабочего окружения, в состав реестра включается еще файл user.dat того пользователя, который в этот момент работает на компьютере. Файлы с именем user.dat располагаются в профилях пользователей и определяют права пользователей в операционной системе.
В операционных системах Windows 9x для работы с периферийными устройствами используется архитектура универсальный драйвер: мини-драйвер. Она позволяет упростить разработку драйверов для создателей нового оборудования.
Операционные системы Windows 9x сами предоставляют базовые услуги для различных классов аппаратных устройств. Поэтому изготовителям оборудования необходимо написать относительно небольшой код минидрайвера, который должен содержать какие-либо дополнительные функции, нужные для управления конкретным устройством и учитывающие именно его специфику. Во многих случаях универсальные драйверы реализуют практически все функции, которые необходимы для управления операциями ввода-вывода при обмене данными с периферийным устройством, и иметь дополнительный мини-драйвер не требуется.
Драйверы файловых систем являются компонентами кода с нулевым уровнем привилегий. Они поддерживают следующие файловые системы:
VFAT (Virtual FAT) — файловые операции на дисковых устройствах и взаимодействие с подсистемой блочного ввода-вывода;
CDFS — работа с компакт-дисками;
UDF (Universal Disk Format) — соответствует спецификациям, принятым организацией Optical Storage Technology Association, и предназначена для доступа к дискам DVD—ROM и CD—ROM (эта файловая система не поддерживается в Windows 95);
сетевые редиректоры для обеспечения связи с серверами компаний Micioso и Novell (Netware).
Все эти файловые системы управляются диспетчером устанавливаемых файловых. систем (IFS). Помимо перечисленных в операционную систему можно установи и иные файловые системы. Например, при работе с Windows 98 мы можем установить драйвер для доступа к дискам NTFS.
По умолчанию системы Windows 98 и Windows ME позволяют работать с файловой системой FAT12 (для работы с дискетами), FAT16 и FAT32. Последняя является основной для этих операционных систем.
Организация многозадачности
Одним из наиболее актуальных вопросов, которые решает любая многозадачная операционная система, в том числе и системы Windows 9x, состоит в организации по возможности простого, но эффективного способа предоставления процессорного времени различным параллельно выполняющимся программам. Другими словами, речь идет о диспетчеризации задач. Многозадачность, в общем случае, означает способность операционной системы обеспечивать совместное использование процессора несколькими программами. Большинство разработчиков операционных систем называют работающие программы задачами, поэтому задачей можно считать загруженную в память программу, которая что-то делает. В большинстве операционных систем, в том числе и в Windows NT, и в UNIX, выполнение приложения называется процессом. Однако в уже упомянутых операционных системах Windows 3.x почти всегда использовался термин «задача», и лишь изредка — «процесс». Имейте в виду, что в операционных системах Windows 9x используется исключительно термин «процесс», а понятие задачи было официально исключено из терминологии Windows. Вкладывая совершенно такой же смысл в слово «процесс», разработчики Microsoft тем самым попытались поставить операционные системы семейства Windows 9x как бы на один уровень с другими операционными системами, такими, например, как Windows NT. В большей части документации по Windows 3.1 мы можем обнаружить оба упомянутых слова. Основная причина изменения терминологии — реализация мультизадачности при сохранении мультипрограммного режима работы. Другими словами, речь идет о поддержке в этих операционных системах возможности многопоточного выполнения приложений. Поэтому помимо отхода от термина задача и использования термина процесс, мы должны отметить, что во всех этих операционных системах стал использоваться термин поток выполнения, или тред (thread).
Поддержкой многозадачности занимается планировщик (scheduler). Он имеет дело главным образом с временем и событиями. Процессу в Windows 95/98 выделяетеся квант времени, который определяет, как долго данный процесс может использовать процессор. По окончании кванта Бремени планировщик определяет следует ли передать процессор в распоряжение другого процесса. В отличие от Window NT, Windows 95/98 не поддерживает мультипроцессорные системы, в которых планировщик может выделять процессам больше одного процессора. Решения, принимаемые планировщиком, определяются событиями.
При вытесняющем планировании только система может решать, в каком порядке, как долго и какие задачи (в нашем случае — потоки) будут выполняться. Планировщик может в любой момент отнять процессор у одного из потоков выполнения и передать его в распоряжение другого. Обычно такой акт вытеснения происходит в результате реакции на событие, требующее внимания. Планировщик присваивает каждому из работающих процессов приоритет (priority). По токи его наследуют, хотя при создании нового потока ему можно задать и иной приоритет. В случае если происходит событие, относящееся к потоку, обладающему более высоким приоритетом, планировщик приостанавливает (вытесняет) текущий поток и начинает выполнять тот, у которого приоритет больше.
Диспетчер задач (потоков выполнения) использует следующие три механизма, с помощью которых он пытается равномерно распределять время процессора межд> всеми вычислениями в целях обеспечения бесперебойной и одновременно быстрой реакции системы.
Динамическое изменение приоритета. Диспетчер на время может повысить или понизить приоритет того или иного потока. Так, например, нажатие клавиши или щелчок мыши говорит ему о том, что приоритет потока, к которому относится действие пользователя, должен быть повышен.
Постсинхронизированное снижение приоритета. Ранее повышенное значение приоритета постепенно возвращается к исходному значению.
Наследование приоритета. Служит для быстрого повышения приоритета. Обычно это делается для того, чтобы позволить потоку с низким приоритетом быстро закончить работу с выделенным для монопольного использования ресурсом, который необходим потокам с высоким приоритетом. Windows 95/98 восстанавливает исходное значение унаследованного приоритета сразу же после удовлетворения конфликтного условия.
Распределение оперативной памяти
Многие страницы физической памяти компьютера не участвуют в замещении, они распределены постоянно. Их занимают, в частности, резидентные компоненты ядра. На эти цели отводится примерно один мегабайт памяти. За оставшуюся физическую память конкурируют различные программы: динамически загружаемые компоненты системы и загружаемые виртуальные драйверы устройств, код и данные приложений, а также динамически размещаемые данные, такие как области кэширования, необходимые для работы файловой системы, и буферы прямого доступа к памяти (DMA).
В отличие от тех мультитерминальных систем, в которых операционная система должна заботиться о равноправном совместном использовании ресурсов, в системах Windows 9x сделано иначе. Поскольку это однопользовательские операционные системы, они позволяют заполнять память так, как это нужно пользователю и его программам. Динамически загружаемые компоненты системы конкурируют за память с прикладными программами. Если пользователь хочет, чтобы его приложение работало быстрее, ему будет позволено занять столько памяти, сколько вообще возможно. Система накладывает ограничение на максимальный объем памяти, который может быть отдай в распоряжение отдельных приложений, — если не следить за этим, становится возможным возникновение тупиковых ситуаций. После того как вся физическая память заполнена, первый же новый запрос на выделение памяти инициирует замещение страниц. Интересным побочным эффектом такого подхода является то, что у приложений нет надежного способа определения объема памяти, доступного в системе. Функция API GlobalMemorySatus() возвращает целый ряд параметров, характеризующих состояние системной памяти, однако это не более чем «мгновенный снимок» текущей обстановки — еще один вызов этой функции вполне может дать другие значения.
Для того чтобы облегчить управление всем разнообразием типов страниц памяти, каждая активная страница, то есть каждая страница, которая является частью выполняющегося в данный момент системного модуля или приложения, снабжена хранящимся совместно с ней страничным дескриптором (Page Descriptor, PD). В этом дескрипторе содержатся адреса процедур, которые занимаются перемещением страницы из памяти на диск и обратно. Независимо от того, что именно находится в данной странице, диспетчер физической памяти, чтобы переместить страницу в оперативную память или из нее, просто вызывает соответствующую функцию, адрес которой определен в поле дескриптора страницы. В случае, если некоторая страница еще никогда не заполнялась, она называется абсолютно чистой (virgin”). Например, именно так обозначаются страницы, содержащие код, использующий вызовы Win32. После того как с момента размещения страницы в памяти в нее будет в первый раз произведена запись данных, она считается испорченной (tainted) и может быть либо грязной (dirty), либо чистой (clean), в зависимости от того, осуществлялась ли в нее запись с момента последней ее подкачки в физическую память. Если запись в эту страницу производилась, и в этой физической странице требуется разместить иную виртуальную страницу, ее содержимое должно быть сохранено в файле подкачки.
В операционных системах Windows 9x младшие адреса виртуального адресного пространства совместно используются всеми процессами. Это сделано для совместимости с драйверами устройств реального режима, резидентными программами и некоторыми 16-разрядными программами Windows. Безусловно, это плохое решение с точки зрения надежности, поскольку оно приводит к тому, что любой процесс может непреднамеренно (или же, наоборот, специально) испортить компоненты, находящиеся в этих адресах.
В Windows 9x каждая 32-разрядная прикладная программа выполняется в собственном адресном пространстве, но все они используют совместно один и тот же 32-разрядный системный код. Доступ к чужим адресным пространствам в принципе возможен. Другими словами, виртуальные адресные пространства не задействуют всех аппаратных средств защиты, заложенных в микропроцессор. В результате неправильно написанная 32-разрядная прикладная программа может привести к аварийному сбою всей системы. Все 16-разрядные прикладные программы Windows разделяют общее адресное пространство, поэтому они так же уязвимы друг для друга, как и в среде Windows 3.X.
Собственно системный код Windows 9x размещается выше границы 2 Гбайт. В пространстве с отметками 2 и 3 Гбайт находятся системные библиотеки DLL, используемые несколькими программами. Напомним, что в 32-разрядных микропроцессорах семейства i80x86 имеется четыре уровня защиты, именуемые кольцами с номерами от 0 до 3. Кольцо с номером 0 является наиболее привилегированным, то есть максимально защищенным. Компоненты операционных систем Windows 9x, относящиеся к кольцу 0, отображаются на виртуальное адресное пространство между 3 и 4 Гбайт. К этим компонентам относятся собственно ядро Windows, подсистема управления виртуальными машинами, модули файловой системы и драйверы виртуальных устройств (VxD).
Область памяти между 2 и 4 Гбайт адресного пространства каждой 32-разрядной прикладной программы совместно используется всеми 32-разрядными прикладными программами. Такая организация позволяет обслуживать вызовы API непосредственно в адресном пространстве прикладной программы и ограничивает размер рабочего множества. Однако за это приходится расплачиваться снижением надежности. Ничто не может помешать программе, содержащей ошибку, произвести запись в адреса, принадлежащие системным библиотекам DLL, и вызвать крах всей системы.
В области между 2 и 3 Гбайт также находятся все запускаемые 16-разрядные прикладные программы Windows. С целью обеспечения совместимости эти программы выполняются в совместно используемом адресном пространстве, где они могут испортить друг друга так же, как и в Windows 3.x.
Адреса памяти ниже 4 Мбайт также отображаются в адресное пространство каждой прикладной программы и совместно используются всеми процессами. Благодаря этому становится возможной совместимость с существующими драйверами реального режима, которым необходим доступ к этим адресам. Это делает еще одну область памяти не защищенной от случайной записи. К самым нижним адресам (менее 64 Кбайт) этого адресного пространства 32-разрядные прикладные программы обращаться не могут, что дает возможность перехватывать неверные указатели, но 16-разрядные программы, которые, возможно, содержат ошибки, могут записывать туда данные.
Вышеизложенную модель распределения памяти можно проиллюстрировать с помощью рисунка 23.
Минимально допустимый объем оперативной памяти, начиная с которого эти операционные системы могут функционировать, равен 4 Мбайт для Windows 95 и 8 Мбайт для Windows 98. Однако при таких маленьких объемах физической памяти пробуксовка столь велика, что быстродействие системы становится слишком малым, и практически работать нельзя.
Страничный файл, с помощью которого реализуется механизм виртуальной памяти, по умолчанию располагается в каталоге самой системы Windows и имеет переменный размер. Система отслеживает его длину, увеличивая или сокращая этот файл при необходимости. Вместе с фрагментацией файла подкачки это приводит к тому, что быстродействие системы становится меньше, чем если бы этот файл был фиксированного размера и располагался в смежных кластерах (был бы де-фрагментирован). Создать файл подкачки заданного размера можно либо через специально разработанный для этого апплет (Панель управления ► Система ► Быстродействие ► Файловая система), либо просто прописав в секции [386Enh] файла SYSTEM.INI строки с указанием диска и имени файла подкачки, например:
PagingDrive=C:
PagingFi1е—С:\PageFile.sys
MinPagingFileSize=65536 . :
MaxPagi ngFi1eSize=262144
Здесь первая и вторая строки описывают размещение страничного файла и его имя, а две последних — начальный и предельный размеры страничного файла (значения указываются в килобайтах). Для определения необходимого минимального размера можно рекомендовать запустить уже упомянутую выше программу
SYSMON.EXE (системный монитор) и, выбрав в качестве наблюдаемых параметров размер файла подкачки и объем свободной памяти, оценить потребности в памяти, запуская те приложения, с которыми чаще всего приходится работать. Большое влияние на использование оперативной памяти и общую производительность системы оказывает драйвер виртуального устройства VCache, занимающийся кэшированием файлов. Он взаимодействует с менеджером физической памяти, запрашивая и освобождая области памяти, которые впоследствии могут быть выделены отдельным драйверам файловой системы для выполнения операций кэширования. Этот драйвер работает по методу агрессивного кэширования, в результате он может захватывать почти всю свободную оперативную память. Как ни странно, это не всегда приводит к увеличению скорости работы с файлами, поскольку поиск нужных блоков данных среди блоков, находящихся в кэше, осуществляется простым последовательным перебором, а количество просматриваемых блоков в этом случае существенно больше. Поэтому в ряде случаев имеет смысл ограничивать «аппетит» драйвера VCache. Сделать это можно путем редактирования все того же файла SYSTEM.INI. Только теперь нужно найти другую секцию файла — [VCache]. В эту секцию следует добавить строки и прописать значения для максимального и минимально объемов оперативной памяти, которую операционная система будет предоставлять подсистеме кэширования. Выглядеть эти новые строки могут, например, так:
MinFileCache=16384
MaxFileCache=65536
ChunkS1ze=2048
NameCache-4096
DirectoryCache=128
Назначение первой и второй строк представляется очевидным. Третья строка описывает размер блока, четвертая строка — количество хранимых в кэше имен файлов, а последняя — количество каталогов. Прописанные в приведенных строках значения, естественно, зависят от объема оперативной памяти, имеющейся в компьютере. В данном случае компьютер имеет 512 Мбайт оперативной памяти. Кстати, если персональный компьютер имеет более 256 Мбайт памяти, то наличие первых двух строк в секции [VCache] файла SYSTEM.INI обязательно. В противном случае из-за недальновидности разработчиков драйвера виртуального устройства VCache он может запросить у системы более 256 Мбайт памяти, причем она может выделить ему эту память. Это неминуемо приведет к критической ошибке в его дальнейшей работе и краху вычислительного процесса.
Операционная система WindowsXP
Осенью 2001 года Microsoft обновила операционную систему Windows 2000 Professional до Windows XP (eXPerience). При этом она выпустила две редакции. Одна из них представляла собой «облегченный» вариант системы для домашнего применения. Она получила название Windows XP Home Edition. Эту операционную систему Microsoft считает основной для современного персонального компьютера. Вторая — полноценная система с предназначением работать в качестве рабочей станции, которая, как правило, подключается к локальной вычислительной сети с выходом в Интернет. Эти операционные системы, прежде всего, получили возможность выполнять приложения, которые использовали оба подмножества функций Win32 API: и для Windows 9x, и для систем класса NT. Системы Windows XP в еще большей мере стали мультимедийными и ориентированными на Интернет.
Основные особенности архитектуры
Наиболее принципиальным отличием между системами класса Windows 9x и Windows XP является то, что у них разная архитектура. Большинство операционных систем использует такую особенность современных процессоров, как возможность работать в одном из двух режимов: привилегированном (режиме ядра, или режиме супервизора) и пользовательском (режиме выполнения приложений). При описании своей системы Windows XP Microsoft для указания этих режимов использует термины kernel mode и user mode соответственно. Программные коды, которые выполняются процессором в привилегированном режиме, имеют доступ и к системным аппаратным средствам, и к системным данным. Чтобы защитить операционную систему и данные, располагающиеся в оперативной памяти, от ошибок приложений или их преднамеренного вмешательства в чужие вычисления, только системному коду, относящемуся к управляющей (супервизорной) части операционной системы, разрешают выполняться в привилегированном режиме работы процессора. Все остальные программные модули должны выполняться в пользовательском режиме.
Поскольку при создании Windows XP разработчики хотели обеспечить ее мобильность, то есть легкую переносимость на другие платформы, они приняли решение использовать только два уровня привилегий из четырех, имеющихся в микропроцессорах Intel семейства i80x86. Как мы уже знаем, нулевой уровень привилегий в микропроцессорах с архитектурой ia32 обеспечивает возможность выполнять любые команды и иметь доступ ко всем регистрам процессора. Наименьшие привилегии имеются у кода, выполняемого в третьем кольце защиты (см. главу 4), которое и предназначается для выполнения обычных приложений. Напомним, что код, работающий в этом режиме, не может ни при каких обстоятельствах получить доступ к данным, расположенным в нулевом кольце защиты. Поэтому, если бы системный код использовал не два уровня привилегий, а все четыре, то появились бы очевидные проблемы при переносе системы на другой процессор. Системы типа Windows XP построены по микроядерной технологии. Конечно, их ядро никак нельзя назвать маленьким, особенно в сравнении с ядром операционной системы QNX. Однако в целом архитектура Windows XP безусловно отвечает идеям построения операционной системы, в которой управляющие модули организованы с четким выделением центральной части и взаимодействием этой части с остальными по принципу клиент-сервер. Это означает, что в состав ядра включены только самые важные основообразующие управляющие процедуры, а остальные управляющие модули операционной системы вызываются из ядра как службы. Причем только часть служб использует процессор в режиме ядра, а остальные — в пользовательском режиме, как и обычные приложения пользователей. А для обеспечения надежности они располагаются в отдельном виртуальном адресном пространстве, к которому ни один модуль и ни одна прикладная программа, помимо системного кода, не может иметь доступа.
Ядро (микроядро) систем Windows XP выполняет диспетчеризацию задач (точнее, потоков), обработку прерываний и исключений, поддерживает механизмы синхронизации потоков и процессов, обеспечивает взаимосвязи между всеми остальными компонентами операционной системы, работающими в режиме ядра. Если компьютер имеет микропроцессорную архитектуру, ядро повышает его производительность, синхронизируя работу процессоров.
Из рисунка видно, что помимо собственно ядра в том же режиме супервизора работают модуль HAL (Hardware Abstraction Layer — уровень абстракции аппаратных средств), низкоуровневые драйверы устройств и исполняющая система Windows XP, называемая Win32 Executive. Начиная с Windows NT 4.0 в режиме ядра работают и диспетчер окон (Window Manager), который иногда называют «User», и модули графического интерфейса устройств (GDI).
Программное обеспечение, абстрагирующее работу исполняющей системы и собственно ядра от специфики работы конкретных устройств и контроллеров, во многом упрощает перенос операционной системы на другую платформу. Оно представлено в системе модулем динамически связываемой библиотеки HAL.DLL. Одним из важнейших компонентов операционных систем Windows XP, который появился вследствие следования микроядерному принципу их построения, является исполняющая система (Win32 Executive). Она выполняет такие базовые функции операционной системы, как управление процессами и потоками, управление памятью, взаимодействие между процессами, защиту, операции ввода-вывода (включая файловые операции, кэширование, работу с сетью и некоторые другие). Ниже перечислены компоненты исполняющей системы.
Диспетчер процессов (Process Manager) создает, отслеживает и удаляет процессы. Для выполнения этих функций создается соответствующий дескриптор, определяются базовый приоритет процесса и карта адресного пространства, создается и поддерживается список всех готовых к выполнению потоков.
Диспетчер виртуальной памяти (Virtual Memory Manager) предоставляет виртуальную память выполняющимся процессам. Каждый процесс имеет отдельное адресное пространство, используется страничное преобразование линейных адресов в физические, поэтому потоки одного процесса не имеют доступа к физическим страницам, отведенным для другого процесса.
Диспетчер объектов (Object Manager) создает и поддерживает объекты. В частности, поддерживаются дескрипторы объектов и атрибуты защиты объектов. Объектами считаются каталоги, файлы, процессы и потоки, семафоры и события и многие другие.
Монитор безопасности (Security Reierence Monitor) обеспечивает санкционирование доступа к объектам, контроль полномочий доступа и ведение аудита. Совместно с процессом входа в систему (logon) и защищенными подсистемами реализует модель безопасности Windows XP. (Планировщик потоков) работает с несколькими очередями. Всего существует 32 уровня приоритетов — от 0 до 31. Распределение приоритетов между выполняющимися процессами и потоками осуществляется по следующим правилам:
Low — 4 (низкий приоритет); BelowNormal — ниже среднего;
Normal — 8 (нормальный приоритет);
AboveNormal — выше среднего; . High — 16 (высокий приоритет);
RealTime — 24 (приоритет реального времени).
Собственно исполняемыми элементами процесса являются потоки. Как мы уже знаем, каждый процесс имеет, по крайней мере, один поток. Поток получает базовый приоритет от своего процесса, а фактическое значение приоритета присваивается потоку операционной системой. Те потоки, которые выполняются на переднем плане (foreground), получают приращение приоритета относительно базового.
У потоков, выполняемых в фоновом режиме (background), приоритет уменьшается. По умолчанию все задачи запускаются с нормальным приоритетом. Обычный пользователь может изменить приоритет задачи вплоть до высокого. Приоритет реального времени может присвоить только администратор.
Модель безопасности
Операционные системы Windows XP обеспечивают защиту на локальном уровне. Это означает, что механизмы защиты работают на каждом компьютере с такой операционной системой. Однако это имеет и обратную сторону. Дело в том, что учетные записи пользователей и групп локальны: они действуют только на том компьютере, где их создали. Если же есть необходимость обратиться к общим ресурсам компьютера через сеть, нужно, чтобы для пользователя, который выполняет такое обращение к удаленным объектам, была создана такая же учетная запись. Поскольку становится затруднительным обеспечить наличие учетных записей для каждого пользователя на всех тех компьютерах, с ресурсами которых ему необходимо работать, пользуясь вычислительной сетью, в свое время была предложена технология доменных сетей. В домене, который представляет собой множество компьютеров, должен быть выделен сервер со всеми учетными записями этого домена. Такой сервер называют контроллером домена. Учетные записи домена в отличие от локальных учетных записей, имеющихся на каждом компыотере с операционной системой типа Windows NT, являются перемещаемыми: они могут перемещаться с контроллера домена на любой другой компьютер этого домена. В результате, имея множество компьютеров, объединенных в домен, и контроллер домена, на котором созданы все необходимые учетные записи, мы можем использовать эти учетные записи для управления доступом к различным ресурсам. Более того, мы можем контролировать использование этих ресурсов и регистрировать попытки несанкционированного доступа к тем или иным объектам. Контроль за использованием прав и разрешений, а также их регистрация называется аудитом.
Распределение оперативной памяти
В операционных системах типа Windows NT тоже используется плоская модель памяти. Однако схема распределения виртуального адресного пространства разительно отличается от модели памяти Windows 9x. Прежде всего, в отличие от Windows 9x, в гораздо большей степени задействуется ряд серьезных аппаратных средств защиты, имеющихся в микропроцессорах, а также применено принципиально другое логическое распределение адресного пространства.
Все системные программные модули находятся в своих собственных виртуальных адресных пространствах, и доступ к ним со стороны прикладных программ невозможен. Центральная супервизорная часть системы, состоящая, как мы теперь знаем, из микроядра, исполняющей системы (Win32 executive), модуля обеспечения аппаратной независимости, графического интерфейса устройств и оконного менеджера, а также низкоуровневых драйверов устройств, работает в нулевом кольце защиты в отдельном адресном пространстве.
Остальные программные модули самой операционной системы, которые выступают как серверные процессы по отношению к прикладным программам (клиентам), функционируют также в собственном системном виртуальном адресном пространстве, невидимом и недоступном для прикладных процессов. Правда, из-за того, что эти программные модули расположены в другом кольце защиты, они изолированы от ядра системы. Логическое распределение адресных пространств иллюстрирует рис.
Прикладным программам выделяется 2 Гбайт локального (собственного) линейного (неструктурированного) адресного пространства от границы 64 Кбайт до 2 Гбайт (первые 64 Кбайт полностью недоступны). Прикладные программы изолированы друг от друга, хотя могут общаться через буфер обмена (clipboard), механизмы DDE (Dynamic Data Exchange — динамический обмен данными) и OLE (Object Linking and Embedding — связывание и внедрение объектов).
В верхней части каждой области прикладной программы размером по 2 Гбайт размещен код системных библиотек DLL кольца защиты 3, который перенаправляет вызовы в совершенно изолированное адресное пространство, где содержится уже собственно системный код. Этот системный код, выступающий как серверный процесс (server process), проверяет значения параметров, исполняет запрошенную функцию и пересылает результаты назад в адресное пространство прикладной программы. Хотя серверный процесс сам по себе остается процессом прикладного уровня, он полностью защищен от вызывающей его прикладной программы и изолирован от нее.
Между отметками 2 и 4 Гбайт расположены низкоуровневые системные компоненты Windows NT кольца защиты 0, в том числе ядро, планировщик потоков и диспетчер виртуальной памяти. Системные страницы в этой области наделены привилегиями супервизора, которые задаются физическими схемами колец защиты процессора. Это делает низкоуровневый системный код невидимым и недоступным по записи для программ прикладного уровня, но приводит к падению производительности из-за переходов между кольцами.
Для 16-разрядных прикладных Windows-программ операционные системы типа Windows NT реализуют сеансы Windows on Windows (WOW). В отличие от Windows9x, система Windows NT дает возможность выполнять 16-разрядные Windows-программы индивидуально в собственных пространствах памяти или совместно в разделяемом адресном пространстве. Почти во всех случаях 16- и 32-разрядные прикладные Windows-программы могут свободно взаимодействовать, используя механизм OLE, независимо от того, выполняются они в отдельной или общей памяти. Собственные прикладные программы и сеансы WOW выполняются в режиме вытесняющей многозадачности, основанной на управлении отдельными потоками. Несколько 16-разрядных прикладных Windows-программ в одном сеансе WOW выполняются в соответствии с кооперативной моделью многозадачности. Windows NT может также открыть в многозадачном режиме несколько сеансов DOS. Поскольку Windows NT имеет полностью 32-разрядную архитектуру, не существует теоретических ограничений на ресурсы компонентов GDI и User. При запуске приложения создается процесс со своей информационной структурой. В рамках процесса запускается поток выполнения. При необходимости этот поток может инициировать запуск множества других потоков, которые будут выполняться параллельно в рамках одного процесса. Очевидно, что множество запущенных процессов также выполняются параллельно, и каждый из процессов может представлять собой мультизадачное (многопоточное) приложение. Задачи (потоки) в рамках одного процесса выполняются в едином виртуальном адресном пространстве, а процессы выполняются в различных виртуальных адресных пространствах. Короче, все это почти полностью напоминает Windows 9х. Отображение различных виртуальных адресных пространств исполняющихся процессов на физическую память осуществляется по принципам страничной организации виртуальной памяти.
Процессами выделения памяти, ее резервирования, освобождения и замещения страниц управляет диспетчер виртуальной памяти (Virtual Memory Manager, VMM) Windows NT. В своей работе этот компонент реализует сложную стратегию учета требований к коду и данным процесса для минимизации обращений к диску, поскольку реализация виртуальной памяти часто приводит к большому количеству дисковых операций. Для взаимодействия между выполняющимися приложениями и между приложениями и кодом самой операционной системы используются соответствующие механизмы защиты памяти, поддерживаемые аппаратурой микропроцессора.
Каждая виртуальная страница памяти, отображаемая на физическую страницу, переносится в так называемый страничный кадр (page frame). Прежде чем код или данные можно будет переместить с диска в память, диспетчер виртуальной памяти должен найти или создать свободный или нулевой (заполненный нулями) страничный кадр. Заметим, что заполнение страниц нулями представляет собой одно из требований стандарта на системы безопасности уровня С2, принятого правительством США. Страничные кадры перед своим выделением должны заполняться нулями, чтобы исключить возможность использования их предыдущего содержимого другими процессами. Чтобы кадр можно было освободить, необходимо скопировать на диск изменения в его странице данных, и только после этого кадр можно будет повторно использовать. Программы, как правило, не меняют страниц кода. Такие страницы можно просто расформировать (удалить).
Диспетчер виртуальной памяти может быстро и относительно легко удовлетворить программные прерывания типа страничной ошибки (page fault). Что касается аппаратных прерываний типа страничной ошибки, то они приводят к необходимости подкачки нужных страниц (paging), что снижает производительность системы. Мы уже говорили (см. главу 3), что в Windows NT, к большому сожалению, для замещения страниц выбрана дисциплина FIFO, а не более эффективная дисциплина LRU или LFU, как это сделано в других операционных системах. Когда процесс использует код или данные, находящиеся в физической памяти, система резервирует место для этой страницы в файле подкачки Pagefile.sys на диске. ‘ Это делается с расчетом на то, что данные потребуется выгрузить на диск. Файл Pagefile.sys представляет собой зарезервированный блок дискового пространства, который используется для выгрузки страниц, помеченных как «грязные», для освобождения физической памяти. Заметим, что этот файл может быть как непрерывным, так и фрагментированным; он может быть расположен на системном диске или на любом другом и даже на нескольких дисках. Размер этого страничного файла ограничивает объем данных, которые могут храниться во внешней памяти при использовании механизмов виртуальной памяти. По умолчанию размер файла подкачки в операционных системах Windows NT 4.0 устанавливается равным объему физической памяти плюс 12 Мбайт, однако пользователь имеет возможность изменить его размер по своему усмотрению. В следующих системах (Windows 2000/ХР) начальный размер страничного файла подкачки берется ранным полуторакратному объему физической оперативной памяти. То есть, например, для компьютера, имеющего 512 Мбайт оперативной памяти, по умолчанию размер файла PagefiLe.sys равен 768 Мбайт. Проблема нехватки виртуальной памяти часто может быть решена за счет увеличения размера файла подкачки. Файл подкачки может быть не один — система поддерживает до 16 файлов подкачки, поэтому лучше создать их несколько и разместить на быстрых жестких дисках. В системах Windows NT 4.0 объекты, создаваемые и используемые приложениями и операционной системой, хранятся в так называемых пулах памяти (memory pools). Доступ к этим пулам может быть получен только в привилегированном режиме работы процессора, в котором функционируют компоненты операционной системы. Поэтому для того чтобы объекты, хранящиеся в пулах, стали видимы потокам выполнения приложений, эти потоки должны переключиться в привилегированный режим.
Перемещаемый, или нерезидентный, пул (paged pool) содержит объекты, которые могут быть при необходимости выгружены на диск. Неперемещаемый, или резидентный, пул (nonpaged pool) содержит объекты, которые должны постоянно находиться в памяти. В частности, к такого рода объектам относятся структуры данных, используемые процедурами обработки прерываний, а также структуры, требуемые для предотвращения конфликтов в мультипроцессорных системах. Исходный размер пулов определяется объемом физической памяти, доступной Windows NT. Впоследствии размер пула устанавливается динамически и в зависимости от работающих в системе приложений и служб может изменяться в широком диапазоне значений.
Вся виртуальная память в Windows NT подразделяется на зарезервированную (reserved), выделенную (committed) и доступную (available).
Зарезервированная память представляет собой набор непрерывных адресов, которые диспетчер виртуальной памяти (VMM) выделяет для процесса, но не учитывает в общей квоте памяти процесса до тех пор, пока она не будет фактически задействована. Когда процессу требуется выполнить запись в память, ему выделяется нужный объем из зарезервированной памяти. Если процессу потребуется больший объем памяти, то при наличии в системе доступной памяти дополнительная память может быть одновременно зарезервирована и использована.
Память выделена, если диспетчер виртуальной памяти резервирует для нее место в файле Pagefile.sys на тот случай, когда потребуется выгрузить содержимое памяти на диск. Объем выделенной памяти процесса характеризует фактически потребляемый им объем памяти. Выделенная память ограничивается размером файла подкачки. Предельный объем выделенной памяти в системе (commit limit) определяется тем, какой объем памяти можно выделить процессам без увеличения размеров файла подкачки. Если в системе достаточно дискового пространства, то файл подкачки может быть увеличен, тем самым будет расширен предельный объем выделенной памяти.
Вся память, которая не является ни выделенной, ни зарезервированной, является доступной. К доступной относится свободная память, обнуленная память (освобожденная и заполненная нулями), а также память, находящаяся в списке ожидания (standby list), то есть та, которая была удалена из рабочего набора процесса, но может быть затребована вновь.
Почему операционная система unix не контролирует операцию копирования файлов
Предположим, что в системе, где работают три пользователя, имеется 11 ресурсов, а потребность пользователей в ресурсах описывается следующей таблицей:
Максимальная потребность в ресурсах Выделенное пользователям количество ресурсов
Первый пользователь 8 5
Второй пользователь 11 3
Третий пользователь 3 1
Это состояние является
надежным
ненадежным
будет надежным, если максимальную потребность первого пользователя в ресурсах снизить до 7.
Как правильно бороться с тупиком, который может возникнуть при использовании принтера?
игнорировать проблему
организовать спулинг
оградить принтер семафором
Какие из перечисленных ниже компонентов входят в регистровый контекст процесса?
программный счетчик процесса
информация о всех устройствах ввода-вывода
содержимое регистров процессора
При модернизации некоторой операционной системы, поддерживающей только три состояния процессов: готовность, исполнение, ожидание, принято решение ввести два новых системных вызова. Один из этих вызовов позволяет любому процессу приостановить жизнедеятельность любого другого процесса (кроме самого себя), до тех пор, пока какой-либо процесс не выполнит второй системный вызов. Сколько новых состояний процессов появится в системе?
1
2
3
7. При доступе к файлу на другом компьютере в сетевой ОС пользователь должен знать:
только имя файла
точное физическое расположение файла на диске
имя файла, компьютер, на котором находится файл, и сетевой способ доступа к информации в файле
При доступе к файлу в распределенной ОС пользователь должен знать:
только имя файла
точное физическое расположение файла на диске
имя файла, компьютер, на котором находится файл, и сетевой способ доступа к информации в файле
Для проверки системы на наличие в ней уязвимых с точки зрения безопасности мест обычно осуществляют ее сканирование. Какие аспекты системы такое сканирование обычно не затрагивает?
долго выполняющиеся программы
короткие пароли
изменения в файлах пользователей, обнаруженные с помощью контрольных сумм
Какие действия производит система, хранящая пароли пользователей на диске в зашифрованном виде, после того, как пользователь ввел свой пароль?
шифрует пароль пользователя и сравнивает с тем, который хранится на диске
расшифровывает пароль, хранящийся на диске, и сравнивает с паролем, который ввел пользователь
посылает пользователю запрос для инициирования протокола опознавания CHAP (Challenge Handshake Authentication Protocol
Какие из перечисленных ситуаций возникают предсказуемо?
прерывания
исключительные ситуации
программные прерывания
Пусть у нас имеется диск с 80 цилиндрами (от 0 до 79). Время перемещения головки между соседними цилиндрами составляет 2 мс. В текущий момент времени головка находится на 23-м цилиндре и двигается в сторону увеличения номеров цилиндров. Сколько времени будет обрабатываться следующая последовательность запросов на чтение цилиндров: 11, 22, 10, 73, 1, 12, алгоритма SCAN (временами чтения цилиндров и смены направления движения головок пренебречь)?
362 мс
268 мс
188 мс
Какие из перечисленных алгоритмов допускают неограниченно долгое откладывание выборки одного из готовых процессов на исполнение?
FCFS
SJF
RR
многоуровневые очереди
Какие из перечисленных алгоритмов представляют собой частные случаи планирования с использованием приоритетов?
FCFS
RR
SJF
гарантированное планирование
Вычислите номер виртуальной страницы и смещение для виртуального адреса 32768, если размер страницы равен 4К. Страницы нумеруются, начиная с 0.
7 и 0
5 и 4096
6 и 0
Сколько записей в таблице страниц в системе с 32-разрядной архитектурой и размером страницы 4К?
2^32
2^20
2^12
Если учет свободного дискового пространства диска размером 1Гб с блоком размером 2К осуществлять при помощи битового вектора, то для хранения этого вектора потребуется:
64К
128К
32К
Использование блока диска размером 8К по сравнению с блоком размером 4К более выгодно, поскольку:
в этом блоке помещается больше страниц памяти
обмен с диском осуществляется быстрее
в этом блоке можно разместить больше файлов
Пусть в некоторой сетевой операционной системе существует три различных протокола транспортного уровня, использующих собственные адресные пространства портов. Сколько типов сокетов существует в такой системе?
один
три
зависит от реализации
Какие категории средств связи используются при взаимодействии удаленных процессов?
сигнальные
канальные
разделяемая память
Внутренняя фрагментация — это:
потеря части памяти, выделенной процессу, но не используемой им
разбиение адресного пространства процесса на фрагменты
потери части памяти в схеме с фиксированными разделами
Чем обусловлена эффективность иерархической схемы памяти?
скоростью обмена с оперативной памятью
принципом локализации обращений
количеством уровней в иерархии
Какой из вариантов адресации может использоваться для организации передачи информации через pipe?
симметричная прямая адресация
асимметричная прямая адресация
непрямая адресация
Какие процессы могут обмениваться информацией через Pipe?
только процесс, создавший Pipe, и его непосредственный процесс-ребенок
только процессы, имеющие общего родителя, создавшего Pipe
произвольные процессы в системе
Для некоторого процесса, запущенного в вычислительной системе со страничной организацией памяти с использованием LRU алгоритма замещения страниц, выделение процессу 4 кадров памяти приводит к 11 page faults, а выделение 6 кадров памяти – к 9 page faults(вначале все кадры свободны). Какой (какие) вариант(ы) количества page faults для того же процесса и того же количества кадров может быть получен при использовании OPT алгоритма замещения страниц?
12 и 8
8 и 7
7 и 8
9 и 6
Рассмотрим две активности, P и Q:
P Q
y=x+2 z=x-3
f=y-4 f=z+1
Набор из этих двух активностей является:
детерминированным
недетерминированным
детерминированность зависит от значения x
32. Какие из условий для организации корректного взаимодействия двух процессов с помощью программного алгоритма выполнены для алгоритма «строгое чередование»?
условие взаимоисключения
условие прогресса
условие ограниченного ожидания
При помощи списка прав доступа операционная система обеспечивает:
доступ к файлу только определенного числа процессов
защиту файлов от несанкционированного доступа
каждый процесс списком файлов, к которым он может иметь доступ
Что нужно сделать, чтобы обнаружить тупик?
нарушить 4-е условие возникновения тупиков
проверить наличие в системе первых трех условий возникновения тупиков и проверить выполнение четвертого условия
проверить выполнение в системе всех четырех условий возникновения тупиков и нарушить условие 4
Какая из операционных систем больше подвержена тупикам?
система пакетной обработки
система жесткого реального времени
система с разделением времени
Когда процесс, находящийся в состоянии «закончил исполнение», может окончательно покинуть систему?
по прошествии определенного интервала времени
только при перезагрузке операционной системы
после завершения процесса-родителя
Планирование заданий стало возможным:
с появлением систем пакетной обработки
с появлением предварительной записи пакета заданий на магнитную ленту
с появлением предварительной записи пакета заданий на магнитный диск
На каких параметрах может основываться долгосрочное планирование процессов?
на статических параметрах вычислительной системы
на динамических параметрах вычислительной системы
на статических параметрах процессов
на динамических параметрах процессов
Пусть в вычислительную систему поступают пять процессов различной длительности по следующей схеме:
Номер процесса Момент поступления в систему Время исполнения
1 2 4
2 1 3
3 4 5
4 3 2
5 0 9
Чему равно среднее время ожидания процесса (waiting time) при использовании вытесняющего алгоритма SJF? При вычислениях считать, что процессы не совершают операций ввода-вывода, временем переключения контекста пренебречь.
11.3
5.0
8.4
Сколько таблиц страниц поддерживает ОС Windows 2000 для каждого процесса?
одну для всего процесса
по одной для каждого сегмента процесса
одну таблицу для сегментов фиксированного размера и по одной для сегментов, размер которых динамически меняется
Какая из схем управления памятью пригодна для организации виртуальной памяти?
страничная
сегментная
как сегментная, так и страничная схемы
Большинство файловых систем, поддерживаемых ОС Unix для выделения дискового пространства, использует схему:
с индексными узлами
связного списка блоков
выделения непрерывной последовательности блоков
Предположим, что сетевой сервер затоплен мощным потоком запросов. К какой категории атак относится это действие:
атака типа отказ в обслуживании
попытка проникновения в систему под видом легального пользователя
попытка нарушить функционирование системы при помощи программ- «червей»
Какую информацию принято скрывать, когда применяются криптографические методы защиты?
ключ, при помощи которого шифруется текст
алгоритм, которым шифруется текст
ключ и алгоритм вместе
На каком уровне иерархии памяти находится программа в процессе выполнения?
на магнитном диске
в оперативной памяти
разные компоненты программы могут находиться на различных уровнях
В операционных системах, поддерживающих нити исполнения (threads) внутри одного процесса на уровне ядра системы, наряду с блоками управления процессами (PCB) существуют структуры данных для управления нитями — TCB (Thread Control Block). Укажите, какие данные из перечисленных ниже хранятся, по вашему мнению, в TCB.
содержимое регистров процессора
данные, описывающие расположение адресного пространства процесса
приоритет нити исполнения
Для некоторого процесса известна следующая строка запросов страниц памяти
7, 1, 2, 3, 2, 4, 2, 1, 0, 3, 7, 2, 1, 2, 7, 1, 7, 2, 3.
Сколько ситуаций отказа страницы (page fault) возникнет для данного процесса при использовании алгоритма замещения страниц OPT (оптимальный алгоритм) и трех страничных кадрах?
11
10
9
Термин race condition (условие гонки) относится
к набору процессов, совместно использующих какой-либо ресурс
к набору процессов, демонстрирующих недетерминированное поведение
к набору процессов, для каждого из которых важно завершиться как можно быстрее
Какое из условий для организации корректного взаимодействия двух процессов с помощью программного алгоритма выполнено для алгоритма «переменная-замок»?
условие взаимоисключения
условие прогресса
условие ограниченного ожидания
Множество процессов находится в тупиковой ситуации, если:
каждый процесс из множества ожидает события, которое только другой процесс данного множества может вызвать
каждый процесс из множества ожидает события, вероятность которого менее 10-3
каждый процесс из множества находится в состоянии ожидания
Как можно вывести систему из тупиковой ситуации?
завершить выполнение одного из процессов
нарушить одно из условий возникновения тупика
организовать в системе средства отката и перезапуска с контрольной точки
При модернизации некоторой операционной системы, поддерживающей только три состояния процессов: готовность, исполнение, ожидание, решено ввести два новых системных вызова. Один из этих вызовов позволяет любому процессу приостановить жизнедеятельность любого другого процесса (кроме самого себя), до тех пор, пока какой-либо процесс не выполнит второй системный вызов. Сколько новых операций над процессами появится в системе?
2
4
5
Пусть у нас имеется диск с 80 цилиндрами (от 0 до 79). Время перемещения головки между соседними цилиндрами составляет 1мс. Время же перевода головки с 79-го на 0-й цилиндр составляет всего 10 мс. В текущий момент времени головка находится на 45-ом цилиндре и двигается в сторону увеличения номеров цилиндров. Сколько времени будет обрабатываться следующая последовательность запросов на чтение цилиндров: 10, 6, 15, 71, 1, 62, для алгоритма C-SCAN (временами чтения цилиндров и смены направления движения пренебречь)?
121 мс
96 мс
59 мс
Для чего нужен синхронизирующий процесс при реализации семафоров через очереди сообщений?
для удобства реализации
для обеспечения взаимосинхронизации кооперативных процессов
для обеспечения атомарности операций P и V
В вычислительной системе моделируется движение самосвалов от карьера к заводу и обратно по дороге со стареньким мостом. Движение по мосту может осуществляться в обоих направлениях, но на нем не может быть одновременно более трех машин, иначе он рухнет. Каждый самосвал представлен программистом процессом следующей структуры:
Процесс i-й самосвал (i=0,1,2,…):
if(i == 0) <
<создать очередь сообщений A>
send(A, msg);
send(A, msg);
send(A, msg);
>
While (1) <
<доехать до моста>
receive(A, msg);
<проехать по мосту>
send(A, msg);
<доехать до места назначения>
>
Что может произойти в результате такого моделирования?
мост рухнет
образуется пробка
ничего особенного не произойдет, модель будет работать нормально
Для чего применяется журнализация в файловых системах?
для протоколирования действий пользователей
для повышения отказоустойчивости системы
для того, чтобы иметь возможность отменять ошибочные изменения данных в файлах пользователей
Какие операционные системы позволяют взаимодействовать удаленным процессам и имеют сходное строение с автономными вычислительными системами?
сетевые операционные системы
распределенные операционные системы
операционные системы, поддерживающие работу многопроцессорных вычислительных систем
Какая из схем управления памятью подвержена внутренней фрагментации?
схема с динамическими разделами
сегментная организация
страничная организация
Чем обычно определяется максимальный размер сегмента?
разрядностью архитектуры компьютера
размером оперативной памяти
размером свободной оперативной памяти
В операционных системах, поддерживающих нити исполнения (threads) внутри одного процесса на уровне ядра системы, наряду с блоками управления процессами (PCB) существуют структуры данных для управления нитями — TCB (Thread Control Block). Укажите, какие данные из перечисленных ниже хранятся, по вашему мнению, в TCB.
данные о файлах, используемых процессом
указатель стека
идентификатор пользователя, инициировавшего работу процесса
Для некоторого процесса известна следующая строка запросов страниц памяти
7, 1, 2, 3, 2, 4, 2, 1, 0, 3, 7, 2, 1, 2, 7, 1, 7, 2, 3.
Сколько ситуаций отказа страницы (page fault) возникнет для данного процесса при использовании алгоритма замещения страниц LRU (the Least Recently Used) и трех страничных кадрах?
13
12
11
Многие ОС поддерживают имена файлов, состоящие из двух частей (имя+расширение). Это делается для того, чтобы
операционная система могла связать это имя с прикладной программой, которая должна обрабатывать данный файл
упростить запоминание имени файла
упростить сортировку имен файлов при выводе списка файлов в каталоге
Разделение персонала, связанного с разработкой и эксплуатацией ЭВМ, на разработчиков, специалистов по эксплуатации, операторов и программистов произошло:
в первый период развития вычислительной техники (1945-55 г.г.)
во второй период развития вычислительной техники (1955-65 г.г.)
в третий период развития вычислительной техники (1965-80 г.г.)
Матрица доступа используется для:
аутентификации пользователей
авторизации пользователей
организации аудита системы
Какой метод используется для хранения элементов матрицы доступа в ОС Unix?
списки прав доступа
перечни возможностей
комбинация списков прав доступа и перечней возможностей
В функциях-методах мониторов Хора обычно реализовываются
только прологи и эпилоги критических участков
критические участки взаимодействующих процессов
только различные операции над внутренними переменными монитора (как операции над внутренними переменными класса в ООП)
Рассмотрим механизм синхронизации, называемый бинарными семафорами. Бинарный семафор — это семафор, который может принимать всего два значения: 0 и 1. Операция P для этого семафора выглядит так же, как и для семафора Дейкстры, а операция V заключается в простом присваивании семафору значения 1. Бинарные семафоры
обладают меньшими возможностями, чем семафоры Дейкстры
обладают большими возможностями, чем семафоры Дейкстры
эквивалентны семафорам Дейкстры
В чем состоит преимущество схемы виртуальной памяти по сравнению с организацией структур с перекрытием?
возможность выполнения программ большего размера
возможность выполнения программ, размер которых превышает размер оперативной памяти
экономия времени программиста при размещении в памяти больших программ
Могут ли два процесса в ОС Unix одновременно держать открытым один и тот же файл?
не могут
могут, если один из процессов заблокировал файл при помощи системного вызова fcntl
могут
Для чего может использоваться функция MD4?
для шифрования с симметричным ключом
для шифрования с асимметричным ключом
для шифрования паролей в качестве односторонней функции
Возможность организации структур с перекрытиями обусловлена:
наличием в программе большого количества независимых процедур
разбиением памяти на несколько фиксированных разделов
свойством локальности
Сколько процессов могут одновременно использовать одно и то же средство связи, пользуясь симметричной прямой адресацией?
2
произвольное количество
ответ зависит от того, является ли средство связи дуплексным или симплексным
Преимущество локального алгоритма замещения страниц перед глобальным состоит в том, что
он снижает влияние процессов друг на друга, так как если одному из процессов не хватает страниц оперативной памяти, он не пытается отобрать нужные ему страницы у другого процесса
локальный алгоритм проще реализовать
локальный алгоритм эффективнее вследствие свойства локальности
Что было прообразом современных ОС?
компиляторы с символических языков
библиотеки математических и служебных программ
системы пакетной обработки
Какие из перечисленных функций базовой подсистемы ввода-вывода могут быть делегированы драйверам:
поддержка блокирующихся, неблокирующихся и асинхронных системных вызовов
обработка ошибок и прерываний, возникающих при операциях ввода-вывода
планирование последовательности запросов на выполнение операций ввода-вывода
Условные переменные в мониторах Хора обычно используются:
для обеспечения взаимоисключения в критических участках кооперативных процессов
для обеспечения взаимосинхронизации кооперативных процессов
для передачи данных между кооперативными процессами
Отладка программ, содержащих очень большое количество семафоров, затруднена, так как:
требует специального программного обеспечения
ошибочные ситуации трудновоспроизводимы
для хорошего программиста никаких затруднений не возникает
В каких случаях производится невытесняющее кратковременное планирование процессов?
когда процесс переводится из состояния исполнение в состояние завершил исполнение
когда процесс переводится из состояния исполнение в состояние ожидание
когда процесс переводится из состояния ожидание в состояние готовность
В вычислительной системе со страничной организацией памяти и 32-х битовым адресом размер страницы составляет 8 Mбайт. Для некоторого процесса таблица страниц в этой системе имеет вид:
Номер страницы Адрес начала страницы
1 0x00000000
2 0x02000000
5 0x06000000
6 0x10000000
Какому физическому адресу соответствует виртуальный адрес 0х00827432?
0x27432
0x02027432
0x10027432
Основным преимуществом использования таблицы отображения файлов (FAT) по сравнению с классической схемой выделения связным списком является:
сокращение количества обращений к диску
повышенная надежность
более экономичное использование дискового пространства
Сколько удаленных адресов может иметь сетевой компьютер?
только один
не более двух
потенциально произвольное количество
Применение электронной подписи предполагает:
шифрование сообщения с помощью открытого ключа, а расшифровку — с помощью секретного
шифрование сообщения с помощью секретного ключа, а расшифровку — с помощью открытого
как шифрование, так и расшифровку с помощью открытого ключа
В операционных системах, поддерживающих нити исполнения (threads) внутри одного процесса на уровне ядра системы, процесс находится в состоянии готовность, если:
хотя бы одна нить процесса находится в состоянии готовность
хотя бы одна нить исполнения находится в состоянии готовность, и нет ни одной нити в состоянии ожидание
хотя бы одна нить процесса находится в состоянии готовность, и нет ни одной нити в состоянии исполнение
Какую стратегию управления памятью может реализовать алгоритм выталкивания страниц LRU?
стратегию размещения страницы в памяти при наличии списка свободных кадров
стратегию упреждающей выборки, когда кроме страницы, вызвавшей исключительную ситуацию, в память также загружается несколько страниц, окружающих ее
стратегию замещения
Применение модели рабочего множества позволяет:
избежать замещения страниц
оптимизировать количество страничных кадров, выделенных процессу
снизить частоту page faults в результате использования глобального алгоритма замещения страниц
Для чего по окончании работы с файлом принято выполнять операцию закрытия (close) файла?
чтобы освободить место во внутренних таблицах файловой системы
чтобы перевести указатель текущей позиции в начало файла
чтобы разрешить доступ к файлу другим процессам
Из какого состояния процесс может перейти в состояние «исполнение»?
из состояния «ожидание»
из состояния «готовность»
из состояния «рождение»
Какая техническая база характерна для первого периода вычислительной техники (1945-1955 г.г.)?
полупроводниковая
интегральные микросхемы
лампы
В число событий, имеющих отношение к безопасности компьютерной системы, которые регистрирует система аудита, обычно не входит:
операция создания процесса
операция открытия файла
смена привилегий пользователя
В вычислительной системе моделируется движение самосвалов от карьера к заводу и обратно по дороге со стареньким мостом. Движение по мосту может осуществляться в обоих направлениях, но на нем не может быть одновременно более трех машин, иначе он рухнет. Каждый самосвал представлен программистом процессом следующей структуры:
Semaphore mutex = 1;
Semaphore not_full = 0;
Shared int n_on_bridge = 0;
Процесс i-й самосвал:
While (1) <
<доехать до моста>
P(mutex);
if(n_on_bridge == 3) P(not_full);
else n_on_bridge = n_on_bridge+1;
V(mutex);
<проехать по мосту>
P(mutex);
if(n_on_bridge == 3) V(not_full);
n_on_bridge = n_on_bridge-1;
V(mutex);
<доехать до места назначения>
>
Что может произойти в результате такого моделирования?
мост рухнет
образуется пробка
ничего особенного не произойдет, модель будет работать нормально
Какой уровень эталонной модели OSI/ISO отвечает за доставку информации от компьютера-отправителя к компьютеру-получателю?
сетевой уровень
транспортный уровень
уровень сеанса
Для решения проблемы информационной безопасности необходимо:
применение законодательных мер
применение программно-технических мер
сочетание законодательных, организационных и программно-технических мер
Что понимается под термином «внешняя фрагментация»?
потеря части памяти, не выделенной ни одному процессу
потеря части памяти в схеме с переменными разделами
наличие фрагментов памяти, внешних по отношению к процессу
Какие из вариантов реализации системного вызова read могут прочитать меньше байт, чем запросил процесс?
асинхронный
блокирующийся
неблокирующийся
22. Пусть у нас есть локальная вычислительная сеть, достаточно долгое время работающая с неизменной топологией и без сбоев. Какие алгоритмы маршрутизации гарантируют доставку пакетов данных по кратчайшему пути?
алгоритмы фиксированной маршрутизации
векторно-дистанционные алгоритмы с метрикой количества переходов между компонентами сети
алгоритмы случайной маршрутизации
Какие процессы могут обмениваться информацией через FIFO?
только процесс, создавший FIFO, и его процесс-ребенок
только процессы, имеющие общего родителя, создавшего FIFO
произвольные процессы в системе
Если для некоторого набора активностей условия Бернстайна не выполняются, то набор активностей является:
детерминированным
недетерминированным
может быть как недетерминированным, так и детерминированным
Управление доступом в Linux/UNIX системах
В данном посте рассматривается управление доступом в Linux/UNIX системах. Будут рассмотрены следующие вопросы:
- Общие правила управления доступом
- Атрибуты объектов вLinux
- Первый и одиннадцатый символы
- Изменение разрешений
- Числовой формат разрешений
- Umask, setuid, setgid, sticky bit, immutable bit
- SELinux
Ниже обозначаются некоторые общие/базовые правила управления доступом в Linux/UNIX системах:
- Объекты (например, файлы и процессы) имеют владельцев. Владельцы обладают обширным (но необязательно неограниченным) контролем над своими объектами.
- Пользователь является владельцем новых объектов, создаваемых им самим.
- Пользователь root с особыми правами, известный как суперпользователь, может действовать как владелец любого объекта в системе.
- Только суперпользователь может выполнять административные операции особого значения (например, выполнять некоторые системные вызовы).
Далее подробнее рассматривается каждый из пунктов.
Файл в традиционной модели Linux/UNIX-подобных систем принадлежит владельцу и группе. Владелец файла имеет особую привилегию, недоступную другим пользователям системы: ему разрешено менять права доступа к файлу. В частности, владелец может задать права доступа так, что никто, кроме него, не сможет обращаться к файлу (права можно установить настолько строгими, что даже сам владелец файла не сможет им воспользоваться). Владельцем файла всегда является один пользователь, тогда как в группу владельцев могут входить несколько пользователей.
Учетная запись root в Linux/UNIX принадлежит пользователю-администратору, известному как суперпользователь. Root имеет неограниченные привилегии над системой. Определяющей характеристикой учетной записи суперпользователя является значение UID, равное нулю:
Другими словами система Linux/UNIX позволяет суперпользователю (т.е. всякому процессу, текущий идентификатор пользователя которого равен нулю) выполнять над файлом или процессом любую допустимую операцию (например, создание файлов устройств, увеличение лимитов использования ресурсов и повышение приоритетов процессов, конфигурирование сетевых интерфейсов и т.д.).
Зная чей-либо пароль, можно непосредственно зарегистрироваться в системе под его именем, введя команду su имя_пользователя. В ответ будет выдан запрос на ввод пароля. При использовании в качестве ключа команды su дефиса (-) интерпретатор перейдет в режим регистрации. Точная реализация этого режима зависит от конкретного интерпретатора команд, но обычно в этом режиме меняются количество и имена файлов запуска, считываемых интерпретатором – при использовании дефиса, интерпретатор загрузит среду исполнения нового пользователя, без использования дефиса – среда исполнения останется прежней. Например, при исполнении команды su test, выполняется вход в систему под пользователем test, но среда исполнения не изменится. Однако, команда su – test, позволит нам не только войти в систему под пользователем test, но и загрузить его среду исполнения – что даст доступ к его переменным окружения, настройкам интерпретатора и т.д.
В примере ниже видно, как подгружается домашняя директория, в зависимости от того, была выполнена команда su с дефисом,
Чаще всего для получения прав суперпользователя применяется утилита sudo.
Sudo — это программа для Linux/Unix систем, которая позволяет пользователям запускать программы с привилегиями безопасности другого пользователя, по умолчанию суперпользователя.
В отличие от связанной команды su, пользователи должны предоставить свой пароль для аутентификации. После аутентификации, если файл конфигурации, который обычно находится в /etc/sudoers, позволяет предоставить пользователю доступ, система выполняет требуемую команду. Чтобы дать пользователю права на sudo привилегии, надо добавить пользователя в группу wheel.
Атрибуты объектов в Linux
Каждый файл в Linux имеет владельца и группу, связанные с ним. Пользователи, не являющиеся владельцем и не состоящие в группе, относятся к остальным пользователям (other). Ниже подробно рассматривается атрибуты файла на примере листинга, где выполнена команда ls –l.
В этом примере владельцем файла .bashrc является пользователь rustam, и этот файл принадлежит группе rustam, которая является основной группой этого пользователя. Аналогично, владельцем файла only.for.root является пользователь root, и файл принадлежит группе root. Владельцем файла helloworld.C является пользователь rustam, но этот файл принадлежит группе development. Имена групп и пользователей принадлежат различным пространствам имен, поэтому указанное имя может являться как именем пользователя, так и именем группы. В действительности многие дистрибутивы по умолчанию создают для каждого нового пользователя назначаемую ему группу с таким же названием.
Описывается каждый из параметров вывода команды ls –l:
Подробнее описание разрешений файла.
В модели безопасности Linux для каждого объекта файловой системы существует три типа разрешений: чтение (r), запись (w) и выполнение (x). Разрешение на запись также позволяет изменять или удалять объект. Кроме того, эти разрешения указываются отдельно для владельца файла, членов группы файла и для всех остальных.
В столбце листинга содержится строка из 11 символов. Одиннадцатый символ был введен не так давно, о нем будет рассказано ниже. Первый символ указывает на тип объекта (в этом примере символ “-” означает обычный файл –rw-r–r–.), а остальные девять символов образуют три группы по три символа в каждой. Первая группа содержит разрешения на чтение, запись и выполнение для владельца файла. Символ “-” означает, что соответствующее разрешение не предоставлено (-rw–r–r–.). Таким образом, пользователь rustam может читать и записывать в файл .bashrc, но не выполнять его, тогда как пользователь root может читать, записывать и выполнять файл only.for.root. Вторая группа содержит разрешения на чтение, запись и выполнение для группы файла (например, -rw-rw–r–.). Члены группы development могут читать и записывать в файл helloworld.C (который принадлежит пользователю rustam), а все остальные пользователи системы (третья группа) могут только читать его (-rw-rw-r—.). Аналогично, члены группы root и все остальные могут читать или выполнять файл only.for.root.
Для директорий используются те же самые флаги разрешений, что и для обычных файлов, но интерпретируются они по-другому. Пользователи, имеющие разрешение на чтение директории, могут просматривать ее содержимое. Пользователи, имеющие разрешение на запись в директорию, могут создавать и удалять из нее файлы. Пользователи, имеющие разрешение на выполнение, могут входить в эту директорию и во все ее поддиректории. При отсутствии разрешений на выполнение, объекты файловой системы, находящиеся в директории, недоступны. При отсутствии разрешений на чтение объекты файловой системы, находящиеся внутри директории, недоступны для просмотра при выводе содержимого директории, но к ним можно получить доступ, зная полный путь.
Первый символ
Первый символ в подробном выводе содержимого директории описывает тип объекта (d означает директорию). Вывод команды ls -l может содержать объекты файловой системы, отличные от файлов и директорий, что можно определить по первому символу листинга. Другие типы объектов файловой системы:
Код Тип объекта
l Символическая ссылка
c Специальное символьное устройство
b Специальное блочное устройство
Одиннадцатый символ
Одиннадцатый символ в выводе команды ls (-rw-r–r–.) является нововведением, поэтому в некоторых дистрибутивах он пока не применяется. В других случаях одиннадцатым символом может быть пробел, поэтому можно не заметить его. Этот символ указывает на использование альтернативного метода доступа к файлу. Если символ, следующий за битами режима файла, является пробелом, альтернативный метод доступа не используется. Если же этот символ является печатным знаком, то используется альтернативный метод доступа. Таким методом может являться, например, список контроля доступов. Символ ‘.’ (точка) команды GNU ls означает, что для файла используется только контекст безопасности SELinux (о нем ниже). Файлы, для которых используются любые другие комбинации альтернативных методов доступа, отмечены знаком ‘+’ (плюс).
Изменение разрешений
Разрешения для файла можно изменять несколькими способами. Для этого используется команда chmod.
Предполагается, что надо добавить сценарию разрешение на исполнение. Для этого используется команда chmod с опцией +x.
Подобным образом можно использовать опцию +r для установки разрешений на чтение и опцию +w для установки разрешений на запись. Фактически, можно использовать любые комбинации опций r, w и x. Например, команда chmod +rwx одновременно устанавливает для файла разрешения на чтение, запись и выполнение. Запуск chmod в такой форме добавляет разрешения, которые еще не были установлены.
В последнем примере разрешение на выполнение было установлено для владельца, группы и всех остальных. Для выборочной установки разрешений можно использовать префиксы u (установка разрешений для пользователя/владельца – user), g (установка разрешений для групп – group) и o (установка разрешений для всех остальных – others). Префикс a (от слово all) устанавливает разрешения для всех пользователей (что эквивалентно отсутствию какого-либо префикса вообще). В листинге ниже показано, как добавить разрешения на запись и выполнение пользователю и группе другой копии файла сценария.
Иногда требуется не добавить разрешения, а отозвать их. Для этого надо заменить + на -, и все указанные разрешения будут отозваны. К примеру:
Для установки только определенного набора разрешений вместо знаков + или – используется знак =. Если необходимо установить различные разрешения для пользователя, группы и всех остальных, вы можете разделить различные выражения запятыми, например, ug=rwx,o=rx; можно также указывать разрешения в числовом формате, как это будет описано далее.
Числовой формат разрешений
Выше для установки разрешений использовали символы ugoa и rxw. В каждой группе существует три типа разрешений. Вместо символов для установки разрешений можно использовать восьмеричные числа. При таком способе установки разрешений может потребоваться использовать до четырех восьмеричных чисел. Первое число будет рассмотрено при обсуждении атрибутов (см. ниже). Второе число определяет разрешения для пользователя/владельца, третье число разрешения для группы, а четвертое число определяет разрешения для всех остальных. Каждое из этих трех чисел формируется путем сложения необходимых разрешений: чтение (4), запись (2) и выполнение (1). Например, сценарий run.sh был создан с разрешениями -rw-r–r–, что соответствует значению 644 в восьмеричной форме. Установка разрешений на выполнение для всех пользователей и групп без исключения изменит это значение на 755.
Использование числового формата очень удобно тогда, когда необходимо установить все разрешения сразу, не указывая их для каждой группы. В таблице ниже перечислены все возможные разрешения в числовом формате.
Символическое представление Восьмеричное значение
Umask
При создании файла или директории, среда операционной системы присваивает им определенные права доступа по умолчанию, и umask – это пользовательская маска (user mask), которая используется для определения конечных прав доступа.
По умолчанию, umask равна 0022 (022) или 0002 (002). По умолчанию umask 0002 используется для обычного пользователя. С этой маской права по умолчанию, для директории, равны 775, а для файла 664. Для суперпользователя (root) umask по умолчанию равна 0022. С этой маской права по умолчанию, для директории, равны 755, а для файла 644.
Каким образом значение 022 даёт файлу разрешения 644? Все просто – значение маски равняется вычитаемому значению из базовых прав (666 для файлов и 777 для директорий), то есть 666-022=644. Таким образом, при маске 022 права по умолчанию для файлов будут равны 644. Например, если необходимо, чтобы директории по умолчанию создавались с правами 700, то надо задать маску 077 (777-700=077).
Setuid и setgid, sticky bit
Традиционная система управления доступом в Linux/UNIX дополнена системой смены полномочий, которая реализуется ядром в сотрудничестве с файловой системой. Эта система позволяет выполнять специально подготовленные файлы с использованием привилегий более высокого уровня (обычно это привилегии суперпользователя). Этот механизм разрешает разработчикам и администраторам создавать условия для непривилегированных пользователей, при которых они могут выполнять привилегированные операции. Дело в том, что существует два специальных бита, устанавливаемых в маске прав доступа к файлу (подробнее о них см. ниже): “setuid” (Set User ID — бит смены идентификатора пользователя) и “setgid” (Set Group ID — бит смены идентификатора группы). Если запускается исполняемый файл, у которого установлен один из этих битов, то текущими идентификаторами создаваемого процесса становятся идентификаторы владельца файла, а не идентификаторы пользователя, запустившего программу. Смена полномочий действительна только на время работы программы.
Например, пользователи должны иметь возможность изменять свои пароли. Но поскольку пароли хранятся в защищенном файле /etc/shadow, пользователям нужно использовать команду passwd с полномочиями setuid, чтобы “усилить” свои права доступа. Команда passwd проверяет, кто ее выполняет, и, в зависимости от результата, настраивает свое поведение соответствующим образом, поэтому обычные пользователи могут менять только собственные пароли, а суперпользователь — любые.
Setuid бит отображается буквой s вместо x в первом наборе разрешений (owner).
Setgid бит отображается буквой s вместо x во втором наборе разрешений (group).
Есть еще один бит, называемый дополнительным (sticky bit). В первых UNIX-системах дополнительный бит запрещал выгрузку программ из памяти. В эти дни он утратил свое значение и игнорируется многими системами. Если дополнительный бит установлен для каталога, то файловая система позволит удалять и переименовывать его файлы только владельцу каталога, владельцу файла или суперпользователю. Иметь одно лишь право записи в каталог недостаточно. Такая мера позволяет несколько лучше защитить каталоги вроде /tmp.
Sticky бит отображается буквой t вместо x в третьем наборе разрешений (others).
Immutable bit
Бит неизменяемости файла (immutable bit) может быть назначен файлу, который размещён в расширенной файловой системе (Ext3, Ext4, Extended File System), для его защиты от изменений. “immutable bit” может быть добавлен к атрибутам файла с помощью команды chattr и только суперпользователем. После того, как файлу будет назначен атрибут immutable, над этим файлом будут запрещены модификация, переименование, удаление, возможность создавать мягкие (soft) и жесткие (hard) ссылки.
Установка атрибута immutable осуществляется командой chattr следующим образом:
Проверить, защищен ли файл от изменений с помощью атрибута immutable можно с помощью команды lsattr:
Удалить атрибут immutable можно всё той же командой chattr:
SELinux
SELinux — это реализация системы принудительного управления доступом доступа (mandatory access control — MAC), в которой все привилегии назначаются администраторами. В среде MAC пользователи не могут делегировать свои права и не могут устанавливать параметры контроля доступа на объекты, которыми они (пользователи) владеют.
Когда говорят о SELinux всегда упоминаются субъекты и объекты. То есть SELinux это разрешения и запреты, которые применяются в действиях между субъектами и объектами.
Субъекты – это пользователи, которые выполняют какие-либо операции в системе. Часто под субъектами также подразумеваются программы (процессы). Иначе говоря, субъекты это те, кто выполняет некие действия. Объекты — это то, над чем действия выполняются. Чаще всего под объектами подразумеваются файлы данных. Но это могут быть и устройства и даже программы.
SELinux поддерживает два режима работы:
Permissive – разрешается нарушение политики безопасности. Такие нарушения только регистрируются в системном журнале. То есть по сути SELinux не работает, а только лишь фиксирует нарушения политики безопасности.
Enforced – нарушения политики безопасности блокируются. SELinux работает полностью. В этом режиме SELinux дает максимальную защиту.
Для того, чтобы перейти в режим Permissive, можно использовать команды setenforce 0 или setenforce Permissive. Например, это может понадобиться при установке некоторых приложений.