System programming is characterized by the fact that it is aimed at producing system software that provides services to the computer hardware or specialized system services.Also, Many a time, system programming directly deals with the peripheral devices with a focus on input, process (storage),
The essential characteristics of system programming are as follows:
- Programmers are expected to know the hardware and internal behavior of the computer
system on which the program will run. System programmers explore these known hardware
properties and write software for specific hardware using efficient algorithms.
- Uses a low-level programming language or some programming dialect.
- Requires little runtime overheads and can execute in a resource-constrained environment.
- Moreover, These are very efficient programs with a small or no runtime library requirements.
- Has access to systems resources, including memory
- Also, Can be written in assembly language The following are the limiting factors of system programming:
- Many times, system programs cannot run in debugging mode.
- Moreover, Limited programming facility is available, which requires high skills for the system programmer.
- So, Less powerful runtime library (if available at all), with less error-checking capabilities.
The amount of space allocated for all possible addresses for data and other computational entities called address space. The address space governed by the architecture and managed by the operating system. Also, The computational entities such as a device, file, server, or networked computer all addressed within space.
There are two types of address space namely,
Physical Address Space
Similarly, Physical address space the collection of all physical addresses produced by a computer program and provided by the hardware. Every machine has its own physical address space with its valid address range between 0 and some maximum limits supported by the machine.
Logical Address Space
So, Logical address space generated by the CPU or provided by the OS kernel. It also sometimes called virtual address space. In the virtual address space, there is one address space per process, which may or may not start at zero and extend to the highest address.