System Programming

System programming is more than just knowing all the system calls of the operating system by heart. System programming means to:

Because of this, system programming is not low-level programming! The challenge is to design the component architecture on a high level so it is made best use of the OS and the hardware. Also, on the system level the basic properties of the application programming environment are defined.

Also, system programming has nothing to do with administration, which is a completely different task.

Overcoming shared-memory parallelism

In the past years, the software industry mostly propagated multi-threading, also known as shared memory parallelism, to tackle problems that require concurrent program execution. On current SMP and cc-NUMA machines (i.e. "multicores") multi-threading shows good performance. However, it is questionable whether this success story can be continued when more and more cores are integrated ("manycores"), because memory bandwidth cannot keep up, and the costs of frequent synchronization explode. There are other issues as well: The programming model is complicated and error-prone, and most application programmers are overstrained when they are faced with shared-memory parallelism. Probably this programming model can be accounted for most software crashes and frozen systems. Last but not least, this model cannot be easily extended from multicores to clusters.

There should be careful analysis whether multi-threading can be replaced by other programming models for concurrency:


These services are only available for Linux and, with restrictions, to Unix and BSD:

Dipl.-Inform. Gerd Stolpmann
[de] Deutsch / Lokale Kunden
[en] English / Int. Customers