Автор работы: Пользователь скрыл имя, 19 Января 2014 в 18:12, реферат
Термин Unix и не вполне эквивалентный ему UNIX используется в разных значениях. Начнем со второго из терминов, как более простого. В двух словах, UNIX (именно в такой форме) - зарегистрированная торговая марка, первоначально принадлежавшая корпорации AT&T, сменившая за свою долгую жизнь много хозяев и ныне являющаяся собственностью организации под названием Open Group. Право на использование имени UNIX достигается путем своего рода "проверки на вшивость" - прохождения тестов соответствия спецификациям некоей эталонной ОС (Single Unix Standard - что в данном случае можно перевести как Единственный Стандарт на Unix).
Что такое Unix?
Где взять бесплатный Unix?
Основная часть. (Описание Unix).
1. Основные понятия Unix.
2. Файловая система.
2.1. Типы файлов.
3. Командный интерпретатор.
4. Ядро ОС UNIX.
4.1. Общая организация традиционного ядра ОС UNIX;
4.2. Основные функции ядра;
4.3. Принципы взаимодействия с ядром;
4.4. Принципы обработки прерываний.
5. Управление вводом/выводом.
5. 1. Принципы системной буферизации ввода/вывода;
5. 2. Системные вызовы для управления вводом/выводом.
6. Интерфейсы и входные точки драйверов.
6. 1. Блочные драйверы;
6. 2. Символьные драйверы;
6. 3. Потоковые драйверы.
7. Команды и утилиты.
7. 1. Организация команды в ОС UNIX;
7. 2. Перенаправление ввода/вывода и организация конвейера;
7. 3. Встроенные, библиотечные и пользовательские команды;
7. 4. Программирование на командном языке.
8. Средства графического интерфейса пользователей.
8.1. Идентификаторы пользователя и группы пользователей;
8.2. Защита файлов;
8.3. Перспективные ОС, поддерживающие среду ОС UNIX.
Заключение.
Основные отличия Unix от других OS.
Области применения Unix.
3. Командный интерпретатор
В Unix практически всегда входят два командных интерпретатора - sh (shell) и csh (C-подобный shell). Кроме них еще бывают bash (Bourne), ksh (Korn), и другие. Не вдаваясь в подробности, приведу общие принципы:
Все команды, кроме изменения текущей директории, установки переменных окружения (environment) и операторов структурного программирования - внешние программы. Программы эти как правило располагаются в каталогах /bin и /usr/bin. Программы системного администрирования - в каталогах /sbin и /usr/sbin.
Команда состоит из имени
запускаемой программы и
В одной командной строке можно дать несколько команд. Команды могут быть разделены; (последовательное выполнение команд), & (асинхронное одновременное выполнение команд), | (синхронное выполнение, стандартный вывод stdout первой команды будет подан на стандартный ввод stdin второй).
Кроме того, можно брать
стандартный ввод из файла, включив
в качестве одного из аргументов"<файл"
(без кавычек); можно направить
стандартный вывод в файл,
Если надо получить информацию по какой-либо команде, дайте команду "manимя_команды". На экран это будет выдаваться через программу"more" - посмотрите, как с ней управляться на вашем Unix'е командой`man more`.
4. Ядро ОС UNIX
Как и в любой другой
многопользовательской
Удобство и эффективность современных вариантов ОС UNIX не означает, что вся система, включая ядро, спроектирована и структуризована наилучшим образом. ОС UNIX развивалась на протяжении многих лет (это первая в истории операционная система, которая продолжает завоевывать популярность в таком зрелом возрасте -уже больше 25 лет). Естественно, наращивались возможности системы, и, как это часто бывает в больших системах, качественные улучшения структуры ОС UNIX не поспевали за ростом ее возможностей.
В результате, ядро большинства современных коммерческих вариантов ОС UNIX представляет собой не очень четко структуризованный монолит большого размера. По этой причине программирование на уровне ядра ОС UNIX продолжает оставаться искусством (если не считать отработанной и понятной технологии разработки драйверов внешних устройств). Эта недостаточная технологичность организации ядра ОС UNIX многих не удовлетворяет. Отсюда стремление к полному воспроизведению среды ОС UNIX при полностью иной организации системы.
По причине наибольшей распространенности часто обсуждается ядро UNIX System V (можно считать его традиционным).
4.1 Общая организация
Одно из основных достижений ОС UNIX состоит в том, что система обладает свойством высокой мобильности. Смысл этого качества состоит в том, что вся операционная система, включая ее ядро, сравнительно просто переносится на различные аппаратные платформы. Все части системы, не считая ядра, являются полностью машинно-независимыми. Эти компоненты аккуратно написаны на языке Си, и для их переноса на новую платформу (по крайней мере, в классе 32-разрядных компьютеров) требуется только перекомпиляция исходных текстов в коды целевого компьютера.
Конечно, наибольшие проблемы связаны с ядром системы, которое полностью скрывает специфику используемого компьютера, но само зависит от этой специфики. В результате продуманного разделения машинно-зависимых и машинно-независимых компонентов ядра (видимо, с точки зрения разработчиков операционных систем, в этом состоит наивысшее достижение разработчиков традиционного ядра ОС UNIX)удалось добиться того, что основная часть ядра не зависит от архитектурных особенностей целевой платформы, написана полностью на языке Си и для переноса на новую платформу нуждается только в перекомпиляции.
Однако сравнительно небольшая
часть ядра является машинно-зависимой
и написана на смеси языка Си и
языка ассемблера целевого процессора.
При переносе системы на новую
платформу требуется
Машинно-зависимая часть традиционного ядра ОС UNIX включает следующие компоненты:
раскрутка и инициализация системы на низком уровне (пока это зависит от особенностей аппаратуры);
первичная обработка внутренних и внешних прерываний;
управление памятью (в той части, которая относится к особенностям аппаратной поддержки виртуальной памяти);
переключение контекста процессов между режимами пользователя и ядра;
связанные с особенностями
целевой платформы части
4.2 Основные функции ядра
К основным функциям ядра ОС UNIX принято относить следующие:
(a) Инициализация системы
- функция запуска и раскрутки.
Ядро системы обеспечивает
(b) Управление процессами
и нитями - функция создания, завершения
и отслеживания существующих
процессов и нитей ("процессов"
(c) Управление памятью
- функция отображения
(d) Управление файлами
- функция, реализующая
(e) Коммуникационные средства - функция, обеспечивающая возможности обмена данными между процессами, выполняющимися внутри одного компьютера (IPC - Inter-Process Communications), между процессами, выполняющимися в разных узлах локальной или глобальной сети передачи данных, а также между процессами и драйверами внешних устройств.
(f) Программный интерфейс
- функция, обеспечивающая
4.3 Принципы взаимодействия с ядром
В любой операционной системе
поддерживается некоторый механизм,
который позволяет
Название не изменяет смысл, который состоит в том, что для обращения к функциям ядра ОС используются "специальные команды" процессора, при выполнении которых возникает особого рода внутреннее прерывание процессора, переводящее его в режим ядра (в большинстве современных ОС этот вид прерываний называется trap -ловушка). При обработке таких прерываний (дешифрации) ядро ОС распознает, что на самом деле прерывание является запросом к ядру со стороны пользовательской программы на выполнение определенных действий, выбирает параметры обращения и обрабатывает его, после чего выполняет "возврат из прерывания", возобновляя нормальное выполнение пользовательской программы.
Понятно, что конкретные
механизмы возбуждения
Для пользователя библиотека системных вызовов представляет собой обычную библиотеку заранее реализованных функций системы программирования языка Си. При программировании на языке Си использование любой функции из библиотеки системных вызовов ничем не отличается от использования любой собственной или библиотечной Си-функции. Однако внутри любой функции конкретной библиотеки системных вызовов содержится код, являющийся, вообще говоря, специфичным для данной аппаратной платформы.
4.4 Принципы обработки прерываний
Конечно, применяемый в операционных системах механизм обработки внутренних и внешних прерываний в основном зависит от того, какая аппаратная поддержка обработки прерываний обеспечивается конкретной аппаратной платформой. К счастью, к настоящему моменту (и уже довольно давно) основные производители компьютеров де-факто пришли к соглашению о базовых механизмах прерываний.
Если говорить не очень точно и конкретно, суть принятого на сегодня механизма состоит в том, что каждому возможному прерыванию процессора (будь то внутреннее или внешнее прерывание) соответствует некоторый фиксированный адрес физической оперативной памяти. В тот момент, когда процессору разрешается прерваться по причине наличия внутренней или внешней заявки на прерывание, происходит аппаратная передача управления на ячейку физической оперативной памяти с соответствующим адресом - обычно адрес этой ячейки называется "вектором прерывания" (как правило, заявки на внутреннее прерывание, т.е. заявки, поступающие непосредственно от процессора, удовлетворяются немедленно).
Дело операционной системы - разместить в соответствующих ячейках оперативной памяти программный код, обеспечивающий начальную обработку прерывания и инициирующий полную обработку.
В основном, ОС UNIX придерживается общего подхода. В векторе прерывания, соответствующем внешнему прерыванию, т.е. прерыванию от некоторого внешнего устройства, содержатся команды, устанавливающие уровень выполнения процессора (уровень выполнения определяет, на какие внешние прерывания процессор должен реагировать незамедлительно) и осуществляющие переход на программу полной обработки прерывания в соответствующем драйвере устройства. Для внутреннего прерывания(например, прерывания по инициативе программы пользователя при отсутствии в основной памяти нужной страницы виртуальной памяти, при возникновении исключительной ситуации в программе пользователя и т.д.) или прерывания от таймера в векторе прерывания содержится переход на соответствующую программу ядра ОС UNIX.
5. Управление вводом/выводом
Традиционно в ОС UNIX выделяются три типа организации ввода/вывода и, соответственно, три типа драйверов. Блочный ввод/вывод главным образом предназначен для работы с каталогами и обычными файлами файловой системы, которые на базовом уровне имеют блочную структуру. На пользовательском уровне теперь возможно работать с файлами, прямо отображая их в сегменты виртуальной памяти. Эта возможность рассматривается как верхний уровень блочного ввода/вывода. На нижнем уровне блочный ввод/вывод поддерживается блочными драйверами. Блочный ввод/вывод, кроме того, поддерживается системной буферизацией.
Символьный ввод/вывод служит для прямого (без буферизации) выполнения обменов между адресным пространством пользователя и соответствующим устройством. Общей для всех символьных драйверов поддержкой ядра является обеспечение функций пересылки данных между пользовательскими и ядерным адресными пространствами.
Наконец, потоковый ввод/вывод похож на символьный ввод/вывод, но по причине наличия возможности включения в поток промежуточных обрабатывающих модулей обладает существенно большей гибкостью.
5. 1 Принципы системной
Традиционным способом снижения накладных расходов при выполнении обменов с устройствами внешней памяти, имеющими блочную структуру, является буферизация блочного ввода/вывода. Это означает, что любой блок устройства внешней памяти считывается прежде всего в некоторый буфер области основной памяти, называемой в ОС UNIX системным кэшем, и уже оттуда полностью или частично (в зависимости от вида обмена) копируется в соответствующее пользовательское пространство.
Принципами организации
традиционного механизма
Эта традиционная схема буферизации вошла в противоречие с развитыми в современных вариантах ОСUNIX средствами управления виртуальной памятью и в особенности с механизмом отображения файлов в сегменты виртуальной памяти. Поэтому в System V Release 4появилась новая схема буферизации, пока используемая параллельно со старой схемой.