OSDev

для всех
Текущее время: 26 дек 2024, 18:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 05 сен 2023, 20:45 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 98
Немного не в тему, но ArcaOS 5.1, о которой было на позапрошлой странице - таки вышла ...
Полуось на EFI, с доссессиями и Win16, число кодеров по пальцам одной руки, однако оно грузится с NVME и как-то, местами, умудряется работать с новым железом ;)
Средний возраст юзеров колеблется где-то >=60-ти :D
На форуме os2world.com даже был забавный вопрос - "вот мне 85, объясните мне зачем мне эта новая версия" :)

В общем, весьма любопытный артефакт для нынешнего времени ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 сен 2024, 00:14 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 98
Нда, я всё ещё здесь - люблю отмечаться в пятницу, 13-го, хоть в этом году и промахнулись на один день ;)

За год ничего особо интересного - ну только если зоркий сокол в какой-то момент заметил, что большинство поддерживаемых файловых систем работают в юникоде и перетащил в юникод всё системное файловое API со всеми таблицами файлов итд.

Попутно и команды шелла удостоились того же и copy *.* будет реально копировать юникодные имена, даже если кодовой страницы для них в QSINIT нет в принципе.

Ещё починена работа на 80486 :) Племя некрофилов оказалось довольно активным и поступил вот такой запрос. В итоге - диапазон поддерживаемого железа от 486sx25 с 8Mb, загруженного с дискеты до скольких там сейчас можно найти для EFI версии? ;)

Ну и куча всякой мелочи, сборка EFI версии на GCC, итд, итп ... попутно выяснилось, что команда SUBST - не самая простая вещь для написания ;) Может, конечно, стоило подсмотреть в виндовые исходники, но смысл-то - склепать всё это на основе собственной логики ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 сен 2024, 02:20 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1426
А 80386 слабо? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 сен 2024, 03:53 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 98
80386 - это мазохизм, учитывая все его забагованные ревижны ... ;)
Как бы, 486 не требует особых усилий - ну только, если, мявкнуть юзеру, что FPU нет и пристрелить приложение в случае SX.

Да и с памятью - можно представить себе 486 с 8ю и даже 16ю метрами, а 386 уже потребует полноценного свопа :shock: ;)
Нафиг - эпоха, когда бились за каждую страницу памяти - эти тяжко и лучше не вспоминать и забыть :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 сен 2024, 04:13 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1426
Ну, потребности в памяти определяются задачами, если ось не совсем уж пыхтон-стайл :) Скажем, RSX-11M летала на 248 Кбайтах оперативы, обеспечивая работу нескольких пользователей -- но, есно, никакой графики, так что 80386 с парой метров был бы просто суперкомпутером при таком же подходе к использованию.

Собственно, это одна из вещей, что меня бесит в более-менее современных версиях систем: они требуют очень много ресурсов именно под себя, не под прикладные программы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 сен 2024, 08:38 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 98
248k уже не получится банально из-за разрядности ... не говоря, уж, о накопленной сложности вещей.
Даже и 16-битный код - ну, вот, фильтр для поддержки GPT разделов для той полуоси выше - 30k чистых 16-ти бит ... А это одна небольшая задача из тысяч :)

А это изделие - проверил, на 8 метрах (реально 7) - остаётся где-то 3 свободных.
Конечно, на 8-ми вполне себе жили когда-то и было "нормально" :) Но сколько в этом было подсчётов каждого байта в ядре, который может или не может быть свопируем и сколько оно в итоге свопило ...

Таки, когда памяти много - это хорошо ;)

Другой вопрос, что да - масса навешенного мусора в современных системах, порождённого симуляцией бурной деятельности, съест всё что есть и попросит ещё ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 сен 2024, 09:16 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1426
Ну, из 248 кил оперативы сама ось под себя жрала меньше сотни, если в полной конфигурации и включая драйверы режима ядра (но не включая драйверы файловых систем, которые всегда были задачами режима пользователя; впрочем, они были мелкими). Правда, ось написана полностью на ассемблере, т.е. раза в три компактнее, чем можно слепить на тех же сях. Ну и, ядро полностью резидентно, никаких тебе загрузок-выгрузок ядерного кода.

А в чём состоит задача этого самого фильтра, что он аж 30 кил требует? (GPT-разделы не изучал, хотя надо б как-нибудь осилить)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 13 сен 2024, 11:20 

Зарегистрирован: 10 окт 2013, 14:54
Сообщения: 98
Всё на ассемблере - это компактно и быстро, но требовательно к авторам ;)
То же самое полуосевое ядро в большом проценте на ассемблере и это сделало его куда более нестабильным в сравнении с той же NT 4.0, например. Но и расходы памяти пропорционально различались, конечно ...

А фильтр представляет смонтированные GPT разделы как отдельные MBR диски в системе - так куда проще встроиться в полуосевую реальность прошлого тысячелетия. При этом он GPT разбивку и проверяет и апдейтит и раздаёт всякое через IOCTL. Учитывая, что в GPT все поля 64-битные, можно представить сколько там кода генерится на обычное сложение. Ватком справляется, конечно - но набегает 30k.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 24 сен 2024, 21:35 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 972
Откуда: Дагоба
На ассемблере имеет смысл писать только то, что:
– делается ради изучения ассемблера или в своё удовольствие;
– без ассемлера никак не написать (например, перевод в защищённый режим, низкоуровневый ввод/вывод);
– то, что требует предельной оптимизации по скорости;
– использование специальных инструкций процессора.
В остальных случаях только хуже. Никакой переносимости, никакой проверки корректности логики программы. Да и мозги перенапрягаются, сколь-нибудь сложный алгоритм на ЯВУ выглядит намного понятней.

Что касается размера, то я уверен, что возможности ассемблера сильно преувеличены. Фундаментальный вклад в разбухание вносят:
– дублирование кода (в исходниках UEFI несколько разных функций расчёта CRC32 со стандартным полиномом)
– копи-паста
– утягивание монструозных библиотек ради нескольких функций
– мультипарадигмальный подход: это я напишу на C, это на Питоне, стыковать буду через сторонние переходники, часть кода будут готовить TCL-скрипты и пр.
– использование и поддержка невыразительных устаревших языков (C)
– ориентировка на скорейший результат: "сейчас как-нибудь сделаю, а что будет дальше, не важно"
– отсутствие программистского таланта: в моей практике были случаи, когда после исправления ошибок, устранения косяков в исходнике и переписывания алгоритмов он сокращался раз в пять.
В результате всех факторов код вырастает не в разы и даже не в десятки — в сотни раз.

Вот тоже из моей практики. В процессе написания нами компилятора с языка C++ на сегодняшний момент реализованы:
– лексический анализатор, работающий со всеми кодировками и вариантами Юникода;
– весь препроцессор;
– линкер, работающий со всеми основными форматами и умеющий линовать вместе код от разных компиляторов, а также вшивать манифест, ресурсы и иконки приложения (без стадии компиляции ресурсов);
– полностью работающий ассемблер для i8080 и z80.
Компилятор многопоточный, все исходники обрабатываются параллельно, хедеры прекомпилируются в памяти и используются всеми потоками.
Поскольку компилятор предназначался для новой ОС (не клон Линукса), а в процессе работы сталкивались с необходимостью использования алгоритмов, неспецифичных для компилятора, было принято решение все алгоритмы писать с нуля (никаких Boost, STL и всяких GNUсностей) и вынести их в отдельную библиотеку. И кроме того, поскольку эта библиотека использовалась в куче разных проектов, в т.ч. научных, то она постоянно пополняется новыми компонентами. В эту библиотеку попали:
– все основные криптографические алгоритмы и хэш-функции
– универсальная блокировка для многопоточности — майкрософт отдыхает
– поддержка параллельных алгоритмов, в разы быстрей майкрософтовской и интеловской реализации OpenMP
– куча алгебры
– полная поддержка неограниченной арифметики, быстрей, чем GNUMP!
– работа с битовыми массивами (требовалось для работы над патентами в области генерации случайных чисел и криптографии)
– поддержка булевой математики
– собственная работа со строками
– полностью свой файловый ввод/вывод, — замена кривейших и устаревших системных функций, поддержка 64-битности и UTF-8 на любых системах
– эмуляция плавающей арифметики
– куча абстрактых структур и контейнеров, множеств, ассоциативных массивов
– поддержка ряда форматов файлов, данных и структур в криптографии и интернет
– аллокатор для выделения структур фиксированного размера
– парсер аргументов командной строки
– огромная библиотека генераторов случайных и псевдослучайных чисел
– поддержка арифметики рациональных дробей
– функции статистического анализа
– генерация очень больших гарантированно простых случайных чисел, проверка числа на простоту
– куча всякой мелочи типа конвертации юникодов и расчёта контрольных сумм
По сути наш подход следующий, — если в процессе работы возникает необходимость в каком-то алгоритме или библиотеке, то изучаем тему, пишем своё и внедряем в нашу библиотеку.

А теперь внимание! Барабанная дробь...
Размер нашей супербиблиотеки — 280 килобайт!
Размер самого компилятора — 295 килобайт!
Всё написано на чистом C++. Никакого стороннего кода. Скорости выполнения рекордные.
Поэтому, если грамотно подходит к вопросу, то (без использования тяжёлой графики) почти полноценную ОС можно вместить на дискету и в 4 мегабайта оперативки и без ассемблера.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: QSinit
СообщениеДобавлено: 24 сен 2024, 23:44 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1426
Но вот в несколько десятков килобайт вместить уже сильно проблематично будет, если вообще возможно :)

А как в этом чудо-компиляторе с поддержкой стандартов? А то скоро уже Це++26 появится...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB