Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Виртуальная память и организация защиты памяти





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

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

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

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

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

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

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

Для увеличения эффективности такого типа схем в процессорах используется специальная полностью ассоциативная кэш-память, которая также называется буфером преобразования адресов (TLB translation-lookaside buffer). Хотя наличие TLB не меняет принципа построения схемы страничной организации, с точки зрения защиты памяти, необходимо предусмотреть возможность очистки его при переключении с одной программы на другую.

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

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

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

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

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

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

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

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

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

 

Терминология

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

 

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

 

bank – банк. Группа модулей памяти одинаковой емкости, которые должны быть установлены одновременно, чтобы система могла работать. Количество модулей равняется отношению ширины системной шины к ширине шины модуля (умноженному на коэффициент interleave). Некоторые компьютеры способны работать с неполным банком памяти, но ценой значительного падения быстродействия.

 

bus - шина. Совокупность линий ввода-вывода, по которым информация передается одновременно. Ширина и частота шины естественным образом влияет на пропускную способность. Под главной, или системной шиной понимается шина между процессором и подсистемой памяти.

 

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

 

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

 

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

 

DDR (Double Data Rate) = SDRAM II

 

DIMM (Dual In-Line Memory Module) - наиболее современная разновидность форм-фактора модулей памяти. Отличается от SIMM тем, что контакты с двух сторон модуля независимы (dual), что позволяет увеличить соотношение ширины шины к геометрическим размерам модуля. Наиболее распространены 168-контактные DIMM (ширина шины 64 бит), устанавливаемые в разъем вертикально и фиксируемые защелками. В портативных устройствах широко применяются SO DIMM.

 

DIP (Dual In-line Package) - микросхемы с двумя рядами контактов, расположенными вдоль длинных сторон чипа и загнутых "вниз". Чрезвычайно распространенная упаковка во времена "до" модулей памяти.

 

DRAM (Dynamic RAM) - динамическая память - разновидность RAM, единичная ячейка которой представляет собой конденсатор с диодной конструкцией. Наличие или отсутствие заряда конденсатора соответствует единице или нулю. Основной вид, применяемый для оперативной памяти, видеопамяти, а также различных буферов и кэшей более медленных устройств. По сравнению со SRAM заметно более дешевая, хотя и более медленная по двум причинам - емкость заряжается не мгновенно, и, кроме того, имеет ток утечки, что делает необходимой периодическую подзарядку.

 

DRAM module - модуль памяти - устройство, представляющее собой печатную плату с контактами, на которой расположены чипы памяти (иногда заключенное в корпус), и представляющее собой единую логическую схему. Помимо чипов памяти может содержать и другие микросхемы, в том числе шунтирующие резисторы и конденсаторы, буферы, logic parity и т.п.

 

ECC (Error Checking and Correction) - выявление и исправление ошибок (возможны другие дешифровки того же смысла) - алгоритм, пришедший на смену "контролю четности". В отличие от последнего каждый бит входит более чем в одну контрольную сумму, что позволяет в случае возникновения ошибки в одном бите восстановить адрес ошибки и исправить ее. Как правило, ошибки в двух битах также детектируются, хотя и не исправляются. ECC поддерживают практически все современные серверы, а также некоторые чипсеты "общего назначения". Надо отметить, что ECC не является панацеей от дефективной памяти и применяется для исправления случайных ошибок.

 

EDO (Extended Data Out) - разновидность асинхронной DRAM, очень широко применявшаяся в последние 2 года. Представляет собой дальнейшее развитие метода fast page по "конвейерной" схеме - линии ввода-вывода остаются какое-то время открытыми для чтения данных в процессе обращения к следующему адресу, что позволяет организовать цикл доступа более оптимально.

 

fast page - дословно быстрый страничный (режим). Очень старая схема оптимизации работы памяти, которая основана на предположении, что доступ, как правило, осуществляется по последовательным адресам. Позволяет наряду с обычным циклом (RAS, затем CAS), использовать сокращенный, при котором RAS фиксирован, и соответственно его зарядка не требует времени. На сегодняшний день fast page - наиболее медленная из реально применяемых организаций памяти, однако еще сравнительно недавно это был единственный выбор для систем с контролем четности.

 

interleave - чередование - способ ускорения работы подсистемы памяти, основанный, как и многие другие, на предположении, что доступ происходит к последовательным адресам. Реализуется аппаратно на уровне контроллера и требует организации банка памяти таким образом, что суммарная ширина шины модулей превосходит ширину системной шины в k=2n раз (это число называется коэффициентом interleave и иногда записывается в виде k:1). Таким образом, каждый банк состоит из k "нормальных" банков. Контроллер распределяет "нормальное" адресное пространство подсистемы так, что каждый из k последовательных адресов физически находится в разном банке. Обращение к банкам организовано со сдвигом по фазе (напомним, что отдельный цикл обращения может требовать 5 тактов шины и более). В результате при последовательном обращении к данным за один обычный цикл обращения можно получить до k обращений в режиме interleave. Реальный выигрыш, разумеется, меньше, кроме того, interleave заметно увеличивает минимальный размер банка (как в числе модулей, так и в емкости). В SDRAM interleave реализован на уровне чипа.

 

MDRAM (Multibank DRAM) - многобанковая DRAM - разновидность DRAM с interleave, организованным на уровне чипа, применяется преимущественно в графических подсистемах.

 

Rambus DRAM - технология DRAM, разработанная компанией Rambus и позволяющая создавать память с высокой пропускной способностью (несколько сотен Mb/сек). Поскольку технология официально поддержана компанией Intel, высока вероятность того, что эта память будет основной в компьютерах будущего. Тем не менее, поскольку стандарт не является открытым, а защищен патентом и как следствие подлежит лицензированию, консорциум major-производителей ведет разработку конкурирующего стандарта SLDRAM. В настоящее время уже применяется в видеоподсистемах высокого уровня.

 

RAM (Random Access Memory) - память со случайным доступом. Любое устройство памяти, для которого время доступа по случайному адресу равняется времени доступа по последовательным адресам. В этом смысле термин практически утратил свое значение, так как современные технологии RAM используют методы оптимизации последовательного доступа, но в прошлом это действительно было критерием для отличения устройств, предназначенных для оперативного хранения небольших объемов данных (в русской традиции - оперативное запоминающее устройство, ОЗУ) от устройств для постоянного хранения больших массивов (постоянное или программное ЗУ, ПЗУ).

 

RAS (Row Access Strobe) - регистр обращения к строке. Сигнал, поданный на линию RAS чипа, означает, что через адресные линии вводится адрес строки.

 

RDRAM = Rambus DRAM

 

ROM (Read-Only Memory) - память без перезаписи - вообще говоря, любое запоминающее устройство, перезапись информации на котором невозможна в принципе. В настоящее время термин самостоятельной ценности не имеет, применяясь иногда в аббревиатурах (CD-ROM), в том числе и для описания устройств, допускающих перезапись, хотя в основном предназначенных для чтения (EEPROM).

 

refresh - подзарядка. Как известно, состоянием ячейки памяти DRAM является наличие/отсутствие заряда на конденсаторе. Этот заряд подвержен утечке, поэтому для сохранения данных конденсатор необходимо время от времени подзаряжать. Это достигается подачей на него время от времени напряжения (несложная диодная конструкция обеспечивает refresh только тех конденсаторов, на которых уже есть заряд).

 

SDRAM (Synchronous DRAM) - синхронная DRAM - название синхронной памяти "первого поколения", широко применяющейся в настоящее время и имеющей пропускную способность порядка 100Mb/сек.

 

SDRAM II - находящийся в стадии разработки SDRAM следующего поколения, который должен будет поддерживать вдвое большую (200Mb/сек) пропускную способность.

 

SGRAM (Synchronous Graphic RAM) - разновидность синхронной видеопамяти.

 

SIMM (Single In-line Memory Module) - наиболее распространенный в течение долгого времени форм-фактор для модулей памяти. Представляет собой прямоугольную плату с контактной полосой вдоль одной из сторон, фиксируется в разъеме поворотом с помощью защелок. Контакты с двух сторон платы на деле являются одним и тем же контактом (single). Наиболее распространены 30- и 72-контактные SIMM (ширина шины 8 и 32 бит соответственно).

 

SIP (Single In-Line Package) - разновидность форм-фактора модулей памяти, вытеснены SIMM и в настоящее время почти не встречаются. Проще всего описать их как SIMM, у которого контакты не "наклеены" на плату, а имеют форму иголок (pin в первоначальном значении этого слова) и торчат в виде гребенки.

 

SLDRAM (SyncLink DRAM) - условное название высокоскоростной памяти, разрабатываемой консорциумом производителей в качестве открытого стандарта в противовес Rambus DRAM.

 

SRAM (Static RAM) - статическая память - разновидность RAM, единицей хранения информации в которой является состояние "открыто-закрыто" в транзисторной сборке. Используется приемущественно в качестве кэш-памяти 2-го уровня. Ячейка SRAM более сложна по сравнению с ячейкой DRAM, поэтому более высокое быстродействие SRAM компенсируется высокой ценой. Несмотря на низкое энергопотребление, является энергозависимой.

 

timing diagram - временная диаграмма - количества тактов системной шины, необходимых для доступа к случайно выбранному адресу и следующим за ним адресам. Характерные диаграммы для разных типов памяти (в предположении, что они достаточно быстры, чтобы оптимально взаимодействовать с шиной) - 5-3-3-3 (fast page), 5-2-2-2 (EDO), 5-1-1-1 (SDRAM).


Литература

«Компьютер-ИНФО» № 17(159) 21 мая 1999 года

«Компьютер-ИНФО» № 18(160) 28 мая 1999 года

«Компьютер-ИНФО» № 20(162) 11 июня 1999 года

«Компьютер-ИНФО» № 21(163) 18 июня 1999 года

«Компьютер-ИНФО» № 23(165) 2 июля 1999 года

Справочные материалы с интернет-сайта

http://www.ixbt.ru

Статья «Серверы корпоративных баз данных» с интернет – сайта

http://hackers.webservis.ru/dse/corp_db/contents.htm

Статья «BIOS Setup: настраиваем подсистему памяти» с интернет-сайта

http://www.fcenter.ru/fc-articles/Technical/fc-articles-2000/20001012-biossetup.htm







ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.