X
X
xaaaa2017-11-22 23:53:59
C++ / C#
xaaaa, 2017-11-22 23:53:59

From applied to systems programming?

There is a great desire to develop the UNIX / WINDOWS kernel (everything is closed there, so it’s clear) / MACOS (I don’t know what it is at all, well, even freebsd smells). There are problems:
at work - exclusively python and period.
I have time - I'm taking courses on stepic and coursers.
I want to skip it in the kernel (not to go down into the dark topic to assembler commands, where EVERY platform has its own, and its own optimizations, although this is also of interest, but for now at least figure it out from above), but write code for the kernel, which can be useful to others.
Problem: there is a contract (there is a year left at work, according to which you can’t really send anyone), there is no opportunity to develop in the direction of interest, I can’t set myself a specific task for development (the whole course is reduced, okay, but there is no satisfaction).
Tell me: are there any courses (websites, communities, etc...) that give out clear tasks, with set deadlines. git is understandable, search and help, but when you feel the specifics in the task, it’s easier (it’s critical for me, I’ll do what I need to do, self-educate, I switch to another topic at any second (but I’ll finish everything)). It is the core, I am ready to master all the most difficult. For me, this is extremely interesting. I just feel like I'm unfulfilled. Please tell me (invite to the community, indicate goals, shake and in other style), if there are interests in such a person. Unfortunately, I can’t present myself, and I even ask questions on the toaster)) Set a task)))) Please give advice on what to do, how to develop yourself and change jobs (currently very highly paid) in this case.

Answer the question

In order to leave comments, you need to log in

3 answer(s)
S
Stalker_RED, 2017-11-23
@Stalker_RED

lunux is a big community, a lot of documentation, ready-made guides and all that.
https://www.linux.com/news/three-ways-beginners-co...
reactos - windows compatible OS
https://github.com/reactos/reactos
LineageOS (what was called cyanogenOS last year) - based on android operating system with an emphasis on security, battery saving.
https://lineageos.org/community/
Many others https://github.com/topics/os
Maybe you are interested in writing firmware for quadrocopters, or a brain for a smart home, or software for electric bikes?

J
jacob1237, 2017-11-23
@jacob1237

I recommend to decide under what specific system you are going to write.
In addition, it would be nice to understand what topic you are interested in, because. the concept of "programming in the core" is very broad and, in general, does not mean anything at first glance.
System programming implies a good familiarity with hardware: processor architecture, data buses, memory architecture, processor operating modes, as well as knowledge of software interfaces for specific devices, for example, if you write a driver for a device, etc.
You need to understand how the OS kernel itself works. For example, Linux and Windows are fundamentally the same in approaches, but different in implementation.
Further, if you want to concentrate on the core of the operating system, then this is generally a separate topic within Computer Science. Here, in addition to knowledge of iron, knowledge of theory is required. For example, types of multitasking: preemptive, cooperative, etc., ways to manage memory, ways to organize a cache of the most frequently used memory pages, etc.
It is important to understand that in this case, writing drivers and writing the OS kernel diverge here, because. drivers are already a more applied level, although there is more tangible benefit from them.
If you are interested in the core topic, you can start with the Wikipedia article: https://en.wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D... and then continue reading Tanenbaum: https: //media.pearsoncmg.com/bc/abp/cs-resources/p...
On the subject of the Windows kernel, Jeffrey Richter's books will be of great help. ReactOS has already been advised to you. Leaked sources of Windows 2K, Windows XP, etc. also roam the net. You can also download them, but it's illegal =)
The main disadvantage is that you can't stuff all this into your head at once, in this regard, I recommend starting with setting some specific and tangible practical task.
For example, you can try to start with such a topic as writing a rootkit / trojan: write a rootkit that will boot at the kernel level, intercept keyboard and mouse input, and send data somewhere over the network.
Such a topic may seem strange to some, but the irony is that there are a lot of good materials and books on it on the net. During the implementation, you will touch on several different topics of the kernel - networking, organization of peripheral devices, as well as the architecture of the kernel itself.
For example:
https://www.amazon.com/Rootkits-Subverting-Windows...
There used to be a wasm.ru site, there were a lot of articles there. Now only a forum seems to be left of it , but you can try to find a copy on the net.
Such a task is quite "alive" and interesting, besides, it will allow you to better understand the architecture of systems.
And then, after familiarization, go "deep" on those topics that interest you the most, whether it's drivers or OS architecture.

D
Dmitry Demidov, 2017-11-23
@ptitca_zu

> whether there are courses (websites, communities, etc...) that give out clear tasks
There are, for example. Linux Kernel Challenge

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question