Метод ключей защитыещё использовался в больших машинах ,а сейчас в IA-64 Itanium.
Заключается в следующем:
Память логических отношений делится на блоки и сегменты. Каждому блоку памяти ставится код, который называется ключом защиты памяти. Каждой программе участвующей в мультипрограмной обработке так же присваивается нод, который называется ключом мультипрограмм Доступ к памяти разрешается если ключи совпадают.
Ключ программы находится либо в слове состояния программы PSW, слово состояния программы используется при переключении программы, сорранении состояния процессора при прерывании.
При обращении к памяти число разрядов зависит от коэффициента мультипрограммы и может составить несколько бит. При обращении к памяти используется адрес помещённый в регистр адреса, после чего запускается цикл памяти.
Группа старших разрядов адреса опред. Номер блока в котором производится обращение. Эти разряды используются для выборки из памяти защиты ключа, защиты которые присваивают данному блоку операционной системы. Ключ защиты хранится на регистре РКЗ. Комбинационная схема предаст. схему сравнения ключа защиты и ключа программы. Если они совпадают то доступ к памяти разрешается. Иначе прерывание по неправильной адресации. Память ключей защиты влияет на быстродействие элементов.
Зачастую используют ассоциативную память.
К каждой ячейке памяти отводится специальный бит защиты. Этот бит анализируется при каждой записи ячеек. Такой метод наиболее совершенный, однако наиболее трудоёмкий. Отбирает до 3 % памяти. Используется в многопроцессорных системах, для построения рентабельных программ (повторно - входимый).
Операция чтение выпускается из любой ячейки. Запись возможна только при сброшенном значении бита защиты.
Виртуальная память – это способ организации памяти при котором пользователь предполагает, что нет физической оперативной памяти которая имеет определённый размер, а есть одноуровневая память, объем которой ограничен адресным пространством систем адресаций машины. Таким образом, программы разрабатываются в виртуальных адресах, а исполняются в физических.
В ранних машинах использовалось статическое распределение памяти или распределение памяти фиксированными разделами.
К каждому разделу строились очереди из задач. Маленькие задачи помещались в раздел 1, средние – в раздел 2, а большие – в раздел 3. Можно организовать одну очередь из всех задач, но могут образовываться пустые разделы или фрагментация памяти, что является недостатком такого метода.
Если программа имеет небольшой размер, то она будет занимать часть раздела. Большие программы не могут полностью поместиться в раздел, сто приводит к проблемам.
На ранних этапах применялись оверлейные программы, когда большая программа разбивалась программистом на оверлеи, то есть небольшие разделы, которые способны поместиться в память. Часть помещалась в физической памяти, а часть находилась на диске. Программист в своей программе должен, указать когда и откуда подкачивать следующий оверлей. Это значительно усложняло разработку программ