rapture 06.09.2011 17:01 unknown

Вот, скажем, есть xen. У него есть гипервизор и гостевые системы. Теоретически, наверное, можно запустить в гостевой системе xen еще один гипервизор xen, в гостевой системе которого запустить еще один гипервизор.
А теперь, следя за ассемблерными руками и процессорными конвеерами, представьте, что гостем вот этого вот третьего xen'a на самом деле является этот первый xen, в котором все крутится.
calcru: Runtime went backward :)

1. gelraen 06.09.2011 17:02 imax

забыл тег "бред"

2. rapturegelraen /1 06.09.2011 17:02 unknown

почему?

3. gelraenrapture /2 06.09.2011 17:05 imax

потому что это всё строится иерархически, и цикл сделать нельзя. Кроме того, я вообще не уверен что гипервизор запустится внутри, это ж паравиртуализация.

4. rapturegelraen /3 06.09.2011 17:09 unknown

Блеать, процессы и потоки внутри ОС — принципиально почти та же самая хуетень, не находишь? 10 способов разделить адресное пространство памяти между 11 едоками. И вообще, мы тут про теоретическую часть говорим, никто тебя код не заставляет писать.
Почему нельзя сделать цикл-то? Или ты еще не видел программу, которая переписывает сама себя? :)

5. gelraenrapture /4 06.09.2011 17:13 imax

Нельзя потому что отношение "запущено внутри" не может изменяться во время работы. И даже если у тебя будет запущено таким макаром три гипервизора, то при запросе какого-то ресурса этот запрос будет летать по кругу, что приведёт к самому банальному зависанию машины.

6. rapturegelraen /5 06.09.2011 17:21 unknown

Может, потому что все это — лишь абстракция для (условно) прямого потокового выполнения кода в конвееере. Условно говоря, вот этот циклический бублик — на конвеере все равно как раскатан асфальтоукладчиком, он все равно не бублик. Это сейчас программные системы построены так, что ты начнешь гонять по кругу. А что если все три этих гипервизора (ну или два) выделят запрашиваемый ресурс, а? Не переадресуют запрос, а тупо выделят. А изнутри кольца это будет выглядить как будто подподчистема А попросила выелить подсистему Б котора япопросила систему А, которая попросила надсистему... бац, ресурсы выделены. Какая-то ленивость наоборот получается.

7. gelraenrapture /6 06.09.2011 17:26 imax

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

8. rapturegelraen /7 06.09.2011 17:29 unknown

Вот ты на это смотришь изнутри, с позиции гипервизора, а я — с позиции процессора. Каждый же гипервизор будет думать, что он выделяет ресурсы у реального железа, поскольку на нем запущен. Так же думает и ОС, запущенная в виртуалке. Что ресурс выделяет она. А на самом деле...

9. gelraenrapture /8 06.09.2011 17:30 imax

а на самом деле получится КРОВЬКИШКИГОВНОКОНФЛИКТРАСПИДОРАСИЛО

10. rapturegelraen /9 06.09.2011 17:36 unknown

Да нихуя. Раньше я думал, что если объявить [1...] получится out of memory, но не тут-то было.
Я вот когда что-то по ассемблеру читаю или код гляжу, меня всегда через пару часов накрывает такое дао. Когда ты, блеать, в голове видишь эти сиране потоки и выделения, видишь что эти перемолотые mov mov mov mov и это на самом деле for (i;i<5;i++).
Ну и так далее. Наверное, надо уже траву принимать и записывать.

11. gelraenrapture /10 06.09.2011 17:48 imax

ну ок, придумай способ распределения ресурсов который не требовал бы единой контроллирующей сущности.

12. rapturegelraen /11 06.09.2011 17:56 unknown

Зачем? Она есть — контроллер прерываний процессора :) Смысл в неиерархичной передаче потока выполнения там, где он должен быть иерархичным... То есть, например, цепочка А → Б → В → выделение. Затем мы в цепочке замыкаем А на В и все будет бегать по кругу, и выделение никогда не произойдет. получится что-то такое:
выделение
|
Б
А В
А я предлагаю сделать из этого что-то типа молекулы бензола, где C — это твои А, Б, В, Г, Д, Е, Ё, а H — то выделенния ресурсов.

Do you really want to delete ?