SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
Архитектура QEMU
• Интерпретатор моделирующий цикл исполнение CPU
• Динамический бинарный транслятор базовых блоков
• Трансляция: машинный код гостя -> простой IR ->
  непривилегированный машинный код хоста
• Внешние прерывания обновляют флаг проверяемый
  интерпретатором и порождѐнным кодом
• Программная модель MMU (логический TLB)
• Программные модели устройств
• Моделирование всей машины или только режима
  пользователя с трансляцией системных вызовов
• Опциональный ускоритель режима ядра (KVM)


                                                    1
Транслятор QEMU
• Используется TCG (tiny code generator) из простого
  компилятора C
• JIT компилятор базовых блоков машинного кода
  (translated block)
• IR – простая 3-х операндная нотация, типичный RISC
  LIR
• Результаты компиляции сохраняются в кэше
  индексированном адресом начала блока (PA или
  VA?)
• Компиляция только при отсутствии в кэше
• Регистры целевой архитектуры – глобалы
  компилятора
• Сложные операции – код на C вызываемый из
  порождѐнного кода
                                                       2
Управление памятью в QEMU

• Трансляция адресов при необходимости
• Программная модель MMU
• Кэш трансляции адресов (TLB) в состоянии
  виртуального процессора
• Обработчики доступа для MMIO и некоторых
  критических участков
• Точная обработка исключений виртуального
  CPU (благодаря примитивности
  компилятора)
• Сброс TLB при обновлении указателя
  таблицы страниц (ещѐ?)
                                             3
Некоторые оптимизации в
 QEMU
• Фиксированное назначение некоторых
  регистров (каких?)
• Выход из цикла интерпретации longjmp()
• Ссылки на TB из описания страницы
  (зачем?)
• Прямая линковка TBs
• Использование MMU хоста (через сигналы
  ОС)
• Использование системы непосредственного
  исполнения непривилегированного кода при
  возможности
                                             4
Valgrind

• Изначально система поиска ошибок работы
  с памятью (memcheck)
• Позднее расширена следующими
  инструментами
   Massif (профайлер хипа)
   Helgrind (поиск race conditions)
   Cachegrind (профилятор кэша)
• Динамический бинарный транслятор
  порождающий инструментированный код
• Отслеживает состояние битов памяти
• Или кэша, или…
                                            5
Вопросы

• Какие сложности может встретить
  попытка добавить в QEMU
  оптимизирующий компилятор?
• Какие процессоры легче
  моделировать с QEMU?
• Какие процессорные оптимизации
  можно добавить в QEMU?
• Какие расширения для Valgrind
  предложили бы вы?

                                    6

Mais conteúdo relacionado

Mais procurados

Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
025
025025
025JIuc
 
45
4545
45JIuc
 
Виртуализация
ВиртуализацияВиртуализация
ВиртуализацияVitebsk Miniq
 
Объектно-ориентированное программирование. Лекции 13 и 14
Объектно-ориентированное программирование. Лекции 13 и 14Объектно-ориентированное программирование. Лекции 13 и 14
Объектно-ориентированное программирование. Лекции 13 и 14Dima Dzuba
 
презентация15
презентация15презентация15
презентация15student_kai
 

Mais procurados (9)

Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
025
025025
025
 
45
4545
45
 
Gpgpu
GpgpuGpgpu
Gpgpu
 
Theme 06
Theme 06Theme 06
Theme 06
 
Виртуализация
ВиртуализацияВиртуализация
Виртуализация
 
Объектно-ориентированное программирование. Лекции 13 и 14
Объектно-ориентированное программирование. Лекции 13 и 14Объектно-ориентированное программирование. Лекции 13 и 14
Объектно-ориентированное программирование. Лекции 13 и 14
 
06. memory
06. memory06. memory
06. memory
 
презентация15
презентация15презентация15
презентация15
 

Destaque

Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...shivsr5
 
Programación cuartos de final vi campeonato nacional femenino sub 19
Programación cuartos de final vi campeonato nacional femenino sub 19Programación cuartos de final vi campeonato nacional femenino sub 19
Programación cuartos de final vi campeonato nacional femenino sub 19alcaldiadetamesis
 
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMThu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMpicvendor
 
ČteSyRád: prezentace projektu
ČteSyRád: prezentace projektuČteSyRád: prezentace projektu
ČteSyRád: prezentace projektuKISK FF MU
 
20071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture1020071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture10Computer Science Club
 
048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...
048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...
048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...Marcos Donato
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06Computer Science Club
 
Rushani bible luke 2
Rushani bible   luke 2Rushani bible   luke 2
Rushani bible luke 2ArabBibles
 
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...Bente Kalsnes
 
One piece volume 43(410-419)
One piece volume 43(410-419)One piece volume 43(410-419)
One piece volume 43(410-419)Marcos Donato
 
20071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture1120071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture11Computer Science Club
 
Excelnorman
ExcelnormanExcelnorman
Excelnormannhorman
 

Destaque (20)

Nature in pencil
Nature in pencilNature in pencil
Nature in pencil
 
Presentation1
Presentation1Presentation1
Presentation1
 
Foresight
ForesightForesight
Foresight
 
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
 
Programación cuartos de final vi campeonato nacional femenino sub 19
Programación cuartos de final vi campeonato nacional femenino sub 19Programación cuartos de final vi campeonato nacional femenino sub 19
Programación cuartos de final vi campeonato nacional femenino sub 19
 
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCMThu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
Thu Moi Ky Niem 10 Nam PFIEV - BKTPHCM
 
ČteSyRád: prezentace projektu
ČteSyRád: prezentace projektuČteSyRád: prezentace projektu
ČteSyRád: prezentace projektu
 
20071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture1020071125 efficientalgorithms kulikov_lecture10
20071125 efficientalgorithms kulikov_lecture10
 
048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...
048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...
048.guerra.civil. .o.espetacular.homem.-.aranha.535.hq.br.28 jun07.os.impossi...
 
Partidos de semifinal
Partidos de semifinalPartidos de semifinal
Partidos de semifinal
 
SCN_0010
SCN_0010SCN_0010
SCN_0010
 
Mama
MamaMama
Mama
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06
 
Rushani bible luke 2
Rushani bible   luke 2Rushani bible   luke 2
Rushani bible luke 2
 
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
Sett fra Origo: Hvordan sosiale medier kan åpne opp politiske beslutningspros...
 
One piece volume 43(410-419)
One piece volume 43(410-419)One piece volume 43(410-419)
One piece volume 43(410-419)
 
Dia26
Dia26Dia26
Dia26
 
20071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture1120071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture11
 
Nwp 23
Nwp 23Nwp 23
Nwp 23
 
Excelnorman
ExcelnormanExcelnorman
Excelnorman
 

Semelhante a Н. Иготти. Виртуализация и виртуальные машины. Лекция 11

Н. Иготти. Виртуализация и виртуальные машины. Лекция 10
Н. Иготти. Виртуализация и виртуальные машины. Лекция 10Н. Иготти. Виртуализация и виртуальные машины. Лекция 10
Н. Иготти. Виртуализация и виртуальные машины. Лекция 10Computer Science Club
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06Computer Science Club
 
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Mikhail Kurnosov
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Computer Science Club
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Mikhail Kurnosov
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013ru-fedora-moscow-2013
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPFlyElephant
 
Аппаратные и программные средства управления
Аппаратные и программные средства управленияАппаратные и программные средства управления
Аппаратные и программные средства управленияMaxim Gubin
 
Аппаратные и программные средства управления
Аппаратные и программные средства управленияАппаратные и программные средства управления
Аппаратные и программные средства управленияMaxim Gubin
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019corehard_by
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Ontico
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...VThn18
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Alex Tutubalin
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действииNikita Lipsky
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Alexander Syrotenko
 

Semelhante a Н. Иготти. Виртуализация и виртуальные машины. Лекция 11 (20)

Н. Иготти. Виртуализация и виртуальные машины. Лекция 10
Н. Иготти. Виртуализация и виртуальные машины. Лекция 10Н. Иготти. Виртуализация и виртуальные машины. Лекция 10
Н. Иготти. Виртуализация и виртуальные машины. Лекция 10
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06
 
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
 
Аппаратные и программные средства управления
Аппаратные и программные средства управленияАппаратные и программные средства управления
Аппаратные и программные средства управления
 
Аппаратные и программные средства управления
Аппаратные и программные средства управленияАппаратные и программные средства управления
Аппаратные и программные средства управления
 
Prez osob mikroproc
Prez osob mikroprocPrez osob mikroproc
Prez osob mikroproc
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
Platov
PlatovPlatov
Platov
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
 

Mais de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

Mais de Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

Н. Иготти. Виртуализация и виртуальные машины. Лекция 11

  • 1. Архитектура QEMU • Интерпретатор моделирующий цикл исполнение CPU • Динамический бинарный транслятор базовых блоков • Трансляция: машинный код гостя -> простой IR -> непривилегированный машинный код хоста • Внешние прерывания обновляют флаг проверяемый интерпретатором и порождѐнным кодом • Программная модель MMU (логический TLB) • Программные модели устройств • Моделирование всей машины или только режима пользователя с трансляцией системных вызовов • Опциональный ускоритель режима ядра (KVM) 1
  • 2. Транслятор QEMU • Используется TCG (tiny code generator) из простого компилятора C • JIT компилятор базовых блоков машинного кода (translated block) • IR – простая 3-х операндная нотация, типичный RISC LIR • Результаты компиляции сохраняются в кэше индексированном адресом начала блока (PA или VA?) • Компиляция только при отсутствии в кэше • Регистры целевой архитектуры – глобалы компилятора • Сложные операции – код на C вызываемый из порождѐнного кода 2
  • 3. Управление памятью в QEMU • Трансляция адресов при необходимости • Программная модель MMU • Кэш трансляции адресов (TLB) в состоянии виртуального процессора • Обработчики доступа для MMIO и некоторых критических участков • Точная обработка исключений виртуального CPU (благодаря примитивности компилятора) • Сброс TLB при обновлении указателя таблицы страниц (ещѐ?) 3
  • 4. Некоторые оптимизации в QEMU • Фиксированное назначение некоторых регистров (каких?) • Выход из цикла интерпретации longjmp() • Ссылки на TB из описания страницы (зачем?) • Прямая линковка TBs • Использование MMU хоста (через сигналы ОС) • Использование системы непосредственного исполнения непривилегированного кода при возможности 4
  • 5. Valgrind • Изначально система поиска ошибок работы с памятью (memcheck) • Позднее расширена следующими инструментами  Massif (профайлер хипа)  Helgrind (поиск race conditions)  Cachegrind (профилятор кэша) • Динамический бинарный транслятор порождающий инструментированный код • Отслеживает состояние битов памяти • Или кэша, или… 5
  • 6. Вопросы • Какие сложности может встретить попытка добавить в QEMU оптимизирующий компилятор? • Какие процессоры легче моделировать с QEMU? • Какие процессорные оптимизации можно добавить в QEMU? • Какие расширения для Valgrind предложили бы вы? 6