Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Прямая и косвенная адресация памяти




Система распределения памяти

Дисковый кэш

Дисковый кэш используется для ускорения обмена данными между оперативной памятью и внешней памятью (диском). В этом случае уменьшается среднее время доступа к данным, расположенным на диске, и роль кэш-памяти выполняет фрагмент оперативной памяти, который используется особым образом.

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

В файле autoexec.bat можно задавать количество буферов, используемых ДОС для операций с файлами (параметр BUFFERS).

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

В начале ДОС была рассчитана на реальный режим работы процессора i8086, i8088. В реальном режиме работы любая программа адресовалась непосредственно к физической оперативной памяти. Для адресации использовался 16 разрядный регистр процессора. Объем адресуемой памяти составлял 64 кб. То есть, если в программе было написано, что требуется взять ячейку с адресом 267, то бралась действительно ячейка памяти с номером 267.

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

Следующий недостаток: размер сегмента не превышал 64 кб, что создавало большие трудности при адресации объектов данных большого размера. Так, например, Вы не могли в программе задать массив целых чисел длиной свыше 32000. Поэтому если вам требовался массив из 50000 целых чисел, то вы должны были заводить два массива и переключаться между ними в программе.

С появлением процессора i80286, способным работать не только в реальном, но и в защищенном режиме, появилась возможность создать более совершенные системы управления памятью. В это же время вырос объем доступной ОП, что поставило задачу ее адресации.

В защищенном режиме программа не оперирует непосредственно физическими адресами памяти, она работает с так называемыми логическими адресами. Задача ОС – во время работы программы преобразовать логический адрес в физический. Чтобы провести это преобразование операционной системе требуется некоторая таблица, устанавливающая соответствие между логическим и физическим адресом – называется такая таблица таблицей дескрипторов. Естественно, эту таблицу снабдили дополнительными полями, которые позволяют ОС контролировать правильность использования выделенной памяти: вид сегмента, поле доступа и т.п. Вид использования сегмента поясняет, что за информация расположена в этом сегменте – код программы (кодовый) или данные программы (переменные, массивы и т.д.) или это системный сегмент (ОС). Поле доступа определяет вид использования сегмента: только для чтения, только для записи, чтение – запись.

Логический адрес состоит из двух частей: селектора и смещения. Селектор служит индексом (номером строчки) в таблице дескрипторов. Дескриптор описывает сегмент памяти и содержит базовые адреса, а также некоторые характеристики (см. выше). Схема получения физического адреса изображена на рисунке ниже.

 

Селектор (16 разрядов)   Таблица дескрипторов   Смещение (16 разрядов)
             
    Базовый адрес – номер сегмента оперативной памяти     +
             
        Физический адрес

 

 

Такая схема адресации использовалась в ранних версиях ОС IBM OS/2, MS Windows 3.x.

В ответ на запрос о выделении памяти ОС создает дескриптор, указывая в нем размер выделяемого сегмента. Если программа, адресуя с помощью данного дескриптора память, попытается выполнить чтение или запись за пределами выделенного сегмента (например, в результате ошибки обращаемся к 100 элементу массива длиной 5), операционная система обнаруживает эту попытку и генерирует прерывание, останавливает программу, выдает сообщение об ошибке. Так как с каждым дескриптором хранится тип использования сегмента памяти, то ОС запрещает программе записывать что-либо в системный сегмент или сегмент кода.

Вид доступа – это максимальный номер кольца защиты программы, которой разрешается доступ к данному сегменту. Три уровня защиты, называются кольцами защиты. Самым привилегированным является 0 кольцо защиты, в котором могут находиться только ядро ОС и драйверы. В 1 и 2 кольце защиты могут располагаться менее критичные системы такие, как программы обслуживания, программы, работающие с портами аппаратуры, системы управления базами данных и т.п. Обычные программы работают в 3 кольце защиты.

Такая система защиты предохраняет ОС от вмешательства пользовательских программ, в то же время она оставляет последним возможность выполнять привилегированные команды путем вызова модулей ОС. То есть программы не могут изменить системные данные, но системные функции могут изменить данные программы.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 1045; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.