System programs are usually developed in machine-oriented languages. Due to their compatibility with hardware, increased performance is provided, but versatility and portability between platforms is lost. Thus, for each hardware platform and operating system a different set of system programs must be created.

Most often system programs are developed in the low-level Assembler programming language, which can be specific to a particular computer architecture and CPU. Modern high-level languages also have the ability to write system program code. For example, the C language allows the use of assembly inserts in the program text or the connection of assembly language subprograms to the program text.

Classification of system programs
The system software is usually arranged as the function libraries which can be attached to the created application programs.

System programs can be roughly divided into the following categories:
operating systems;
drivers;
service programs for equipment maintenance; diagnostic tools; software tools which ensure automation of application programming development.

The operating system is a set of interconnected programs designed to manage the computer resources, taking into account the microarchitecture of the computer system devices and providing the user with the necessary set of functions in the form of libraries.

Drivers are software components that are used by the devices of a computer system (processor, memory, video card, keyboard, external plug-in devices) to interact with the operating system. Drivers are usually developed by hardware manufacturers for different operating systems and are sold as an integral part of those tools. They mediate between the computer hardware devices and the operating system, ensuring the transfer of data between them.

Thus, one can imagine the following communication scheme: if the programmer who develops an application program needs to transfer data into computer memory or save a file to the hard disk he refers to the corresponding function from the operating system library, which in turn refers to the driver of the device used in this operation.

Service programs for equipment maintenance allow you to optimize the operation of hardware for more efficient use. For example, as a result of multiple file writes and overwrites, a hard disk becomes fragmented over time, i.e. parts of a single file become scattered in random order, which greatly slows down the writing and reading of these files. Disk defragmentation service program allows you to arrange the files in an orderly manner, which greatly speeds up the work with them.

The registry of your operating system over time, due to malfunctions, incorrect program termination or removal of unwanted programs, accumulates “garbage” or unnecessary links. The registry cleaner cleans it from unnecessary data, thereby increasing the operating system’s performance.

Diagnostic tools allow you to check the health of hardware resources, detect and correct failures. This helps the application programmer to make sure that his program does not work because of a hardware failure and not because of incorrectly written code.

Software tools that automate the development of application programming are translators, debuggers, linkers, resource editors, and others. These programs also relate to the system ones for they are developed taking into consideration the architecture of hardware resources and peculiarities of the computer’s operation system. Applying such tools in practice, application program developers can use universal high-level programming languages, and when compiling the program into executable file the peculiarities of computing architecture will be taken into account automatically by the compiler.