- •Определение ос. Назначение и функции операционной системы. Место ос в структуре вычислительной системы.
- •3, Понятие ресурса. Основные ресурсы вычислительной системы. Управление ресурсами.
- •4, Критерии эффективности и классы ос
- •5, Функциональные компоненты ос персонального компьютера
- •6, Понятие интерфейса прикладного программирования
- •7, Системные вызовы
- •8, Прерывания (понятие, классификация, обработка прерываний)
- •9, Требования, предъявляемые к современным ос
- •10, Виртуализация. Гипервизор 1 и 2 типа. Контейнеры
- •11, Архитектура ос. Ядро и вспомогательные модули
- •12, Классическая архитектура ос. Монолитные и многослойные ос.
- •13, Микроядерная архитектура ос
- •14. Процессы и потоки. Состояния потока
- •15. Планирование и диспетчеризация потоков, моменты перепланировки.
- •16. Алгоритм планирования, основанный на квантовании.
- •17. Приоритетное планирование.
- •18. Алгоритмы планирования в ос пакетной обработки: «первым пришел – первым обслужен», «кратчайшая задача – первая», «наименьшее оставшееся время выполнения».
- •19. Алгоритмы планирования в интерактивных ос: циклическое, приоритетное, гарантированное, лотерейное, справедливое планирование.
- •20. Алгоритм планирования Windows nt.
- •21. Алгоритмы планирования Linux: о(1), cfs.
- •22. Синхронизация процессов и потоков: цели и средства синхронизации.
- •23. Ситуация состязаний (гонки). Способы предотвращения.
- •24. Способы реализации взаимных исключений: блокирующие переменные, критические секции, семафоры.
- •25. Взаимные блокировки. Условия, необходимые для возникновения тупика.
- •26. Предотвращение взаимоблокировки. Алгоритм банкира для одного вида ресурсов.
- •27. Предотвращение взаимоблокировки. Алгоритм банкира для нескольких видов ресурсов.
- •28. Синхронизирующие объекты ос: системные семафоры, мьютексы, события, сигналы, барьеры, ждущие таймеры.
- •29. Организация обмена данными между процессами (каналы, разделяемая память, почтовые ящики, сокеты).
- •30. Функции ос по управлению памятью.
- •31. Алгоритмы распределения памяти без использования внешних носителей (фиксированные, динамические, перемещаемые разделы).
- •32. Понятие виртуальной памяти
- •33.Страничное распределение памяти.
- •34. Таблицы страниц для больших объемов памяти.
- •35.Сегментное распределение памяти.
- •36. Сегментно-страничное распределение памяти.
- •37. Задачи ос по управлению файлами и устройствами.
- •38. Многослойная модель подсистемы ввода-вывода.
- •39. Физическая организация жесткого диска. (там еще про hdd, ssd устройства добавление в вопрос) (я пробежался глазами тут вроде нет)
- •40. Файловая система. Определение, состав, типы файлов. Логическая организация файловой системы.
- •41. Физическая организация и адресация файлов.
- •42. Fat. Структура тома. Формат записи каталога. Fat12, fat16, fat32.
- •43. Ufs: структура тома, адресация файлов, каталоги, индексные дескрипторы.
- •44. Ntfs: структура тома, типы файлов, организация каталогов.
- •45. Файловые операции. Процедура открытия файла.
- •46. Организация контроля доступа к файлам. Контроль доступа к файлам на примере Unix
- •47. Отказоустойчивость файловых систем.
- •48. Избыточные дисковые подсистемы raid.
- •49. Многоуровневые драйверы.
- •50. Дисковый кэш.
21. Алгоритмы планирования Linux: о(1), cfs.
В ОС LINUX поддерживается 3 класса потоков:
● реального времени (обслуживаются в порядке циклической очереди),
● реального времени (обслуживаются по FIFO)(First in First Out — первым прибыл, первым обслужен),
● разделения времени.
140 уровней приоритета. Чем меньше число, тем выше приоритет. Потоки реального времени: приоритет 0 – 99. 0 – наивысший. Обычный поток: 100 – 139. У каждого уровня потоков свое значение кванта времени. Linux связывает с потоком значение nice, оно определяет статический приоритет каждого потока. По умолчанию =0, изменяется с помощью системного вызова nice (value), value от -20 до +19.
В планировщике O(1) максимальное увеличение приоритета равно -5, максимальное снижение приоритета равно +5. Планировщик поддерживает связанную с каждой задачей переменную sleep_avg (следит за тем, спит процесс или нет).
(Completely Fair Scheduler (CFS))
CFS (Completely Fair Scheduler (CFS)) имеет структуру дерева. задача значения vruntime состоит в сравнении времени, затраченного на выполнение. Большее идет в правую ветку, меньшее - в левую.
22. Синхронизация процессов и потоков: цели и средства синхронизации.
Синхронизация процессов необходима для исключения гонок и тупиков при обмене данными между потоками, разделении данных, при доступе к процессору и устройствам ввода-вывода. Для этого используют средства межпроцессного взаимодействия
Любое взаимодействие процессов или потоков связано с их синхронизацией, которая заключается в согласовании их скоростей путем приостановки потока до наступления некоторого события и последующей его активизации при наступлении этого события.
Для синхронизации потоков :
Собственные средства и приемы синхронизации
Средства операционной системы.(Более эффективный из за системных вызовов)
Так, потоки, принадлежащие разным процессам, не имеют возможности вмешиваться каким-либо образом в работу друг друга. Без посредничества операционной системы они не могут приостановить друг друга или оповестить о произошедшем событии.
Средства синхронизации - системные вызовы
23. Ситуация состязаний (гонки). Способы предотвращения.
Состязания – ситуация, когда два или более потоков обрабатывают разделяемые данные и конечный результат зависит от соотношения скоростей потоков.
Критическая секция — это часть программы, результат выполнения которой может непредсказуемо меняться, если переменные, относящиеся к этой части программы, изменяются другими потоками в то время, когда выполнение этой части еще не завершено.
Чтобы исключить эффект гонок по отношению к критическим данным, необходимо обеспечить, чтобы в каждый момент времени в критической секции, связанной с этими данными, находился только один поток, не важно, активный он или приостановлен. Этот прием называют взаимным исключением. Некоторые способы пригодны для взаимного исключения при вхождении в критическую секцию только потоков одного процесса, в то время как другие могут обеспечить взаимное исключение и для потоков разных процессов.
24. Способы реализации взаимных исключений: блокирующие переменные, критические секции, семафоры.
Блокирующая переменная это не мьютекс а то что ручками пишешь сам(Как и мьютекс)
Рисунок 5. Реализация критической секции с использованием блокирующих переменных
Каждому набору критических данных ставится в соответствие двоичная переменная, которой поток присваивает значение 0, когда он входит в критическую секцию, и значение 1, когда он ее покидает.
Нельзя прерывать поток между выполнением операций проверки и установки блокирующей переменной. Во избежание таких ситуаций в системе команд многих компьютеров предусмотрена единая, неделимая команда анализа и присвоения значения логической переменной (например, команды ВТС, BTR и ВТ5 процессора Pentium).
Критические секции
Реализация взаимного исключения способом выше имеет недостаток: в течение времени, когда один поток находится в критической секции, другой поток, которому требуется тот же ресурс, получив доступ к процессору, будет непрерывно опрашивать блокирующую переменную, бесполезно тратя выделяемое ему процессорное время, которое могло бы быть использовано для выполнения какого-нибудь другого потока. Для устранения этого недостатка во многих ОС предусматриваются специальные системные вызовы для работы с критическими секциями.
Рисунок 6. Реализация взаимного исключения с использованием системных функций входа в критическую секцию и выхода из нее
Семафоры
Обобщением блокирующих переменных являются так называемые семафоры Дийкстры. Вместо двоичных переменных Дийкстра предложил использовать переменные, которые могут принимать целые неотрицательные значения. Такие переменные, используемые для синхронизации вычислительных процессов, получили название семафоров. То есть доступ к ресурсу может иметь столько потоков, сколько мы сообщаем семафору. Некая переменная заданная в семафор работает так: поток входит в семафор (X-1) , поток выходит из семафор (X+1) , поток не может войти в семафор и получить доступ к ресурсам (X=0)
В частном случае, когда семафор S может принимать только значения 0 и 1, он превращается в блокирующую переменную, которую по этой причине часто называют двоичным семафором (он же наш любимый мьютекс).
