Differences between revisions 4 and 5
Revision 4 as of 2016-10-16 17:56:06
Size: 6995
Editor: FrBrGeorge
Comment:
Revision 5 as of 2016-10-16 18:33:01
Size: 9109
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
Например, GNU Pulilc License. Например, GNU Public License.
Line 74: Line 74:
Итак, архитектура Архитектура UNIX-подобной системы:
(''легенда'')
 * « {i} → » — предоставляет программный интерфейс
 * « (!) → » — предоставляет текстовый командный интерфейс
 * « >:> → » — предоставляет ''какой-то'' межпроцессный интерфейс (сеть, POSIX-сообщения, сокеты и т. п.)
 * « → {i} » — пользуется программным интерфейсом
 * « → (!) » — пользуется командным интерфейсом
 * « → >:> » — пользуется межпроцессным интерфейсом
 * « :-? → » — предоставляет ''какой-то'' прикладной интерфейс (удобный для решения прикладных задач)

По сравнению с программным интерфейсом (!), любой другой межпроцессный интерфейс — очень медленный, поэтому его можно применять только
 * При общении с пользователем (его интерфейс — самый медленный)
 * При передаче ''редких'' команд и ''небольших'' данных (как от того же пользователя)
Line 76: Line 89:
  * Ядро: базовые функции
   * Модули (загружаемые компоненты ядра)
  * Ядро предоставляет ''программный интерфейс'' (обозначим « → {1} » использования программного интерфейса) — т. н. «системные вызовы»
  * {i} → Ядро: базовые функции, предоставляет системные вызовы
  * Модули (загружаемые компоненты ядра)
Line 80: Line 92:
  * :-? → Утилиты → {1}
  * {1} → Библиотеки → {1}
   *
  * (!) → Системные утилиты как командные обёртки системных вызовов → {i}
  * {i} → Библиотеки (в т. ч. высокоуровневые программные обёртки над системными вызовами) → {i}
   * (!) → Пользовательские утилиты как командные обёртки над всяческими библиотеками
  * → >:> Демоны → {i}
   * {i} → Ещё библиотеки → >:> (+ {i} )
   * (!) → Ещё утилиты → >:> (+ {i} )
  * (!) → Командная оболочка (shell) → (!) (+ {i} )
   * ЯПВУ
   * ИКС
   * Оболочка
  * :-? → Приложения → {i}
   * {i} → прикладные библиотеки, реализующие разнообразные прикладные абстракции → {i}
Line 84: Line 105:
TODO '''TODO''': здесь должна быть картинка

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

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

  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)