From a3370f582a4a69812acacf1b888414fb2fbb998c Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Fri, 14 Jul 2017 15:50:53 +0200 Subject: small fixes in abaos intro blog --- content/blog/abaos-intro.md | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/content/blog/abaos-intro.md b/content/blog/abaos-intro.md index 714aedd..9102704 100644 --- a/content/blog/abaos-intro.md +++ b/content/blog/abaos-intro.md @@ -29,12 +29,13 @@ Tutorials are around everywhere, especially nice are video tutorials of people who are actually implementing an operating system with you "live". -I used two of them: +I used the following two: - [Writing a Simple Operating System - from Scratch, Nick Blundell](https://www.youtube.com/watch?v=YvZhgRO7hL4) - [Write your own Operating System, Viktor Engelmann](http://wyoos.org/) -Nice web page are, two pick two of them: +There are also nice web pages out there collecting stuff for +OS developers, to pick too of them here: - [OSDEV Wiki](http://wiki.osdev.org/Main_Page) - [Lowlevel.eu](http://lowelevel.eu) @@ -52,30 +53,32 @@ some part of a POSIX environment. So far the simplest explanation I have for everybody using C is simple: - the operating system has been written in C ages ago -- every possible library build on top, and nobody wants to rewrite - everything all the time +- every possible library is built on top of C and POSIX, and nobody + wants to rewrite everything all the time - the most prominent platform is Intel, and Intel has some special "features" like I/O ports and alignment, packing of structures which requires some low-level features from a language. C has those features (alignment and packing). Other platforms may be less quirky and old and be less demanding on the language to provide such features. -- open API specification: Cdecl calling conversion is available everywhere. +- open API specification: the Cdecl calling convention is available everywhere. The reason why so many scripting languages are popular, is that they - can reuse APIs via the Cdecl layer. + can reuse tons of libraries via the Cdecl API. - there is a lot documentation about how to do operating system tasks in C, there are not so many around for other languages. This said, C++, D, Ada, Pascal are valid alternatives for building an -operating system, to name two examples: +operating system, to name two real-world examples, not just toys: - C++ has been used for [Haiku](https://www.haiku-os.org) - Pascal for [Ultibo](https://ultibo.org/) on RaspberryPi -For embedded or special purpose operating systems it's more feasable -to use another language than C. +For embedded or special purpose operating systems it's more feasible +to use another language than C. Exokernels especially open up a +new area in operating system development, where relying on the past +is not really that important. Don't be fooled, if I say C, this doesn't mean you cannot benefit early -with from an object oriented design, as soon PCI with loadable drivers +from an object oriented design, as soon for instance PCI with loadable drivers or a widget libary come into play. The following articles are useful to build simple-inheritance with C: @@ -89,10 +92,11 @@ in https://lwn.net/Articles/444910/. ## Status -I'm following the Wyoss guide and try to do almost everything in C which -was done in C++ in the tutorial. I'm also deviating a little bit by: +I'm following the Wyoss guide and I'm trying to do almost everything in +C which was done in C++ in the tutorial. I'm also deviating a little bit +here and there: -- having my own small little C library (src/libc) +- I have my own small little C library (src/libc). - I wrote a boot loader (yes, I know the comments on OsDev regarding writing one). Nevertheless it's informational and has some historic value. @@ -101,8 +105,7 @@ was done in C++ in the tutorial. I'm also deviating a little bit by: ## Sources -As always you can find the sources of the project on my person git +As always you can find the sources of the project on my personal git repository at: http://git.andreasbaumann.cc/cgit/abaos/ - -- cgit v1.2.3-54-g00ecf