OSDev
http://osdev.su/

Express OS
http://osdev.su/viewtopic.php?f=4&t=178
Страница 19 из 19

Автор:  pavia [ 25 янв 2017, 21:42 ]
Заголовок сообщения:  Re: Express OS

Там целая система. Которая организует доверенную зону. Для этого требуется соблюдения ряда простых условий порядка 10-20 но есть нюансы в том смысле что доказательство носит сложный и запутанный характер. Поэтому для правильности применяют математические методы но они не дают гарантий, поэтому привлекают специальные лаборатории.

Хотя в виндоусе это сделано через одно место.

После запуска от администратора система снимает ряд ограничений. Делается это по классической виндоуской схеме User-space API далее API-сервиса далее ядро. Хотя такое должно делаться через ядро. Но по факту вызываеьтя CredUIPromptForCredentials().

Потоки хранят свою информацию в ядре. Поэтому из User-space до неё не добраться. Каждый поток имеет имя пользователя и его привилегии. Думаю можно начинать рыть от LPSECURITY_ATTRIBUTES lpSecurityAttributes. Насколько помню каждый объект-ядра имеет уровень привилегий.

1)
При снятии ограничений ряд объектов в ядре и user-space получают разрешения на чтение и запись функция VirtualProtect. Делается это обычно через страницы. Ничего сверх естественного. Но какие участки разумеется засекречено.
Отслеживания какой участок имеет какие права делается через списки. Скорее всего хранятся в User-spase в одной из системных куч.

2)
Что касается исключений, то ядерные функции просто проверяют привилегии и вызывают исключение. Исключение бросается аналогично тому как вызывается функция. Хотя по форме выглядит как магия аппаратной защиты. Дело в том что установка привилегий и проверка разнесена в пространстве и времени.
В прикладном уровне такого кода нет. Так как если бы он был то это бы нарушает понятие доверенной зоны.
Шифрование находиться в User-space поэтому там и применяют методы для закрытия от записи и чтения. Но защиту они там используют по мнимому.

Автор:  poly [ 18 июл 2018, 09:39 ]
Заголовок сообщения:  Re: Express OS (2012)

Himik писал(а):
В данный момент планирую переход на 64-битный режим, совместно с 32-битным и виртуальным 16-битным (потому что ОС использует BIOS).
16-битный режим несовместим с 64-битным, поэтому системе нужен 2х-ядерный процессор, на первом ядре проца будет постоянно работать 64-битное ядро системы, на втором проце тоже будет работать 64-битное ядро, но периодически переходить на 32-битное ядро с виртуальной 16-битной задачей (по мере вызова BIOS процедур).

Я до такого, к сожалению, не додумался. Жаль, что сейчас не на всех 64битных устройствах есть полноценный 16-битный BIOS!

Автор:  Himik [ 18 июл 2018, 19:42 ]
Заголовок сообщения:  Re: Express OS

От 32-битного ядра и виртуального режима VM86 я отказался, поэтому для вызова BIOS делается сразу переключение из 64-битного в реальный режим и обратно в 64-битный.
Да, в режиме UEFI нет BIOSа, поэтому надо будет переделывать.

Автор:  poly [ 19 июл 2018, 08:21 ]
Заголовок сообщения:  Re: Express OS

Можно попробовать и не ради BIOSа отключить на одном из логических процессоров Long mode, и планировать на него 32-разрядные, 16-разрядные и V86 задачи.

Автор:  poly [ 19 июл 2018, 08:36 ]
Заголовок сообщения:  Re: Express OS

Где, кстати, сейчас можно смотреть последние изменения?
На Яндекс.Диске?
Ссылки в начале темы протухли за прошедшие годы.

Автор:  Himik [ 19 июл 2018, 20:59 ]
Заголовок сообщения:  Re: Express OS

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

Автор:  poly [ 20 июл 2018, 08:55 ]
Заголовок сообщения:  Re: Express OS

То есть, всё сейчас тут
https://yadi.sk/d/RJ_W8nEqctQuJ

Автор:  Himik [ 01 окт 2019, 23:03 ]
Заголовок сообщения:  Re: Express OS

Выпустил новую версию. Ни каких новых функций не добавлено, только внутренняя реорганизация кода. Такие модули, как драйвера и файловые подсистемы теперь работают на 0 кольце защиты, раньше были на 3 пользовательском уровне. Для приложений они теперь доступны через системные вызовы int 0x80 и syscall на подобии Linux, а так же через механизм сообщений.
В создании процесса через функцию fork теперь не делается динамического копирования страниц во время исполнения, а все адресное пространство копируется на этапе создания дочернего процесса. Оказалось, что так проще и надёжнее, а разницы в скорости ни какой.

Автор:  Himik [ 11 ноя 2019, 20:15 ]
Заголовок сообщения:  Re: Express OS

Довольно долго искал глюк в системе, который происходил в разное время в случайных местах. Проблема оказалась в системной функции execve (POSIX), которая должна очистить текущее адресное пространство и загрузить в него новое приложение. После очистки памяти путём удаления всех виртуальных страниц, забыл сбросить процессорный кэш страниц, путём перезагрузки CR3. Теперь точно могу сказать - в любой непонятной ситуации :-) ставьте по всему коду перезагрузку CR3, и возможно вы найдёте источник проблемы :ugeek:

Автор:  SII [ 12 ноя 2019, 12:15 ]
Заголовок сообщения:  Re: Express OS

Himik писал(а):
Теперь точно могу сказать - в любой непонятной ситуации :-) ставьте по всему коду перезагрузку CR3, и возможно вы найдёте источник проблемы :ugeek:


Ну, уж точно не в любой. Надо обеспечить обновление TLB при изменении отображения виртуальных адресов на реальные (т.е., по сути, при изменениях в таблицах переадресации), но, понятно, это не поможет, если причина глюка не в этом. А межпроцессорная синхронизация -- так ващще адЪ и израiль зачастую.

Страница 19 из 19 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/