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

Есть огромное желание заниматься разработкой ядра UNIX/WINDOWS(там всё закрыто итак понятно)/MACOS(вообще не в курсе, что это, ну чёт freebsd попахиает). Есть проблемы:
по работе - исклюхивно питон и точка.
есть время - прохожу курсы на stepic и курсера.
Хочу прогать именно в ядре(не в тему тьмущую до ассемблерных команд спускаться, где для КАЖДОЙ платформы своё, и свои оптимизации, хотя это тоже интересует, но пока хотя бы сверху разобраться), а писать код, для ядра, который может пригодиться остальным.
Проблема: есть контракт (остался год на работе, по которому никого не пошлешь толком), нет возможности развиваться в интересующем направлении, не могу поставить себе конкретную задачу для развития(сводится всё курс прошёл-ладно, но удовлетворения нет).
Подскажите: есть ли курсы(сайты, сообщества, etc...), выдающие чёткие задачи, с установленными сроками. git понятно, ищи и помогай, но когда чувствуешь конкретику в задаче - проще(для меня критично, работа-выполню, что требуется, самооброзавние-переключаюсь в любую секунду на другую тему(но доделаю всё)). Именно ядро, я готов осваивать всё самое сложное. Для меня это безумно интересно. Просто чувствую свою самонереализованность. Прошу подсказать(пригласить в сообщество, указать цели, вз**бать и в прочем стиле), если есть интересы к такой личности. К сожалению, сам себя презентовать не могу, и даже вопросы задаю на тостере)) Поставьте задачу)))) Просьба дать советы как поступить, как развить себя и сменить работу(на текущий момент очень высокооплачиваемая) в данном случае.
  • Вопрос задан
  • 1133 просмотра
Пригласить эксперта
Ответы на вопрос 3
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

Может вам интересно будет прошивки для квадрокоптеров писать, или мозг для умного дома, или софт для электровеликов?
Ответ написан
Комментировать
@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, там было много статей. Сейчас от него остался вроде бы только форум, но можно попробовать найти копию в сети.

Такая задача достаточно "живая" и интересная, к тому же позволит Вам лучше разобраться в архитектуре систем.
А далее, после ознакомления, идти "вглубь" по тем темам, которые интересуют больше всего, будь то драйверы или архитектура ОС.
Ответ написан
Комментировать
ptitca_zu
@ptitca_zu
Programmer. Reader. Introvert
> есть ли курсы(сайты, сообщества, etc...), выдающие чёткие задачи

Есть, например. Linux Kernel Challenge
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы