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