I like operating systems and would eventually like to become a OS developer mostly working on kernels. In the future will C still be the language of choice and what else should I be trying to learn?
相关问题
- Why should we check WIFEXITED after wait in order
- Linux kernel behaviour on heap overrun or stack ov
- Where is the standard kernel libraries to let kern
- Is there a difference between an ISR and an interr
- Trouble with SPIDEV, device tree and .dtbo name wi
相关文章
- How do I get to see DbgPrint output from my kernel
- What happens to dynamic allocated memory when call
- Is it possible to run 16 bit code in an operating
- How to arrange a Makefile to compile a kernel modu
- Tool to Debug Guest OS in Virtual Box
- How can the linux bottom halfs execute in interrup
- Linux Kernel Linked List
- How is copy paste possible?
I think its a pretty safe bet that serious (non experimental) OS development will remain in C (and assembly) for the forseeable future.
The proof I submit is Ada. It can get as bare-metal as C, provides better control over data placement, and has safer default behavior for just about everything (eg: array bounds checking). From the point of view of an OS developer, it is either equal or superior to C in any technical parameter you can think up. It has been available for over 20 years now (ok...reasonably-priced for perhaps only 15).
So if people were looking for a technically superior language to C, you should see OSes all over the place written in Ada instead right? What I actually see is one serious OS implemented in Ada. It is no longer supported in favor of a reimplementation in C.
The barriers to other languages in OS development are not and never have been technical. I don't see C's non-technical benifits going away any time soon, and nobody is ever going to overcome them by simply designing a better language.
You should definitely be fluent in C.
As others have pointed out, there is no reason that an operating system has to be written in C, and there is a lot to be gained by using more sophisticated languages. But if you're going to work on operating systems in the real world (i.e., not in academia or a research lab) there are a couple of realities that you have to live with:
As a result, it's hard for me to see how and when the world will move away from C-based operating system kernels. Yes, it's technically possible. But the cost may be too high. If anything, the trend seems to be toward consolidation on a small number of OS families---Windows, Linux, and BSD---all C-based.
It would be interesting to know what research has been done, or what tools and techniques might be available to evolve an existing code-base (such as Linux) to a better language. I think this would be a much more viable approach than getting the world to adopt a completely new OS.
C is pretty much it, with a fair amount of assembler. Important topics for OS kernel work include:
Most definitely! You should also learn at least one assembly language/hardware architecture.
Cody didn't want to be bothered answering this, so I'm passing this on on his behalf. :-P For some examples of OSs written in managed languages, as opposed to C or assembly, look at:
Of course, Cody also didn't want to mention this:
Actualy, there is quite a bit of room in the core of a modern OS for C++ code. I just looked and the Win7 core kernel tree has quite a bit of C++ code. Note that many sub-systems remain in simple C. There are a few reasons for this
That being said, many teams and people have found well written C++ to be an effective tool for core OS work.
There is nothing about C++ that prevents it from being used to write core resource management code like a scheduler, memory manger, I/O subsystem, graphics sub-system, etc. etc.
As others have pointed out - any kernel work will always require some bit of assembly language.