Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на ОС.docx
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
204.32 Кб
Скачать
  1. Алгоритм планирования Unix

Многозадачный алгоритм планирования разработан в интерактивных системах. У алгоритма планирования имеются 2 уровня: 1-Низкоуровневый 2-Высокоуровневый. У разных разновидностей Unix-систем несколько отличающиеся системы. В низкоуровневых используется несколько очередей, с каждой очередью определён приоритет или диапазон приоритетов. Процессы разделены на пользовательские и системные. Отрицательные приоритеты выше положительных.

Принцип работы: Низкоуровневый планировщик просматривает очередь с высокого приоритета. Из этой очереди он выбирает и выполняет первый процесс. Размер кванта равен 100 мл секунд или пока не заблокируется. Если выполняется весь квант то задача помещается в конец очереди. Раз в секунду приоритеты пересчитываются в очереди. Приоритет = использованию центра процессора + показатель любезности + некоторая жестоко зашитая база. Использование центрального процессора в таких таймерах в секунду которую процессор отработал в последнее время. Показатель любезности в диапазоне от -20 до +19. Высокоприоритетные могут назначать приоритеты от -20 до -10

  1. Алгоритм планирования в Linux

В операционной системе Linuks 3 класса потоков: 1-Классы реального времени- обслуживаются по алгоритму fi for. 2-Потоки реального времени, но обслуживаются в порядке циклической очереди. 3-Потоки разделения времени пользовательские, системные. Потоки реального времени могут прерываться приоритетными. У каждого потока есть приоритет по умолчанию +20. Квант времени 10 мл секунд. Порядок пересчета приоритетов следующий:1 -Если класс реального времени в некоторую переменную вписывается 1000+приоритет. 2-Если время кванта оставшегося до его работы больше 0, то присваивается приоритет + квант времени.

  1. Взаимодействие потоков и проблемы синхронизации

  2. Задачи взаимного исключения

  3. Семафоры

  4. Тупики

  5. Синхронизирующие объекты ОС

  6. Задача «читатели-писатели»

Определить ее можно следующим образом. Имеются данные, совместно используемые рядом процессов. Данные могут находиться в файле, в блоке основной памяти или даже в регистрах процессора. Имеется несколько процессов, которые только читают эти данные (читатели), и несколько других, которые только записывают данные (писатели). При этом должны удовлетворяться следующие условия.

  • Любое число читателей могут одновременно читать файл.

  • Записывать информацию в файл в определенный момент времени может только один писатель.

  • Когда писатель записывает данные в файл, ни один читатель не может его читать.

Перед тем как приступить к работе, разделим эту задачу на две: обычную задачу взаимоисключений и задачу производителя/потребителя. В задаче читателей/писателей читатели не записывают данные, а писатели их не читают. Более общей является ситуация, когда каждый процесс может как читать, так и писать данные (и которая включает рассматриваемую задачу как частный случай). В таком случае мы можем объявить любую часть процесса, которая обращается к данным, критическим разделом и использовать простейшее решение на основе взаимоисключений. Причина, по которой мы рассматриваем частный случай более общей задачи, заключается в том, что общее решение значительно замедляет работу, в то время как для частного случая имеется гораздо более эффективное решение. Представим себе библиотечный каталог, в котором читатели могут искать нужную им литературу, а один или несколько работников библиотеки могут этот каталог обновлять. При общем решении читатели будут вынуждены входить в каталог по одному, что, конечно, приведет к неоправданным задержкам и очередям. Кроме того, работники библиотеки при внесении изменений не должны мешать друг другу, а также не должны допускать читателей к данным в момент их изменения, чтобы предотвратить получение читателем недостоверной информации.

Можно ли рассматривать задачу производителя/потребителя как частный случай задачи читателей/писателей с единственным писателем (производитель) и единственным читателем (потребитель)? Оказывается, нет. Производитель — не просто писатель. Он должен считывать значение указателя очереди, чтобы определять, куда следует вносить очередную порцию информации, и выяснять, не заполнен ли буфер. Аналогично и потребитель является не просто читателем, так как он изменяет значение указателя очереди, указывая, что элемент удален из буфера.