Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Синхронизирующие объекты в операционных системах.Содержание книги
Поиск на нашем сайте Рассмотренные выше средства синхронизации всем хороши, только не подходят для синхронизации работы разных потоков (не процессов).
Для этой цели применяются специальные синхронизирующие объекты: - системные семафоры - мьютексы - события таймера и тд
Работа с синхронизирующими объектами похожа на работу с файлами: их можно открывать, закрывать, создавать, уничтожать. Кроме спецобъектов, для синхронизации могут быть использованы обычные объекты ОС – файлы, процессы, потоки.
Объект синхронизации может находиться в двух состояниях: · Сигнальное · Несигнальное
Смысл слова «сигнальное» разный для разных объектов (для потока – завершение, для процесса – завершение всех потоков, для файла – завершение всякого ввода-вывода).
С помощью специального системного вызова потоки сообщают ОС, что они хотят синхронизировать свое состояние с определенным ОБЪЕКТОМ СИНХРОНИЗАЦИИ: Wait(X), где Х – объект синхронизации. Поток, который сделал такой вызов переводится осью в ожидающее состояние, пока объект Х не перейдет в сигнальное состояние.
Чтобы перевести Объект синхронизации в сигнальное состояние, используется другой системный вызов: Set(X);
Поток может ждать сигнального состояния не одного объекта, а нескольких, причем либо всех из них, либо любого из них. Также можно задать Оси время, через которое она должна активизировать поток в любом случае, вне зависимости от состояния объекта синхронизации.
Примеры: · Основной поток создает множество серверных потоков и должен дождаться их завершения – надо сделать wait(x1, x2 и тд). · Один поток активизируется после завершения другого: надо каждый раз делать wait(предыдущий поток);
Такие неспецифические объекты синхронизации при переходе в сигнальное состояние активизируют ВСЕ ожидающие потоки, что может быть нужно не всегда.
Иногда надо другое поведение: тогда используются специальные объекты синхронизации: события, мютексы, системные семафоры.
Мютекс и семафор используются для управления доступом к данным. Мютекс освобождает из очереди только ОДИН поток. Когда поток начинает работу он как бы захватывает мютекс, а по завершении работы – отдает мютекс.
Объект-событие используется для оповещения других потоков о том, что какие-то действия завершены (например, потоки ждут, пока один поток читает данные в буфер памяти.) В начале работы поток-читатель устанавливает объект-событие в несигнальное состояние. Все ждущие потоки поставили wait(поток-событие). После завершения работы поток-читатель переводит объект-событие в сигнальное состояние, и ОС освобождает все ждущие именно этих данных потоки. 18. Подсистема управления памятью. Функции ОС по управлению памятью. Методы распределения памяти (фиксированные разделы, динамические разделы, сегментная, страничная, сегментно-страничная структуризация адресного пространства, свопинг, виртуальная память). Организация виртуальной памяти, преобразование адреса. Обмен данными между процессами на основе виртуальной памяти. Функции ОС по управлению памятью в мультипрограммной среде: · Отслеживание свободной и занятой памяти · Выделение памяти процессам и освобождение по их завершении · Вытеснение кодов и данных с памяти на диск (полное или частичное) когда памяти не хватает и возвращение их обратно, когда ее достаточно · Настройка адресов программы на конкретную область физической памяти. · Динамическое распределение памяти между процессами (выполнение запросов приложений на выделение им дополнительной памяти) · Дефрагментация памяти · Защита памяти Методы распределения памяти Разные ОС по-разному распределяют память между процессами Методы распределения памяти можно разделить на: - без использования внешней памяти - фиксированными разделами - динамическими разделами - перемещаемыми разделами - с использованием внешней памяти - страничное распределение - сегментное распределение - сегментно-страничное распределение
Фиксированные разделы Наиболее простой и примитивный способ распределения памяти. Во время старта или загрузки системы память разбивается на разделы фиксированной величины, после чего границы разделов не сдвигаются.
Новый процесс поступает либо в общую очередь, либо в очередь конкретного раздела. Система: - сравнивает требуемый объем памяти с памятью раздела - загружает программу в один из разделов и настраивает адреса
Недостаток системы: - жесткость - уровень мультипрограммирования заранее ограничен числом разделов - невозможно выполнить прогу, которая больше самого большого раздела
Все же используется в системах реального времени, т.к. там детерминированность компенсирует недостаточную гибкость.
Динамические разделы
· Память изначально свободна и не разбита на разделы · При поступлении процесса на исполнение ей выдается столько памяти, сколько нужно, если памяти не хватает, то процесс не исполняется · После завершения процесса память освобождается
ОС должна: - вести таблицы свободных и занятых областей - анализировать требования к памяти при создании нового процесса, подыскивать ему незанятую область - загружать процесс в выделенный ему раздел, корректировать таблицы - корректировать таблицы после завершения процесса
Плюсы: - гибче Минусы – фрагментация памяти.
Так организована память в ОС/360
Перемещаемые разделы Выделение памяти перемещаемыми разделами призвано решить проблему фрагментации. Суть его – сжатие, то есть перемещение всех занятых участков в сторону старших или младших адресов, чтобы вся свободная память собралась в одном месте.
Ко всем функциям, исполняемым ОС в динамических разделах, добавляется сжатие, которое должно производиться: - либо при каждом завершении процесса - либо когда для нового процесса не хватает места.
Физические адреса здесь постоянно меняются, поэтому перемещающий загрузчик для их настройки использовать нельзя, нужно динамическое преобразование адресов.
Минусы: - затраты времени
|
||
|
Последнее изменение этой страницы: 2017-02-05; просмотров: 473; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.89 (0.008 с.) |