Системы эмуляции. Выполнил работу: Бершауэр В.В. Группа БИТ-191. Дисциплина: Инструментальное обеспечение компьютерно-технической экспертизы. **Ход работы:** **Эмуляция** — комплекс программных, аппаратных средств или их сочетание, предназначенное для копирования (***эмулирования***) функций одной вычислительной системы на другую, отличную от первой, вычислительную систему таким образом, чтобы эмулированное поведение как можно ближе соответствовало поведению оригинальной системы. Был скачен с официального сайта и установлен QEMU для Windows x64 (https://www.qemu.org/download/). *(QEMU – эмулятор различных устройств, который позволяет запускать операционные системы, предназначенные под одну архитектуру, на другой. В случае Windows, является консольным приложением.)* С github (https://github.com/dhruvvyas90/qemu-rpi-kernel) был скачен архив с скомпилированными ядрами Linux для различных версий Rassbery Pi. Операционная система Raspberry Pi OS была скачена с официального сайта Raspberry (https://www.raspberrypi.com/software/operating-systems/). Образ Raspberry и скаченный архив с github были помещены в диреткорию самого QEMU. Для запуска виртуальной машины была использвана следующая команда, где: **qemu-system-arm.exe -kernel ./qemu-rpi-kernel-master/kernel-qemu-5.4.51-buster -dtb ./qemu-rpi-kernel-master/versatile-pb-buster-5.4.51.dtb -cpu arm1136-r2 -m 256 -machine versatilepb -no-reboot -serial stdio -append "root=/dev/vda2 panic=1" -drive "file=2023-05-03-raspios-buster-armhf-lite.img,if=none,index=0,media=disk,format=raw,id=disk0" -device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" -no-reboot** * kernel kernel-qemu-5.451-buster – задаёт путь к ядру Linux, которое будет загружаться; * dtb versatile-pb-buster-5.4.51.dtb – задаёт путь к файлу устройства, необходимому для конфигурации устройств, которые будут эмулироваться; * cpu – задаёт модель процессора, которая будет эмулироваться; * m 256 – задаёт количество выделяемой памяти для виртуальной машины; * machine versatilepb – задаёт тип эмулируемой машины, в данном случае versatilepb; * no-reboot – останавливает виртуальную машину после завершения работы вместо перезагрузки; * serial stdio – направляет вывод виртуальной машины на стандартный вывод. * append «root=/dev/vda2 panic=1» – задаёт параметры, передаваемые ядру Linux при загрузке; * drive "file=2023-05-03-raspios-buster-armhf-lite.img,if=none,index=0,media=disk,format=raw,id=disk0" – создаёт новый виртуальный диск, который будет использоваться как жесткий диск для виртуальной машины; * device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" – задаёт тип устройства, которое будет эмулироваться, в данном случае это блочное устройство. Следующей командой можно посмотреть список доступных процессоров: ![](https://hackmd.io/_uploads/rkBgPN8rn.png) Запуск виртуальной машины: ![](https://hackmd.io/_uploads/BJpHPVUSn.png) Вход в систему, после запуска виртуальной машины (логин - pi, пароль - raspberry): ![](https://hackmd.io/_uploads/Sy2xrVLr3.png) Проверим доступ в интернет, для того, что бы скачать бенчмарк и обновить информацию о доступных пакетах: ![](https://hackmd.io/_uploads/BJD1uE8Sn.png) Обновление репозиториев: ![](https://hackmd.io/_uploads/B1TFFV8S3.png) Скачивание и установка бенчмарка: ![](https://hackmd.io/_uploads/Byw19NIH2.png) **Было проведено тестирование и сравнение процессоров на архитектуре arm разных моделей: arm1136-r2 и arm1176.** ***№1. Процессор на архитектуре arm1136-r2:*** ![](https://hackmd.io/_uploads/SJNXj4IB3.png) ![](https://hackmd.io/_uploads/SJgtWjNIH3.png) | ***№2. Процессор на архитектуре arm1176:*** ![](https://hackmd.io/_uploads/Bkv-pEUBh.png) ![](https://hackmd.io/_uploads/ByCep4IS3.png) Таблица сравнения полученных результатов теста бенчмарка: | arm1136-r2 | arm1176 | | -------- | -------- | | ![](https://hackmd.io/_uploads/ByKRCNLS2.png) | ![](https://hackmd.io/_uploads/By7b1H8rn.png) Значение ***total time*** показывает общее время тестирования, ***total number of events*** - кол-во итераций рассчетов, ***total time taken by even execution*** - время завершения всех вычислительных потоков. Значения ***min, avg, max*** означают минимальное, среднее и максимальное соответственно время выполнение задачи. По результатам тестирования можно сказать, что процессор на базе архитектуры 1136-r2 будет являться более производительным в следствии меньшего затраченного времени.