- •И.Н.Акуленок, а.В.Акуленок
- •Часть I. Основы операционной системы unix Утверждено советом университета
- •Введение
- •Глава 1. История создания ос unix
- •Реализации oc unix
- •Unix на платформе Intel
- •Доля компьютеров с ос unix (1993 год)
- •Продажи unix–серверов (III квартал 2007 года)
- •1.1. Первые шаги по созданию unix
- •1.2. Исследовательские версии unix
- •1.3. Основные стандарты
- •1.3.1. Основные задачи стандартизации
- •1.4. Разработчики операционных систем
- •1.4.1. Версии at&t
- •1.4.2. Версии Microsoft/sco
- •1.4.3. Версии университета Беркли
- •1.4.4. Версии компании Sun
- •1.4.5. Версии компании Nowell
- •1.4.6. Популярные версии unix
- •1.4.7. Свободно распространяемые системы unix
- •1.5. Реализация ядра unix
- •1.5.1. Микроядро Mach
- •1.5.2. Микроядро Chorus
- •1.6 Характеристики oc unix
- •1.6.1.Файловая система
- •1.6.2. Многозадачность
- •1.6.3. Многопользовательский режим
- •1.6.4. Мобильность
- •1.6.5. Виртуальная память
- •1.6.6. Связь между задачами
- •1.6.7. Внешние устройства
- •1.6.8. Связь между компьютерами
- •1.6.9. Графический пользовательский интерфейс
- •1.6.10. Безопасность
- •1.6.11. Поддержка баз данных
- •1.6.12. Наличие стандартов
- •1.6.13. Открытость
- •1.6.14. Разработка программного обеспечения
- •1.7. Контрольные вопросы
- •1.8. Тесты
- •Глава 2. Функционирование ос unix
- •2.1. Ядро
- •2.1.1. Функции ядра
- •2.1.2. Структура ядра
- •2.1.3. Файловая подсистема
- •2.1.4. Подсистема управления процессами
- •2.1.5. Подсистема ввода/вывода
- •2.2. Командный процессор Shell
- •2.3. Программы–утилиты
- •2.4. Контрольные вопросы
- •2.5. Тесты
- •Глава 3. Процессы
- •3.1. Контекст процесса
- •3.3. Типы процессов
- •3.3.1. Системные процессы
- •3.3.2. Демоны
- •3.3.3. Прикладные процессы
- •3.4. Атрибуты процесса
- •3.4.1. Идентификатор процесса
- •3.4.2. Идентификатор родительского процесса
- •3.4.3. Приоритет процесса
- •3.4.4. Терминальная линия
- •3.4.5. Реальный и эффективный идентификаторы пользователя
- •3.4.6. Реальный и эффективный идентификаторы группы
- •3.4.7. Идентификатор терминальной группы
- •3.5. Иерархия процессов
- •3.6. Взаимодействие процессов
- •3.6.1. «Отцы», «дети», «сироты», «зомби»
- •3.7. Системные вызовы
- •3.7.1. Механизм создания процесса и запуска программы
- •3.7.2. Графический пример дерева процессов
- •3.8. Связи между процессами
- •3.8.1. Сигналы
- •Сигналы posix 1.1
- •3.8.2. Очереди сообщений
- •3.8.3. Семафоры
- •3.8.4. Совместная память
- •3.8.5. Программные каналы
- •3.8.6. Программные гнезда
- •3.9. Контрольные вопросы
- •3.10. Тесты
- •Глава 4. Файловая система unix
- •4.1. Имена файлов
- •4.2. Структура файловой системы
- •4.2.1. Загрузочный блок
- •4.2.2. Суперблок
- •4.2.3 Дескрипторы файлов
- •4.2.4. Блоки данных и свободные блоки
- •4.3. Типы файлов
- •4.3.1. Обычные файлы
- •4.3.2. Каталоги
- •4.3.4. Символические связи
- •4.3.5. Fifo – Именованные каналы
- •4.3.6. Сокеты
- •4.3.7. Обозначение типов файлов
- •Типы файлов
- •4.4. Дескриптор обычного файла
- •4.5. Дескриптор каталога
- •4.6. Дескриптор специального файла
- •4.7. Системная таблица файлов
- •4.8. Монтирование файловых систем
- •4.9. Демонтирование файловых систем
- •4.10. Проверка и восстановление файловых систем
- •4.11. Журналирование файловых систем
- •4.12. Контрольные вопросы
- •4.13. Тесты
- •Глава 5. Этапы начальной загрузки ос Unix
- •5.1. Загрузка и инициализация ядра
- •5.2. Распознавание и конфигурирование устройств
- •5.3. Создание спонтанных процессов
- •5.4. Выполнение команд оператора
- •5.5. Выполнение командных файлов запуска системы
- •5.6. Переход в многопользовательский режим
- •5.7. Контрольные вопросы
- •5.8. Тесты
- •Глава 6. Обзор командных файлов
- •6.1. Процесс init
- •6.1.1. Формат файла inittab
- •6.1.2. Уровни выполнения
- •Уровни выполнения
- •6.1.3. Дисциплины обработки процесса
- •Дисциплины обработки процесса
- •6.1.4. Запуск и этапы работы процесса init
- •6.2. Процесс rc
- •6.2.1. Сценарии запуска системы Solaris
- •6.3. Процесс cron
- •6.4. Процесс регистрации пользователей
- •6.5. Контрольные вопросы
- •6.6. Тесты
- •Глава 7. Останов системы
- •7.1. Выключение питания
- •7.2. Команда shutdown
- •7.3. Команда halt
- •7.4. Изменение уровня выполнения процесса init
- •Глава 8. Задачи системного администрирования
- •8.1. Инструменты администрирования
- •8.1.1. Администрирование aix
- •8.1.2. Администрирование hp-ux
- •8.1.3. Администрирование Solaris
- •8.1.4. Администрирование Linux
- •8.2. Пользователь root
- •8.2.1. Команда su
- •8.3. Добавление новых пользователей в систему
- •8.3.1. Файл /etc/passwd
- •Идентификаторы пользователей
- •8.3.2. Файл /etc/group
- •8.4. Контрольные вопросы
- •8.5. Тесты
- •Литература
- •Содержание
- •Глава 1. История создания ос unix 6
- •Глава 2. Функционирование ос unix 51
- •Глава 3. Процессы 75
- •Глава 4. Файловая система unix 116
- •Акуленок Ирина Николаевна Акуленок Анатолий Васильевич
- •Часть I. Основы операционной системы unix
Глава 1. История создания ос unix
Изучив данную главу, вы сможете:
получить представление об ОС UNIX;
познакомиться с исследовательскими версиями ОС UNIX;
познакомиться со стандартами ОС UNIX;
познакомиться с разработчиками разных реализаций ОС UNIX;
изучить характеристики ОС UNIX;
Операционная система является важной частью компьютерной вычислительной системы. Вычислительную систему можно считать состоящей из двух основных компонентов:
аппаратного обеспечения;
программного обеспечения.
Аппаратура включает такие устройства, как центральный процессор, память, монитор, клавиатуру, дисковые устройства и т.д., объединенные магистральным соединением, которое называется шиной.
Все программное обеспечение принято делить на две части: прикладное и системное. Прикладное программное обеспечение представляет собой то, для чего необходимы компьютеры, т.е. для выполнения желаемой задачи (например, для посылки электронной почты, редактирования, игры и т.д.).
Операционная система является фундаментальным компонентом системного программного обеспечения, который, с одной стороны, контролирует аппаратное обеспечение и управляет им, а с другой – управляет приложениями.
Большинство операционных систем разрабатывались фирмами – производителями вычислительных машин в расчете на повышение спроса на них.
Первые машины выпускались вообще без операционных систем. Они управлялись с помощью набора переключателей на пульте управления, и на такой машине, естественно, могли работать только инженеры высокой квалификации. Желанием уменьшить влияние специалистов и приблизить ЭВМ к простому пользователю и вызвало появление первых ОС.
ОС осуществляет взаимодействие между потребителями и ресурсами, распределяя ограниченные ресурсы среди многочисленных потребителей. Ресурсами являются, например, центральный процессор (CPU), диски, оперативная память, принтеры. Потребителями являются исполняющиеся программы, требующие доступ к ресурсам (рис. 1.1).
Рис. 1.1. Что такое операционная система?
Когда пользователь выполняет какую-либо программу, ОС должна выделить пространство в оперативной памяти для ее загрузки и выполнения. При выполнении программы ей разрешается доступ к центральному процессору. В системе разделения времени часто возникает ситуация, когда в один и тот же момент времени несколько программ пытаются получить доступ к процессору. Операционная система управляет тем, какая программа и в какой момент времени получит доступ к процессору.
Итак, операционная система – это программа, которая позволяет пользоваться ресурсами ЭВМ. Для этого операционная система должна обеспечить, по меньшей мере, некоторые средства для разработки и запуска программ на ЭВМ, средства управления пространством памяти ЭВМ, средства доступа к периферийным устройствам ЭВМ и некоторую файловую систему.
По современным представлениям ОС должна уметь делать следующее.
Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение (этот пункт не относится к ОС, предназначенным для прошивки в ПЗУ).
Обеспечивать управление памятью. В простейшем случае это указание единственной загруженной программе адреса, на котором кончается память, доступная для использования, и начинается память, занятая системой. В многопроцессных системах это сложная задача управления системными ресурсами.
Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски, флэш-память и т. д. Как правило, ОС управляет свободным пространством на этих носителях и структурирует пользовательские данные в виде файловых систем.
Предоставлять более или менее стандартизованный доступ к различным периферийным устройствам, таким как терминалы, модемы, печатающие устройства или двигатели, поворачивающие рулевые плоскости истребителя.
Предоставлять некоторый пользовательский интерфейс. Слово некоторый здесь сказано не случайно – часть систем ограничивается командной строкой, в то время как другие на 90% состоят из интерфейсной подсистемы. Встраиваемые системы часто не имеют никакого пользовательского интерфейса.
Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа – дисковая операционная система MS DOS.
Более развитые ОС предоставляют также следующие возможности:
параллельное (или псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач;
организацию взаимодействия задач друг с другом;
организацию межмашинного взаимодействия и разделения ресурсов;
защиту системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ;
аутентификацию (проверку того, что пользователь является тем, за кого он себя выдает), авторизацию (проверка, что тот, за кого себя выдает пользователь, имеет право выполнять ту или иную операцию) и другие средства обеспечения безопасности.
Существует несколько схем классификации операционных систем.
По числу одновременно выполняемых задач операционные системы можно разделить на два класса:
многозадачные (Unix, OS/2, Windows);
однозадачные (MS–DOS).
Многозадачный режим, который воплощает в себе идею разделения времени, называется вытесняющим (preemptive). Каждой программе выделяется квант процессорного времени, по истечении которого управление передается другой программе. Говорят, что первая программа будет вытеснена. В вытесняющем режиме работают пользовательские программы большинства коммерческих ОС.
По числу одновременно работающих пользователей ОС можно разделить на:
однопользовательские (MS–DOS, Windows 3.x);
многопользовательские (Windows NT, Unix).
Наиболее существенное отличие между этими ОС заключается в наличии у многопользовательских систем механизмов защиты персональных данных каждого пользователя.
Вплоть до недавнего времени вычислительные системы имели один центральный процессор. В результате требований к повышению производительности появились многопроцессорные системы, состоящие из двух и более процессоров общего назначения, осуществляющих параллельное выполнение команд. Поддержка мультипроцессирования является важным свойством ОС и приводит к усложнению всех алгоритмов управления ресурсами. Многопроцессорная обработка реализована в таких операционных системах, как Linux, Solaris, Windows NT, и ряде других.
UNIX, как и другие операционные системы, является слоем между аппаратурой и приложениями, которые выполняются на компьютере. В ней есть функции, которые управляют аппаратным обеспечением, и функции, которые управляют выполняющимися приложениями. Так в чем же разница между UNIX и другими операционными системами? В основном отличие в двух вещах: внутренней реализации, т.е. модульность и обширный набор системных программ, которые позволяли создать благоприятную обстановку для пользователей–программистов, и интерфейсе, который видит и эксплуатирует пользователь. В рамках этого курса мы рассмотрим и то, и другое. Большинство пользователей UNIX должны знать интерфейс, хотя могут и не понимать внутренней работы UNIX.
Многие поставщики мэйнфреймов и рабочих станций создали версии UNIX для своих машин.
Наиболее распространенные реализации системы UNIX на рабочих станциях представлены в табл.1.1.
Таблица 1.1
