Уровни абстракции для электронно-вычислительной системы: 1. Application Software - Программы 2. Операционные системы - Драйверы устройств 3. Архитектура - Регистры инструкций 4. Микро-архитектура - Контроллеры/Каналы передачи данных 5. Логика - Сумматоры/Память 6. Цифровые схемы - AND вентили, NOT вентили 7. Аналоговые схемы - Усилители/Фильтры 8. Устройства - Транзисторы/Диоды 9. Физика - Электроны Уровни: 1) скрывают детали нижележащего 2) навязывают ограничения вышележащему свои Уровни абстракции можно ломать (например в программе на C делать ассемблерные вставки) Уровни влияют на индустрию - на каждый/несколько уровней свои специалисты/компании ## Формирование уровней Уровни формируются вычислительными платформами ***Уровень = Языки + Типы + Экземпляры + Шаблоны*** - *Языки* (Languages) - на чем описываем/пишем - *Типы* (Types) - предопределенные платформой абстракции и структуры данных - *Экземпляры* (Instances) - готовые, предопределенные платформой объекты и компоненты - *Шаблоны* (Patterns) - связывают языки, типы и экземпляры, задают повторяемые решения ## Шаблоны Механизмы повторяются на разных уровнях - одни и те же идеи - Сторожевые таймеры - микроконтроллеры, OC/гипервизоры, оркестраторы - Кеши и когерентность - CPU, OC (page cache), диски, CDN, браузер - Прерывания и события - аппартные IRQ, сигналы OC, event loop, message queue - Системы команд - ISA процессора, байткод виртуальных машин ([[JVM]], CLR), API/протоколы (свой Language на каждом уровне), DSL