- •4 Курс, 1 семестр
- •Оглавление
- •1 Введение в ос unix
- •1.1 История создания
- •1.2 Базовые концепции
- •1.3 Архитектура unix
- •1.4 Пользователи системы
- •1.5 Пользовательская среда Unix.
- •2 Файловая подсистема
- •2.1 Понятие
- •2.2 Логическая структура файловой системы
- •2.3 Имена файлов в ос unix
- •2.4 Типы файлов
- •2.5 Права доступа к файлам
- •2.6 Физическое размещение файловой системы
- •2.7 Особенности размещения файловой системы sVfs
- •2.8 Особенности размещения файловой системы ffs (ufs)
- •2.9 Монтирование файловых систем
- •2.10 Восстановление файловой системы
- •2.11 Типы файловых систем unix
- •3 Подсистема управления процессами
- •3.1 Понятие процесса
- •3.2 Логическая организация процессов
- •3.3 Жизненный цикл процесса
- •3.4 Реализация процессов
- •3.4.1 Состав процесса
- •3.4.2 Структуры управления процессом
- •3.4.3 Файловая система /proc
- •3.5 Нити (потоки)
- •Причины появления нитей
- •Типы нитей
- •3) Прикладные нити. Существует возможности поддержки нитей полностью на прикладном уровне, при этом ядру об их существовании ничего не известно.
- •3.5 Планирование
- •3.5.1 Задачи планировщика
- •3.5.2 Приоритеты процессов
- •3.5.3 Реализация планировщика
- •3.5.4 Расчет приоритета
- •3.5.5 Особенности планирования в Linux
- •3.6 Взаимодействие между процессами (Interprocess Communication, ipc)
- •3.6.1 Введение
- •3.6.2 Взаимодействие родственных процессов
- •3.6.3 Взаимодействие произвольных процессов
- •Разделяемая память.
- •Передача сообщений.
- •Семафоры.
- •3.6.4 Межпроцессное взаимодействие с помощью файловой системы
- •4 Управление памятью
- •4.1 Понятие виртуальной памяти
- •4.2 Свопинг
- •4.3 Страничное замещение
- •4.4 Стратегия замещения страниц
- •5 Подсистема ввода-вывода
- •5.1 Основные задачи
- •5.2 Типы устройств ввода-вывода в ос
- •5.3 Общая схема
- •5.4 Драйвера
- •5.5 Буферизация
- •5.6 Поддержка операций ввода-вывода
- •6 Unix в сетях
- •6.1 Конфигурация tcp/ip
- •6.2 Основные сетевые утилиты
- •6.3 Основные сетевые интерфейсы
- •6.4 Доступ к сетевым ресурсам
- •6.5 Сетевые службы Unix
1.2 Базовые концепции
UNIX существует уже четыре десятилетия. UNIX - многозадачная, многопоточная, многопользовательская операционная система разделения времени.
UNIX является сетевой ОС, основной областью ее применения остаются крупные корпоративные сети со стеком протоколов TCP/IP за счет высокой надежности, возможности легкого масштабирования сети.
Эта операционная система в большей степени ориентирована на программирующих профессионалов, а не на "рядовых" пользователей как Windows.
Базовые концепции:
мобильность исходного кода - возможность портирования на компьютерах различной архитектуры;
организация процессов - вытесняющая многозадачность на основе процессов, работающих в изолированных адресных пространствах в виртуальной памяти;
взаимодействие процессов - реализует синхронизацию и коммуникацию параллельных процессов. поддержка асинхронных процессов;
файловая система – иерархическая с поддержкой жестких ссылок;
унификация ввода-вывода - поддержка независимых от устройств операций ввода-вывода (через специальные файлы устройств);
высокая технологичность - поддержка многочисленных инструментальных средств для разработки прикладного и системного программного обеспечения;
стандартный интерфейс для программ (программные каналы, IPC) и пользователей (командный интерпретатор, не входящий в ядро ОС);
встроенные средства учета использования системы.
Преимущества UNIX
Рассмотрим причины популярности UNIX.
Способ распространения системы. Корпорация BTL продавала лицензии и исходные коды системы по достаточно низкой цене. Поэтому UNIX стала популярной среди многих пользователей по всему миру. Так как в комплект поставки входили исходные коды, пользователи имели возможность экспериментировать с ними, улучшать их, а так же обмениваться друг с другом созданными изменениями. Корпорация BTL включала многие нововведения в следующие версии системы. Разработчики из Беркли действовали также. Учебные заведения, коммерческие организации и хакеры-энтузиасты из разных стран все принимали участие в развитии системы. Это был открытый процесс. Многие производители коммерческих вариантов UNIX поддержали концепцию открытых систем и тоже сделали свои разработки доступными.
Хороший дизайн UNIX. Красота в краткости. Ядро небольшого размера имело минимальный набор основных служб. Кроме того, был разработан набор полезных утилит. Механизм конвейера совместно с оболочкой (shell) позволял пользователям комбинировать эти утилиты различными способами и создавать свои инструменты.
Унифицированный интерфейс с устройствами ввода-вывода. Все устройства представлены как файлы. Система позволяет пользователям применять один и тот же набор системных вызовов для доступа и работы с различными устройствами, как с файлами. Разработчики могут не заботиться, с чем именно производится обмен, с файлом, терминалом, принтером или другим устройством.
Переносимость. Большая часть ядра написана на языке С. Система, написанная на ассемблере, выигрывала в производительности на 20%, а ее объем был на 20-40% меньше от объема системы, переписанной на С. Использование С позволило переносить UNIX на новые аппаратные платформы. Первая реализация системы была для PDP-11 и затем была перенесена на VAX-11.
Многозадачная и многопользовательская система.
Большое количество приложений, начиная от текстовых редакторов и заканчивая системами управления базами данных.
Недостатки UNIX
Пользовательские приложения. UNIX это замечательная ОС однако, большинству пользователей нужна не сама система, а определенные приложения. Пользователей не интересует структура файловой системы или модель вычислений. Они хотят работать с определенными программами (например, текстовыми редакторами, финансовыми пакетами или программами для создания изображений), потратив на это минимум усилий.
Графический интерфейс. Пользователям нужен простой унифицированный графический интерфейс. В первых системах UNIX его не было и пользователям это не нравилось.
Как сказал Ритчи: ”UNIX является простой и понятной системой, но чтобы понять и принять ее простоту, требуется гений (или, как минимум, программист)”. Получилось так, что UNIX, требует от пользователей, желающих эффективно работать в системе, творческого мышления и определенной изобретательности. Однако большинство пользователей предпочитают простые в изучении интегрированные многофункциональные программы, подобные тем, что применяются на персональных компьютерах под управлением Windows.
