
- •И.Н.Акуленок, а.В.Акуленок
- •Часть 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.6.11. Поддержка баз данных
Благодаря тому, что UNIX является многозадачной, многопользовательской операционной системой с хорошо развитыми средствами связи между задачами, мощными коммуникационными возможностями и высоким уровнем защиты данных, крупнейшие производители систем управления базами данных, такие как Informix Inc. или Oracle Inc., выпускают наиболее полные и совершенные версии своих продуктов именно для UNIX.
1.6.12. Наличие стандартов
Несмотря на многообразие версий UNIX, основой всего семейства являются принципиально одинаковая архитектура и ряд стандартных интерфейсов. Опытный администратор без большого труда сможет обслужить другую версию системы, а для пользователей переход на другую версию оказывается незаметным.
1.6.13. Открытость
Первое, самое очевидное преимущество открытых систем (то есть систем, исходный код которых доступен публике) состоит в том, что каждый может взять исходный код продукта, откомпилировать его самостоятельно и получить операционную систему – такую, как ему хотелось. В любой момент вы можете просмотреть этот исходный код и убедиться, что в нем нет вредоносных "закладок", которые на официальном языке называются "недокументированными возможностями". Если вы заподозрили, что система работает с ошибками, вы сами можете обнаружить источник ошибки в исходном коде.
Второе преимущество открытой системы состоит в том, что она бесплатна. Не существует продуктов с открытым кодом, которые бы продавались за деньги.
С этим связано и третье преимущество – это удобная и качественная поддержка. Качество поддержки в этом случае может быть выше, чем у тех систем, которые сами по себе продаются за деньги, потому что разработчику хочется признания коллег, а не насмешек, и код часто оказывается эффективным, понятным и хорошо откомментированным.
Четвертое преимущество открытых систем – широкое тестирование и быстрота обновлений. Вокруг каждого открытого продукта образуется не только группа разработчиков, но и сообщество пользователей, которые после выхода свежей версии быстро обнаруживают ошибки и рассказывают о них разработчикам, а те быстро исправляют ошибки и выпускают обновления.
Пятое преимущество – сертифицировать открытый код проще, ибо не требуется никаких согласований для передачи его в сертифицирующую организацию.
И последнее преимущество открытых систем заключается в том, что подавляющее большинство открытых систем не подвержены заражению существующими компьютерными вирусами. Это не значит, что открытость системы спасает ее от вторжения, это лишь подчеркивает тот факт, что пока количество вирусов для открытых программ невелико, а безопасность этих программ разработчики поддерживают на высоком уровне.
1.6.14. Разработка программного обеспечения
Разработка программного обеспечения – это главное направление при создании ОС UNIX. Операционная система UNIX создавалась программистами и для программистов. Ведь Кен Томпсон и Деннис Ритчи решили просто создать более удобную программную среду. Это объясняет некоторые уникальные качества UNIX. Ограниченность аппаратных ресурсов потребовала создания компактного и эффективного ядра и гибкой системы управления файлами. Единственной заранее поставленной целью было получение такой системы, которая была бы удобной для программиста.
Таким образом, ОС UNIX появилась первоначально как инструмент для программистов, предназначенная для создания инструментальных средств. Конечные пользователи здесь учитывались лишь как самое последнее звено этой цепочки.
Разработчики UNIX были мало заинтересованы требованиями пользователей и не были ограничены догматическим представлением о том, каким должен быть идеальный пользовательский интерфейс. Вместо этого они создали набор инструментальных средств, допускающих создание различных оболочек.
Обширное и бурно развивающееся семейство операционных систем Unix оказало огромное идейное влияние на развитие других операционных систем в 80-е и 90-е годы XX столетия.
Применения систем семейства крайне разнообразны, начиная от встраиваемых приложений реального времени, включая графические рабочие станции для САПР и геоинформационных систем, и заканчивая серверами класса предприятия и массивно параллельными суперкомпьютерами. Некоторые важные рыночные ниши, например передачу почты и другие структурные сервисы Internet, системы семейства Unix занимают практически монопольно.