Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт дек 14, 2017 4:23 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 9 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Вс фев 07, 2016 9:00 am 
Не в сети

Зарегистрирован: Вс фев 07, 2016 8:30 am
Сообщения: 3
Привет. Очень давно наткнулся на вашу ОС в интернете, появилось несколько вопросов о принципах её работы.

1) Графическая подсистема. Если я правильно помню, чтобы приложению отрисовать окно или какой-нибудь виджет, ему нужно было дёргать системный вызов (ядро предоставляет набор системных вызовов для работы с графикой). Правильно я понимаю, что на каждый отрисованный виджет или клик пользователя происходит переключение контекста? Или это в прошлом, и существует некая юзерспейс библиотека для графики.

2) Каков формат исполняемых файлов? Есть ли поддержка разделяемых библиотек? Загрузка библиотек -- функция ядра или юзерспейса?

3) Есть ли SMP?

4) Как с поддержкой USB, сетевых протоколов, драйверами Ethernet карт, IEEE802.11?

5) Что с IPC? Есть ли взаимствования из POSIX, такие как сокеты, пайпы, потоки ввода/вывода?

6) Какие фичи системы виртуальной памяти у вас есть? Есть ли поддержка Large/Huge pages?

7) Есть ли поддержка SSE в ядре? Сохраняет ли ядро xmm регистры между переключениями контекста?

8 ) Правильно ли я понял, что нет x86-64 версии? Почему так?

Надеюсь на ваш ответ, спасибо.


Вернуться к началу
СообщениеДобавлено: Вс фев 07, 2016 12:09 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Чт мар 26, 2015 5:16 pm
Сообщения: 1195
1) В любой ОС системные библиотеки являются оболочками над вызовами с переключением контекста. В windows vista (и её родственниках) постарались перенести в юзерспейс всё что можно, из-за чего они стали дико тормозить. В любом случае, 1000 тактов на вызов — это мелочи, другие ОС умудряются тупо просрать гораздо больше.

2) Menuet01, библиотеки COFF, ждём РЕ.

4) Хорошо, неплохо, неплохо, никак.

6) Базовые. Нет.

7) К ОС отношения не имеет. Не использует.

8) Нет. Зачем?


Вернуться к началу
СообщениеДобавлено: Вс фев 07, 2016 2:08 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1232
3) No

5) There is system call 60,2.
IPC sockets were implemented long time ago, but never properly tested.

_________________
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein


Вернуться к началу
СообщениеДобавлено: Вс фев 07, 2016 3:34 pm 
Не в сети

Зарегистрирован: Вс фев 07, 2016 8:30 am
Сообщения: 3
Pathoswithin писал(а):
1) В любой ОС системные библиотеки являются оболочками над вызовами с переключением контекста.

Юзерспейс не обязательно должен контактировать к кернелспейсом только системными вызовами. Есть ещё общая память хотя бы. Тот же ввод/вывод с помощью fprintf() не дёргает write на каждый чих, а использует буфферизацию. Те же мьютексы из pthread в большинстве POSIX-совместимых ОС вызывают ядро только когда надо спать, а для доступа к мьютексу используют атомарные операции. Примеров куча, когда системный вызов откладывается как можно дальше.

Pathoswithin писал(а):
В windows vista (и её родственниках) постарались перенести в юзерспейс всё что можно, из-за чего они стали дико тормозить. В любом случае, 1000 тактов на вызов — это мелочи, другие ОС умудряются тупо просрать гораздо больше.

Исполнение в пространстве ядра ещё не гарантия какой-либо быстроты. Быстрота -- это сведение к минимуму переключения контекстов, так что можно быстро работать и в юзерспейсе, железо ведь то же самое. Пока у вас программы простые и маленькие -- эти переключения ещё терпимы, но как только они станут большими и замысловатыми (хотя бы как firefox, например), дикое количество переключений и сопутствующие промахи в кеше просто убьют все другие преимущества, так мне кажется

Pathoswithin писал(а):
2) Menuet01, библиотеки COFF, ждём РЕ.

Здорово! Кстати, появился вопрос по поводу исходников. У вас в любой программе из исходников SVN (возьмем для примера programs/demos/fire/trunck/fire.asm) нет даже намёка на стек. Нет ни call (есть какой-то mcall, но я не знаю, что это), ни регистров %esp/%ebp. Вы не используете стек в своих программах O_o? Или просто это всё сильно замаскированно? (Я не знаю этого диалекта ассемблера). Ядро создаёт стек в адресном пространстве для нового процесса? А куча с аналогами malloc()/free() есть? А вы придерживаетесь SystemV x86(-64) ABI в плане вызова функций, или у вас свои соглашения?

Pathoswithin писал(а):
7) К ОС отношения не имеет. Не использует.

Имеет прямое отношение. Если регистры xmm0-xmm15 и контрольный регистр mxcsr не сохранять при переключении контекста, то SSE инструкции станет абсолютно невозможно использовать.

Pathoswithin писал(а):
8) Нет. Зачем?

Разумеется, чтобы использовать все те фичи, что не доступны на x86

И ещё один вопрос: А какие-либо привилегии для этих системных вызовов требуются со стороны приложений? Или любое приложение может хоть где пиксели ставить на экране или, например, хард форматнуть?


Вернуться к началу
СообщениеДобавлено: Вс фев 07, 2016 10:11 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
niemand
1) на большинстве платформ дремучая GUI Колибри в доисторическом VESA-режиме работает быстрее, чем WinGUI с аппаратной акселерацией.
И безусловно быстрее, чем в Иксах.
Но - да, Вы правы, частое переключение контекста задач действительно сильно тормозит систему.
Мы над этим работаем.
Результат Вас очень сильно удивит, и уже скоро.

2+) стек у каждого приложения свой. Юзер заказывает себе нужный размер стека в заголовке программы.

6) поддержка Huge-страниц в ядре имеется. Там, где она реально необходима: ядерное пространство и графический фреймбуфер, а также PCIe-пространство (в А-версии).
Ни одно из пользовательских приложений пока еще не ожирело до такого безобразия, чтобы требовать себе 4Мб страниц.

7) SSE планируется использовать для оптимизации пересылки/распаковки больших блоков памяти (как насчет эффективности memcpy() в Линуксе, а?),
и еще для оптимизации графической подсистемы (отмена жутко неэффективной байт-на-пиксельной оконной карты).

8 ) с 64-битной версией когда-то игрался Serge, спроси у него. Была даже сумасшедшая идея замутить "гибридную" систему, в которой 32-битное ядро могло бы запускать 64-битные приложения на отдельной голове процессора.
А насчет "почему так?" много лет назад хорошо ответил crazy diamond: "КолибриОС позиционируется не только как очень быстрая, но и как очень маленькая система".
Перепиши весь код (который реально умещается в пару мегабайт + фреймбуфер) на 64 бита - и система раздуется даже не вдвое, а втрое.
При нулевом приросте в скорости.


Вернуться к началу
СообщениеДобавлено: Пн фев 08, 2016 4:09 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
niemand
1.Системной библиотеки нет, но есть разные библиотеки, реализующие элементы GUI.
1.1 Любая программа при желании программиста может рисовать всё в битмап и выводить его за один вызов ядра или воспользоваться аппаратной поддержкой при счастливом стечении обстоятельств.
2. Загрузка COFF библиотек -- функция ядра, библиотеки разделяемые. Newlib грузит библиотеки в формате PE DLL, но без разделения памяти.
6)Для ядра минимальные необходимый набор - выделение выделение виртуальной и физической памяти, маппинг страниц и т.п. Для юзерспейса усечённая версия mmap.
7)SSE и переключение контекста fpu/mmx/xmm поддерживается уже лет 9.


Вернуться к началу
СообщениеДобавлено: Пн фев 08, 2016 6:10 pm 
Не в сети

Зарегистрирован: Вс фев 07, 2016 8:30 am
Сообщения: 3
Спасибо всем за ответы


Вернуться к началу
СообщениеДобавлено: Вс окт 09, 2016 11:14 pm 
Не в сети

Зарегистрирован: Вс окт 09, 2016 11:07 pm
Сообщения: 1
Здравствуйте!
У меня такой вопрос. Где посмотреть исходники к функций API SysFn00/ru и тд.?


Вернуться к началу
СообщениеДобавлено: Пн окт 10, 2016 12:00 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 751
pgb писал(а):
У меня такой вопрос. Где посмотреть исходники к функций API SysFn00/ru и тд.?

В файле window.inc: http://websvn.kolibrios.org/filedetails ... window.inc
начиная со строки 34. Другие системные функции могут быть в других файлах.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 9 сообщений ] 

Часовой пояс: UTC+03:00


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

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


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

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