Виртуализуемость и многозадачность/многопользовательность

User avatar
KP580BE51
Уже с Приветом
Posts: 15007
Joined: 14 Jun 2005 11:50
Location: Ukraine

Post by KP580BE51 »

zVlad wrote: P.S. Вы когда, Дима, по защите памяти ответите? Вы утверждали что даже если память защищена это все равно создает проблемы для виртуализации. Я просил Вас обосновать и Вы слили.

Вам уже тут все объяснили: Если память защищена, то все равно у VM на X86 есть возможность узнать, VM она или нет.
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Post by zVlad »

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 г.) роль и формат ключей защиты памяти изменилась (см. выше), они уже не ограничивают количество задач, но они используется и дополнительно усиливают защиту памяти процессов.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

zVlad wrote: Сопоставьте подчеркнутое и ответь, пожалуйста, на вопрос: мы говорим о виртуализуемости коипьтера или чего (я не понимаю что значит виртуализуемость системы)?

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

Кстати, с появлением 64-битной архитектуры x86 активно обсуждается идея blue-pill. В двух словах идея такая: вредноносная программа внедряется в ядро системы, и при загрузке стартует свой hypervisor первым. Затем стартует hypervisor OS. Утверждается, что при аппаратной виртуализации в x86-64, hypervisor OS не будет видеть что он уже исполняется в VM первого hypervisor, но evil hypervisor его полностью контролирует (матрица ;))
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

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

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

zVlad, есть возражения против логики самого доказательства? пока я только вижу что вам не нравится как я определяю VM. Давайте свое определение VM.
Кстати, по поводу Linux на z/OS. быстрый поиск показал что Linux может быть с ядром, которое адаптировано для использования под hypervisor и с драйверами "заточенными" для работы с виртуальным оборудованием. дайте мне точную название версии Linux, которая идет на мейнфрейме. Я тогда смогу посмотреть более точную инфу по такому Linux. IMHO утверждение что IBM VM способна выполнять любую OS под ней, мне кажется несколько сильным.
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Post by zVlad »

Flash-04 wrote:
Мы уже выяснили что возможность узнать что это ВМ ни коим образом не мешает виртуализуемости. Более того эта возможность никак не связана с памятью - идентификатор процессора, первый байт которого будет установлен в x'FF' для виртуальной машины в среде VM, хранится и читается вовсе не из памяти процессора, имеется в виду память для данных ОС и приложений.

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


Например? Можно узнать хотя бы пару-тройку побочных эффектов.
В случае z/VM гостевые ОС используют эту информацию для активизации так называемых средств сотрудничества с CP (монитор ВМ). Средства сотрудничества лишь улучшают производительность. В первую очередь это исключение двойной виртуализации памяти.
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Post by zVlad »

Flash-04 wrote:....
Кстати, по поводу Linux на z/OS. быстрый поиск показал что Linux может быть с ядром, которое адаптировано для использования под hypervisor и с драйверами "заточенными" для работы с виртуальным оборудованием. дайте мне точную название версии Linux, которая идет на мейнфрейме. Я тогда смогу посмотреть более точную инфу по такому Linux. IMHO утверждение что IBM VM способна выполнять любую OS под ней, мне кажется несколько сильным.


Мне сейчас выходить на работу, так что продолжим вечером. Если коротенько то я уже намекал на средства сотрудничества и. интерфейс команды DIAG.

И второе, в системах на МФ нет драйверов, поэтому в этом смысле затачивать нечего. Любая ОС МФ строит канальную программу, которую так или иначе выполняет канал. В Виртуальной обстановке СР эту программу анализирует и вносит необходимые изменения чтобы она могла быть правильно выполнена на реалных устройствах.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

zVlad wrote: Например? Можно узнать хотя бы пару-тройку побочных эффектов.


Я уже приводил

Code: Select all

if (RunUnderVm() == 1)
  die("Я такой дурацкий процесс, что я работаю только на голом железе, а под VM работать не собираюсь")
else
  DoSomethingUseful()


Такой код очевидно будет работать на голой машине, но не будет под VM
Вы можете сколь угодно критиковать этот код, но утверждение о полной виртуализации говорит о том, что под VM должен работать ЛЮБЬОЙ код, в том числе и такой, и ему должно казаться, что он работает на голом железе
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

zVlad wrote: Мне сейчас выходить на работу, так что продолжим вечером. Если коротенько то я уже намекал на средства сотрудничества и. интерфейс команды DIAG.

а вам уже тонко намекали, что это "кооперативная" или "послушная" VM 8)

И второе, в системах на МФ нет драйверов, поэтому в этом смысле затачивать нечего. Любая ОС МФ строит канальную программу, которую так или иначе выполняет канал. В Виртуальной обстановке СР эту программу анализирует и вносит необходимые изменения чтобы она могла быть правильно выполнена на реалных устройствах.

Blue-pill есть на мейнфрейме? что-то мне кажется из Ваших объяснений что нет :D
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

Dmitry67 wrote:Вы можете сколь угодно критиковать этот код, но утверждение о полной виртуализации говорит о том, что под VM должен работать ЛЮБЬОЙ код, в том числе и такой, и ему должно казаться, что он работает на голом железе

я уже говорил выше - на "настоящей" VM можно спокойно запускать сколько угодно вложенных hypervisor-ов
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Post by zVlad »

Flash-04 wrote:
Dmitry67 wrote:Вы можете сколь угодно критиковать этот код, но утверждение о полной виртуализации говорит о том, что под VM должен работать ЛЮБЬОЙ код, в том числе и такой, и ему должно казаться, что он работает на голом железе

я уже говорил выше - на "настоящей" VM можно спокойно запускать сколько угодно вложенных hypervisor-ов


B.0 Appendix B. IBM Operating Systems Supported as Guests of z/VM

Code: Select all

 Table 5. z/VM Guest Support Matrix                                                                                             
 
 Guest                                   Host
 
......................

z/VM V4.4                             z/VM V4.4
                                             z/VM V5.1
                                             z/VM V5.2                               
...................
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

забыл добавить: "без кооперативности с вышестоящим hypervisor-ом" 8) как с этим на z/VM? ;) из ваших объяснений - никак :pain1:
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Post by zVlad »

Flash-04 wrote:.....Кстати, по поводу Linux на z/OS. быстрый поиск показал что Linux может быть с ядром, которое адаптировано для использования под hypervisor и с драйверами "заточенными" для работы с виртуальным оборудованием. дайте мне точную название версии Linux, которая идет на мейнфрейме. Я тогда смогу посмотреть более точную инфу по такому Linux. IMHO утверждение что IBM VM способна выполнять любую OS под ней, мне кажется несколько сильным.


Linux on IBM System z

Linux Performance when running under VM
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

вот хорошая статья с картинками:
http://www.ibm.com/developerworks/linux ... linuxvirt/

вопрос на засыпку: я могу в гостевой OS под z/VM запустить вложенный CP (Control Program)?
zVlad
Уже с Приветом
Posts: 15420
Joined: 30 Apr 2003 16:43
Has thanked: 1 time

Post by zVlad »

Flash-04 wrote:забыл добавить: "без кооперативности с вышестоящим hypervisor-ом" 8) как с этим на z/VM? ;) из ваших объяснений - никак :pain1:


You might want to read "Part 4. VM under z/VM" in:

[url=http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/HCSE7B10/CCONTENTS?SHELF=hcsh2a80&DN=SC24-6115-01&DT=20051011152236] z/VM V5R2.0 Running Guest Operating Systems
[/url]

I didn't find clear statement that VM under z/VM is NOT using "Guest Support", but speaking logicaly we can easy understand that since z/VM was designed to run on real computer, and since running VM under z/VM is a very, very rare configuration especially compare to running any other MF systems, therefore, it has no value to make VM running under z/VM with cooperation.
From my experience I can say that it might be needed only when you build z/VM on one location which will run on another location.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Post by Flash-04 »

I didn't find clear statement that VM under z/VM is NOT using "Guest Support", but speaking logicaly we can easy understand that since z/VM was designed to run on real computer, and since running VM under z/VM is a very, very rare configuration especially compare to running any other MF systems, therefore, it has no value to make VM running under z/VM with cooperation.

ага, щаз. :lol: это всего лишь IMHO :umnik1: с моей точки зрения, будь я разработчиком z/VM я бы сразу добавил бы возможность z/VM идти внутри экземпляра другой z/VM в кооперативном режиме, т.к. это сильно бы облегчило жизнь и улучшило бы производительность.

Return to “Вопросы и новости IT”