![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Попробовал собрать ядро 4.4BSD-Lite2 для MIPS. Впечатления самые положительные: все гораздо проще, чем я боялся. Выводы:
(1) Ресурсов микроконтроллера Microchip pic32mz хватает для работы системы. Бинарник ядра займет 850 килобайт flash-памяти из имеющихся 2 Мбайт - имеем неплохой запас. Это включая сетевой стек, все файловые системы, все драйверы и NFS. Под данные ядру нужно 32 кбайт, плюс минимальное количчество буферов ввода-вывода 16x4=64 кбайт, плюс хотя бы килобайт 100 для сетевых пакетов - итого 200 килобайт занято из 512. Для запуска пользовательский программ 300 килобайт не так мало, да еще при наличии страничной подкачки.
(2) Почти весь код, нужный для MIPS, уже имеется. Придется слегка подправить управление памятью: архитектура с тех давних пор несколько изменилась, теперь каждый элемент TLB отображает две страницы. В целом исходники очень хорошего качества. Современный компилятор GCC кушает их на ура. Не сравнить с 2.11BSD, где каждый файл приходилось изрядно перелопачивать.
Заодно сложил исходный дистрибутив на GitHub, чтобы всегда был под рукой.
(1) Ресурсов микроконтроллера Microchip pic32mz хватает для работы системы. Бинарник ядра займет 850 килобайт flash-памяти из имеющихся 2 Мбайт - имеем неплохой запас. Это включая сетевой стек, все файловые системы, все драйверы и NFS. Под данные ядру нужно 32 кбайт, плюс минимальное количчество буферов ввода-вывода 16x4=64 кбайт, плюс хотя бы килобайт 100 для сетевых пакетов - итого 200 килобайт занято из 512. Для запуска пользовательский программ 300 килобайт не так мало, да еще при наличии страничной подкачки.
(2) Почти весь код, нужный для MIPS, уже имеется. Придется слегка подправить управление памятью: архитектура с тех давних пор несколько изменилась, теперь каждый элемент TLB отображает две страницы. В целом исходники очень хорошего качества. Современный компилятор GCC кушает их на ура. Не сравнить с 2.11BSD, где каждый файл приходилось изрядно перелопачивать.
Заодно сложил исходный дистрибутив на GitHub, чтобы всегда был под рукой.