• С прикладного в системное программирование?

    @jacob1237
    Рекомендую определиться под какую конкретно систему собираетесь писать.
    Кроме того, неплохо было бы понять какая тема Вас интересует, т.к. понятие "прогать именно в ядре" очень обширное и, в общем-то, ни о чем не говорит, с первого взгляда.

    Системное программирование подразумевает хорошее знакомство с "железом": архитектура процессора, шины данных, архитектура памяти, режимы работы процессора, а также знание программных интерфейсов конкретных устройств, например если пишете драйвер для какого-то устройства, и т.д.

    Надо понимать как работает само ядро ОС. К примеру Linux и Windows принципиально одинаковые в подходах, но разные в реализации.

    Далее, если хотите сконцентрироваться именно на ядре операционной системы, то это вообще отдельная тема в рамках Computer Science. Тут помимо знания железа потребуется знание теории. Например виды многозадачности: вытесняющая, кооперативная и т.д., способы управления памятью, способы организации кэша наиболее часто используемых страниц памяти и т.д.
    Важно понимать что в данном случае написание драйверов и написание ядра ОС здесь расходятся, т.к. драйверы это уже более прикладной уровень, хотя и осязаемой пользы от них больше.
    Если интересна именно тема ядра, можете начать со статьи в википедии: https://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D... и далее продолжить чтением Таненбаума: https://media.pearsoncmg.com/bc/abp/cs-resources/p...

    По теме ядра Windows хорошо помогут книги Джефри Рихтера. ReactOS Вам уже посоветовали. Также по сети бродят слитые исходники Windows 2K, Windows XP и т.д. Их можно тоже скачать, но это нелегально =)

    Главный минус в том, что все это сразу в голову не запихнешь, в связи с этим рекомендую начать с постановки какой-то конкретной и осязаемой практической задачи.

    Например можно попробовать начать с такой темы как написание руткита/трояна: написать руткит, который будет загружаться на уровне ядра, перехватывать данные с клавиатуры и мыши, и отправлять данные куда-то по сети.

    Кому-то может показаться странной такая тема, но ирония в том что как раз по ней очень много хороших материалов и книг в сети. В процессе реализации Вы затронете несколько различных тем ядра - организация сети, организация работы периферийных устройств, а также саму архитектуру ядра.

    Например:
    https://www.amazon.com/Rootkits-Subverting-Windows...

    Раньше был сайт wasm.ru, там было много статей. Сейчас от него остался вроде бы только форум, но можно попробовать найти копию в сети.

    Такая задача достаточно "живая" и интересная, к тому же позволит Вам лучше разобраться в архитектуре систем.
    А далее, после ознакомления, идти "вглубь" по тем темам, которые интересуют больше всего, будь то драйверы или архитектура ОС.
    Ответ написан
    Комментировать
  • С прикладного в системное программирование?

    Stalker_RED
    @Stalker_RED
    lunux - большое сообщество, куча документации, готовых гайдов и всего такого.
    https://www.linux.com/news/three-ways-beginners-co...

    reactos - windows-совместимая ОС
    https://github.com/reactos/reactos

    LineageOS (то, что в прошлом году называлось cyanogenOS) - основанная на андроиде операционка с упором в безопасность, экономию батареи.
    https://lineageos.org/community/

    Множество других https://github.com/topics/os

    Может вам интересно будет прошивки для квадрокоптеров писать, или мозг для умного дома, или софт для электровеликов?
    Ответ написан
    Комментировать