Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Khues.doc
Скачиваний:
7
Добавлен:
15.03.2015
Размер:
241.25 Кб
Скачать

Inherited (наследуемые) и Explicit (прямые) права

Разрешающие и запрещающие права

При установке прав вы должны указать, что необходимо сделать для определенного элемента – разрешить доступ (Allow) или запретить (Deny).

Разграничение доступа может быть физическим и логическим.

Возможность задания разных прав доступа к файлам для разных пользователей связана с использованием файловой системы NTFS.

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

Основными целями разработки NTFS являлись обеспечение скоростного выполнения стандартных операций над файлами (включая чтение, запись) и предоставление дополнительных возможностей, включая сжатие и восстановление повреждённых файлов. Помимо разграничения доступа, NTFS поддерживает шифрование файлов с помощью EFS (Encrypting File System).

Для каждого пользователя или группы можно назначить или запретить стандартные разрешения для файлов: полный доступ (full control), изменение (modyfy), чтение и выполнение (read & execute), чтение (read) и запись (write). Для установок разрешения или отказа служат флажки Разрешить (Allow) и Запретить (Deny).

Для папок разрешения устанавливается аналогичным образом.

Команды по управлению доступом.

FTP-клиенты используют команды управления доступом для подключения к серверу, аутентификации пользователя и разрыва управляющего соединения в конце сессии. Эти команды перечислены ниже.

* USER имя пользователя. Задает имя учетной записи, используемой сервером для аутентификации клиента.

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

* АССТ учетная запись. Определяет учетную запись, используемую для доступа к специфическим свойствам файловой системы сервера. Команда АССТ может использоваться в любой момент сессии, а не только в начале процесса подключения, как команда USER.

* сWD путь. Изменяет рабочий каталог в файловой системе сервера на каталог, заданный переменной путь.

О CDUP. Сдвигает рабочий каталог в файловой системе сервера на один уровень вверх, в сторону родительского каталога.

* SMNT путь. Монтирует другую структуру данных файловой системы на сервере, не нарушая при этом аутентификации учетной записи пользователя.

* REIN. Прекращает текущую сессию, оставляя открытым управляющее соединение и завершая любой процесс передачи данных, идущий в данное время. Сразу после этого ожидается следование новой команды USER.

* QUIT. Прекращает текущую сессию и закрывает управляющее соединение после завершения всех сеансов передачи данных, проходящих в данный момент.

Команды по управлению правами.

chmodКоманда используется для изменения прав доступа к файлам.

chownКоманда используется для смены владельца/группы файлов.

suКоманда используется для временной подмены идентификатора пользователя.

sudoПрограмма sudo является логическим развитием программы su и позволяет как переходить в сеанс суперпользователя, так и запускать отдельные программы от имени суперпользователя.

passwdКоманда используется для изменения пароля.

useraddКоманда предназначена для добавления нового регистрационного имени пользователя в системе.

userdelКоманда предназначена для удаления регистрационных имен пользователей из системы.

usermodКоманда предназначена для изменения регистрационной информации о пользователе в системе.

15). Все файлы файловой системы построены в структуру, которая называется деревом. В корне дерева находится, так называемый, корень файловой системы. Если узел дерева является листом, то это файл, который может содержать данные пользователя, либо являться файлом-каталогом. Узлы дерева отличные от листа являются файлами-каталогами. Именование в такой иерархической файловой системе может происходить разными способами. Первый тип - именование файла относительно ближайшего каталога, т. е. если мы посмотрим файлы, которые являются ближайшими для каталога F0, - это файл F1, который является также каталогом, и файл F2. Для успешного именования в такой системе на одном уровне не могут повторяться имена. С другой стороны, так как все файлы связаны с помощью дерева, мы можем говорить о, так называемом, полном имени файла, которое составляется из всех имен файлов, которые составляют путь от корня файловой системы к конкретному файлу. Полное имя файла F3 будет обозначаться так: /F0/F1/F3. Такая организация хороша тем, что она позволяет работать как с коротким именем файла (если системно подразумевается, что мы работаем в данном каталоге), так и с полным именем файла. Полные имена файлов есть пути, а в любом дереве от его корня до любого узла существует единственный путь, следовательно, этим решается проблема унификации имен. Первый раз такой подход был использован в операционной системе Multix, которая разрабатывалась в университете Беркли в конце 60-х годов. Это красивое решение стало появляться впоследствии во многих операционных системах. Согласно этой иерархии, каждому из файлов можно привязывать какие-то атрибуты, связанные с правами доступа. Правами доступа могут обладать как пользовательские файлы, так и каталоги. Структура этой системы хороша для организации многопользовательской работы, за счет отсутствия проблемы именования, и такая система может очень хорошо наращиваться. Физический диск состоит из нескольких логических разделов, на которые он разбит дисковым драйвером, причем каждому разделу соответствует файл устройства, имеющий определенное имя. Процессы обращаются к данным раздела, открывая соответствующий файл устройства и затем ведя запись и чтение из этого «файла», представляя его себе в виде последовательности дисковых блоков. Это взаимодействие во всех деталях рассматривается в главе 10. Раздел диска может содержать логическую файловую систему, состоящую из блока начальной загрузки, суперблока, списка индексов и информационных блоков (см. главу 2). Системная функция mount (монтировать) связывает файловую систему из указанного раздела на диске с существующей иерархией файловых систем, а функция umount (демонтировать) выключает файловую систему из иерархии. Функция mount, таким образом, дает пользователям возможность обращаться к данным в дисковом разделе как к файловой системе, а не как к последовательности дисковых блоков.

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

Ядро находит индекс специального файла, представляющего файловую систему, подлежащую монтированию, извлекает старший и младший номера, которые идентифицируют соответствующий дисковый раздел, и выбирает индекс каталога, в котором файловая система будет смонтирована. Счетчик ссылок в индексе каталога должен иметь значение, не превышающее 1 (и меньше 1 он не должен быть — почему?), в связи с наличием потенциально опасных побочных эффектов (см. упражнение 5.27). Затем ядро назначает свободное место в таблице монтирования, помечает его для использования и присваивает значение полю номера устройства в таблице. Вышеуказанные назначения производятся немедленно, поскольку вызывающий процесс может приостановиться, следуя процедуре открытия устройства или считывая суперблок файловой системы, а другой процесс тем временем попытался бы смонтировать файловую систему. Пометив для использования запись в таблице монтирования, ядро не допускает использования в двух вызовах функции mount одной и той же записи таблицы. Запоминая номер устройства с монтируемой системой, ядро может воспрепятствовать повторному монтированию одной и той же системы другими процессами, которое, будь оно допущено, могло бы привести к непредсказуемым последствиям (см. упражнение 5.26).

Ядро вызывает процедуру открытия для блочного устройства, содержащего файловую систему, точно так же, как оно делает это при непосредственном открытии блочного устройства (глава 10). Процедура открытия устройства обычно проверяет существование такого устройства, иногда производя инициализацию структур данных драйвера и посылая команды инициализации аппаратуре. Затем ядро выделяет из буферного пула свободный буфер (вариант алгоритма getblk) для хранения суперблока монтируемой файловой системы и считывает суперблок, используя один из вариантов алгоритма read. Ядро сохраняет указатель на индекс каталога, в котором монтируется система, давая возможность маршрутам поиска файловых имен, содержащих имя «…», пересекать точку монтирования, как мы увидим дальше. Оно находит корневой индекс монтируемой файловой системы и запоминает указатель на индекс в таблице монтирования. С точки зрения пользователя, место (точка) монтирования и корень файловой системы логически эквивалентны, и ядро упрочивает эту эквивалентность благодаря их сосуществованию в одной записи таблицы монтирования. Процессы больше не могут обращаться к индексу каталога — точки монтирования.

Ядро инициализирует поля в суперблоке файловой системы, очищая поля для списка свободных блоков и списка свободных индексов и устанавливая число свободных индексов в суперблоке равным 0. Целью инициализации (задания начальных значений полей) является сведение к минимуму опасности разрушить файловую систему, если монтирование осуществляется после аварийного завершения работы системы. Если ядро заставить думать, что в суперблоке отсутствуют свободные индексы, то это приведет к запуску алгоритма ialloc, ведущего поиск на диске свободных индексов. К сожалению, если список свободных дисковых блоков испорчен, ядро не исправляет этот список изнутри (см. раздел 5.17 о сопровождении файловой системы). Если пользователь монтирует файловую систему только для чтения, запрещая проведение всех операций записи в системе, ядро устанавливает в суперблоке соответствующий флаг. Наконец, ядро помечает индекс каталога как «точку монтирования», чтобы другие процессы позднее могли ссылаться на нее. На Рисунке 5.24 представлен вид различных структур данных по завершении выполнения функции mount.

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

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

Монолитная архитектура операционной системыПри монолитной архитектуре операционная система не имеет какой-либо явно выраженной внутренней структуры. Это просто набор процедур, использующих общие глобальные данные, и вызываемые друг другом или пользователем. Заметим, что монолитную архитектуру имели самые первые поколения операционных систем.

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

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

Многоуровневая архитектураМногоуровневая архитектура появилась как ответ на ограничения монолитной архитектуры в плане расширяемости, переносимости и совместимости. Основная идея многоуровневой архитектуры состоит в следующем: 1. Полная функциональность операционной системы разделяется на уровни, например уровень управления аппаратурой, уровень управления памятью, уровень файловой системы, уровень управления процессами и т.п. 2. Для каждого уровня определяются интерфейс взаимодействия, т.е. некоторый набор правил, согласно которым следует обращаться за услугами данного уровня. 3. Взаимодействие уровней строится таким образом, что каждый уровень может обращаться за услугами только к соседнему нижележащему уровню через его интерфейс. 4. Внутренние структуры данных каждого уровня не доступны другим уровням, а реализации процедур уровня скрыты и не зависят от реализаций процедур внутри других уровней.

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

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

Уровень 0. Этот уровень выполнял распределение ресурсов процессора и переключал процессы по истечению кванта времени или при возникновении прерывания. Уровень 1. Этот уровень осуществлял управление виртуальной памятью. Уровень 2. Этот уровень обеспечивал каждый запущенный процесс собственной консолью, т.е. организовывал виртуальные терминалы. Уровень 3. Этот уровень осуществлял управление средствами ввода-вывода и предоставлял вышележащим уровням аппаратно независимые средства ввода-вывода. Кроме того, третий уровень осуществлял буферизацию ввода-вывода, т.е. обеспечивал кэширование. Уровень 4. На этом уровне выполнялись пользовательские процессы, которые обеспечивались аппаратно независимыми услугами со стороны нижележащих уровней операционной системы. Уровень 5. На этом уровне выполнялся процесс системного администратора.

Архитектура типа клиент-сервер на основе микроядра

Архитектура типа клиент-сервер в настоящее время является наиболее совершенной с точки зрения расширяемости и переносимости операционных систем.

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

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

Получив запрос от клиента, сервер выполняет его, при этом он сам может обратиться за услугами к другим серверам. После выполнения запроса сервер отсылает клиенту сообщение о завершении задания и результаты работы.

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

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

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

Ядро — центральная часть операционной системы, управляющая выполнением процессов, ресурсами вычислительной системы и предоставляющая процессам координированный доступ к этим ресурсам. Основными ресурсами являются процессорное время, память и устройства ввода-вывода. Доступ к файловой системе и сетевое взаимодействие также могут быть реализованы на уровне ядра.

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

Описанная задача может различаться в зависимости от типа архитектуры ядра и способа её реализации.

Ядро включает модули, выполняющие основные функции ОС:

·   управление процессами

·   управление памятью

·   управление вводом-выводом и файловая система

·   прочие

Модули, выполняющие вспомогательные функции:

·   утилиты

·   библиотеки

·   компиляторы

·   прочие

Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API(Application Program Interface) Ядро работает в привилегированном режиме, и большая часть его модулей постоянно находится в памяти (резидентные). Разделение ОС на ядро и вспомогательные модули облегчает ее расширяемость

К вспомогательным модулям ОС относятся:

·   Утилиты (Сжатие, архивирование, проверка, дефрагментация и пр.)

·   Системные обрабатывающие программы (редакторы, отладчики, компиляторы и пр.)

·   Программы дополнительных услуг (игры, калькулятор и пр.)

·   Библиотеки процедур (математических функций и пр.)

·   Вспомогательные модули ОС загружаются в оперативную память только на время выполнения (транзитные модули)

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