KP580BE51 wrote:zVlad wrote: P.S. Вы когда, Дима, по защите памяти ответите? Вы утверждали что даже если память защищена это все равно создает проблемы для виртуализации. Я просил Вас обосновать и Вы слили.
Вам уже тут все объяснили: Если память защищена, то все равно у VM на X86 есть возможность узнать, VM она или нет.
Мы уже выяснили что возможность узнать что это ВМ ни коим образом не мешает виртуализуемости. Более того эта возможность никак не связана с памятью - идентификатор процессора, первый байт которого будет установлен в x'FF' для виртуальной машины в среде VM, хранится и читается вовсе не из памяти процессора, имеется в виду память для данных ОС и приложений.
Хорошо. Коротенько о памяти. Является ли наличие поддержки виртуальной памяти необходимым требованием для построения системы с МП/МЗ? Нет. А для системы виртуальных машин? Тоже нет.
Механизм виртуальной памяти был изобретен для решения проблемы малого объема и дороговизны реальной памяти на магнитных сердечниках.
Пример МП/МЗ системы не использующей виртуальную память это системы MFT и MVT - многозадачные системы, первая с фиксированным числом задач, вторая с переменным числом задач.
Если виртуальная память не необходимо, то что же требуется от нее для МП/МЗ? Требуется исключение возможности доступа в память со стороны задачи к памяти супервизора и памяти других задач. Как это можно реализовать? По-разному. На МФ эту защиту обеспечивает ключ защиты памяти. Изначально это были четыре бита информации на каждую страницу памяти 4К. Теперь это:
Code: Select all
3.3 Storage Key
A storage key is associated with each 4K-byte block of storage that is available in the configuration. The storage key has the following format:
____ _ _ _
|ACC |F|R|C|
|____|_|_|_|
0 4 6
The bit positions in the storage key are allocated as follows:
Access-Control Bits (ACC): If a reference is subject to key-controlled protection, the four access-control bits, bits 0-3, are matched with the four-bit access key when information is stored and when information is fetched from a location that is protected against fetching.
Fetch-Protection Bit (F): If a reference is subject to key-controlled protection, the fetch-protection bit, bit 4, controls whether key-controlled protection applies to fetch-type references: a zero indicates that only store-type references are monitored and that fetching with any access key is permitted; a one indicates that key-controlled protection applies to both fetching and storing. No distinction is made between the fetching of instructions and of operands.
Reference Bit (R): The reference bit, bit 5, normally is set to one each time a location in the corresponding storage block is referred to either for storing or for fetching of information.
Change Bit (C): The change bit, bit 6, is set to one each time information is stored at a location in the corresponding storage block.
Storage keys are not part of addressable storage. The entire storage key is set by SET STORAGE KEY EXTENDED and inspected by INSERT STORAGE KEY EXTENDED. Additionally, the instruction RESET REFERENCE BIT EXTENDED provides a means of inspecting the reference and change bits and of setting the reference bit to zero. Bits 0-4 of the storage key are inspected by the INSERT VIRTUAL STORAGE KEY instruction. The contents of the storage key are unpredictable during and after the execution of the usability test of the TEST BLOCK instruction.
Каждая задача в MFT/MVT имела свой ключ защиты памяти от 1 до 15 поэтому количество задач было ограничено 15-тью. Память супервизора имеет ключ защиты 0. Ключ защиты памяти имеется также в слове состояния программы - PSW.
Раздел памяти задачи инициализировался системой с определенным ключом. Управление задаче передается загрузкой PSW с таким же ключом. Процессор, выполняя инструкции всякий раз сравнивает ключ памяти в PSW с ключом адресуемой памяти. Если они совпадают - go ahead, если нет то генерируется программное прерывание и управление передается супервизору.
С появлением виртуальной памяти на МФ (1971 г.) роль и формат ключей защиты памяти изменилась (см. выше), они уже не ограничивают количество задач, но они используется и дополнительно усиливают защиту памяти процессов.