Реализация потоков в пространстве пользователя, ядра и смешанное

Реализация потоков в пространстве пользователя, ядра и смешанное

В случае потоков в пространстве пользователяядро о потоках ничего не знает. Каждому процессу необходима таблица потоков, аналогичная таблице процессов.

 

Преимущества случая потоков в пространстве пользователя:

· Такую многопоточность можно реализовать на ядре, не поддерживающим многопоточность

· Более быстрое переключение, создание и завершение потоков

· Процесс может иметь собственный алгоритм планирования.

 

Недостатки случая потоков в пространстве пользователя:

· Отсутствие прерывания по таймеру внутри одного процесса

· При использовании блокирующего (процесс переводится в режим ожидания, например: чтение с клавиатуры, а данные не поступают) системного запроса все остальные потоки блокируются.

· Сложность реализации

Поток ядра может содержать несколько потоков пользователя.

 

Взаимное исключение с активным ожиданием

Запрещение прерываний Заключается в запрещении всех прерываний при входе процесса в критическую… Недостаток этого метода в том, что если произойдет сбой процесса, то он не сможет снять запрет на прерывания.

Примитивы взаимодействия процессов

Вводится понятия двух примитивов.

sleep - системный запрос, в результате которого вызывающий процесс блокируется, пока его не запустит другой процесс.

wakeup - системный запрос, в результате которого блокированный процесс будет запущен.

 

 

Основное преимущество - это отсутствие активного ожидания..

Проблема заключается в следующем, если спулер пуст, то wakeup срабатывает в пустую.

 

 

Проблема переполненного буфера (проблема производителя и потребителя)

Чтобы первый процесс не писал, когда буфер полный, а второй не считывал, когда он пуст, вводится переменная count для подсчета количества элементов…  

Семафоры

Семафоры - переменные для подсчета сигналов запуска, сохраненных на будущее. Были предложены две операции down и up (аналоги sleep и wakeup). Прежде чем заблокировать процесс, down проверяет семафор, если он равен нулю, то он блокирует процесс, если нет, то…

Планирование в системах пакетной обработки

Процессы ставятся в очередь по мере поступления. Преимущества: · Простота

Планирование в интерактивных системах

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

Выход из взаимоблокировки

Как правило, требует ручного вмешательства (например: принтер).   Восстановление через откат

Своппинг

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

Виртуальная память

Сочетание памяти ОЗУ и временного хранилища на жестком диске. Когда памяти ОЗУ недостаточно, данные из оперативной памяти помещаются в хранилище под названием файл подкачки. Перемещение данных в файл подкачки и из него освобождает достаточно оперативной памяти для выполнения операции.

Как правило, чем больше объем установленного в компьютере ОЗУ, тем быстрее работают программы. Если нехватка оперативной памяти замедляет работу компьютера, то для ее восполнения можно увеличить размер виртуальной памяти. При этом необходимо учитывать, что чтение данных из ОЗУ выполняется значительно быстрее, чем с жесткого диска, поэтому в качестве решения больше подойдет добавление ОЗУ.

Страничная организации памяти.

Базовые алгоритмы замещения страниц

Для каждой страницы поддерживаются 2 статусных бита. Бит R (Referenced) – бит обращения. Бит устанавливается всякий раз, когда происходит обращение… Алгоритм «FIFO – первый пришел, первый вышел» Сравнение с магазином: для размещения на полной витрине нового товара необходимо избавиться от старого. ОС…

Проблема размера страниц. Политика распределения памяти.

· локальные · глобальные

Совместно используемые страницы

Два процесса могут содержать в таблицах страниц указатели на общие страницы. В случае разделения пространств команд и данных это легко реализуется. Эти данные используются в режиме чтения.

 

В UNIX, когда создается дочерний процесс, у родительского и дочернего процесса общее пространство данных, и только если один из процессов попытается изменить данные, происходит прерывание и создание копии этой страницы, если записи не происходит, то оба процесса продолжают работать с общей памятью. Это приводит к экономии памяти.

 

Политика очистки страниц. Сборка мусора

Лучше всегда держать в запасе свободные блоки, освобождая их заранее, чем при нехватке памяти, искать и освобождать их.

Страничный демон - программа, периодически проверяющая состояние памяти, если занято много блоков, то производит выборочную выгрузку страниц.

Алгоритмы освобождения памяти

Простой алгоритм определения достижимых объектов, «алгоритм пометок» (Mark and Sweep), заключается в следующем: для каждого объекта хранится … (Следует обратить внимание, что, согласно данному алгоритму, если два или… Алгоритм подсчёта ссылок

Сегментная организация памяти

Селектором называется число (в x86 — 16-битное), однозначно определяющее сегмент. Селектор загружается в сегментные регистры. ПРИМЕР: 45 бит памяти – сегмент - 3(45/16=2,…), смещение - 9(45%16=13(% -…

Блочные устройства

Блочное устройство (block device) — вид файла устройств в UNIX/Linux-системах, обеспечивающий интерфейс к устройству, реальному или воображаемому, в виде файла в файловой системе.

С блочным устройством обеспечивается обмен данными блоками данных. Как правило, это устройства произвольного доступа, то есть можно указать, из какого именно места должен быть прочитан или записан блок данных. Данные при чтении или записи на блочное устройство буферизуются.

Типичные примеры блочных устройств: жёсткий диск, CD-ROM, НГМД.

 

Символьные устройства

Символьное устройство — (character device) — вид файла устройства в UNIX/Linux-системах, обеспечивающий интерфейс к устройству, реальному или воображаемому, с возможностью посимвольного обмена информацией.

В отличие от блочного устройства символьное устройство, как правило, не обладает возможностями произвольного доступа. В большинстве своём, чтение и запись данных в символьное устройство не буферизуется.

Типичные примеры символьных устройств: стриммер, модем, телетайп или терминал.

 

Что такое контроллер прерываний

Контроллер прерываний — микросхема или встроенный блок процессора, отвечающий за возможность последовательной обработки запросов на прерывание от разных устройств.

Прерывание - сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код

 

Зачем нужен контроллер прерываний

Асинхронные или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой… Синхронные или внутренние — события в самом процессоре как результат нарушения… Программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде…

Механизм обработки прерываний

Механизм обработки прерываний независимо от архитектуры вычислительной системы включает следующие элементы: 1. установление факта прерывания и идентификация прерывания; 2. запоминание состояния прерванного процесса;