Рубрика «kolibrios» - 5

На каких языках говорят наши пользователиТо, что в KolibriOS есть не-русскоговорящие разработчики (хоть их и очень мало), некоторым из вас уже известно по моему предыдущему посту. Однако разработчикам самим, в свою очередь, интересно знать, есть ли у нас не-русскоговорящие юзеры.

До того, как мы задались этим вопросом, KolibriOS выпускалась на 2 языках: русском и английском. Соответственно, каждая новая фича и каждая правка программы/ядра требовали от программиста, их делавшего, добавления/исправления всех сообщений, кнопок и лейблов на обоих языках.1 Может быть, целесообразно перестать выпускать английскую сборку, и сконцентрировать все свои усилия на русской?
Читать полностью »

Если кто-то из читателей ещё не знает, то, хотя большинство разработчиков KolibriOS русскоговорящие и живут в СНГ, у нас есть также несколько зарубежных разработчиков. Причём один из них, бельгиец Jeffrey Amelynck, нам больше известный под «ником» hidnplayr, участвует в проекте с 2003 года (ещё до того, как KolibriOS отделилась от MenuetOSуже целых 10 лет!). С первых дней в проекте, он решил заниматься поддержкой сети и сетевыми программами, потому что на тот момент в MenuetOS с сетью было очень туго, если не сказать «вообще никак».

KolibriOS: network, FTP клиент и бельгийский программист
На фото — hidnplayr, с помощью собственноручно написанного FTP-client, подключается из-под KolibriOS к своему FTP-аккаунту на FTP-сервере KolibriOS. На заднем плане — файловый менеджер KFM для KolibriOS, написанный одним из основателей KolibriOS Mario_Z

Fun trivia

Оба разработчика пришли в проект примерно в одно и то же время — в 2003 году — и, как видите, за 10 лет ещё не потеряли к нему интереса. Что примечательно, разница в возрасте между ними — тоже 10 лет, а в 2003 hidnplayr-у было всего 13 :-)

Читать полностью »

Поддержка USB в KolibriOS: что внутри? Часть 3: код поддержки хост контроллеровУровень поддержки хост-контроллеров, как я писала в общем обзоре, должен вызывать вышележащие уровни при наступлении некоторых событий и предоставлять функции, необходимые вышележащим уровням для работы.
Для удобства восприятия я буду рассказывать о различных элементах кода поддержки в том порядке, в котором они получают управление.

Запуск подсистемы USB

Подготовка: USB-контроллеры в списке PCI-устройств

Подсистема USB запускается вызовом usb_init из init.inc в ходе загрузки системы.

К моменту запуска USB уже подготовлен список найденных PCI-устройств pcidev_list. USB-контроллеры опознаются среди всех PCI-устройств по коду класса, подкласса и интерфейса:

Тип Класс Подкласс Интерфейс
UHCI 0Ch 03h 00h
OHCI 0Ch 03h 10h
EHCI 0Ch 03h 20h
XHCI 0Ch 03h 30h

usb_init проходит по списку PCI-устройств несколько раз, каждый раз выделяя USB-контроллеры.

Отключение контроля BIOS

Некоторые BIOS умеют обрабатывать USB-мыши, USB-клавиатуры и USB-флешки, предоставляя данные для операционных систем, не знающих про USB. Данные от мышей и клавиатур преобразуются в формат PS/2 и тем или иным способом доводятся до операционной системы так же, как если бы в системе существовала настоящая PS/2-мышь и/или клавиатура. USB-флешка представляется жёстким диском с точки зрения int 13h — такая поддержка встречается куда чаще поддержки мышей, ибо необходима для загрузки с флешек.
Операционная система может использовать любой режим процессора и самостоятельно обрабатывать любые прерывания. Чтобы BIOS в таких условиях всё же могла получать управление с предсказуемым окружением, ещё в районе 486-х (начиная со специальной версии i386SL, если точно) Intel придумала специальный режим процессора System Management Mode (SMM), в котором и работает BIOS, прерывая операционную систему. В SMM невозможно попасть средствами самого процессора; процессор попадает в этот режим, когда железо материнской платы подаёт специальный сигнал System Management Interrupt (SMI). USB-контроллеры, встроенные в чипсет, как правило, могут генерировать SMI вместо прерывания в зависимости от настроек.

Читать полностью »

Поддержка USB в KolibriOS: что внутри? Часть 2: основы работы с хост контроллерами
Прежде, чем объяснять код поддержки хост-контроллеров, необходимо рассказать о некоторых принципах работы железа, а также об используемых структурах данных. Как я выяснила при написании текста, одна статья обо всём уровне поддержки хост-контроллеров получилась бы слишком большой, поэтому вторая часть цикла — которую вы сейчас читаете — рассказывает о том, что необходимо знать для понимания кода, а описание действий, происходящие в коде, я отложу до следующей части.

Прерывания и потоки

Хост-контроллеры оповещают софт о происходящих событиях, генерируя прерывания. Прерывание может прийти и оторвать процессор от текущей задачи в любой момент времени; это накладывает жёсткие требования на обработчик прерывания. Обработчик прерывания не может захватывать никакие блокировки — ведь вполне возможно, что прерванный код как раз завладел блокировкой и уже не сможет её освободить. Единственным исключением является вариант спинлока, запрещающий прерывания на время блокировки, но из-за глобальности эффекта спинлок стоит применять пореже и для очень коротких участков кода. На однопроцессорных конфигурациях такой вариант вырождается в пару cli/sti без собственно спинлока, на многопроцессорных внутри cli/sti остаётся обычный спинлок. Кроме того, контроллер прерываний во время обработки одного прерывания блокирует остальные с тем же или более низким приоритетом.

По этим двум причинам в KolibriOS обработчики прерываний от хост-контроллеров USB передают основную часть работы в выделенный под USB поток ядра, а сами ограничиваются сообщением хост-контроллеру «спасибо, сигнал принят». Сам USB-поток имеет наивысший приоритет, чтобы задумавшиеся пользовательские приложения не мешали обработке. Все функции вышележащих уровней, которые вызываются из уровня поддержки хост-контроллера, работают в контексте потока USB и, как следствие, вполне могут использовать примитивы синхронизации. Приятным побочным эффектом является автоматическая сериализация вызовов: ни обработчик завершения второй передачи из очереди канала, ни функция DeviceDisconnected не будут вызваны, пока не закончит работу обработчик завершения первой передачи из очереди канала, что есть логичное требование к API.

Поток USB также иногда просыпается для обработки событий, отложенных по времени. Пример, о котором я позже расскажу подробнее: после события подключения устройства нужно выждать 100 миллисекунд перед дальнейшей обработкой. В этом случае поток проснётся при обнаружении подключения устройства и запланирует следующее пробуждение через 100 миллисекунд, уже не связанное с пробуждением из-за прерывания.
Читать полностью »

В KolibriOS появилась поддержка USBДля тех, кто интересуется проектом KolibriOS, у нас очень хорошая новость — ровно 1 неделю назад в нашем проекте в ночных сборках появилась поддержка USB. В лучших традициях проекта, код полностью написан на ассемблере FASM. Причём он всё ещё влазит на одну дискету занимает 1MB, включая программы и игры. И, в отличие от нашего прародителя MenuetOS, у нас даже работает USB hot-plug. Разработчики QNX Demo Disk нервно курят в сторонке.
Читать полностью »

KolibriOS вышла на Kickstarter, чтобы провести свой Summer of CodeKolibriOS — открытая операционная система, написанная русской командой разработчиков исключительно на языке ассемблера, и требующая всего 8 МБ для запуска. Её дистрибутив занимает одну 1.44 МБ-дискету и, тем не менее, включает в себя текстовый редактор, программу для просмотра изображений, браузер, набор из 30+ игр, различные тесты, системные и прикладные утилиты. Полностью поддерживается FAT12/16/32, в режиме чтения — NTFS, ISO9660 и Ext2/3/4. Написаны драйверы для популярных звуковых, сетевых и графических карт.

В этом году администраторы проекта подали заявку участие в Google Summer of Code 2013, но их предложение было отвергнуто. Причем Google написали, что им нравится проект, но из-за ограниченного бюджета они не могут принять всех из 416 претендентов. Поскольку список нововведений KolibriOS, которые планировалось реализовать на GSoC '13, довольно обширный, и уже внесен в некотором смысле в планы разработки, было решено организовать свой SOC. Поскольку проект некоммерческий, а на донейтной основе маленькому проекту пока что сложно быстро собирать финансирование, разработчики выбрали Kickstarter. Кампания была запущена 3 дня назад, из £5,000 пока что собрано свыше 10%. Сбор средств закончится 31 мая.

Вы можете скачать KolibriOS и решить, стоит ли поддерживать проект, на этой странице: kolibrios.org/ru/download.htm
Адрес Kickstarter-кампании: www.kickstarter.com/projects/kolibrios/kolibrios-help-us-hold-our-own-summer-of-code-2013
Читать полностью »

Коротко: я хочу создать самый лучший на свете веб-браузер, но для этого мне нужна помощь народа. Ваша помощь, читатели! Если вам это не интересно, смело проходите мимо. Ответы на самые важные вопросы я дал под катом. Не стесняйтесь задавать дополнительные вопросы, если хотите узнать что-то ещё.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js