Board.KolibriOS.org
http://board.kolibrios.org/

Новая модель ядра
http://board.kolibrios.org/viewtopic.php?f=35&t=509
Page 30 of 31

Author:  Mario_r4 [ Mon May 27, 2013 10:57 pm ]
Post subject:  Re: Новая модель ядра

Отвечу по тем пунктам где я виноват, что они вообще появились. Наверное мне не нужно было вообще делать, так как я делаю 90% говна.
Serge wrote:
Изучение завалов поставило поставило несколько вопросов
Нужно ли массиву DRIVE_DATA 65536 байт ?

Не обязательно. Можно выделять динамически, добавляя по мере обнаружения новых разделов. Хочется? Вперед.
Serge wrote:
Сколько на самом деле памяти требуют
...
BPSLine_calc_area equ (OS_BASE+0x02C4000) и
d_width_calc_area equ (OS_BASE+0x02CA000) ?

Размер выбран с запасом под максимальный режим экрана. Вроде 2400*1600, точно не помню. Можно выделять динамически, выбирая под текущий размер видеорежима. Хочется? Вперед.

Это не мое, но влезу - потому что я такой говнюк, который таки лезет везде. А еще я один из самых старых маразматиков в проекте.
Serge wrote:
Нужен ли рестарт ядра, если usb клавиатура больше не эмулируется, да и сам рестарт работает не у всех ?

Перезапуск ядра без перезапуска компьютера был полезной фичей в некоторых случаях. Например для смены разрешения экрана - это быстрее чем добавлять BIOS и рестарт железа.

Author:  Serge [ Mon May 27, 2013 11:54 pm ]
Post subject:  Re: Новая модель ядра

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

Author:  Mario_r4 [ Thu May 30, 2013 7:50 am ]
Post subject:  Re: Новая модель ядра

Serge
Ревизия 3558 поломала изменения сделанные в ревизии 3536. Теперь меню снова срабатывает через раз.

Author:  Serge [ Thu May 30, 2013 8:26 am ]
Post subject:  Re: Новая модель ядра

А теперь ?

Author:  Mario_r4 [ Thu May 30, 2013 8:28 am ]
Post subject:  Re: Новая модель ядра

Serge wrote:
А теперь ?

Ревизия 3576 исправила проблему. Спасибо.

Author:  Serge [ Sun Sep 14, 2014 2:40 pm ]
Post subject:  Re: Новая модель ядра

Многострадальное ядро kolibri-process готово к тестам.
Хотя Колибри поддерживает многопоточность, потоки одного процесса фактически независимы друг от друга. Каждый поток хранит свой набор данных, в том числе и разделяемых между потоками одного процесса. Это создаёт проблемы при изменении таких данных,например при операциях с памятью или загрузках DLL, потому что необходимо найти и модифицировать содержимое в структурах других потоков. Синхронизация доступа к данным так же проблематична. Kolibri-process решает эту проблему при помощи новой структуры PROC, хранящей общие переменные.
Code:
struct  PROC
        list            LHEAD
        thr_list        LHEAD
        heap_lock       MUTEX
        heap_base       rd 1
        heap_top        rd 1
        mem_used        rd 1
        dlls_list_ptr   rd 1
        pdt_0_phys      rd 1
        pdt_1_phys      rd 1
        io_map_0        rd 1
        io_map_1        rd 1

        unused          rb 4096-$; reserved for handles
        pdt_0           rd 1024
ends
Каждая структура хранит указатели двусвязного списка дочерних потоков, мьютекс кучи приложения, указатель списка загруженных dll, физические адреса страничного каталога и карты разрешения ввода-вывода. В структуру APPDATA добавлены указатели двусвязного списка потоков и указатель на структуру родительского процесса. В результате изменений в ядре удалось упростить код, уменьшить его размер и ускорить некоторые системные вызовы.

Author:  Mario_r4 [ Sun Sep 14, 2014 3:08 pm ]
Post subject:  Re: Новая модель ядра

Serge
А уже существующий код использующий многопоточность сильно переделывать придется при переходе на ядро kolibri-process?

Author:  Serge [ Sun Sep 14, 2014 6:34 pm ]
Post subject:  Re: Новая модель ядра

Mario_r4
Для приложений пока ничего не меняется. Потом добавлю мьютексы и другие примитивы для синхронизации.

Author:  CleverMouse [ Mon Sep 15, 2014 12:51 pm ]
Post subject:  Re: Новая модель ядра

Зачем io_map делать per-process, а не per-thread?

Author:  Serge [ Mon Sep 15, 2014 4:00 pm ]
Post subject:  Re: Новая модель ядра

Оставлять per-thread как-то не логично. Это же часть адресного пространства, значит должна быть общей для всех потоков в процессе.

Author:  CleverMouse [ Mon Sep 15, 2014 4:33 pm ]
Post subject:  Re: Новая модель ядра

Порты ввода-вывода - часть адресного пространства?

Author:  Serge [ Mon Sep 15, 2014 4:40 pm ]
Post subject:  Re: Новая модель ядра

На мой взгляд да, параллельная часть. Если поток получит доступ к mmio, его получат и остальные потоки в адресном пространстве. Почему с традиционными портами должно быть иначе ?

Author:  Serge [ Tue Sep 16, 2014 9:00 am ]
Post subject:  Re: Новая модель ядра

Как-то лениво народ реагирует. Ладно, лучший тест - ночная сборка. Через пару дней залью.

Author:  Leency [ Thu Oct 30, 2014 3:52 pm ]
Post subject:  Re: Новая модель ядра

Serge, спасибо. Вроде бы работает всё стабильно. Дымовой тест точно проходит :)

Author:  Dragon [ Sun Nov 02, 2014 9:46 pm ]
Post subject:  Re: Новая модель ядра

Да, карта ввода-вывода - это составная часть адресного пространства процесса, и к потокам не имеет никакого отношения.

Page 30 of 31 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/