Может есть хороший форум на русском?

Everything you can't fit into other forums
  • Я не понял часть вопросов и рассуждений, а касательно С с ассемблер подобным отношением к памяти у нас есть С--. Использование С и других похожих языков в место ассемблера в разработке ЯДРА не соответствует проекту. Ведь на Ассемблер завязано множество ключевых особенностей проекта как минимальные расходы максимум эффективности которые на других языках получить ещё сложнее.
  • Vaicheslav97 wrote:Ведь на Ассемблер завязано множество ключевых особенностей проекта как минимальные расходы максимум эффективности которые на других языках получить ещё сложнее.
    Неиспользование нормального аллокатора во многих (как правило асмовых) приложениях- максимум эффективности)) ну я про 68.12 в качестве malloc. На каждый чих минимум 4кб дает.
    The best way to predict the future is to create it.
  • rgimad wrote:
    Vaicheslav97 wrote:Ведь на Ассемблер завязано множество ключевых особенностей проекта как минимальные расходы максимум эффективности которые на других языках получить ещё сложнее.
    Неиспользование нормального аллокатора во многих (как правило асмовых) приложениях- максимум эффективности)) ну я про 68.12 в качестве malloc. На каждый чих минимум 4кб дает.
    это ещё не самая большая проблема, некоторые программы даже не используют этот аллокатор, а работают через 64 сисфункцию или вообще память не выделяют динамически, а статически задают область памяти на мегабайт например
  • Vaicheslav97 wrote:Я не понял часть вопросов и рассуждений.
    . Это очень хорошо. Я их и сам не понял. Прошу прощения, что влез на ресурс профессионалов со своими дилетантскими проблемами.
    Last edited by user123 on Tue Feb 21, 2023 7:04 am, edited 1 time in total.
  • могу ответить только по нумеруемым и то не уверен что полностью
    1)Разделение на кольца у нас есть но ограничения по портам ввода вывода слабые
    2)Ограничения портов ввода вывода у нас такие чтобы в случае если надо приложение могло само могло быть как драйвер в случае если оно работает ну с очень специфичным железом
    3)Обработка прерываний есть, когда программы выходит за рамки разрешенной памяти ОС её принудительно закрывает, общие области памяти есть, разделения есть но код не разделяется на модифицируемый или нет.
    4)Наша ОС много задачная и поддерживает это распределяя нагрузку между приложениями даже если одно повиснет то это не повесит остальные приложения
    5)Я не знаю где находится видеобуфер но поддерживаем стандарты (S)VGA
    6)Переключение контекста у нас есть и реализована в рамках многозадачности
    7)Файл подкачки отсутствует, по причине что он приводит к общему замедлению системы даже без нагрузки и даёт призрачный шанс пользоваться приложениями на которые не хватает памяти, у нас пока в обозримом будущем нет приложений которым могло бы понадобится 128Мб и выше кроме разве что виртуального диска когда Оперативка выделяется как раздел жесткого диска
    8)Не знаю точно но вроде есть.
    9)Пока что оконный менеджер вшит в ядро но вроде идут попытки его отделить
  • rgimad wrote:
    Vaicheslav97 wrote:Ведь на Ассемблер завязано множество ключевых особенностей проекта как минимальные расходы максимум эффективности которые на других языках получить ещё сложнее.
    Неиспользование нормального аллокатора во многих (как правило асмовых) приложениях- максимум эффективности)) ну я про 68.12 в качестве malloc. На каждый чих минимум 4кб дает.
    1) приличные асмовые приложения должны это знать и учитывать.
    во избежание неэффективности.

    2) в Линуксе kalloc() тоже нарезает драйверам дин.память целыми страницами.
    даже если нужно меньше.

    3) ядро вообще не обязано заниматься динамической кучей приложений.
    в ЯВУ это забота компиляторов.
    Евангелие от Иоанна: стих 1

    Code: Select all

    ; В начале было Слово:
    B32:        mov     ax, os_stack       ; Selector for os
    [/size]
  • Проще сказать, что на системном уровне память всегда выделяется страницами по 4 кб, и все ОС её так выдают. Более мелкая нарезка происходит на пользовательском уровне; а в библиотеке или в самом приложении — это уже не принципиально. Может даже лучше чтоб программист понимал, что при не правильном обращении к памяти в пределах 4 кб системной ошибки не будет.
  • * * *
    Attachments
    UserLoh.png
    UserLoh.png (27.96 KiB)
    Viewed 13275 times
    Last edited by user123 on Tue Feb 21, 2023 7:03 am, edited 7 times in total.
  • Но крутые как считали лошарой, так и будут считать, поэтому умолкаю.
    Last edited by user123 on Tue Feb 21, 2023 7:02 am, edited 6 times in total.
  • 5)Я не знаю где находится видеобуфер но поддерживаем стандарты (S)VGA
    В документации ( http://wiki.kolibrios.org/wiki/SysFn61/ru ) написано:
    Программе доступны данные графического экрана (область памяти, которая собственно и отображает содержимое экрана) напрямую без вызовов системных функций через селектор gs:

    Code: Select all

    mov eax, [gs:0] 
    В файле исходников ядра core/mtrr.inc написано (строка 898):

    Code: Select all

    ; LFB is mapped to virtual address LFB_BASE,
    В файле const.inc определено (строка 279):

    Code: Select all

    LFB_BASE            = 0xFE000000
    Насколько понимаю , физический адрес получается от BIOS (с некоторой настройкой)