- •Реализация потоков в простренстве пользователя
- •Реализация потоков в ядре:
- •Строгое чередование
- •Примитивный межпроцессного взаимодействия
- •Планирование
- •Алгоритм - наименьшее время выполнения .
- •Планирование в интерактивных системах.
- •Управление памятью.
- •Управление памятью с помощью видовых массивов.
- •Управление памятью с помощью связанных списков.
- •Подкачка.
- •Виртуальная память.
- •Функционирование менеджера памяти.
- •Прямой доступ к памяти
Виртуальная память.
Проблемы невозможности размешения в физической памяти всего образа программы была решена с помощью оверлеев. Первым вызывался оверлей с номером 0 отработав вызывал следующий. Они хранились на диске, при необходимости перещались между памятью и диском средствами ОС. Разбиение программы на части осуществлял программист. Был разработан метод виртуальной памяти. ОС сама делила образ проги на части а также анималась перемещение этих частей. Наибольшую популярность преобрела страничная реализация памяти.
При доступе к памяти формировался виртуальный адрес (с помощью базовых регистров сегментных и прочее). Все вертуальные адреса формировали адресное пространство, размер которого ограничивался разрядносстью адресной шины. На компах без веруальной памяти вертуальные адреса попадаали непосредственно в адресную шину. При использовании вертуальной памяти вертуальные адреса передавались диспетчеру памяти, которые преобразовали их в физические и передавали их в машину адреса.
#
Виртуальное адресное простанство разделено на станицы. Физичесая память на блоки. Они имеют одинаковый размер. Диспетчер памяти представляет собой таблицу соответствия страниц и станичных блоков.
#
Наличие виртуальной памяти не решает проблемы нехватки физического адресного пространства. В реальной работе присутствие страницы в памяти отслеживает с помощью бита присутствия\отсутствия. При попытке обращения к неотображаемой странице инициируется прерывание ЦП называемое станичным прерванием или ошибкой из-за отсутствия страницы. Page_fault. ОС записывает многоиспользованный страничный блок на диск и на его место записывается новая страница.
#
Функционирование менеджера памяти.
Заключается в том что виртуальный адрес делиться на 2 части: номер виртуальной страинцы и смещение. Номер страницы используется в качестве индекса таблицы страниц. Проверяется бит присутствия\отсутствия и если он равен 1 то на шину адреса передается содержимое ячейки таблицы страниц и смещение. Две основные проблемы таблицы страницы:
1) большой объем
2) скорость отображения
методы быстрого отображения:
1) конструктивный. представляется набором быстрых аппаратных регистров. Просто та реализации и скорость. Недостатки: дорогизна реализации, и при переключении контекста приходиться переписывать все регистры.
2) все таблицы страниц ,храняться в оперативке. На нужную таблицу указывает 1 апаратныйрегистр.Приемущества: Для перемещения по ней существует 1 регистр, быстрое переключение между процессами. Недостаток: для каждого преобразования необходимо одно или несколько обращений к памяти.
Last recently used
В основе алгоритма лежит наблюдение что страницы многократно используемые в последних командах будут часто использоваться и в последующихинструкциях. И наоборот, в результате когда происходит страничное прерывание из памяти выгружается страница не используемая дольше всего. Для полного осуществления алгоритма необходимо поддерживать связанный список всех страниц в котором неиспользуемая дольше всего страница находится в конце. Сложность реализации заключается в обновлении списка при каждом обращении к памяти. Используя дополнительное аппаратное обеспечение можео реализовать алгоритм двумя путями:
1) компьютер оснащается аппаратным счетчиком, который увеличивается после каждой команды, каждая запись в таблице страниц должна иметь поле для хранения счетчика при каждом обращении к странице значение счетчика сохраняется в соответствующее поле. Таблица с наименьшим значением счетчика является наибоолее давно используемой.
2) в системе поддерживается матрица размером эн на эн где, эн - число страниц. Изначально вся матрица равна 0. При обращении к странице к все ячейка катой строки замещаются единицами а все ячейки катого столбца нулями. Строка с наименьшим двоичным значением обозначает страницу неиспользуемую дольше всего.
Сегментация памяти
реализация сегментации в компах интел пентиум.
Для многих задач наличие двух и более адресных пространств оказывается намного лучше чем одно. Если программа имеет несколько участков памяти и они увеличиваются либо уменьшаются неравномерно то может возникнуть ситуация что участок памяти займет все отведенное место либо наползет на соседний участок при наличии свободного места в других участках. Самое простое решение заключается в обеспечении машины множеством полносью независимых адресных пространств называемых сегментами. Сегмент - логический объект содержит линейную последовательность адресов от 0 до некоторого максимума. Не содержит смеси различных типов. Постокльку сегменты являются отделбными адресными пространствами они могут изменять свой размер независимо друг от друга. Сегменты могут иметь различные виды защиты. Сегментация облегчает совмесное использование данных. Виртуальная память на пентиуме реализует как страничную организацию так и сегментацию, поддерживается 16к независимых сегментов до 1 млрд 32 разрядных слов каждый.
Основа виртуальной памяти состоит из 2х таблиц:
1) локальная таблица - описывает локальные сегменты каждой программы код данные стек и др.
2) глобальная таблица дискрипторов - содержит инфу о системных сегментах в том числе и о ос.
#
для получения доступа к сегменту программа загружает селектор сегмента в 1 из сегментных регистров машины. Селектор представляет собой 16 разрядный номер. Один из битов определяет является сегмент локальным или глобальным, следующие 13 битов определяют номер записи таблицы дискрипторов. Во время загрузки селектора из соответствеющей таблицы извлекается соответствующий дискриптор.
#
дискриптор - длина 8 байт. Если s=0 то 0 - система 1 - приложение.
Бит Р. 0 - сегмент отсутствует в памяяти 1 - присутсвует
бит Д. 0 - 16 разрядный сегмент 1 - 32 разряда
бит Г. 0 - предел в байтах. 1 -предел в страницах
после того как загружается соответсвующий дискриптор проверяется выходит ли смещение за пределы сегмента. Из-за невозможности выделить 32 разр поле а выделено только 20 бит применяется следующая схема: если бит г равен нулю то предел содержит точный размер сегмента до байта иначе размер сегметна в страницах. Страница 4 кб. Затем проверяется находиться ли сегмент в памяти (бит Р). 32 разрядное поле база прибавляется к смещению и формируется линейный адрес.
#
Поле база разбито на 3 части и разбросано по дискриптору для совместимости с процессором 80286 где база состоит из 24 битов. Если не существует страницы организации памяти линейный адрес интерпретируется физически и посылается на адресную шину. В этом случае получается чистая смена сегментации с базовым адресом задаваемом дискриптором. Если доступна страничная подкачка то линейный адрес интерпритируется как виртуальный и отображается физически с помощбю таблицы страниц.
#
в селекторе 2 бита защиты. Пентиум поддерживает 4 уровня защиты.
0 - ядро
1 - системные узлы
2 -библиотеки совмесного доступа
3 - пользовательские программы. Каждая работающая программа находиться на определенном уровне и отмечается 2х битовым полем в слове состояния программы. Если значения соответствуют то доступ происходит без постороннего вмешательства. Чтобы сделать вызов процедура call обращается к шлюзу вызова и передает ему адрес вызываемой процедуры те используются спец точки колл.
Классификация блочного устройства
хранят инфу в виде блоков, фиксированного результата. У каждого блока есть свой адрес.
2) символьые устройства - принимают или передают поток символов без какой либо блочной структуры. Не являются адресуемый, не выполняют функцию поиска.
3) несимвольная, не блочная. Связь между между устройством осуществляется с помощью контролера.
Отображаемые на адресное пространство в памяти устройство ввода, вывода.
У каждого контроллера есть несколько управляющих регистров с помощью которых с ним может общаться цп. А также буфер данных. Существует 2 способа реализации доступа управляющим регистром.
1) управляющему регистру назначается номер порта ввода\вывода. Обращение к порту производиться с помощью спец команд: in rg, port. Out port rg.
2) все управляющие регистры и буферы данных отображаются на адресное пространство памяти. Причем на верхнюю его часть. Достоинства такой схемы: не требуются спецальные команды для обращения к портам ввода\вывода. Не требуются спец механизмов защиты от пользовательских процессов. Каждая команда процессора обращающаяся к памяти может обращаться к регистрам ввода\вывода. Недостатки: необходимо иметь спец апаратуру способную выборочно запрещать кеширование. При едином адресном пространстве все модули памяти и все устройства ввода\вывода должны изучать все обращения цп к памяти чтобы определить на какой реагировать. Существует гибридное решение когда буфер распалагается в общем ...
