Задать вопрос

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

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

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

Похожие вопросы
Wanted Москва
от 60 000 до 120 000 ₽
Wanted Санкт-Петербург
До 200 000 ₽
Wanted Москва
До 250 000 ₽