![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Первыми пользователями 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
Основные функции ядра:
Ядро:
Система обладает высокой мобильностью, все части системы, кроме ядра, написаны на Си. Для перен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 взаимодействует с драйверами устройств.
|
Ядро системный вызов
(шифрование)
Аппаратура контроллер диска
Если хранить в зашифрованном виде, а при работе дешифровать, между блоками «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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!