Попытка сформировать у Вас некоторое системное видение и системный подход окружающего Вас мира.

- Машечкин Игорь Валерьевич

  1. Почему сортировать файл путём сохранения всего содержимого в массив - плохая идея?
    • Может не влезть в виртуально адресное пространство машины.
    • Даже bubble sort будет полезнее, в этом плане.

По курсу

  • Понятие ресурса компьютера
    • Правила программного использования. (при их наличии можно рассматривать машину как ресурс, а не просто аппаратный компонент)
  • Виртуальность - определение и понятие. (то, что функционирует в ВС и целиком/частично реализовано программно)
    • Виртуальные ресурсы с аппаратными аналогами (виртуальный принтер, виртуальная клавиатура и тп.)
    • Виртуальные ресурсы без аппаратных аналогов (ОС и т.п.)
  • Работаем с ПО + аппаратурой. Не только лишь с железом.
  • ВС - многослойный пирог с повышающимся по слоям уровнем абстракции.
  • В ВС множество компонентов, работающих вместе. У каждого компонента есть своя производительность.
  • Производительность системы может определяться производительностью самого медленного компонента.
    • Процессор самый быстрый. Часто, остальное резко медленнее.
    • Зачем мир стремится делать быстрые процессоры, даже при медленной ОП? - История про сглаживание разницы.
  • Сглаживание разницы:
    • Регистры общего назначения. (делается программистом или системой программирования + не решает всех проблем)
    • Кэш.
    • Расслоение памяти. (вместе с кэшем достаточно хорошо сглаживают дизбаланс).
  • Проблема сглаживания дизбаланса скорости работы накопителя и ОП (дизбаланс колоссальный):
    • На ранних версиях машин обмен вызывался синхронно. (очень долго, а тогда ещё и дорого)
    • Асинхронность. (подаём заявку на обмен и занимаемся остальными делами, пока не прилетит прерывание по поводу)
  • В ходе развития аппаратуры появились компененты, нужные для организации ПО и поддержки операционных систем.
    • Мультипрограммирование и мультипроцессирование (параллельно обрабатывается несколько процессов) (какие проблемы в таком случае появляются и какие аппаратные средства нужны для поддержания такой работы)
      • Исполнение.
      • Ожидание обмена.
      • Ожидание, пока планировщик ОС выставит статус исполнения.
    • Средства:
      • Разделение по правам: системный / пользовательский.
      • Аппарат защиты памяти (адрессное пространство процесса защищено от других).
      • Минимальные средства прерывания (хотя бы прерывание по таймеру).
  • Аппарат виртуальной памяти:
    • Гибкость в сравнении с использованием исключительно физического адресного пространства.
    • Тема благодатная. Рассказать можно много.
    • Базирование, страничная, сегментная, сегментно-страничная организация и т.п.
  • Страничная организация. (со всеми нюансами)

Дальше просто нужно знать материал и уметь его излагать. Тех. часть.

  • Пояснять разницу между ОС
    • Пакетная (б.б. квант, который может быть и не гигантским вовсе (меньше секунды). просто минимизирует количество переключений) / разделение времени
  • Нити - попробовать, прочувствовать.
  • Взаимодействие процессов:
    • Разделяемый ресурс
    • Критические секции
    • Тупики, Deadlock и т.п. с примерами.
  • Разбираться в нюансах приведённых в пример на синхронизацию программ.
  • Семафоры Дейкстры - абстракция. Это не мьютексы. Это не семафоры IPC. (супермаркет с тележками и предельным количеством одновременно закупающихся пользователей)
  • Модельные примеры:
    • Обедающие философы (равноправный доступ)
    • Читатели и писатели (резервирование)
    • Спящий парикмакер (клиент - сервер)

Нет задачи рассказать слово в слово. Требуется понимание. Своими словами. Классические задачи также в своей реализации.

  • Инструменты синхронизации:
    • Семафоры Дейкстры (низкоуровневое решение. требование атомарности)
    • Мониторы Хоара (инструмент высокого уровня)
    • Аппарат сообщений (наиболее распространённый сегодня инструмент) - send / receive.
  • Сокеты.
    • Предварительное соединение / нет.
    • Досканальное знание интерфейсов не требуется, но структура должна быть.
  • Мьютексы.
    • Знать основные свойства и характеристики.
  • Файловые системы:
    • Организация System V. Нужно хорошее понимание.
      • Организация суперблока.
      • Демонстрировать и обсуждать работу с блоками и с индексными дескрипторами.
      • Кэш.
    • В остальном момент больше технический.
  • Индексные дескрипторы.
    • Понимание организации адресации блоков в файлах. (тот самый массив из 13 элементов).
    • Какие ресурсы декларируются FS V? (например, размер области индексных дескрипторов определяет предельное количество файлов в системе.)
  • FFS
  • RAID-ы. Уметь про них разговаривать. Формулки нужно знать и уметь с ними работать, рассказывать, почему именно так.
  • Три уровня данных:
    • Таблица файлов (предельное количество открытых в процессе файлов)
      • Каждая запись порождается тогда, когда выполняется open().
      • При наследовании добавляем счётчик (там один общий указатель. Ссылаемся на единственную запись.).
  • Перечислить все возможные причины по отказу в open().
  • Управление ОП
    • Управление страничной памятью.
    • Основная проблема - таблица страниц в современных архитектурах большая и очень большая. (для 64-бит компьютера со страницей размера -> количество страниц - ). Копировать такое количество страниц очень долго.
    • Рассказывать подходы решения этой проблемы.
  • Кэширование информации. Выявлять подходы кэширования не только в процессоре, но и в системе (напирмер, кэширование таблиц индексных дескрипторов и т.п.)
  • Язык C - ожидается не перечень всего того, что делает C, а принципиальные отличительные качества языка.
    • Как язык высокого уровня он безобразный. (почему?)
    • Машинно-независимый ассемблер.
    • В языке C нет оператора присваивания :)) (только операция присваивания. Операция внутри выражения. Оператор - )

Работа с указателями - это ужасно плохо и так же ужасно хорошо.

- Машечкин Игорь Валерьевич