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

10

Лекция 14

Огляд архітектури операційних систем сімейства UNIX/LINUX. Їх загальні характеристики, особливості та відмінності.

Питання до розгляду: Интерфейсы системы UNIX. Оболочка UNIX. Утилиты UNIX. Структура ядра. Процессы в системе UNIX. Потоки в UNIX. Потоки в системе Linux. Планирование в системе UNIX. Планирование в системе Linux.

Мы рассмотрим общее введение в операционную систему UNIX и Linux как ее модификацию. Разные версии системы UNIX различаются в мелких деталях, однако рассматриваемый нами материал применим ко всем версиям системы. Основное внима­ние будет уделено тому, как система UNIX устроена внутри.

Если учитывать историю развития семейства ОС UNIX и их строгое соответствие стандарту POSIX, то станет ясно, что ОС Linux имеет очень много общего с ОС UNIX. Например, более 80 % от приблизительно 150 системных вызовов Linux представ­ляют собой точные копии соответствующих системных вызовов в POSIX, BSD или System V. Таким образом в первом приближении большая часть описания систе­мы UNIX применимо и к LINUX. Там же где UNIX и Linux существенно различаются (например, в алгоритме планирова­ния), то мы будем специально это отмечать.

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

Сравнительный анализ характеристик ядра Linux, которые отличают его от других разновидностей Unix.

• Ядро Linux поддерживает динамическую загрузку модулей ядра. Хотя ядро Linux и является монолитным, оно дополнительно поддерживает динамическую загрузку и выгрузку исполняемого кода ядра по необходимости.

• Ядро Linux поддерживает симметричную многопроцессорную обработку (SMP). Хотя большинство коммерческих вариантов операционной системы Unix сейчас поддерживает SMP, большинство традиционных реализаций ОС Unix такой поддержки не имеет.

• Ядро Linux является преемптивным. В отличие от традиционных вариантов ОС Unix, ядро Linux в состоянии вытеснить выполняющееся задание, даже если это задание работает в режиме ядра. Среди коммерческих реализаций ОС Unix преемптивное ядро имеют только операционные системы Solaris и IRIX.

• В ядре Linux используется интересный подход для поддержки многопоточности (threads): потоки ни чем не отличаются от обычных процессов. С точки зрения ядра все процессы одинаковы, просто некоторые из них имеют общие ресурсы.

• В ядре Linux отсутствуют некоторые функции ОС Unix, которые считаются плохо реализованными, как, например, поддержка интерфейса STREAMS, или отвечают "глупым" стандартам.

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

Интерфейсы системы unix

Операционную систему UNIX можно рассматривать в виде пирамиды (рис. 1). У основания пирамиды располагается аппаратное обеспечение, состоящее из цен­трального процессора, памяти, дисков, терминалов и других устройств. На голом «железе» работает операционная система UNIX. Ее функция заключается в управ­лении аппаратным обеспечением и предоставлении всем программам интерфейса системных вызовов. Эти системные вызовы позволяют программам создавать процессы, файлы и прочие ресурсы, а также управлять ими.

Рис. 1. Уровни операционной системы UNIX

Программы обращаются к системным вызовам, помещая аргументы в регист­ры центрального процессора (или иногда в стек) и выполняя команду -.эмулиро­ванного прерывания для переключения для переключения из пользовательского режима в режим ядра и передачи управления операционной системе UNIX. Поскольку на языке С невозможно написать команду эмулированного прерывания, то этим занимаются библиотечные функции, по одной на системный вызов. Эти процедуры написаны на ассемблере, но они могут вызываться из программ, написанных на С. Каждая такая процедура помещает аргументы в нужное место и выполняет команду эму­лированного прерывания TRAP. Таким образом, чтобы обращаться к системному вызову read, программа на С должна вызвать библиотечную процедуру read. Кста­ти в стандарте POSIX определен именно интерфейс библиотечных функций, а не интерфейс системных вызовов. Другими словами, стандарт POSIX определяет библиотечные процедуры, соответствующие системным вызовам, их параметры, что они должны делать и какой результат возвращать. В стандарте даже не упоми­наются фактические системные вызовы.

Помимо операционной системы и библиотеки системных вызовов, все вер­сии UNIX содержат большое количество стандартных программ, некоторые из них описываются стандартом POSIX 1003.2, тогда как другие могут различаться в разных версиях UNIX. К этим программам относятся компиляторы, редакторы, командная оболочка. Именно эти программы и запускаются пользователем с терминала,

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

Несмотря на то, что именно последний интерфейс большинство пользователей считает системой UNIX, в действительности он не имеет практически никакого отношения к самой операционной системе и легко может быть заменен.

Оболочка UNIX

У многих версий системы UNIX имеется графический интерфейс пользователя, схожий с интерфейсами примененными на компьютере Macintosh и впоследствии в системе Windows. Однако многие программисты UNIX до сих пор предпочитают интерфейс командной строки называемый оболочкой (shell). По­добный интерфейс значительно быстрее в использовании, существенно мощнее, проще расширяется и не требует использования мыши. Система UNIX полностью поддерживает графическое окружение X Windows.

Утилиты UNIX

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

1. Команды управления файлами и каталогами

2. Фильтры

3. Средства разработки программ, такие как текстовые редакторы и компи­ляторы

4. Текстовые процессоры

5. Системное администрирование

6. Разное

Стандарт POSIX 1003.2 определяет синтаксис и семантику менее 100 из этих программ, в основном относящихся к первым 3 категориям. Идея стандарти­зации данных программ заключается в том, чтобы можно было писать сценарии оболочки, которые работали бы на всех системах UNIX. Помимо этих стандарт­ных утилит, существует еще масса прикладных программ, таких как web-браузеры, программы просмотра изображений и т. д.

Некоторые команды перечислены еще раз в табл.l вместе с кратким описанием. Во всех версиях UNIX есть эти про­граммы, а также многие другие.

Таблица 1. Некоторые утилиты UNIX, требуемые стандартом POSIX

Программа

Назначение

cat

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

chmod

Изменение режима защиты файла

ср

Копирование файлов

cut

Вырезание колонок текста из файла

grер

Поиск определенной последовательности символов в файла

head

Извлечение из файла первых строк

ls

Распечатка каталога

make

Компиляция файлов для создания двоичного файла

mkdir

Создание каталога

od

Шестнадцатеричный дамп файла

pasta

Вставка колонок текста а файл

рr

Форматирование файла для печати

rm

Удаление файлов

rmdir

Удаление каталога

sort

Сортировка строк файла по алфавиту

tail

Извлечение из файла последних строк

tr

Преобразование символов из одного набора в другой

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