Differences between revisions 5 and 6
Revision 5 as of 2016-10-16 18:33:01
Size: 9109
Editor: FrBrGeorge
Comment:
Revision 6 as of 2016-10-16 19:32:04
Size: 9644
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 106: Line 106:

Именно наличие оболочки делает систему универсальным конструктором для задач обработки структурированно-текстовой информации
 * просто структурирванно-текстовой (с чего начинали ещё Денис и Кен)
 * ''сводящейся'' к обработке текстов
 * в т. ч. ''автоматизация любой задачи'', решаемой вручную

Струкура ОС (+повторение)

(повторение) Свободное лицензирование

  1. Право использования
  2. Право изучения и изменения
  3. Право распространения
  4. Право распространения изменённых версий

Так выглядит «разрешительная» лицензия.

Для защиты от злоупотреблений (превращения свободного кода в несвободный) ∃ дополнительный пункт

  1. (Копилефт) При распространении производная лицензия должна включать все 5 пунктов

Например, GNU Public License.

Дополнение 1: лицензирование библиотек для того, чтобы с ними можно было собирать несвободные программы.

  • Строго говоря, GPL не подходит, хотя изменения в исходный текст библиотек не вносятся. Дело в h-файлах (для Си, например): формально исходный текст библиотеки использовался для сборки (в случае C++ даже код какой-то сгенерировался)

  • Лицензия LGPL разрешает такое использование
    • Результат: проприетарные программы не на ЧЗЧ, а на Qt

Дополнение 2: лицензирование исходного кода веб-сервисов и вообще всего, что не распространяется

  • Строго говоря, GPL не предписывает распространять модифицированные программы и их код, разрешая модифицировать и запускать. Поэтому исходный код всяких одноразовых веб-сервисов, от Google до мелких стартапов, недоступен

  • Лицензия AGPL предписывает раскрывать исходный код общедоступных сервисов
    • Это полезно также для аудита кода

Дополнение 3: составной продукт (например, дистрибутив), образованный как сборник без модификации компонентов, не обязан иметь свободную лицензию, если все его компоненты всё-таки распространяются по свободной лицензии

(повторение) Свободное сообщество

  1. Ядро (костяк) — ответстенность
  2. Разработчики (актив) *10 — грамотность
  3. Пользователи (аура) *100+ — активность

Основания:

  1. Информационная связность
    • в т. ч. использование технических средств
  2. Произвольность мотивации
    • в т. ч. свобода входа-выхода
  3. Динамическая иерархия
  4. Предоставление технологических преимуществ членам сообщества

«Сетевая мораль» свободного сообщества:

  • Никто никому ничего не должен
    • ⇒ Каждый сам принимает на себя посильную личную ответственность
    • Свобода входа-выхода
  • Общее дело
  • Цель дела — каждый из сообщества, т. е. «все люди», начиная с тебя самого
    • Т. е. примерно так: «надо, чтобы было хорошо сообществу, а это значит, что как минимум в тех областях, в которых я ответственен, хорошо мне»;
    • (Например, сопровождающий пакет сам этим пакетом пользуется)

Обратная сторона: мы не судим человека на основании того, что он делает вне сообщества

Ср. Иммануил Кант и его категорический императив (т. е. «безусловный моральный закон», хорошая статья, кстати). Этот закон имеет две формулировки

  1. Предписывающая («Основы метафизики нравственности», 1785):
    • Поступай только согласно такой максиме, руководствуясь которой ты в то же время можешь пожелать, чтобы она стала всеобщим законом
  2. Фильтрующая («Критика практического разума», 1788):
    • Поступай так, чтобы ты всегда относился к человечеству и в своем лице, и в лице всякого другого также как к цели и никогда не относился бы к нему только как к средству

Заметим, как эти непохожие формулировки сходятся в сетевой морали.

Архитектура ОС

Дистрибутив: комплект ПО для развёртывания и сопровождения программного продукта, решающего определённый широкий класс задач

Дистрибутив ОС?

ОС: программный комплекс для

  • Унификации
  • Разделения
  • Учёта

ресурсов ЭВМ

Ресурсы:

  • Машинное время
  • Оперативная память
  • Внешние устройства

Архитектура UNIX-подобной системы: (легенда)

  • « {i} → » — предоставляет программный интерфейс

  • « (!) → » — предоставляет текстовый командный интерфейс

  • « >:> → » — предоставляет какой-то межпроцессный интерфейс (сеть, POSIX-сообщения, сокеты и т. п.)

  • « → {i} » — пользуется программным интерфейсом

  • « → (!) » — пользуется командным интерфейсом

  • « → >:> » — пользуется межпроцессным интерфейсом

  • « :-? → » — предоставляет какой-то прикладной интерфейс (удобный для решения прикладных задач)

По сравнению с программным интерфейсом (!), любой другой межпроцессный интерфейс — очень медленный, поэтому его можно применять только

  • При общении с пользователем (его интерфейс — самый медленный)
  • При передаче редких команд и небольших данных (как от того же пользователя)

  • Supervisor mode
    • {i} → Ядро: базовые функции, предоставляет системные вызовы

    • Модули (загружаемые компоненты ядра)
  • User mode (знаком « :-? → » отмечен командный интерфейс)

    • (!) → Системные утилиты как командные обёртки системных вызовов → {i}

    • {i} → Библиотеки (в т. ч. высокоуровневые программные обёртки над системными вызовами) → {i}

      • (!) → Пользовательские утилиты как командные обёртки над всяческими библиотеками

    • >:> Демоны → {i}

      • {i} → Ещё библиотеки → >:> (+ {i} )

      • (!) → Ещё утилиты → >:> (+ {i} )

    • (!) → Командная оболочка (shell) → (!) (+ {i} )

      • ЯПВУ
      • ИКС
      • Оболочка
    • :-? → Приложения → {i}

      • {i} → прикладные библиотеки, реализующие разнообразные прикладные абстракции → {i}

TODO: здесь должна быть картинка

Именно наличие оболочки делает систему универсальным конструктором для задач обработки структурированно-текстовой информации

  • просто структурирванно-текстовой (с чего начинали ещё Денис и Кен)
  • сводящейся к обработке текстов

  • в т. ч. автоматизация любой задачи, решаемой вручную

LecturesCMC/Distro2016/02_OSArchitecture (last edited 2016-10-16 19:32:04 by FrBrGeorge)