Струкура ОС (+повторение)
(повторение) Свободное лицензирование
- Право использования
- Право изучения и изменения
- Право распространения
- Право распространения изменённых версий
Так выглядит «разрешительная» лицензия.
Для защиты от злоупотреблений (превращения свободного кода в несвободный) ∃ дополнительный пункт
- (Копилефт) При распространении производная лицензия должна включать все 5 пунктов
Например, GNU Public License.
Дополнение 1: лицензирование библиотек для того, чтобы с ними можно было собирать несвободные программы.
Строго говоря, GPL не подходит, хотя изменения в исходный текст библиотек не вносятся. Дело в h-файлах (для Си, например): формально исходный текст библиотеки использовался для сборки (в случае C++ даже код какой-то сгенерировался)
- Лицензия LGPL разрешает такое использование
- Результат: проприетарные программы не на ЧЗЧ, а на Qt
Дополнение 2: лицензирование исходного кода веб-сервисов и вообще всего, что не распространяется
Строго говоря, GPL не предписывает распространять модифицированные программы и их код, разрешая модифицировать и запускать. Поэтому исходный код всяких одноразовых веб-сервисов, от Google до мелких стартапов, недоступен
- Лицензия AGPL предписывает раскрывать исходный код общедоступных сервисов
- Это полезно также для аудита кода
Дополнение 3: составной продукт (например, дистрибутив), образованный как сборник без модификации компонентов, не обязан иметь свободную лицензию, если все его компоненты всё-таки распространяются по свободной лицензии
(повторение) Свободное сообщество
- Ядро (костяк) — ответстенность
- Разработчики (актив) *10 — грамотность
- Пользователи (аура) *100+ — активность
Основания:
- Информационная связность
- в т. ч. использование технических средств
- Произвольность мотивации
- в т. ч. свобода входа-выхода
- Динамическая иерархия
- Предоставление технологических преимуществ членам сообщества
«Сетевая мораль» свободного сообщества:
- Никто никому ничего не должен
- ⇒ Каждый сам принимает на себя посильную личную ответственность
- Свобода входа-выхода
- Общее дело
- Цель дела — каждый из сообщества, т. е. «все люди», начиная с тебя самого
- Т. е. примерно так: «надо, чтобы было хорошо сообществу, а это значит, что как минимум в тех областях, в которых я ответственен, хорошо мне»;
- (Например, сопровождающий пакет сам этим пакетом пользуется)
Обратная сторона: мы не судим человека на основании того, что он делает вне сообщества
Ср. Иммануил Кант и его категорический императив (т. е. «безусловный моральный закон», хорошая статья, кстати). Этот закон имеет две формулировки
- Предписывающая («Основы метафизики нравственности», 1785):
- Поступай только согласно такой максиме, руководствуясь которой ты в то же время можешь пожелать, чтобы она стала всеобщим законом
- Фильтрующая («Критика практического разума», 1788):
- Поступай так, чтобы ты всегда относился к человечеству и в своем лице, и в лице всякого другого также как к цели и никогда не относился бы к нему только как к средству
Заметим, как эти непохожие формулировки сходятся в сетевой морали.
Архитектура ОС
Дистрибутив: комплект ПО для развёртывания и сопровождения программного продукта, решающего определённый широкий класс задач
Дистрибутив ОС?
ОС: программный комплекс для
- Унификации
- Разделения
- Учёта
ресурсов ЭВМ
Ресурсы:
- Машинное время
- Оперативная память
- Внешние устройства
Архитектура UNIX-подобной системы: (легенда)
« → » — предоставляет программный интерфейс
« → » — предоставляет текстовый командный интерфейс
« → » — предоставляет какой-то межпроцессный интерфейс (сеть, POSIX-сообщения, сокеты и т. п.)
« → » — пользуется программным интерфейсом
« → » — пользуется командным интерфейсом
« → » — пользуется межпроцессным интерфейсом
« → » — предоставляет какой-то прикладной интерфейс (удобный для решения прикладных задач)
По сравнению с программным интерфейсом (!), любой другой межпроцессный интерфейс — очень медленный, поэтому его можно применять только
- При общении с пользователем (его интерфейс — самый медленный)
При передаче редких команд и небольших данных (как от того же пользователя)
- Supervisor mode
→ Ядро: базовые функции, предоставляет системные вызовы
- Модули (загружаемые компоненты ядра)
User mode (знаком « → » отмечен командный интерфейс)
→ Системные утилиты как командные обёртки системных вызовов →
→ Библиотеки (в т. ч. высокоуровневые программные обёртки над системными вызовами) →
→ Пользовательские утилиты как командные обёртки над всяческими библиотеками
→ Демоны →
→ Ещё библиотеки → (+ )
→ Ещё утилиты → (+ )
→ Командная оболочка (shell) → (+ )
- ЯПВУ
- ИКС
- Оболочка
→ Приложения →
→ прикладные библиотеки, реализующие разнообразные прикладные абстракции →
TODO: здесь должна быть картинка
Именно наличие оболочки делает систему универсальным конструктором для задач обработки структурированно-текстовой информации
- просто структурирванно-текстовой (с чего начинали ещё Денис и Кен)
сводящейся к обработке текстов
в т. ч. автоматизация любой задачи, решаемой вручную