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, и возможно вы найдёте источник проблемы |
Автор: | SII [ 12 ноя 2019, 12:15 ] |
Заголовок сообщения: | Re: Express OS |
Himik писал(а): Теперь точно могу сказать - в любой непонятной ситуации ставьте по всему коду перезагрузку CR3, и возможно вы найдёте источник проблемы Ну, уж точно не в любой. Надо обеспечить обновление TLB при изменении отображения виртуальных адресов на реальные (т.е., по сути, при изменениях в таблицах переадресации), но, понятно, это не поможет, если причина глюка не в этом. А межпроцессорная синхронизация -- так ващще адЪ и израiль зачастую. |
Страница 19 из 19 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |