0% found this document useful (0 votes)
13 views4 pages

System Software

System software

Uploaded by

mmonisha2201
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views4 pages

System Software

System software

Uploaded by

mmonisha2201
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

System software is software designed to provide a platform for other software.

Examples of
system software include operating systems (OS) (like macOS, Linux, Android, and Microsoft
Windows).[1]
Application software is software that allows users to do user-oriented tasks such as create text
documents, play or develop games, create presentations, listen to music, draw pictures, or browse
the web. Examples are: computational science software, game engines, search engines, industrial
automation, and software as a service applications.[2]
In the late 1940s, application software was custom-written by computer users to fit their specific
hardware and requirements. System software was usually supplied by the manufacturer of the
computer hardware and was intended to be used by most or all users of that system.
Many operating systems come pre-packaged with basic application software. Such software is
not considered system software when it can be uninstalled without affecting the functioning of
other software. Examples of such software are games and simple editing tools supplied with
Microsoft Windows, or software development toolchains supplied with many Linux
distributions.
Some of the grayer areas between system and application software are web browsers integrated
deeply into the operating system such as Internet Explorer in some versions of Microsoft
Windows, or ChromeOS where the browser functions as the only user interface and the only way
to run programs (and other web browser their place).
Operating systems or system control program
edit
The operating system (prominent examples being Microsoft Windows, macOS, Linux,
and z/OS), allows the parts of a computer to work together by performing tasks like
transferring data between memory and disks or rendering output onto a display device. It
provides a platform (hardware abstraction layer) to run high-level system software
and application software.
A kernel is the core part of the operating system that defines an application programming
interface for applications programs (including some system software) and an interface to device
drivers.
Device drivers and firmware, including computer BIOS or UEFI, provide basic functionality to
operate and control the hardware connected to or built into the computer.
A user interface interact with a computer.[3] It can either be a command-line interface (CLI) or,
since the 1980s, a graphical user interface (GUI). This is the part of the operating system the user
directly interacts with, it is considered an application and not system software.
Utility software or system support programs
edit
Some organizations use the term systems programmer to describe a job function that is more
accurately termed systems administrator. Software tools these employees use are then called
system software. This utility software helps to analyze, configure, optimize and maintain the
computer, such as virus protection. The term system software can also include software
development tools (like a compiler, linker, or debugger).[4]
Systems programming, or system programming, is the activity of
programming[1] computer system software. The primary distinguishing
characteristic of systems programming when compared to application
programming is that application programming aims to produce software
which provides services to the user directly (e.g. word processor), whereas
systems programming aims to produce software and software
platforms which provide services to other software, are performance
constrained, or both (e.g. operating systems, computational
science applications, game engines, industrial automation, and software as a
service applications).[1]
Systems programming requires a great degree of hardware awareness. Its
goal is to achieve efficient use of available resources, either because the
software itself is performance-critical or because even small efficiency
improvements directly transform into significant savings of time or money.
The following attributes characterize systems programming:

 The programmer can make assumptions about the hardware and other properties of the system that
the program runs on, and will often exploit those properties, for example by using an algorithm that is
known to be efficient when used with specific hardware.
 Usually a low-level programming language or programming language dialect is used so that:
o Programs can operate in resource-constrained environments
o Programs can be efficient with little runtime overhead, possibly having either a small runtime
library or none at all
o Programs may use direct and "raw" control over memory access and control flow
o The programmer may write parts of the program directly in assembly language
 Often systems programs cannot be run in a debugger. Running the program in a simulated
environment can sometimes be used to reduce this problem.[dubious – discuss]

In systems programming, often limited programming facilities are available. The use
of automatic garbage collection is not common and debugging is sometimes hard to do.
The runtime library, if available at all, is usually far less powerful, and does less error checking.
Because of those limitations, monitoring and logging are often used; operating systems may have
extremely elaborate logging subsystems.
Implementing certain parts in operating systems and networking requires systems programming,
for example implementing paging (virtual memory) or a device driver for an operating system.
History
edit
Originally systems programmers invariably wrote in assembly language. Experiments with
hardware support in high level languages in the late 1960s led to such languages
as PL/S, BLISS, BCPL, and extended ALGOL for Burroughs large systems. Forth also has
applications as a systems language. In the 1970s, C became widespread, aided by the growth
of Unix. More recently a subset of C++ called Embedded C++ has seen some use, for instance it
is used in the I/O Kit drivers of macOS.[2] Engineers working at Google created Go in 2007 to
address developer productivity in large distributed systems, with developer-focused features such
as Concurrency, Garbage Collection, and faster program compilation than C and C++.[3] In
2015 Rust came out, a general-purpose programming language often used in systems
programming. Rust was designed with memory safety in mind and to be as performant as C and
C++.
Alternative meaning
edit
For historical reasons, some organizations use the term systems programmer to describe a job
function which would be more accurately termed systems administrator. This is particularly true
in organizations whose computer resources have historically been dominated by mainframes,
although the term is even used to describe job functions which do not involve mainframes. This
usage arose because administration of IBM mainframes often involved the writing of
custom assembler code (IBM's Basic Assembly Language (BAL)), which integrated with
the operating system such as OS/MVS, DOS/VSE or VM/CMS. Indeed, some IBM software
products had substantial code contributions from customer programming staff. This type of
programming is progressively less common, and increasingly done in C rather than Assembly,
but the term systems programmer is still used as the de-facto job title for staff administering IBM
mainframes even in cases where they do not regularly engage in systems programming activities.
Ousterhout's dichotomy is computer scientist John Ousterhout's
categorization[1] that high-level programming languages tend to fall into two
groups, each with distinct properties and uses: system
programming languages and scripting languages – compare programming in
the large and programming in the small.
System programming languages (or applications languages) usually have the
following properties:

 They are typed statically


 They support creating complex data structures
 Programs in them are compiled into machine code
 Programs in them are meant to operate largely independently of other programs

System programming languages tend to be used for components and


applications with large amounts of internal functionality such as operating
systems, database servers, and Web browsers. These applications typically
employ complex algorithms and data structures and require high
performance. Prototypical examples of system programming languages
include C, OCaml and Modula-2.
By contrast, scripting languages (or glue languages) tend to have the
following properties:

 They are typed dynamically


 They have little or no provision for complex data structures
 Programs in them (scripts) are interpreted

Scripting languages tend to be used for applications where most of the


functionality comes from other programs (often implemented in system
programming languages); the scripts are used to glue together other
programs or add additional layers of functionality on top of existing
programs. Ousterhout claims that scripts tend to be short and are often
written by less sophisticated programmers, so execution efficiency is less
important than simplicity and ease of interaction with other programs.
Common applications for scripting include Web page generation, report
generation, graphical user interfaces, and system administration.
Prototypical examples of scripting languages include Python, AppleScript, C
shell, DOS batch files, and Tcl.
Ousterhout's dichotomy underlies the design of his language Tcl.

You might also like