runtimejs / runtime

[not maintained] Lightweight JavaScript library operating system for the cloud
http://runtimejs.org
Apache License 2.0
1.93k stars 127 forks source link

Learning the basics #71

Closed sateffen closed 9 years ago

sateffen commented 9 years ago

Hey there,

I'm sorry to ask this, little of topic question, but I'm fascinated by this project, and I would love to contribute (code, documentation, support, whatever), but I don't know how. I'm not capable of developing on such a low level, but I want to learn it (at least try it).

I searched the internet, but I found no good source... So, even though you guys have better things to do, I would like to ask YOU: How to learn so low level things? How to learn the basics of a boot or init system code, to understand the very own code boot (and manage) a system?

I know a lot of things, I think I know a lot of important things as well, but I don't know how to connect it all, and I don't know where to learn it...

I hope you can help me a little out.

piranna commented 9 years ago

In my case, the best source was the mytical Andrew S. Tannenbaum book "Operatings Systems: design & development", that explain how Minix 1 was build and was the inspiration for Linux. It's a bit outdated (1988 and focused on the IBM PC, based on a 8086 CPU), but it's still used on university as reference and there is an updated version for Minix 3, a really moderm and portable microkernel OS and a good alternative to Linux itself :-)

iefserge commented 9 years ago

Hey, it really depends on what things you are interested in.

I think runtime.js project includes both low and high-level code. The idea is actually to hide most of the complexity every OS has to deal with in C++ layer and be able to write as much as possible in a high level safe and sandboxed language (JavaScript). A lot of stuff usually implemented in C could be written in JS now. For example, network stack and TCP sockets.

runtime.js would probably need its own HTTP implementation at some point on top of existing TCP sockets (we're using Node's http module written in js now), as an example of different kinds of things :)

Because you mentioned boot init code, for the general low-level OS development I would recommend http://www.osdev.org/. They have a lot of great articles and tutorials if you'd like to understand how it works on a lowest level.

danxn commented 9 years ago

If you want to became more familiar with low-level hardware mechanisms (like I/O ports, memory, processor commands/workflow, timers, interruptions and some other things), you can find any book about AVR microcontrollers (used in Arduino). They are utilize the same conceptions as "big" computers and you can find tons of practical applications for this microcontrollers.

sateffen commented 9 years ago

A real big thank you for this input! This is worlds greater than everything I ever received =)

I started reading and it's thought around more corners than I thought (do you say this in english? In german it's called "um ecken gedacht"). Maybe I'm capable of contributing to this project some day, on which level, dunno, but I want to.

Big thanks! This helps me out a lot, so I close this "issue" =)