Человеко-машинные системы (ЧМС), развитие за последние сто лет. Мифы о машинах. Бэконовское понятие об орудии и компьютер. Белловское понимание постиндустриального общества и действительность. Два способа вовлечения в ЧМС (по отношению к, по способу участия в, по уровню знаний о, по авторитетности, => требования к): "пользователь" (заказчик и потребитель, исполнитель инструкций, не более необходимого, требует гарантий, => набор готовых решений), "администратор" (производитель, использует в качестве инструмента, чем больше, тем лучше, даёт гарантии, => богатый инструментарий). Парадокс: пользователь -- для компьютера, компьютер -- для администратора, а не наоборот.
Процедурная (пользовательская) система. Методы воздействия на систему: формальное (табличное) и неформальное ("интуитивно понятное") предписания, "легенда", black magic (voodoo, (?списать где-нибудь признаки)). Принципы организации: гарантированных ресурсов (физиологических, => Accessability Tools, потому что сложно), информационной закрытости (инфомация стоит денег, создаёт конкурентное преимущество, её много и каждый покупает нужный кусок), размытости контекста (под каждую задачу пользователя сущесвует набор решений похожих на неё других задач, можно попробовать суперпозицию таких решений с частично нулевыми параметрами), смещения ответственности (либо на разработчика, либо на того, кто дал команду, либо "на свой страх и риск" (недостаточность знаний)). Следствие: наличие готовых решений "на все случаи жизни". Следствие: активная сторона -- компьютер. Достоинства: быстрота и однозначность реакции на предусмотренные ситуации, лёгкая автоматизация, низкая машинная квалификация (достаточно предметной области), перемещение ответственности. Недостатки: невозможно понять, нет информации => подавление инициативы, необратимость воздействий, непредсказуемость нежелателных ситуаций (состояние системы -- только все данные целиком), нет готового решения => не решает нестандартные задачи. Область применения: +корпоративная работа. "Она не нашла файл".
Проективная (администраторская) система, проект (конфигурационное множество), сборка системы. Методы воздействия: статистический (пробы), частичный (прямая зависимость от немногих параметров), аналитический (по смыслу совокупности параметров), satori (?*списать признаки у MVF). Принципы организации: распределения ресурсов (физиологических, эмоциональных, умственных), информационной открытости (для себя, для эффективности взаимодействия, для свободы ориентации), умопостижимости контекста (human-readable, human-writeable, "7 +/- 2"), ответственности (захотел -- получил, достаточность знаний). Следствие: разработка методологий (инструментов), а не решений. Следствие: набор решений приходится изготавливать руками. Достоинства: прогноз реакций на нестандартные задачи, возможность решения любых задач, после базового освоения легко расширять кругозор, творческий подход, воспроизводимость нежелательных ситуаций (состояние системы -- проект+входной поток). Недостатки: нужна квалификация (и теория и опыт => долго и дорого), творческие люди нервные, нечёткая реакция но стандартные задачи (т.к. проект), большое время выработки строго хорошего решения. Область применения: +работа в сообществе. "Я рекурсивных запросов не принимаю".
Операционная среда (ОС). Системные ресурсы: память, время, способности внешних устройств. Пользовательские ресурсы: объекты и функциональности. Задачи: то, что хочет иметь ресурсы. Функции ОС: стандартизация, разделение и учет ресурсов, планирование и сопровождение задач. Структура ОС: менеджер ресурсов, планировщик задач, системное наполнение, пользовательское наполнение.
UNIX как ОС, структура UNIX (системные и пользовательские ресурсы перемешаны): ядро, драйверы, службы, системные утилиты, утилиты пользователя, приложения. (? История создания UNIX: высококвалифицированно и для себя, расширяющееся community, университеты). Процессы, очередь ждущих, IPC (сигналы, shmem, semaphores(?)). Реализация проективных принципов: ИО (все manpages, открытое сообщество разработчиков), УК (демоны, config-файлы), РР (программирование или редактирование профиля, такие же средства), О (СисАдмин?, root).
Устройство информационной подсистемы (manpages): секции, разделы одной страницы и их назначение, nroff. Виды гиперссылок в manpage: контекстные, семантические (? MVF:ассоциативные) (SEE ALSO, ...), объектные (FILES, ...), внешние (на иную документацию). Whatis и apropos. Manpage как реализация 4U. Цикл работы с man. Info, откуда взялось, почему часто есть. Навигация по info, зачем ей такой быть. Гуру, FAQ и действия по примерам (use cases). Негативное следствие: use the force, read the source.
Интерфейс. Виды интерфейсов. Требования к интерфейсу UNIX: соблюдение 4U, простота элементарных пользовательский и системных действий, полнота возможности реализации сложных действий, минимальные аппаратные требования. Интерфейс командной строки как возможное решение. Договоренности о формате командной строки. Реализация требований к интерфейсу UNIX: shell. Shell как интерпретатор командной строки: редактор командной строки, история, генерация имен файлов по шаблонам, PS[1-4], aliases, completion. Точки роста shell-ов. Виды shell-ов (гнезда Bourne и C).
Shell как язык программирования высокого уровня и интегратор (shell): общие средства (переменные окружения, перенаправление в/в, операторы ветвления), метасредства (подстановка результатов вызова утилит, код завершения), системные средства (работа с процессами, настройка при помощи переменных окружения).
Терминал: физическое устройство последовательного в/в алфавитно-цифровой информации (CRT, подключение к COM, управляющая последовательность (ESC-seq), клавиши, возвращающие ESC-seq, termcap и terminfo); терминальная линия (/dev/tty*, /dev/ttyp* pty*, xterm и виртуальные консоли, поток управления процессами (передача сигналов), утилита stty, getty->login->sh и respawn-запуск getty, сигнал HUP).
Вертикальные информационные потоки (ИП): уровни доступа (УД), поток как смена УД объекта. Активный (Write) и пассивный (Read) доступ на нижние (Down) и верхние (Up) УД. Секретность как NoRU/NoWD, достоверность как NoWU/NoRD, области применения. Решения проблемы распухания уровня: автоматически (по формальному критерию), внешний ИП (наработка/устаревание), доверенный субъект (экспертиза). Частичная реализация ВИП в UNIX (WD отвечает принципу ответственности), три уровня доступа.
Горизонтальные ИП: категории пользователей и объектов (зачем нужны), поток как видимость объекта. Статическое (права доступа) и динамическое (сеансы доступа) управление видимостью. Централизованная (администратор системы) и доменная (хозяин ресурса) ответственности при организации ГИП. Субъект-субъектные, множественный субъект-субъектные (группы), субъект-объектные и множественный субъект-объектные (ACL) отношения в системе. Организация ГИП в UNIX, достоинства и недостатки групповой и ACL-моделей, области их применения.
Аутентификация (определение субъекта) и авторизация (определение прав субъекта), примеры. Механизм аутентификации в UNIX: login, /etc/passwd (/etc/master.passwd или shadow, tcb, зачем нужно), создание невосстановимого ключа (DES, MD5), shell, User ID и Group ID процессов. Механизм авторизации в UNIX: User ID и Group ID ресурсов, права доступа (атрибуты) для User, Group и Others на запись/чтение/выполнение ресурса. Пример предоставления/отказа доступа процесса к файлу. Суперпользователь (UID=0, root), его права. Атрибуты SetUID и SetGID. Удаление чужих файлов в своей директории, атрибут t (sticky bit) для директории. Восьмеричное представление атрибутов ресурса.
Стандартные директории UNIX, их назначение; FHS: /, /var, /bin, /sbin, /etc, /tmp, /root, /dev, /home, /mnt/*, /usr/*, /opt/* (/etc/opt), /usr/local/*, /usr/share, /var/mail, /var/log, /var/run, /var/spool и пр. Разбиение физических дисков на файловые системы: понятие файловой системы, команда mount, разделы диска (hd0a, hd0b, hd0c и т.п.), партиции (HDPT, EXT PT). Оценка директорий для организации отдельной файловой системы: только чтение / чтение-запись / постоянная запись, стабильность / скорость, с переполнением / без переполнения / квотированная. Журнализация. Оценка /, /usr, /var, /tmp, /home, /usr/local.
Загрузка системы. 4-уровневая последовательность загрузки: BootROM -- MBR -- BootBLK -- BootProg -- ядро, смысл такого деления. Стартовые скрипты в гнездах BSD, FreeBSD-5 и USG, init. Inittab, уровни выполнения (вложенность), /etc/init*.d rc?.d, имена старт/стопных скриптов, /etc/gettytab (USG). /etc/rc*, rc.config, /usr/local/etc/rc.d, /etc/ttys. (LILO или GRUB). Отношение к 4-уровневому методу, какая часть загрузчика какой информацией располагает.
Регулярное выражение. Назначение РВ. Отличие от понятия шаблона в shell. Синтаксис (в т.ч. при поиске с заменой). Правило leftmost longest. Примеры сопоставлений. Утилиты UNIX, использующие РВ: grep, sed, awk. NFA, DFA и falvours. Non-greedy modifiers.
Редакторы в UNIX. Соответствие 4U. Принцип минимизации аппаратных требований. Ориентация на работу с компьютерными текстами. Строчный редактор ed, командное редактирование. Экранный редактор vi, двухрежимность, гнездовые команды, множитель. Принцип аббревиативности. Принцип экономии нажатий. Примеры. Связь с редакторами ed и VIm. Главные длополнительные возможности vim.
Графические возможности UNIX. X11. Клиент-серверная организация X11. Оконный менеджер. Шрифты. Xresources. Соответствия и противоречия с 4U. Расширения X11: DGA, DRI, (?).