Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Защита информации от несанкционированного доступа 4 страница



Первыми пользователями UNIX'а стали сотрудники отдела патентов Bell Labs, которые нашли ее удобной средой для создания текстов.

Большое влияние на судьбу UNIX оказала перепись ее на языке высокого уровня С, разработанного Денисом Ритчи специально для этих целей. Это произошло в 1973 году, UNIX насчитывал к этому времени уже 25 инсталляций, и в Bell Labs была создана специальная группа поддержки UNIX.

Широкое распространение UNIX получил с 1974 года, после описания этой системы Томпсоном и Ритчи в компью­терном журнале CACM. UNIX получил широкое распространение в университетах, так как для них он поставлялся бесплатно вместе с исходными кодами на С. Широкое распространение эффективных C-компиляторов сделало UNIX уникальной для того времени ОС из-за возможности переноса на различные компьютеры. Университеты внесли значительный вклад в улучшение UNIX и дальнейшую его популяризацию. Еще одним шагом на пути получения признания UNIX как стандартизованной среды стала разработка Денисом Ритчи библиотеки ввода-вывода stdio. Благодаря использованию этой библиотеки для компилятора С, программы для UNIX стали легко переносимыми.

Рис. 5.1. История развития UNIX

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

На рисунке 5.1 показана упрощенная картина развития UNIX, которая учитывает преемственность различных версий и влияние на них принимаемых стандартов. Наибольшее распространение получили две весьма несовместимые линии версий UNIX: линия AT&T - UNIX System V, и линия университета Berkeley-BSD. Многие фирмы на основе этих версий разработали и поддерживают свои версии UNIX: SunOS и Solaris фирмы Sun Microsystems, UX фирмы Hewlett-Packard, XENIX фирмы Microsoft, AIX фирмы IBM, UnixWare фирмы Novell (проданный теперь компании SCO), и список этот можно еще долго про­должать.

Наибольшее влияние на унификацию версий UNIX оказали такие стандарты как SVID фирмы AT&T, POSIX, созданный под эгидой IEEE, и XPG4 консорциума X/Open. В этих стандартах сформулированы требования к интерфейсу между приложе­ниями и ОС, что дает возможность приложениям успешно работать под управлением различных версий UNIX.

Независимо от версии, общими для UNIX чертами являются:

Далее мы подробно остановимся на основных концепциях версии UNIX System V Release 4, которая вобрала в себя лучшие черты линий UNIX System V и UNIX BSD.

Версия UNIX System V Release 4 - это незаконченная коммерческая версия операционной системы, т.к. в ее кодах от­сутствуют многие системные утилиты, необходимые для успешной эксплуатации ОС, например утилиты администрирования или менеджер графического интерфейса. Версия SVR4 является скорее стандартной реализацией кода ядра, вобравшая в себя наиболее популярные и эффективные решения из различных версий ядра UNIX, такие как виртуальная файловая система VFS, отображаемые в память файлы и т.п. Код SVR4 (частично доработанный) лег в основу многих современных коммерческих версий UNIX, таких как HP-UX, Solaris, AIX и т.д.


Вопрос 45: Архитектура ОС UNIX. Ядро ОС. Основные функции. Принципы взаимо­действия с ядром.

Архитектура и ядро ОС UNIX

Основные функции ядра:

  1. выполнение и управление процессов посредством их создания, завершения, оста­новки, и организа­ция взаимодействия между ними.
  2. планирование очередности предоставления выполнения процессами и процессор­ным временем.
  3. выделение процессам оперативной памяти (ОП) и других ресурсов.
  4. выделение внешней памяти для хранения данных и лупинга (?).

Ядро:

Система обладает высокой мобильностью, все части системы, кроме ядра, напи­саны на Си. Для пе­рен6оса требуется лишь компиляция. Все машины, зависящие от ядра, напи­саны на ASSEMBLER.

В их задачу входит:

§ Инициализация систем на низком уровне.

§ Первичная обработка внутренних и внешних прерываний.

§ Управление памятью, той частью, которая относится к особенностям аппаратной под­держки виртуаль­ной памяти.

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

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

Приложения в двух режимах:

Режим задачи (процессы имеют доступ только к своим собственным инструк­циям и данным)

Режим ядра (процессам доступны адресные пространства ядра и пользователя)

Существуют привилегированные команды, использование которых в режиме поль­зова­теля ведет к ошибке.

Ядро располагается в ОЗУ и не выгружаемо. Большинство информационных струк­тур данных ядра в таблицах фиксированного раздела (например, таблица процессора – размер ограничен).

Система управления файлами:

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

Ядро поддерживает две информационные структуры:

§ Таблицу файлов (глобальная структура ядра)

§ Пользовательская таблица дескрипторов файлов (для пользовательского про­цесса)

Файловая система:

1. блок загрузки

2. суперблок (состояние файловой системы: размер файлов, сколько файлов мо­жет находиться и т.д.)

3. список индексов (расположение файлов на диске)

4. информационные блоки

Для создания нового процесса используется команда fork. Процесс, использующий эту команду, – родительский. Все остальные – дочерние процессы. Ядро системы иденти­фи­цирует процесс по его номеру, названный идентификатором процесса.

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

Исполняемый файл после выполнения системой операции exec (­«_»). Отличитель­ная черта состоит в том, что процесс создается в два этапа: при вызове fork создается ко­пия родительского процесса, а после exec заменяется код.

Существует два стека: стек в режиме ядра и стек в режиме задачи. Стек в режиме ядра, если процесс в режиме задачи, и наоборот.

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

Запись в таблицу процессов и часть адресного задачи содержит управляющую ин­форма­цию и дан­ные ос состоянии задачи (поле состояния, идентификатор владельца, ко­гда про­цесс остановлен и т.д.). Ад­ресное пространство задачи, выделяемое процессу:

§ указатель на позицию в таблице процессов

§ параметры текущей системной операции

§ дескрипторы файлов для всех открытых данным процессов файла

§ текущий каталог

§ граница области, принадлежащая процессу

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

Контексты могут быть переключены ядра вполне при определенных условиях: ядро раз­решает пе­реключение только тогда, когда процесс переходит из состояния запуска ре­жима ядра в состояние сна па­мяти.

Основные состояния процесса:

1. процесс может выполняться в режиме задачи.

2. процесс может выполняться в режиме ядра.

3. процесс не выполняется, но готов к выполнению.

4. процесс приостановлен или спит.

В режиме ядра может выполняться только один процесс, в режиме пользователя много. Пока про­цесс в режиме ядра, переключать контекст нельзя.

Реализация этого требования:

§ на момент нахождения процесса в режиме ядра запретить прерывания.

§ Для того, чтобы не запрещать прерывания, ядро повышает приоритет прерывания ядра.

В состоянии «сна» может находиться много процессов.

Ситуация: три процесса ждут, пока 1 процесс занимает принтер. После освобожде­ния принтера все три процесса пробуждаются ото сна, планировщик выбирает нужный про­цесс, остальные опять впадают в сон.


Вопрос 46: Файловые системы UNIX.

Файловая система

Файловая система включает в себя файлы, хранящие на диске, и средства управ­ляемой системы. Характеризу­ется уникальным именем, древовидная файловая система, корень обозначается «\» (в Windows С:).

Утилиты для работы с файлами:

1. copy – копирование (источник – значение)

2. rm – уничтожение

3. mv – переименование

4. Mn dir – создание нового каталога

5. Rm dir – удаление каталога

6. ls – выдача содержимого каталога на экран

7. cut – выдача содержимого файла на экран

8. chcwn – изменение режима доступа к файлу

Файловые системы: S5 (UNIX system 5) и UFS (UNIX BCD)

S5: – Загрузочный блок (для первоначального запуска системы)

- Суперблок (содержит информацию для работы с файловой системой в це­лом); каждая копия супер­блока имеет размер 8 196 байт. В суперблоке со­держится список свободных блоков и список и – узлов (размерность файла на диске)

- Список и – узлов

- Блоки данных

UFS: – Загрузочный блок (для первоначального запуска системы)

- Суперблок

- Список и – узлов

- Список группы цилиндров

- Блоки данных

Затем повторяются.

Монтирование файловой системы – системный вызов mount. К имеющему дереву должен иметься пустой ка­талог. Он будет являться точкой монтирования. Во время выполнения mount корневой каталог файловой системы совме­щается с каталогом точкой монтирования, в результате чего образуется новая иерархия. Корневой каталог системный вызов mount не …………….. Обратный вызов – amount – отделение ветви. Все файлы должны быть закрыты. Параметр – каталог.

Интерфейс файловой системы

Для работы с файлами: Open – открыть файл (и для записи, и для чтения); Create – создать файл; Read – чтение файла; Write – запись в файле; Lseek – позиционирование текущего указателя; Close – закрытие файла. Open (name, flag [mode]) – при таком задании параметров open может создать файл.

Read (fd, buffer, count)

Указатель количество символов, которые считали

(дескриптор)

Указатель места в памяти

Read или write возвращает целое число, если считано количество байтов, считан­ных count; если достигнут ко­нец, то возвращает 0; возвращает отрицательное значение, если ошибка.

Lseek (fd, offset, ORIGIV)

           
     


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

(дескриптор) Значение смещения относительно offset

текущей позиции

Если ORIGIV = 0, то offset рассматривается как значение относительно начала файла. Если ORIGIV = 1, то смещение рассматривается относительно текущей позиции. Если ORIGIV = 2, то смещение рассматривается относи­тельно конца файла.

Разновидности файлов: обычные файлы, файлы – каталоги, специальные файлы.

Именованные программные каналы – выделяется элемент файловой системы и и – узел (информационный узел). Реали­зуется на уровне файловой системы.

Синхронизация всегда используется буферизация и cash-рование для работы с файлами. Исполь­зуются вы­зовы sink и fsink – незамедлительная запись всех файлов, хранящие в cash - па­мяти, на жесткий диск.

Защита файлов

Два идентификатора:

§ Индивидуальный идентификатор

§ Групповой идентификатор

Существует шкала ограничений: Защита данных основана на том, что идентификатор сопоставляется с пользо­вате­лем, в узле есть данные, к какой группе принадлежит пользователь. В узле шкала, показы­вающая, что может делать с файлами владелец, группа, в которую входит владелец, и все остальные пользователи. Шкала ограничений в восьме­ричной системе счисления, т.к. пер­вая машина использовала процессоры TEK, которая пользовалась восьмеричной системой счисления.

Шкала ограничений:

1. 4 000 – можно установить идентификатор пользователя или владельца.

2. Ø2nØ (при n = 1, 3, 5, 7 можно установить идентификатор группы владельцев;
при n = 0, 2, 4, 6 программа может блокировать диапазон адресов файлов).

3. 1 000 – сохранять в области подкачки образ кодового сегмента выполняе­мого файла после го выполне­ния.

4. 400 – владельцу файла разрешено чтение файла

5. 200 – владельцу файла можно дополнять или изменять файл.

6. 100 – владелец может выполнить, если файл исполнительный, или осуществ­лять поиск, если это ката­лог.

7. 40 – все пользователи группы владельцев могут читать файл

8. 20 – все пользователи группы владельцев могут модифицировать файл

9. 1 – все могут использовать, если файл исполняемый, или проводить поиск, если это каталог.

Физическая организация файла

Логическая последовательность блоков в файлах задается набором из 13 элементов. Первые 10 элементов для указания номеров первых 10 блоков. Если размер файла превы­шает 10 блоков, то в 11 элемент указывается номер блока, в котором список следующих 128 блоков файла. Если размер файла превышает 10 + 128 блоков, используется 12 блок, в котором содержатся номера 128 блоков, каждый из которых адресует 128 блоков файла. Если размер файла больше N (подсчитать) блоков, то используется 13 элемент для трех­уровневой адресации. При таком способе адресация состав­ляет …………. (подсчитать). Вся необходимая информация, кроме символьного имени, хранится в таблице – ин­декс­ный дескриптор. Индексный дескриптор имеет размер 64 байта и содержит данные о типе файлов, физическом располо­жении файла, размере, дате создания, последней моди­фикации, привилегий доступа.

Практические вопросы: Размер файловой системы 20 Гб. Какие значения 13 элементов, указывающих на блок, при размерности кластера такого-то.

Структура файловой системы EX 2

Задается из последовательности блоков, размер 1, 2, 4 кб (по умолчанию 1 кб). Блоки объединяется в группы, все группы, кроме последней, состоят из одинакового ко­личества блоков, только в последнем может быть меньше. Структура:

- загрузочный сектор

- группа блоков (суперблок, дескриптор блока, битовая карта блока, таблица индексных регистров, блоки дан­ных)

- группа блоков 2

- группа блоков 3….. т.д.

- группа блоков n

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

USER PROCCESS
USER MODE


Ядро системный вызов


(шифрование)


Аппаратура контроллер диска

Если хранить в зашифрованном виде, а при работе дешифровать, между блоками «EX 2 FS» и «CASH» необхо­димо поместить блок «ш / д».

Вопрос 47: ОС UNIX. Понятие процесса. Взаимодействие между процессами.

Процессы. Контекст процесса

Полный набор состояний процесса:

1. выполняется в режиме задачи.

2. выполняется в режиме ядра.

3. готов к запуску под управлением ядра.

4. процесс приостановлен и находится в ОП.

5. процесс готов к запуску, но программа подкачки еще должна загрузить в АЗУ.

6. процесс приостановлен, и программа выгрузила его во внешнюю память.

7. процесс возвращен из режима ядра в режим задачи.

8. процесс вновь создан и находится в переходном состоянии.

9. процесс вызывает функцию …. и прекращает свое существование.


После выполнения в режиме задачи может производиться прерывание по таймеру, обрабатываем прерывание по таймеру и возврат в ядро, либо переход в состояние резер­вирования.

Процесс описывает две структуры:

§ запись таблицы процессов (содержит поля, доступные ядру)

§ пространство процессов (содержит поля, доступные процессу)

Запись таблицы процессов:

1. поле состояния, которое идентифицирует состояние

2. поля, используемые ядром для размещения процесса в основную или внешнюю память

3. пользовательский идентификатор, устанавливающий привилегии пользователя.

4. идентификаторы процесса.

5. параметры планирования (порядок перехода из состояния ядра в состояние за­дачи).

6. различные таймеры (время выполнения в режиме ядра или задачи, количество ре­сурсов).

7. сигнал тревоги, который процесс может послать (устанавливается пользовате­лем).

8. поле сигналов, которые отправлены, но еще не обработаны.

9. вектора, описывающие реакцию на сигнал.

10. поля ошибок, в которые записываются ошибки при выполнении системных функ­ций.

11. поля значений, хранящие результат при выполнении системных функций.

12. параметры ввода – вывода.

13. имена текущих и корневых каталогов.

14. таблицы дескрипторов открытых файлов.

15. поля прав доступа (хранятся маски доступа).

Контекст процесса включает:

§ пользовательский контекст

§ регистровый контекст

§ системный контекст

Пользовательский контекст из программ и данных стека, содержимое в совместное использование простран­ства памяти.

Регистровый контекст включает счетчик команд, стек, регистры общего назначе­ния и т.д.

Системный контекст имеет статическую и динамическую часть:

Статическая часть:

§ запись в таблицу процессов, описывающих состояние процессов.

§ часть адресного пространства, выданного процессу, где хранится управляющая информация о процессе.

§ запись частной таблицы области процесса, общая таблицы, таблица страниц для преобразования виртуаль­ного адреса в физический.

Динамическая часть:

§ стек ядра (каждый процесс должен иметь свою копию стека)

§ динамическая часть системного контекста процесса (процесс выполняется в рам­ках своего контекстного уровня, количество контекстных уровней ограничи­вается поддерживаемыми уровнями прерывания (их всего 15) (всего контекстов будет 17 для процесса (по одному на каждое прерывание, 1 для системных функ­ций, 1 для пользовательского контекста))).

Действия по прерыванию:

1. при возникновении прерывания в стеке сохраняется текущий контекст и созда­ется новый.

2. определяется источник прерывания и адрес программы обработки.

3. завершается прерывание, управление возвращается ядру.

4. ядро выполняет набор команд по сохранению контекста и стека предыдущего уровня.

5. продолжается выполнение прерванного текущего уровня.

Взаимодействие с ОС:

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

Запись в таблицу областей

В записи таблицы областей:

- Указатель на индекс файла, содержание которого первоначально загружено в об­ласть

- Тип области (команды, частные области)

- Раздел области

- Местонахождение в физической памяти

- Статус (состояние, которое может принимать) состояния области (блокировано и т.д.)

- Счетчик ссылок, в котором счетчик процессов, которые ссылаются на данную об­ласть. Пока счетчик не 0, ос­вободить область нельзя

Создание процесса

PID = Fork ()

Порожденный процесс – потомок.

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

Для порожденного, PID будет иметь нулевое значение.

Fork делает:

1. отводит место в таблице под новый процесс.

2. присваивает порожденному процессу уникальный код идентификации.

3. делает логическую копию контекста родительского процесса.

4. увеличивает значение счетчика числа файлов, связанное с процессом.

5. возвращаем родительскому процессу код идентификатора дочернего, а дочернему присваивается 0.

Пользовательскому процессу не разрешается создать процесс, занимающий по­следнее место в таблице про­цесса. Доступна эта привилегия лишь суперпользователю.

Завершение процессов

При завершении дочернего процесса родительскому передается информация. Если родительский процесс за­вершился раньше, то дочерний удочеряется процессом Init (все сигналы и результаты работы). Если потомок завер­шился, а родительский процесс не го­тов получить сигнал об этом, то потомок не исчезает, данный процесс не занимает про­цессорное время, но строка в таблице процессов остается, структура ядра не освободится.

Программа, занимающаяся обслуживанием системных нужд, не имеющая интер­фейс, для NT – сервис.

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

Для информации о процессах используется механизм особой файловой системы Proc FS. Она монтируется при запуске системы как каталог Prots. Данные о файле 1 в Proc / 1, данные о файле 2 в Proc / 2.


Вопрос 48: ОС UNIX. Основные функции. Системные операции.

Системные операции

1. access (name, mode) – проверяет, имеет ли процесс право на чтение и т.д.
Проверяемый тип зависит от mode:

1 – исполнение,

2 – запись,

3 – чтение

2. alara (sec) – вызывает посылку…………………………….. Sec – число секунд до сигнала тревоги.

3. ch dir (name) – для процесса делает текущий каталог, указывающийся в пара­метре.

4. ch mod (name, mode) – изменение режима доступа к файлу.

5. dup – создает копию указанного дескриптора файла.

6. vice (INC) – увеличивает значение компонента, участвующего в вычисле­нии компонента. Пропорциональ­ность обратная.

7. Ptrace (cmd, prd, addr, data) – дает текущему процессу выполнить отладку дру­гого процесса в соответствии со зна­чением cmd:

Cmd = 0 – разрешает трассировку.

Cmd = 1; 2 – позволяет вернуть слово, расположенное по адресу адрес в простран­стве отлаженного процесса.

Cmd = 3 – позволяет вернуть слово, расположенное в пространстве отлаженного процесса по адресу.

Cmd = 4, 5 – позволяет записать значение по адресу в пространство отлаженного процесса.

Cmd =7 – заставляет отлаженный процесс возобновить свое выполнение.

Cmd = 8 – заставляет отлаженный процесс завершить свое выполнение.

Cmd = 9 – установить режим пошагового выполнения.

8. stime – устанавливает системное время и дату. Время в секундах от 00 часов 00 минут 00 секунд 1 января 1970 года (нам надо установить это время, за­тем функция отсчитает). Time – возвращает системное время (сколько про­шло с 00 часов 00 минут 00 секунд 1 января 1970 года).

9. times – возвращает время и заполняет следующую структуру (4 поля):

§ продолжительность использования процессора в режиме задачи

§ продолжительность использования процессора в режиме ядра

§ сумма нахождения процессора в режиме задачи у всех потомков

§ сумма нахождения процессора в режиме ядра у всех потомков

Системный вызов: clone. Флаги: CLONE _ VM – виртуальное пространство

_ FS – файловая система

_ FILES – таблица файлов

_ SIGHAND – таблица обработки сигналов

_ PARENT – родитель

Дочерние процессы с предком имеют общего родителя, файловую систему, таб­лицу файлов, общее адресное пространство и т.д.

Сигналы

Сигналы сообщают процессу о возникновении асинхронных событий.

Сигналы могут быть посланы функцией kill.

………….

1) Существуют сигналы, посылаемые в случае завершения выполнения про­цесса.

2) Сигналы, посылаемые в случае возникновения:

- Обращение к памяти, находящейся за пределами виртуального ад­ресного пространства

- Попытка записи в область, доступной только для чтения

- Попытка использования привилегированной команды в пользова­тельском режиме

- Различные аппаратные ошибки

3) Сигналы, посылаемые при выполнении системных функций при возникнове­нии неисправных ошибок.





Дата публикования: 2015-02-03; Прочитано: 225 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.037 с)...