Комментарии
к выпуску MINIX 3.1.3
Комментарии
к
выпуску MINIX 3.1.3 - промежуточной
версии для разработчиков
MINIX
3.1.3 вышла
в пятницу, 13 апреля 2007 года. Это не
полностью работающая, стабильная версия, а промежуточная рабочая версия
ОС. Её
выход удобен для тех, кто заинтересован в разработке MINIX, но эта
версия имеет
ряд известных дефектов и нюансов.
Известные
дефекты и нюансы:
•Интерфейс
между VFS и файловыми системами немного
изменится после окончательной подчистки кода VFS/MFS.
•Запускаются
4 процесса MFS (файловых систем), каждый того же размера, что и старая
FS, из
которых один не используется после начальной загрузки. Поэтому эта
версия
использует (и засоряет почём зря) гораздо больше памяти, чем
предыдущая. В
дальнейшем это будет исправлено.
•Драйвер
AMD LANCE должен загружаться ниже 16 МБ. В настоящее время не способа
показать
это системе. Единственный способ: иметь достаточно памяти сверх 16 МБ в
момент
его загрузки. Поэтому при использовании AMD LANCE вам следует выбирать
«маленький» MINIX, создавая 2 процесса MFS на 500
КБ вместо
4 МБ.
Пожалуйста,
сообщайте о других ошибках
Если
вы найдёте любую ещё не описанную ошибку или дефект в этой версии,
пожалуйста,
напишите об этом в bugs@minix3.org
или сохраните ошибку
в the
MINIX gforge
bug tracker.
Изменения
в MINIX 3.1.3 по сравнению с 3.1.2a
Значительные
видимые изменения
•64-битные
файловые смещения снимают ограничения на 4 ГБ для файловых систем.
•Реализация
VFS, сделанная Balasz Gerofi.
•Профилирование
системной статистики и системных вызовов, сделанное Rogier Meurs.
•doc/UPDATING
в репозитории syn описывает вещи, на которые надо обратить внимание при
обновлении из исходников.
•Добавлен
импорт системы zoneinfo,
так что теперь можно использовать сокращения типа TZ=CET и им подобные.
Таким
образом, устранена ошибка в прежнем коде летнего времени, найденная
Элом
Вудхаллом ( Al Woodhull).
Значительные
внутренние изменения
•Инфраструктура
управления тем, какие драйверы какие вызовы ядра могут делать, какому
прерыванию (IRQ) соответствуют и к каким портам ввода/вывода могут
иметь
доступ. Полная поддержка PCI-сервером для того, чтобы в большой степени
автоматизировать это. Частные случаи и остальные детали
конфигурирования в
/etc/drivers.conf.
•Введены
«safecopies», ограниченная разновидность функций
копирования MINIX, которые
требуют явно заданного разрешения от получателя прежде, чем произойдёт
копирование. Обычные драйверы устройств теперь более не нуждаются в
«physcopies»
или «vircopies», так что они могут отказаться от
этих
вызовов. Изменены также
интерфейс fs/driver и интерфейсы inet/driver, которые используют теперь
«safecopies».
•PM
(физическая память), поскольку она сделана не блокируемой, выполняет
асинхронные
запросы к FS (теперь VFS), когда она должна обновиться по какой-либо
причине.
Это существенно в основном для восстановления драйверов устройств.
•Произведено
разделение архитектурно зависимой и независимой частей дерева исходного
кода
ядра (подстраиваясь под несуществующий в настоящее время порт Ингмара
Альтинга
на PPC) . Архитектурно-независимый код находится в
/usr/src/kernel/*.[ch], а
архитектурно-зависимый код - в /usr/src/kernel/ARCH/.
•Интерфейс
с RS основан теперь на метках, а не на pids.
•Новая
процедура загрузки. Первая стадия загрузки происходит из образа
RAM-диска,
который встроен в драйвер памяти. Стартуют драйверы для корневого
устройства
(root device) и текущее корневое устройство монтируется оттуда. Это
позволяет
иметь в системе меньше специального загрузочного кода, например, в FS,
не
нуждающейся в драйверах, встроенных в образ RAM-диска, и делает систему
более
универсальной.
•Разрешено
иметь более, чем 32 fd's на процесс (OPEN_MAX).
•Все
библиотеки ack третьих производителей помещаются в /usr/local/lib/ack,
а
библиотеки gcc третьих производителей помещаются в /usr/local/lib/gcc.
•Новый
драйвер CMOS, запускающийся во время загрузки, вместо постоянно
активного;
позднее он также может быть повторно активизирован для корректировки
часов.
•off_t
теперь со знаком.
•Введён
макрос RTS_SET/RTS_UNSET,
делающий код
ядра проще и сокращающий (логическое)
дублирование кода.
Существенные
исправленные ошибки
Существует
множество мелких ошибок, которые, вероятно, не стоит здесь перечислять.
Полный
перечень можно увидеть на странице 3.1.2a-3.1.3
changelog
•Некоторые
драйверы (TTY) продолжали посылать сообщения REVIVE, вызывая зависание
FS
(REVIVE теперь полностью уничтожено).
•Различные
ошибки в at_wini,
приводившие к
странному поведению на некоторых системах; не инициализирующееся слово
6 в ATAPI
SCSI_READ10,
например.
•Устранены
гонки между CLOCK и
SYSTEM, когда
CLOCK
устанавливается в состояние «готовность» (по
прерыванию) в
то время, как SYSTEM
выполняется.
•Запускается
множество at_wini для систем с более, чем двумя контроллерами IDE/SATA.
•Устранена
ошибка «зависания на веки вечные» в
wait()/waitpid() на процессах,
уже
являющихся зомби.
•Устранены
гонки при получении сигнала работоспособными процессами;
•размещение стека
сигнала может быть
ошибочным.
•strcasecmp()
и strncasecmp() заменены на версию из библиотеки BSD из-за ошибки.
•Если
вызывался sys_privctl(), то область s_flags
для пользовательских процессов могла бы быть затёрта, делая их
–
процессы -
невытесняемыми ( un-PREEMPTIBLE).
|