ROS Newsletter44
Содержание
Выпуск новостей ReactOS №44
Процесс разработки
Интересная ошибка, связанная с падением системы при создании 4100-го хендла, появилась снова. Эта ошибка была обнаружена при использовании VLC и, в итоге, исправлена Кристофом фон Виттичем (Christoph von Wittich). Проблема заключалась в неверном вычислении индекса. OC пыталась получить доступ к элементу таблице с индексом больше, чем 4099. Подобные значения выходят за границы этой таблице и предполагается, что их нужно искать во второй таблице и выше. Теперь система падает не раньше создания 4186000 хендла,а этого должно быть пока что достаточно.
Алексей Брагин (Aleksey Bragin) работает над добавлением средств проверки файловой системы в ReactOS. Учитывая слабую надёжность FAT, это должно стать весьма полезным дополнением. Утилиты chkdsk, format и autochk - являются лишь обёртками к функциям библиотек для файловых систем, таких как ufat.dll и untfs.dll, которые предоставляют нужные функции для форматирования и проверки дисков. Библиотеки взаимодействуют с этими утилитами через fmifs.dll, интерфейс которой хорошо известен.
Кроме вышеупомянутых трех утилит, Алексей завершил портирование dosfsck, начатое Стивеном Эдвардсом (Steven Edwards) и Майком Норделлом (Mike Nordell). Этот порт уже в транке и функционирует, а Алексей пытается заставить работать autochk и ufat.dll в своей рабочей копии. Видимо, работа идёт не плохо и мы скоро увидим результаты.
И последняя, но немаловажная, новость. Тимо Крейцер (Timo Kreuzer) занимается исправлением работы некоторых операций с плавающей точкой в ядре Win32. В архитектуре x86, результаты операций с плавающей точкой не сохранялись при переключении контекста в режим ядра. Тем не менее, по неким причинам все вычисления с плавающей точкой в win32k были написаны с использованием FPU. Тимо полностью переписал структуры данных для того, чтобы не использовать FPU и почти готов их представить.И последняя, но немаловажная, новость. Тимо Крейцер (Timo Kreuzer) занимается исправлением работы некоторых операций с плавающей точкой в ядре Win32. В архитектуре x86, данные операций с плавающей точкой не сохранялись при переключении контекста в режим ядра. Тем не менее, по неким причинам все вычисления с плавающей точкой в win32k были написаны с использованием FPU. Тимо полностью переписал структуры данных для того, чтобы не использовать FPU и почти готов их представить.
Linuxworld
ReactOS на Linuxworld разделяет экспозиционный стенд с разработчиками Haiku. Мы очень рады, подобному партнёрству. К сожалению, Арт Йеркес (Art Yerkes) - наш единственный разработчик, который там будет присутствовать - т.к. находится географически близко и располагает необходимым количеством времени. Так что - подходите к стенду ReactOS и составьте Арту компанию.
Обновление ARM
С того времени, как я рассказывал о них в прошлый раз, команда ARM сделала достаточно много и теперь я один бьюсь над составлением списка изменений для релиза, и охвачен идеей всё это завершить. Они добавили много нового кода, подготавливающего ReactOS к загрузке на ARM и внесли немало исправлений в уже имеющийся код. Их работа над менеджером памяти особенно ценна, так как это одно из слабых мест в ReactOS. Учитывая количество исправлений, которые они внесли, все мы (остальные) на их фоне выглядим не очень впечатляюще.
Шаги, предпринятые командой ARM, обеспечивают, в первую очередь, компилирование исходного кода для ARM платформы. Теперь следует решить задачу загрузки ядра, которая требует модификации Freeloader (загрузчика). После инициализации ядра, будет возможно получить на COM-порт информацию, необходимую для отладки, тем самым найти и устранить неисправности. На данном этапе, дальнейшее движение без этого невозможно. После применения некоторых ухищрений, команда ARM реализовала отладку как следует, хотя и не без "подводных камней".
Для фактического запуска, операционная система нуждается в управлении имеющимися физическими ресурсами (памятью, процессором ит.п.). В основном, весь код, управляющий прерываниями и таймингами должен быть адаптирован для платформы ARM, чтобы ОС могла управлять событиями и делать что либо при их появлении. Что касается менеджера памяти, они нашли и исправили несколько весьма неприятных ошибок.
Сейчас, команда ARM работает над тем, чтобы ОС могла использовать загрузочное устройство, например, ramdisk (виртуальный диск в оперативной памяти). Кроме написания нового драйвера для ramdisk и исправлений в CDFS и собственном FAT драйвере, они также возвращаются к менеджеру памяти, для исправления или расширения функциональности, нужной им для ramdisk. Изменения исходном коде также позволяют предположить, что команда ARM успешно работает над исправлением и рефракторингом старого кода.
Следующим шагом, является инициализация частей ОС, работающих в пользовательском режиме, хотя и сейчас в этой области уже замечен прогресс. Я желаю им удачи и в дальнейшем буду наблюдать за их работой. Даже если это будет означать потерю нескольких часов на составление списка изменений, внесённых ими.
Портирование на 64-разрядную архитектуру
Не буду слишком обнадёживать, так как есть много препятствий, которые нужно преодолеть перед тем, как можно будет говорить о каких-либо существенных продвижениях. Тимо Крейцер (Timo Kreuzer) уже некоторое время занимается подготовкой окружения для сборки 64-битного порта ReactOS, он дал мне и Самуэлю Серафион'у (Samuel Serapion), соавтору выпусков новостей, копии своих наработок. Сэм сейчас пытается собрать систему, а именно ядро, freeldr, CRT, небольшое число необходимых драйверов и некоторых приложений пользовательского режима, а так же заголовочные файлы, от которых зависит компиляция. Не смотря на это компиляция Win32k обрывается на полпути, поэтому нам есть, куда двигаться. На данный момент, freeldr загружает ядро, но система виснет в самом начале инициализации. Для успешного запуска не достаточно просто изменить существующий код, порой приходится писать всё с нуля, по-этому работа по адаптации менеджера памяти для работы с длинными (8-ми байтовыми) указателями даже и не начата. Определённо можно сказать, это будет длинный и тяжёлый путь.
Больше новых людей
Ну, относительно новых. Стефан Гинсберг (Stefan Ginsberg) уже несколько месяцев присутствует на канале под ником Stefan100. Он занимался ознакомлением с кодом ядра системы, докучая разным разработчикам вопросами. В процессе Стефан нашёл несколько некритичных ошибок, впрочем пара значимых багов тоже на его счету. После получения доступа на запись к репозиторию, он, в основном, занимается исправлением ошибок в том коде, который ему интересен.
Еще одним человеком, получившим доступ к репозиторию является Кэмерон Гутман (Cameron Gutman), так же известный под ником aicommmander на канале IRC. Его права в общем репозитории отличается от прав первого новичка. Кэмерон получил отдельную ветку для исправления ошибок связаных с сетью. Иногда он запускает web-сервер на ReactOS для проверки стрессоустойчивости, хотя он не выживает и часа, если повезет. Уже сейчас достаточно исправлений принято в главный репозиторий, но в 0.3.6 версию эти улучшения пока не войдут.
И, наконец, похоже, что Samuel слишком занят, т.к. не является соавтором данного текста. Как уже упоминалось, он работает над x64 портом и получил отдельную ветку я для своих изысканий. Кто знает,возможно я присоединюсь к нему и наконец-то займусь настоящей работой.
Newsletters | |
---|---|
30-39 | #30 • #31 • #32 • #33 • #34 • #35 • #36 • #37 • #38 • #39 |
40-49 | #40 • #41 • #42 • #43 • #44 • #45 • #46 • #47 • #48 • #49 |
50-59 | #50 • #51 • #52 • #53 • #54 • #55 • #56 • #57 • #58 • #59 |
60-69 | #60 • #61 • #62 • #63 • #64 • #65 • #66 • #67 • #68 • #69 |
70-79 | #70 • #71 • #72 • #73 • #74 • #75 • #76 • #77 • #78 • #79 |
80-89 | #80 • #81 • #82 • #83 • #84 • #85 • #86 • #87 • #88 • #89 |
90-99 | #90 • #91 • #92 • #93 • #94 • #95 • #96 • #97 • #98 • #99 |