Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемВиталий Зотов
1 Chimera (собрание )
2 План Цель нашей работы Состояние на сегодня Функционирование branded зоны Планы на будущее Вопросы Предложения по организации совместной разработки Заключение
3 Цель Создание win32 branded зоны для OpenSolaris (на базе Windows 2003 SP1) Zone Container BrandZ infrastructure brand
4 Состояние на сегодня Умеем собирать WRK и ON Тестовые машины: – Windows 2k3 sp1(справа от ws17) – OpenSolaris onnv_b117(ws17.swsoft.nsu.ru) Документация WRK (две – написанная и сгенерированная) Изучена работа технологии BrandZ
5 Состояние на сегодня (продолжение) Набор тестовых программ Создана базовая win зона: – win brand kernel module – win brand userspace support library – zone configs Начата разработка загрузчика исполняемых файлов формата PE (Portable Executable)
6 Сборка WRK и ON WRK – /WindowsResearchKernel-WRK/README.txt ON (OS/Net consolidation) – /Chimera/BuildingOpenSolaris – devref_toc/
7 Документация WRK /Chimera/SpisokFunkcijj – [+] можно редактировать – [-] это очень не удобно (проблемы с правами) ws17.swsoft.nsu.ru: ~/WRK/documentation/home – [+] сгенерирована по исходному коду – [-] для удобства использования стоит более точно настроить генератор и разместить на веб- сервере
8 Набор тестовых программ Тестируем работу win зоны Каждая тестовая программа – аналог процесса init (на первых этапах разработки) Программы: – create* - создание файла (открыть, закрыть, завершить работу) – writefile* - пишет в существующий файл в юникоде (открыть, записать строку, закрыть, завершить работу)
9 Набор тестовых программ (продолжение) Вариации программ: – A: вызов функций ядра напрямую – B: вызов функций ядра через ntdll.dll – C: вызов функций ядра напрямую, исполняемый файл в формате ELF – D: вызов функций ядра напрямую, исполняемый файл в формате ELF, использование гибридного интерфейса ядра (Windows + Solaris)
10 Набор тестовых программ (продолжение 2) Оригинальные тестовые программы (create*, writefile*; вариации A, B, C) – /DmitryKolbin – /~dkolbin/testPrograms/ Вариация D для create* – на ws17.swsoft.nsu.ru
11 Что почитать по BrandZ? OpenSolaris BrandZ design document – /os/community/brandz/design/ OpenSolaris ON Developer's Reference Guide – /os/community/on/devref_toc/ Brand Source Layout – /Chimera/BrandSourceLayout
12 Базовая win зона Созданные компоненты: – win brand kernel module – win brand userspace support library – win zone configuration files Функциональность успешно протестирована на тестовой программе create*, вариация D Исходный код можно найти в среде сборки (~/testws), но лучше отдельно спросить у меня
13 Базовая win зона (продолжение) Точка входа в ядро – только через sysenter Нет поддержки загрузки файлов PE Тестовая программа создает файл и уходит в pause(2) Разделение пространств номеров системных вызовов: – до 1024 – Windows 2k3 sp1 – 1024 и более – OpenSolaris – об этом знают только kernel module и support library
14 Загрузчик файлов формата PE [?]
15 Функционирование branded зоны Зона – набор из: – конфигурационных файлов – модуля ядра (основная задача в принятии запросов на системные вызовы и передаче их в библиотеку поддержки) – библиотеки поддержки (большая часть эмуляции проходит здесь) – возможно, других библиотек и файлов Остальное предоставляет ОС
16 Системные вызовы: глобальная зона userland kernel Global zone (native) Solaris process { … open() … } Solaris kernel Syscall handler if (p->p_brand) p->p_brand->b_syscall(); else rval = do_native_syscall(); return to userspace open() { … return (fd); }
17 Эмуляция системных вызовов: win зона userland kernel Windows zone Windows process { … NtCreateFile() … } Solaris kernel Syscall handler if (p->p_brand) p->p_brand->b_syscall(); else rval = do_native_syscall(); return to userspace open() { … return (fd); } Windows brand module struct win_brand_ops { win_syscall() win_proc_exit() win_initlwp() … } win_syscall() { trampoline to userland } Win brand support library win_NtCreateFile(args) { fd = open(win2sol(args)) if (fd < 0) return (sol2win(errno)) else return (fd) }
18 Эмуляция системных вызовов: на самом деле всё несколько сложнее Точек входа в ядро может быть несколько Для каждой точки входа своя win_syscall() См. struct brand_ops и struct brand_mach_ops Для заданной точки входа Syscall handler осуществляет демультиплексирование запросов системных вызовов (Windows/OpenSolaris) Сейчас в support library нельзя использовать open(2) и аналогичные функции из libc
19 Планы на будущее Реализация загрузчика PE файлов Реализация других точек входа в ядро Развитие библиотеки поддержки Код эмуляции для базовых системных вызовов Создание минимальной Windows-среды внутри зоны Обзор и анализ аналогов и заменителей
20 Планы на ближайшее будущее Определиться с организацией совместной работы Определить приоритетные задачи Перевод проекта под управление SCM системы (об этом – чуть позже сегодня)
21 Планы на ближайшее будущее (продолжение) Адаптация libc и других библиотек для возможности использования в support library Реализация загрузчика PE файлов Обзор и анализ аналогов и заменителей Остальное – в зависимости от предыдущих пунктов
22 Ваши вопросы? (это еще не конец)
23 Ваши ответы? Сколько часов в неделю вы можете уделять проекту? На какой курс вы перешли? Есть ли у вас доступ к сети университета из всех/большинства мест, где вы будете работать над проектом? Если нет, то к какой сети есть доступ у всех? У кого есть сервер в этой сети?
24 Ваши ответы? (продолжение) Какие скриптовые языки вы знаете? На каком уровне? (например, Perl, Python, Ruby, awk) С какими VCS, bugtracking, SCM системами вы знакомы? Считаете ли вы полезной возможность тестировать Химеру на виртуальной машине?
25 Ваши ответы? (продолжение 2) Что вы думаете о лицензировании продукта и возможных ограничениях на процесс разработки в связи с этим? Есть ли у вас какие-либо пожелания по организации процесса разработки и взаимодействия в команде? Есть ли у вас какие-либо предложения по направлениям развития?
26 Организация совместной разработки Установка SCM системы и сбор всей информации по проекту в одном месте – Trac + Mercurial plugin (?) – Перенести документы по проекту из WackoWiki в Trac Wiki Создание и использование списка рассылки – swsoft.nsu.ru / groups.google.com / …
27 Распределение задач Кто чем хотел бы заняться? ;)
28 Следующая встреча О чем? Что бы вы хотели услышать? Когда?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.