As a systems programming refers to creating software components that are part of the operating system are, or closely with the operating system and the underlying hardware must communicate. The group of people who develop system software is known as system programmer .
Fields of activity
System-related software serves as an abstraction layer between an application and the operating system. This layer facilitates access to the very simple operating system functions. For performance and security reasons, access to the operating system is limited to what is necessary. The programmer has to take care of synchronization (e.g. using semaphores or shared memory ) and interprocess communication . Programming at the operating system level is therefore cumbersome and error-prone.
In contrast, application developers prefer interfaces that are fast, fault-tolerant and easy to use. This means that for the application programmer, the focus is on functionality, while a system programmer has to pay particular attention to aspects such as efficiency and robustness. All high-level languages encapsulate the functions of system programming, which enables effective application programming with a high degree of abstraction , but is not expedient in the area of system-level programming.
Database management systems are another example of low-level applications . Databases require very fast access to hardware resources. The detour via the development APIs is not just an additional cost factor. Such APIs are also unsuitable for the needs of certain applications. Database implementations therefore prefer to communicate directly with the system themselves.
System programming is often done in languages such as C , C ++, or assembler . High-level languages such as Pascal often lead to large and inefficient programs that are unsuitable for low-level programming. Exceptions are some embedded systems that can be programmed directly in Java . C is also a high-level language itself, but offers the possibility of integrating assembler commands directly into the high-level language program using inline assembler. B. To query variables directly with their symbolic names, which otherwise would have to be laboriously transferred via the stack .
In computer science studies, the contents of system programming are taught at many universities. This includes the basic knowledge of machine-level programming and the structure and function of operating systems.
Depending on the type of company, system programmers have different tasks:
- The company is a company that purchased software (eg., From a software vendor) is used, the system programmer to change the task of extending the purchased software to or configure ( customizing ) that the function of the software in the enterprise can be used.
- If the company is a software manufacturer who sells system programs, or a hardware manufacturer who supplies its devices with special system software, the system programmer has the task of developing the system programs.
In contrast to the application programmer , a system programmer must have in-depth knowledge of the internal processes within the system. This includes the topics of process management and synchronization, memory management, semaphores , file systems, input and output channels, rights management and network technology. Since system programs do not have a GUI in many cases , particular attention must be paid to operational reliability and fault tolerance.