Различия между версиями 6 и 7
Версия 6 от 2015-01-15 16:07:14
Размер: 3968
Редактор: FrBrGeorge
Комментарий:
Версия 7 от 2015-01-19 15:59:09
Размер: 10338
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 6: Строка 6:
Верно ли, что современная вычислительная система должна быть основана
на каких-то других, «более современных», принципах? Более десяти лет
назад в своей работе «Операционная система UNIX» мы предложили
обобщённый подход «проективной системы», формулирующий «основные
положения» в терминах человеко-машинного взаимодействия, по
возможности без описания реализации. По нашему мнению, этот подход
(как и противопоставление «процедурной» организации) совершенно не
потерял актуальности. Таким образом, смена технологий ставит проблему
новой формулировки инвариантов, зато, по видимости, не обесценивает
«путь UNIX» и обеспечивает преподавателя несколькими работающими
вариантами реализации.
Верно ли, что современная вычислительная система должна быть основана на
каких-то других, «более современных», принципах? Более десяти лет назад в своей
работе «[[http://www.altlinux.ru/products/books/os-unix/|Операционная система
UNIX]]» мы предложили обобщённый подход «проективной системы», формулирующий
«основные положения» в терминах человеко-машинного взаимодействия, по
возможности без описания реализации. По нашему мнению, этот подход (как
и противопоставление «процедурной» организации) совершенно не потерял
актуальности. Таким образом, смена технологий ставит проблему новой
формулировки инвариантов, зато, по видимости, не обесценивает «путь UNIX»
и обеспечивает преподавателя несколькими работающими вариантами реализации.
Строка 18: Строка 17:
== Тогда и сейчас ==
''Технологические новшества Linux ⇒ Кризис Linux ⇒ Кризис UNIX way?''
== Призрак бродит ==
''Технологические новшества Linux ⇒ кризис Linux ⇒ кризис UNIX way?''
Строка 21: Строка 20:
То, что было локальным расширением, становится системообразующим:
 * `rwxrwxrwx` → MAC, SELinux, …
 * POSIX IPC → dbus
 * P
rocess groups → cgropus
 * `rwxrwxrwx` → Разные виды изоляции   * shell-scripting → C programming
  * (системные утилиты = реализация системных вызовов) + о
болочка → системные/прикладные службы + отслеживание статуса
 * текстовое журналирование с профилем → полное бинарное журналирование с поиском

 * [[static/Illustration_System_Architecture_Flower/system_architecture_flower.svg|архитектура «цветочек»]] → архитектура «динамическая сеть»
 * К
лиент-серверная сетевая графическая среда приложений → локальная 3D рисовалка
 * Преобра
зованное текстовое представление системных данных → прикладное представление системных данных
 * …
То, что было локальным расширением, становится системообразующим. Примеры:
 * `rwxrwxrwx` → MAC, SELinux, …;
 * POSIX IPC → DBus;
 * p
rocess groups (и не только) → cgropus;
 * `rwxrwxrwx` → Разные виды изоляции;
 * текстовое журналирование с профилем → полное
бинарное журналирование с поиском;
 * [[static/Illustration_System_Architecture_Flower/system_architecture_flower.svg|архитектура «цветочек»]] → архитектура «динамическая сеть»;
   * вариант «sysvinit → systemd»: (системные утилиты = реализация системных вызовов) + оболочка → системные/прикладные службы + (отслеживание статуса+управление);
 * кроссплатфоменная к
лиент-серверная сетевая графическая среда приложений → локальная 3D подсистема с зависимостью от аппаратуры;
  * например, «X.Org → Wayland»
 * shell-scripting → C programming;

 * … .
Строка 34: Строка 33:
== Потеря актуальности «инвариантов» ==
 * «Триединство» shell-а:
  * Командная строка? Но системные утилиты больше не управляют, а приложения не работают с CLI
  * ЯП? Но есть ЯП удобнее
  * Оболочка? А вокруг чего теперь? (Попутно: единство интерфейса данных и интерфейса управления?)
 * Одна атомарная задача = одна утилита + оболочка → сколько задач, столько и приложений?
 * Всё — текст → зачем?
== Тезис: «инварианты» ==
''«Linux — это UNIX сегодня»''
Строка 42: Строка 36:
'''TODO''' «'''Инвариант'''» — термин из [[LecturesCMC/GnuLinuxSoftware2011|крса лекций 2011 года]] (лекция 2). Неформально говоря, «что вы встретите в любом Linux-е».
 * Консоль: ИКС
 * Иерархия файлов
 * Процессы, права доступа и суперпользователь
 * Текстовые конфигурационные файлы и системная информация
 * Оболочка и сценарии
 * Пакеты/репозитории
 * Свободное сообщество

== Антитезис: потеря инвариантности ==
''В действительности от Linux требуется не то, что на самом деле''

 * Linux ≠ ОС ⇒ использование только ядра/базового окружения Linux
  * Busybox-based
  * Android
  * Целевые дистрибутивы (прошивки)
  * …
  * '''Симптом''': подавляющая часть данных и управления вытеснена на прикладной уровень
  * '''Следствия''':
   . ⇒ Интерфейс управления не обязательно CLI (консоль?)
   . ⇒ Прикладной интерфейс взаимодействия приложений (оболочка?)
   . → Метаданные не обязаны иметь текстовый вид (конфиги?)
 * Профессионализация сообщества разработчиков
  * '''Симптом''': роль разработчика/сопровождающего пакет всё дальше от роли пользователя
  * '''Следствия''':
   . ⇒ «Центры приложений» вместо пакетных диспетчеров (пакеты?)
   . ⇒ Депрофессионализация сообщества активных пользователей (сообщество?)
 * Динамическое профилирование
  * Временные внешние устройства, в т. ч. «новые»
   * Пример: LKMS, PPD, …
  * Мобильность: оперативное изменение условий, в т. ч. на «новые»
   * Пример: NM, !PolKit, …
  * '''Симптом''': не требующая вмешательства пользователя (или минимизирующая таковое) полуавтоматическая адаптация системы к новым условиям
  * '''Следствия''':
   . ⇒ Не обязательно задавать настройки вручную (конфиги?)
   . ⇒ Недостаточно просто запускать и останавливать задачу, нужно сложное взаимодействие системных и прикладных подсистем (процессы?)
   . ⇒ Множество управляющих действий и совершаются, и обрабатываются приложениями (сценарий?)
 * Вопросы масштабирования: множественный деплоймент и обслуживание, непрерывная разработка, …
  * '''Симптом''': ресурсоёмкость разработки становится существенно ниже ресурсоёмкости доставки и сопровождения
  * '''Следствия''':
   . ⇒ Скорость работы интегрирующей прослойки имеет значение (оболочка?)
   . ⇒ Проще эффективно переписать, чем комбинировать имеющееся (оболочка?)
  * '''Симптом''': упор на сопровождение ''окружений'' а не отдельных приложений
  * '''Следствия''':
   . ⇒ Нет необходимости модифицировать рабочую копию, надо обновлять «прошивку» целиком (пекеты? репозитории?)
   . ⇒ (не только при масштабировании) Сложные уровни изоляции/защиты (процессы? права доступа? root?)
Эту повесть про старушку можно дальше продолжать.

Как возможно фундаментальное образование в области вычислительных систем?

== Синтез: инварианты более высокого уровня ==
''«Operating System» переводится как «систематика использования»''

Заметим, что все «инварианты linux» — это реализации каких-то более высокоуровневых принципов использования компьютера.

Предложение из 2003-года: принципы организации операционной среды (aka '''4U''')
 . '''И''': принцип информационной открытости
  * для себя
  * для эффективности взаимодействия
  * для свободы ориентации
 . '''З''': принцип минимизации затрат
  * принятие решений
  * физические действия
  * умственная деятельность
 . '''У''': принцип умопостижимости контекста
  * human-readable
  * human-writeable
  * 7 +/- 2
 . '''О''': принцип персональной ответственности
  * захотел — получил
  * достаточность знаний
  * динамическая иерархия

Замечания:
 1. Ни один из этих принципов не выглядит устаревшим.
 1. Современное состояние ОС оставляет (во всех смыслах слова!) желать лучшего в плчне '''4U'''

== Перспективы ==
''Кто виноват? Что делать?''

 . Вариант 1. Рассказывать о различных ''реализациях'' в надежде на гештальт
 . Вариант 2. Использовать одну версию ОС в качестве базовой, акцентируя внимание на выполнение (возможно, подновлённой) концепции '''4U'''
 . Вариант 3. Написать свою идеальную ОС (не такой уж бессмысленный,

Кризис UNIX way и фундаментальное IT-образование

В докладе делается попытка перечислить и систематизировать кардинальные изменения технологических составляющих таких операционных систем. Большинство таких изменений воспринимаются как отказ от «основополагающих принципов» построения ОС, известных как «путь UNIX». Верно ли, что современная вычислительная система должна быть основана на каких-то других, «более современных», принципах? Более десяти лет назад в своей работе «[[http://www.altlinux.ru/products/books/os-unix/|Операционная система UNIX]]» мы предложили обобщённый подход «проективной системы», формулирующий «основные положения» в терминах человеко-машинного взаимодействия, по возможности без описания реализации. По нашему мнению, этот подход (как и противопоставление «процедурной» организации) совершенно не потерял актуальности. Таким образом, смена технологий ставит проблему новой формулировки инвариантов, зато, по видимости, не обесценивает «путь UNIX» и обеспечивает преподавателя несколькими работающими вариантами реализации.

Призрак бродит

Технологические новшества Linux ⇒ кризис Linux ⇒ кризис UNIX way?

То, что было локальным расширением, становится системообразующим. Примеры:

  • rwxrwxrwx → MAC, SELinux, …;

  • POSIX IPC → DBus;
  • process groups (и не только) → cgropus;
  • rwxrwxrwx → Разные виды изоляции;

  • текстовое журналирование с профилем → полное бинарное журналирование с поиском;
  • архитектура «цветочек» → архитектура «динамическая сеть»;

    • вариант «sysvinit → systemd»: (системные утилиты = реализация системных вызовов) + оболочка → системные/прикладные службы + (отслеживание статуса+управление);
  • кроссплатфоменная клиент-серверная сетевая графическая среда приложений → локальная 3D подсистема с зависимостью от аппаратуры;
    • например, «X.Org → Wayland»
  • shell-scripting → C programming;
  • … .

Тезис: «инварианты»

«Linux — это UNIX сегодня»

«Инвариант» — термин из крса лекций 2011 года (лекция 2). Неформально говоря, «что вы встретите в любом Linux-е».

  • Консоль: ИКС
  • Иерархия файлов
  • Процессы, права доступа и суперпользователь
  • Текстовые конфигурационные файлы и системная информация
  • Оболочка и сценарии
  • Пакеты/репозитории
  • Свободное сообщество

Антитезис: потеря инвариантности

В действительности от Linux требуется не то, что на самом деле

  • Linux ≠ ОС ⇒ использование только ядра/базового окружения Linux
    • Busybox-based
    • Android
    • Целевые дистрибутивы (прошивки)
    • Симптом: подавляющая часть данных и управления вытеснена на прикладной уровень

    • Следствия:

      • ⇒ Интерфейс управления не обязательно CLI (консоль?)
      • ⇒ Прикладной интерфейс взаимодействия приложений (оболочка?)
      • → Метаданные не обязаны иметь текстовый вид (конфиги?)
  • Профессионализация сообщества разработчиков
    • Симптом: роль разработчика/сопровождающего пакет всё дальше от роли пользователя

    • Следствия:

      • ⇒ «Центры приложений» вместо пакетных диспетчеров (пакеты?)
      • ⇒ Депрофессионализация сообщества активных пользователей (сообщество?)
  • Динамическое профилирование
    • Временные внешние устройства, в т. ч. «новые»
      • Пример: LKMS, PPD, …
    • Мобильность: оперативное изменение условий, в т. ч. на «новые»
      • Пример: NM, PolKit, …

    • Симптом: не требующая вмешательства пользователя (или минимизирующая таковое) полуавтоматическая адаптация системы к новым условиям

    • Следствия:

      • ⇒ Не обязательно задавать настройки вручную (конфиги?)
      • ⇒ Недостаточно просто запускать и останавливать задачу, нужно сложное взаимодействие системных и прикладных подсистем (процессы?)
      • ⇒ Множество управляющих действий и совершаются, и обрабатываются приложениями (сценарий?)
  • Вопросы масштабирования: множественный деплоймент и обслуживание, непрерывная разработка, …
    • Симптом: ресурсоёмкость разработки становится существенно ниже ресурсоёмкости доставки и сопровождения

    • Следствия:

      • ⇒ Скорость работы интегрирующей прослойки имеет значение (оболочка?)
      • ⇒ Проще эффективно переписать, чем комбинировать имеющееся (оболочка?)
    • Симптом: упор на сопровождение окружений а не отдельных приложений

    • Следствия:

      • ⇒ Нет необходимости модифицировать рабочую копию, надо обновлять «прошивку» целиком (пекеты? репозитории?)
      • ⇒ (не только при масштабировании) Сложные уровни изоляции/защиты (процессы? права доступа? root?)

Эту повесть про старушку можно дальше продолжать.

Как возможно фундаментальное образование в области вычислительных систем?

Синтез: инварианты более высокого уровня

«Operating System» переводится как «систематика использования»

Заметим, что все «инварианты linux» — это реализации каких-то более высокоуровневых принципов использования компьютера.

Предложение из 2003-года: принципы организации операционной среды (aka 4U)

  • И: принцип информационной открытости

    • для себя
    • для эффективности взаимодействия
    • для свободы ориентации
  • З: принцип минимизации затрат

    • принятие решений
    • физические действия
    • умственная деятельность
  • У: принцип умопостижимости контекста

    • human-readable
    • human-writeable
    • 7 +/- 2
  • О: принцип персональной ответственности

    • захотел — получил
    • достаточность знаний
    • динамическая иерархия

Замечания:

  1. Ни один из этих принципов не выглядит устаревшим.
  2. Современное состояние ОС оставляет (во всех смыслах слова!) желать лучшего в плчне 4U

Перспективы

Кто виноват? Что делать?

  • Вариант 1. Рассказывать о различных реализациях в надежде на гештальт

  • Вариант 2. Использовать одну версию ОС в качестве базовой, акцентируя внимание на выполнение (возможно, подновлённой) концепции 4U

  • Вариант 3. Написать свою идеальную ОС (не такой уж бессмысленный,

FrBrGeorge/Winter2015 (последним исправлял пользователь FrBrGeorge 2015-01-19 16:45:08)